viewPaper 更换主界面背景图片

最近调试更换主界面背景功能,虽然还没有达到想要的任意选择图片功能,但是已经可以选择更换内置图片作为背景,记录一下。

首先需要注意的几点:

1、paperAdapter需要重写的几个函数不可以漏

  @Override  
            public Object instantiateItem(ViewGroup container, int position)  
            {  
           
                container.addView(mImageViews.get(position));  
                return mImageViews.get(position);  
            }  
  
            @Override  
            public void destroyItem(ViewGroup container, int position,  
                    Object object)  
            {  
           
                container.removeView(mImageViews.get(position));  
            }  
  
        @Override
            public boolean isViewFromObject(android.view.View view, Object object)  //这里可能是因为import的原因,需要用android.view.View
            {  
           
                return view == object;  
            }  
  
            @Override  
            public int getCount()  
            {  
                return mImgIds.length;  
            }

2、获取图片的序号

需要在viewPaper的OnPageChangeListener中获取,通过paperAdapter中的函数很难获取当前position;

 mViewPager.setOnPageChangeListener(new OnPageChangeListener(){
        @Override  
           public void onPageSelected(int arg0) {  
        nLastPos = arg0;//这个就是当前选择的图片
           }  
                     
           @Override  
           public void onPageScrolled(int arg0, float arg1, int arg2) {  
                   System.out.println("onPageScrolled = " + arg0 + ", " + arg1 + ", " + arg2);  
           }  
                     
           @Override  
           public void onPageScrollStateChanged(int arg0) {  
               System.out.println("onPageScrollStateChanged = " + arg0);  
           }  
        });


3、通过intent将获取的图片ID传给主活动,主活动设置为背景

 btSetBg.setOnClickListener(new OnClickListener(){
@Override
public void onClick(android.view.View v)
{
// TODO Auto-generated method stub

if(nLastPos > mPagerAdapter.getCount()-1)
{
nLastPos = 0;
}


Intent intent = new Intent();
intent.putExtra("bg_resId", mImgIds[nLastPos]);
setResult(RESULT_OK, intent);
finish();
}
   
    });


主活动中重写onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch (requestCode)
{
case 1:
if (data == null || "".equals(data))
{
return;
} else if (resultCode == RESULT_OK)
{
int bgResId = data.getIntExtra("bg_resId", 1);
findViewById(R.id.main_layout).setBackgroundResource(bgResId);
saveBgImg(bgResId);
}
break;
default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}

4、 保存及读取背景的ID号,下次启动设置相应的背景

public void saveBgImg(int imgId)
{
SharedPreferences.Editor editor = getSharedPreferences(LOUYU_DATA_REC,
Context.MODE_PRIVATE).edit();
// 步骤2-2:将获取过来的值放入文件
editor.putInt("bg_imgId", imgId);
// 步骤3:提交
editor.commit();
}
public int getBgId()
{
// 步骤1:创建一个SharedPreferences接口对象
SharedPreferences read = getSharedPreferences(LOUYU_DATA_REC,
Context.MODE_PRIVATE);
// 步骤2:获取文件中的值
int value = read.getInt("bg_imgId", 0);


return value;
}

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
int nBgImgId = getBgId();
if(nBgImgId != 0)
{
findViewById(R.id.main_layout).setBackgroundResource(nBgImgId);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值