android view置灰(哀悼日)

置灰前:


image.png

置灰后:


image.png

Android页面置灰
方案1.Android页面绘制流程一般分为measure、layout、draw,页面置灰在draw方法中实现。draw方法参数有canvas、paint,canvas是界面的画布,paint是绘制界面的画笔。可以通过更改paint的属性更改界面背景颜色,通过设置颜色过滤器更改画笔的色调、饱和度和亮度。置灰效果饱和度为0,画笔的设置代码:


Paint  paint = new  Paint();
ColorMatrix cm = new  ColorMatrix();
cm.setStaturation(0);
paint.setColorFilter(new ColorMatrixColorFilter(cm));

方案2.考虑性能使用HardwareLayer(GPU内部的Buffer)对绘制的图形进行缓存。设置方法setLayerType()强制View创建自己对应的层,并将自己绘制到层上。


方案3.给Activity的顶层View设置置灰,实现全局置灰效果。获取界面的根View:

//java
View view  = activity. getWindow(). getDecorView();
 Paint paint = new  Paint();
ColorMatrix cm = new  ColorMatrix();
cm.setStaturation(0);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
view. setLayerType(View.LAYER_TYPE_HARDWARE, paint);
//kotlin
val view: View = window.decorView
val paint = Paint()
val cm = ColorMatrix()
cm.setSaturation(0f)
paint.colorFilter = ColorMatrixColorFilter(cm)
view.setLayerType(View.LAYER_TYPE_HARDWARE, paint)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景: 4月4日,国家为表达全国各族人民对抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞的深切哀悼,举行全国性哀悼活动,各...
    IN_BLACK_IN阅读 3,968评论 0 2
  • 本篇博客是我对View的绘图方面的理解和归纳,也不会说的非常的细,只是类似于一个思维导图的作用,因为有人写得更好了...
    PuHJ阅读 1,463评论 0 2
  • 【Android 自定义View之绘图】 基础图形的绘制 一、Paint与Canvas 绘图需要两个工具,笔和纸。...
    maiduoduo阅读 3,305评论 0 3
  • 为什么选择自定义View来做起头?可能是因为我最有成就感的事情除了大一刚接触编程时就进入了ACM之外,就是...
    孤独的伤逝阅读 795评论 1 5
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,362评论 0 13