Android App全局灰度展示

近年来,越来越多的App在特殊节日将为了缅怀,纪念App做色色调展示.项目需求也要做成这样的展示.为此做了一下调研整体替换成灰色调

image.png

思路:将获取页面的Window在Window上做处理 动态改变色值的着色

实现:

1:Application 中实现 ActivityLifecycleCallbacks 监听Activity调用


image.png
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 需要特使处理

有帮助给个赞吧!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容