android:怎么改变多个activity的背景图片,全局背景切换

巴顿 发布于 2013/09/11 11:18
阅读 7K+
收藏 0
public class BaseActivity extends Activity {
	static View view = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		view = this.getWindow().getDecorView();   //getDecorView 获得window最顶层的View
		view.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.bg2));
	}
	
	public static View getBackgroundView() {
		return view;
	}

}

如上,我写了一个基础类,在里面设置了背景。
我想在另外一个ChangeBackgroundActivity中对按钮进行监听,点击按钮就对全局的背景进行切换
public class ChangeBackgroundActivity extends BaseActivity implements
        OnClickListener {
    Button btn2, btn3, btn4;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.changebackground);
        btn2 = (Button) findViewById(R.id.button2);
        btn3 = (Button) findViewById(R.id.button3);
        btn4 = (Button) findViewById(R.id.button4);
        //llayout = (LinearLayout) findViewById(R.id.llayout);
        //SetBackgroundImage.setBackGround(ChangeBackgroundActivity.this, llayout);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
        btn4.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button2:
            Toast.makeText(this, "进来了", 100).show();
            BaseActivity.getBackgroundView().setBackgroundDrawable(this.getResources().getDrawable(R.drawable.bg1));
            break;
        case R.id.button3:
            BaseActivity.getBackgroundView().setBackgroundDrawable(this.getResources().getDrawable(R.drawable.bg2));
            break;
        case R.id.button4:
            BaseActivity.getBackgroundView().setBackgroundDrawable(this.getResources().getDrawable(R.drawable.bg3));
            break;

        }

    }
}

但是实际效果是当前的页面改变了,其他的页面没有改变。应该怎么做才能将所有的背景都切换呢?
加载中
0
呵呵233
呵呵233
在每一个Activity的onResume方法里写上改变背景色的代码,这样每次切换Activity的时候都会调用该Activity的onResume方法,就实现了背景色的改变
呵呵233
呵呵233
回复 @巴顿 : 你也可以在xml布局文件里面更改,所有的activity的布局应该都依附于一个主布局,你改变这个主布局的背景就好了,那所有的都变了
巴顿
巴顿
每个activity里面都写一个onResume会不会太麻烦了,你也是这样做的么?
0
xesam
xesam

你的static view每次都是不同的对象,修改当前不会影响其他的。按照你的思路,不应该用view对象,而只需要设置一个标志位,然后在onResume中判断标志来决定是否修改背景。

还有就是可以更改整个主题。

0
巴顿
巴顿

引用来自“红色馒头”的答案

在每一个Activity的onResume方法里写上改变背景色的代码,这样每次切换Activity的时候都会调用该Activity的onResume方法,就实现了背景色的改变
参考了你的意见,不过我是在onCreate里面写上了改变景色的代码,谢谢楼上朋友们的回答~
张博闻
在oncreat怎么写的?是要在每一个activity都写吗?
返回顶部
顶部