viewPaper 更换主界面背景图片

来源:互联网 发布:java什么是进程和线程 编辑:程序博客网 时间:2024/06/04 23:39

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

首先需要注意的几点:

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);
}

0 0
原创粉丝点击