Android护眼模式(argb)

举报
计蒙不吃鱼 发表于 2025/06/04 15:36:31 2025/06/04
【摘要】 这是一篇关于实现护眼模式的技术文章。通过动态添加一个透明的帧布局(FrameLayout),并设置其不可触碰、不可聚焦,覆盖在应用界面之上。利用 `Color.argb()` 方法设置带有透明度的背景色,提供两种流行护眼色(浅绿和深绿)。开启护眼模式时,为帧布局设置计算好的颜色;关闭时恢复透明。若需全局生效,可在 BaseActivity 中初始化并调用相关方法。

前提:护眼模式可以说是加一层某颜色且透明度小于1的view,现在网络上比较流行的护眼色博主比较喜欢以下两种。

rgb值如下
第一种:r=199, g=237, b=204;
第一种:r=129, g=116, b=38;

效果图如下

第一步:动态添加一个透明的帧布局且设置此布局不可触不可定焦

   protected void initEyeView() {
        ViewGroup content = ((ViewGroup) findViewById(android.R.id.content));
        view = new FrameLayout(this);
        view.setBackgroundColor(Color.TRANSPARENT);          //设置透明
        WindowManager.LayoutParams params = new WindowManager.LayoutParams();
        params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL     //不触碰
                | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE            //不可定焦
                | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;           //不可触
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = WindowManager.LayoutParams.MATCH_PARENT;
        content.addView(view, params);
    }

第二步:设置颜色的方法,由于要考虑透明度所以使用Color.argb()方法

    public int getFilterColor() {
    //第一种
        int a = (int) (67.5);   
        int r = (int) (199);
        int g = (int) (237);
        int b = (int) (204);
    //第二种
//        int a = (int) (67.5);     //透明度
//        int r = (int) (129);
//        int g = (int) (116);
//        int b = (int) (38);
        return Color.argb(a, r, g, b);
    }

第三步:给帧布局上色

public void openEye() {
    view.setBackgroundColor(getFilterColor());
}

另外关闭护眼模式:将帧布局设置为透明

  public void closeEye() {
        view.setBackgroundColor(Color.TRANSPARENT);
    }

如需要整个app都起效果,在BaseActivity中调用即可。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。