千古八方的博客

  • 程序开发
    • Android
    • Spring Boot
  • 数据私有化
    • NAS
    • 私有云
    • 内网穿透
    • 服务器
  • 留言
  • 搞事
进学
为学无间断,如流水行云,日进而不已也
  1. 首页
  2. Android
  3. 正文

Android 如何把整个页面置为灰色?

2022年7月1日 704点热度 2人点赞 0条评论

开发Android应用时,当某功能不可用时,需要把该View变为灰色。 或者某个特殊节日时,也需要把整个页面置灰。

正常情况下,单个按钮可以通过给按钮添加多种状态来实现。

但如果已经开发完成,或者不仅局限于某个Button时(如整个APP的所有页面),  通过状态的方式工作量巨大。所以需要一种非侵入式的方式去掉View的色彩,降低工作量。

为此可以通过给布局根节点的View(ViewGroup)添加上饱和度过滤器来实现。当饱和度为零时,此时整个页面就会变成灰色,当饱和度为1时,为原本的颜色。同时不影响已有的逻辑。

效果如下:

使用方法如下:

SaturationView.getInstance().saturationView(rootView, 0f); # 将整个页面置灰, rootView 代表页面的根布局
SaturationView.getInstance().saturationView(rootView, 1f); # 将整个页面调整为正常色彩

 

SaturationView.java 源代码如下:

package org.tcshare.utils;

import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
import android.view.View;

/**
 * 去掉色彩,变灰
 * @author 爱T鱼
 */
public class SaturationView {
    private final Paint paint = new Paint();
    private final ColorMatrix cm = new ColorMatrix();
    private SaturationView(){

    }
    private static SaturationView instance;
    public static SaturationView getInstance(){
        synchronized (SaturationView.class) {
            if (instance == null) {
                instance = new SaturationView();
            }
        }
        return instance;
    }
    public void saturationView(View view, float saturation){
        cm.setSaturation(saturation);
        paint.setColorFilter(new ColorMatrixColorFilter(cm));
        view.setLayerType(View.LAYER_TYPE_HARDWARE, paint);
    }

}

 

标签: Android Utils
最后更新:2022年7月1日

千古八方

物格而后知至,知至而后意诚,意诚而后心正

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

千古八方

物格而后知至,知至而后意诚,意诚而后心正

最新 热点 随机
最新 热点 随机
火狐下远离内容农场的方法! 中国城市生活成本查询 Debian11 系统备份与灾备盘制作 Debian logwatch 自定义配置文件,根据规则忽略掉某些日志内容 Ampache 5.0 报错 The root Ampache folder has changed to ./public socat 正反向传输文件
NAS是什么?如何DIY一台NAS 存储? win10 上蓝牙耳机无声音,几十秒后自动断开 命令行手动升级 Nextcloud 自建NAS,选机械硬盘还是固态硬盘? socat 正反向传输文件 Android 如何把整个页面置为灰色?
分类
  • Android
  • Linux
  • NAS
  • Spring Boot
  • Windows
  • 内网穿透
  • 回忆
  • 基于NEAT的瞎几把寻思算法笔记
  • 散篇
  • 普通人的致富之路在哪里
  • 服务器
  • 未分类
  • 私有云
标签聚合
Spring Boot 我开源的APP NPS TrueNAS 安全维护 Windows 服务器 内网穿透 Android Widgets 散篇 Android系统编译 Android Utils 群晖NAS ubuntu 私有云 Nextcloud linux NAS
工具/友链

资源导航 – NAS、私有云存储
在线工具 – MD5、SHA、BASE64、URL编解码
在线工具 – 贷款计算器
在线工具 – IPv4/IPv6地址查询

千古八方 在 B站

千古八方 在 知乎

我的微信小程序:
微信小程序-城市生活成本查询
城市生活成本查询
库房物资流水记账簿
最近评论
Avatar photo
千古八方 发布于 1 个月前(12月28日) 重置命令是Nextcloud提供的,和哪个平台没关系。 如果报错,一般是路径或权限的问题导致的。 ...
Avatar photo
aron 发布于 1 个月前(12月24日) 博主你好 我的nextcloud管理员密码过期了 用了occ命令重置但是报错,能请教下是什么原因...
Avatar photo
千古八方 发布于 2 个月前(12月15日) 贝塞尔这个类在这里 https://gitee.com/aityu/AndroidUtils/blo...
Avatar photo
disco 发布于 2 个月前(12月05日) 有demo链接吗?贝塞尔曲线这个关键类没有写出来~
Avatar photo
HJM 发布于 3 个月前(10月20日) 必须点赞!很有效!

COPYRIGHT © 2022 千古八方的博客. ALL RIGHTS RESERVED.

京ICP备14020471号