一键置灰通常应用于如下场景

1. 重大悼念活动:

在国家发生重大灾难、事故或举行悼念日等特殊时期,为了表达对逝者的尊重和哀悼,许多 APP 会将界面置灰。例如,在一些地震、空难等灾难事件发生后,以及全国性的哀悼日期间,大量 APP 会响应号召进行一键置灰。这不仅是一种情感上的表达,也是企业和平台社会责任感的体现。

2. 特殊纪念日或主题活动:

某些具有特殊意义的纪念日活动,APP 可能会选择置灰界面来营造特定的氛围。比如在反法西斯战争胜利纪念日等与历史事件相关的日子,一些历史文化类或相关主题的 APP 可能会通过置灰来引导用户关注和铭记这些重要时刻。

3. 模拟特殊视觉效果或用户体验场景:

在一些特定的应用场景中,为了给用户带来独特的视觉感受或模拟特定的情境,APP 会使用置灰功能。例如,在一些电影、电视剧的宣传 APP 中,为了营造出怀旧、复古或特定的剧情氛围,可能会将界面一键置灰,让用户仿佛置身于特定的时代背景中;或者在一些游戏 APP 中,特定的关卡或场景可能需要将界面置灰,以增加游戏的神秘感、紧张感或突出特定的元素。

4. 系统或 APP 维护升级:

当 APP 进行维护、升级或出现故障需要暂停使用时,为了向用户明确提示当前 APP 的不可用状态,可能会将界面置灰,并显示相关的维护提示信息。这样可以避免用户在不知情的情况下继续操作,减少用户的困惑和不满,同时也方便开发团队进行维护工作。

实现方案

1. 组件通用属性 grayscale

grayscale(value: number) 为组件添加灰度效果。

value,为当前组件添加灰度效果。值定义为灰度转换的比例,入参1.0则完全转为灰度图像,入参0.0则图像无变化,入参在0.0和1.0之间时,效果呈线性变化。(百分比);默认值:0.0;取值范围:[0.0, 1.0];说明:设置小于0.0的值时,按值为0.0处理,设置大于1.0的值时,按值为1.0处理。

Image($r('app.media.image')).width('90%').height(30).grayscale(0.7)
Image($r('app.media.image')).width('90%').height(30).grayscale(1) Text('为组件添加灰度效果').fontSize(15).fontColor(0xFF0000).grayscale(1)
封装一个通用的置灰组件,所有页面使用该组件包裹。

2、窗口属性 setWindowGrayScale

setWindowGrayScale(grayScale: number): Promise

设置窗口灰阶,使用Promise异步回调。该接口需要在调用loadContent()或setUIContent()使窗口加载页面内容后调用。

grayScale,窗口灰阶。该参数为浮点数,取值范围为[0.0, 1.0]。0.0表示窗口图像无变化,1.0表示窗口图像完全转为灰度图像,0.0至1.0之间时效果呈线性变化。

import { BusinessError } from '@kit.BasicServicesKit';

windowClass?.setUIContent('pages/Index', (error: BusinessError) => {
if (error.code) {
console.error(`Failed to set the content. Cause code: ${error.code}`);
return;
}
console.info('Succeeded in setting the content.');
let grayScale: number = 0.5;
try {
if (canIUse("SystemCapability.Window.SessionManager")) {
let promise = windowClass?.setWindowGrayScale(grayScale);
promise?.then(() => {
console.info('Succeeded in setting the grayScale.');
}).catch((err: BusinessError) => {
console.error(`Failed to set the grayScale. Cause code: ${err.code}, message: ${err.message}`);
});
}
} catch (exception) {
console.error(`Failed to set the grayScale. Cause code: ${exception.code}, message: ${exception.message}`);
}
});

3、使用工具库harmony-utils

调用工具类方法, AppUtil.setGrayScale(1);

AppUtil.setGrayScale(0.7); //设置灰度0.7
AppUtil.setGrayScale(1); //设置全灰
AppUtil.setGrayScale(1, true); //只置灰主窗口 AppUtil.setGrayScale(0); //取消置灰

HarmonyOS应用一键置灰指南的更多相关文章

  1. 【每日一记】unity3d 图片置灰shader

    项目须要.參考了一下网上的资料,写了一个shader,给button置灰. shader详细实现例如以下: 2016.07.25补充,支持mask剪裁 Shader "Transparent ...

  2. 使用CSS将图片转换成黑白(灰色、置灰)z转

    小tip: 使用CSS将图片转换成黑白(灰色.置灰) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.c ...

  3. 利用C语言强行点击置灰的按钮

    通常很多情况下,会有这样的事情,就是: 我们在运行某些程序的时候,发现按钮置灰了,比如购买版权或者输入序列号才能够获得访问权限.某个按钮才允许点击. 其实所有的这些东西都是 别的人或者公司利用一些编程 ...

  4. 设置UIButton的文字居右显示 去掉点击默认置灰效果

    1.设置UIButton的文字居右显示 [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight]; ...

  5. 【有意思的BUG】默认置灰的属性的值传递

    数据由Client发送给Server,如下图所示,Server在收到请求后会响应Client. 比如Client发送给Server一组数据:Name:sean&Hobby:movies& ...

  6. Button 使用Command 按钮置灰未更新

    当Button绑定了Command,按钮在窗口弹出.或者其它事件时,会自动置灰. 有时,异步执行时间较长时,界面一些绑定了命令的Button,State不会变化,会一直置灰. 直到再次转移Focus. ...

  7. idea配置tomcat运行按钮置灰,下拉没有自定义的tomcat选项

    一.问题 下拉没有自定义tomcat的选项 run按钮置灰,点不了 二.解决 添加自己的tomcat时,一定要点加号,不要用那个默认的.

  8. easyui按钮linkbutton 不可用(置灰)与 可用(取消置灰)

    easyui linkbutton按钮: 不可用(置灰) $('#butFree').linkbutton('disable'); 可用(取消置灰) $('#butFree').linkbutton( ...

  9. [原]NGUI之按钮置灰

    传统按钮置灰,需要使用另外一张纹理. 本例通过修改shader和NGUI sprite的r值实现按钮置灰.优势:节省纹理,操作简单 将NGUI Unlit/Transparent Colored片段部 ...

  10. easyui datagrid里的复选框置灰方法

    easyui datagrid里的复选框置灰方法: $('.datagrid input').prop('disabled',true);//复选框置灰

随机推荐

  1. Windows Server 2012 配置 FTP

    环境 Windows Server 2012 安装步骤 打开服务器管理器 管理 - 添加角色和功能 开始之前 选择安装类型 服务器选择 选择对应的服务器... 服务器角色 功能 确认 安装进度 配置步 ...

  2. AI时代:开源大模型选择

    https://docs.llamaindex.ai/en/stable/module_guides/models/llms.html 可以按参数和评分来选择模型: https://huggingfa ...

  3. nginx中的路径匹配规则详解(location规则)

    Nginx的路径匹配规则 Nginx的匹配规则用location指令来实现,Nginx 的location指令用于匹配请求的 URI(请求路径),并根据匹配结果执行特定的处理指令.location是实 ...

  4. 继承 QPaintEngine 利用 QSvgRenderer 从SVG 图片中提取路径(QPainterPath)的方法

    SVG 作为为可缩放矢量图形(Scalable Vector Graphics),易于编辑和维护,基于XML的文本文件存储,在网页设计.图标制作.数据可视化和其他图形相关的领域应用广泛.在应用工程中总 ...

  5. Asp.net mvc基础(六)TempData

    在客户端重定向或验证码等情况下,由于要跨请求的存取数据,是不能放到ViewBag.Model中,需要"暂时存到Session中,用完了删除"的需求:使用TempData可以做到. ...

  6. java 限流

    题记 在高并发的分布式系统中,我们都需要考虑接口并发量突增时造成的严重后果,后端服务的高压力严重甚至会导致系统宕机.为避免这种问题,我们都会为接口添加限流.降级.熔断等能力,从而使接口更为健壮. 限流 ...

  7. Python提交 post方法之‘Content-Type‘: multipart/form-datay

    最近写s2_061 Python脚本得时候遇到了POST 提交 'Content-Type': multipart/form-data 这个问题,然后查阅资料开始解决. 一.首先说一下POST 提交数 ...

  8. 集合流之“anyMatch”的应用【返回boolean类型】

    判断集合中是否存在"字符串",返回boolean类型 boolean isExit = allSku.stream().map(Product::getFeatureList) . ...

  9. sqlalchemy多对多关联

    sqlalchemy_many_to_many.py #!-*-coding:utf-8-*-from sqlalchemy import Table,Column,Integer,String,DA ...

  10. (补) HMM 求解参数-状态转移矩阵 A

    昨天在看的时候, 才发现, HMM参数求解给忘了 状态转移矩阵A的求解, 我以为我做了...好气哦, 不多比比, 直接来. A 是状态转移矩阵, 表示在 已知前一个状态下, 求解后一个概率(写出来就是 ...