App实现哀悼模式

引言

最近开发哀悼模式的需求以应对某些特殊场景,针对两端的思想思路总结如下

解决方案

iOS:

思路:在页面上添加混合饱和过滤模式的view,使最终的颜色为灰色
注意:iOS13有效,iOS12部分有效部分无效。在业务侧使用时记得增加版本判断

UIView *overlay = [[UIView alloc] initWithFrame:self.view.bounds];
// 滤镜的背景颜色,一些鲜艳的颜色设置后会无效
overlay.backgroundColor = [UIColor lightGrayColor];
overlay.userInteractionEnabled = false;
// 设置符合过滤,混合饱和模式
overlay.layer.compositingFilter = @"saturationBlendMode"; // compositingFilter的值有如下: normalBlendMode、darkenBlendMode、multiplyBlendMode、colorBurnBlendMode、lightenBlendMode、screenBlendMode、colorDodgeBlendMode、overlayBlendMode、softLightBlendMode、hardLightBlendMode、differenceBlendMode、exclusionBlendMode、hueBlendMode、saturationBlendMode、colorBlendMode、luminosityBlendMode
// 设置图层在最上面
overlay.layer.zPosition = FLT_MAX;
[self.view addSubview:overlay];
// 如果在整个app上起作用,将这个view添加到window上即可
UIWindow *window = [[UIApplication sharedApplication].delegate window];
[window addSubview:overlay];

Android:

思路:在Activity的顶层View设置置灰实现全局置灰效果View

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);

Harmony:

待补充

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

推荐阅读更多精彩内容

  • 由于某些原因,需要将App全部页面或者某些页面置灰一段时间。下面就介绍下可以实现的几种方法。 方案一: 给App添...
    丶天空蓝丶阅读 3,260评论 0 5
  • 前阵子清明节为哀悼疫情中去世去的同胞和战士们,全国娱乐设施停业一天,各大厂商的 app 也都启动了灰度色盲模式的 ...
    码农淏阅读 8,289评论 35 13
  • 因为最近做哀掉日App黑白化的需求,需要依据下发的配置对APP的首页或者整体进行置为灰色,因此这里针对方案做一下总...
    林大鹏阅读 6,812评论 0 36
  • 实现原理:用添加了半透明灰色滤镜的View,盖在想要置灰的界面上。 自定义View 添加View到界面。需要注意,...
    Accepted_阅读 1,046评论 1 4
  • 由于某些原因,需要将App全部页面或者某些页面置灰一段时间。下面就介绍下可以实现的其中一种方法。 给App添加一层...
    樊二哈阅读 800评论 0 1