网易新闻有一个小功能,功能虽小,但看的出来大公司的产品设计确实很不错,今天就实现下改功能,如果用户点击选择了夜间模式或者日间模式,那么所有的activity背景都要变,其实android源码给每个activity 内容区域都定义了一个id,就是android.R.id.content,因为所有的activity背景要变色,因此肯定要写一个基类,代码如下:
public class BaseActivity extends Activity {
protected void onCreate(android.os.Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
};
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
(((ViewGroup) findViewById(android.R.id.content)).getChildAt(0)).setBackgroundColor(getResources().getColor(
true ? R.color.root_view_background_color_night
: R.color.root_view_background_color));
}
}
用户点击日间或者夜间模式,肯定是存储一个值到SharedPreferences中,我在上面的代码中是写了true,如果真实的项目中肯定是从SharedPreferences文件中读取,就是这样了,简单吧!