一、黑白模式
/**
* 设置灰白色
*
* @param window
*/
protected void setGrayScreen() {
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
getWindow().getDecorView().setLayerType(View.LAYER_TYPE_HARDWARE, paint);
}
/**
* 设置原色
*
* @param window
*/
protected void setOriginalScreen() {
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(1);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
getWindow().getDecorView().setLayerType(View.LAYER_TYPE_HARDWARE, paint);
}
二、黑夜模式
/**
* @param isNightMode 控制是白天还是夜晚
*/
protected void setNightOrLightMode(boolean isNightMode) {
if (isNightMode) {
WindowManager.LayoutParams params = new WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_APPLICATION,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
if (myView == null) {
myView = new View(this);
myView.setBackgroundColor(0x70000000);
}
mWindowManager.addView(myView, params);
} else {
if (myView != null) {
mWindowManager.removeView(myView);
}
}
}
使用:在基类BaseActivity中实现置灰方法,其他Activity继承基类。
实现APP黑白与黑夜模式
本文介绍了一种在Android应用中实现黑白模式和黑夜模式的方法。通过调整ColorMatrix的饱和度来实现屏幕颜色的灰度化及还原,并利用WindowManager添加透明黑色视图实现黑夜模式。
608

被折叠的 条评论
为什么被折叠?



