1.MainActivity主界面
package com.example.daynight;
import com.example.daynight.base.BaseActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CompoundButton;
import android.widget.ToggleButton;
public class MainActivity extends BaseActivity {
//开关按钮
private ToggleButton mTb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTb = (ToggleButton) findViewById(R.id.tb);
mTb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
//日间模式
dayMode();
}else{
//夜间模式
nightMode();
}
}
});
}
}
2.创建一个包,包里面写如下方法
1.BaseActivity方法
package com.example.daynight.base;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
/**
* 描述
*
* @version 1.0.0
* @create 2016年7月23日
*/
public class BaseActivity extends Activity {
// 覆盖在最上面的View
protected View mCoverView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DNApplication app = getApp();
// 判断是否为夜间模式
if (app.isNight) {
nightMode();
} else {
// 日间模式
dayMode();
}
}
/**
* 日间模式
*/
protected void dayMode() {
if (mCoverView != null) {
getWindowManager().removeViewImmediate(mCoverView);
}
}
/**
* 夜间模式
*/
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);
}
private DNApplication getApp() {
return ((DNApplication) getApplication());
}
}
1.1创建一个类,继承Application方法
此方法如下
package com.example.daynight.base;
import android.app.Application;
public class DNApplication extends Application {
//是否为夜间模式
public boolean isNight;
@Override
public void onCreate() {
super.onCreate();
}
}