首先建一个MyApplication的类继承Application,在其中定义一个静态的boolean 类型的变量 如:public static boolean isNight;
其次在Xml文件中进行注册。android:name="包名.MyApplication"
然后建一个类 DayNightActivity;
public class DayNightActivity extends FragmentActivity {
// 覆盖在最上面的View
protected View mCoverView;
private MyApplication app;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = getApp();
// 判断是否为夜间模式
if (app.isNight) {
// 夜间模式
nightMode();
} else {
// 日间模式
dayMode();
}
}
protected void dayMode() {
if (mCoverView != null) {
getWindowManager().removeViewImmediate(mCoverView);
}
app.isNight=false;
}
protected void nightMode() {
if (mCoverView == null) {
// 如果不存在,则创建一个
mCoverView = new View(this);// argb
mCoverView.setBackgroundColor(0x80000000);
}
// 撑满屏幕
int matchParent = WindowManager.LayoutParams.MATCH_PARENT;
// application类型
int typeApp = WindowManager.LayoutParams.TYPE_APPLICATION;
// 不可触摸
int noTouchable = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
// 不可获得焦点
int noFocusable = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
// 透明
int translucent = PixelFormat.TRANSLUCENT;
// 构建参数
WindowManager.LayoutParams params = new WindowManager.LayoutParams(matchParent, matchParent, typeApp,
noTouchable | noFocusable, translucent);
// 添加到window
getWindowManager().addView(mCoverView, params);
app.isNight=true;
}
private MyApplication getApp() {
return ((MyApplication) getApplication());
}
}
最后在监听事件里监听它
ToggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
//Toast.makeText(MainPagerActivity.this, isChecked+"", 1).show();
// 夜间模式
nightMode();
} else {
// 日间模式
dayMode();
}
}
});
在以后的每个类里都要继承DayNightActivity