近年来,越来越多的App在特殊节日将为了缅怀,纪念App做色色调展示.项目需求也要做成这样的展示.为此做了一下调研整体替换成灰色调
思路:将获取页面的Window在Window上做处理 动态改变色值的着色
实现:
1:Application 中实现 ActivityLifecycleCallbacks 监听Activity调用
class CommonAppclication:MultiDexApplication(), ActivityLifecycleCallbacks {
override fun onCreate() {
super.onCreate()
//注册 Activity 监听
registerActivityLifecycleCallbacks(this)
}
}
2:ActivityLifecycleCallbacks 实现方法中的onActivityCreated()方法中实现动态改变置灰的效果
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
Paint paint = new Paint();
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.setSaturation(0f);
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(colorMatrix);
paint.setColorFilter(filter);
activity.getWindow().getDecorView().setLayerType(View.LAYER_TYPE_HARDWARE, paint);
}
注意!!!!
设置灰度模式的时候 部分页面会和View.LAYER_TYPE_HARDWARE属性冲突 建议局部设置不要设置整个App
总结
1:注意启定页处理
2:页面有动态修改Window的Activity ,Dialog 需要特使处理