Android全局设置APP为黑白模式的两种方案

Android系统实现黑白模式主题功能 Android应用程序中,实现黑白模式主题功能可以为用户提供更好的视觉体验和个性选择。本文将介绍如何在Android应用程序中开启和关闭黑白模式主题功能,并提供相应的源代码。通过以上步骤,我们可以在Android应用程序中实现开启和关闭黑白模式主题功能。通过启用自动夜间模式,并在代码中设置相应的模式,我们可以为用户提供更好的视觉选择。步骤 3: 在应用程序的代码中启用黑白模式主题。步骤 1: 在应用程序的代码中禁用黑白模式主题。这样,当应用程序启动时,将自动应用黑白模式主题。如有任何疑问,请随时提问。 阅读详情

清明节国家哀悼日时各大APP的黑白模式切换,以下介绍两种方案快速设置APP为黑白模式

方案1:
在Activity 中增加如下代码(可以放到项目的BaseActivity中):

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.xxx);
    //主要是如下代码:
    View decorView = getWindow().getDecorView();
    Paint paint = new Paint();
    ColorMatrix cm = new ColorMatrix();
    cm.setSaturation(0);
    paint.setColorFilter(new ColorMatrixColorFilter(cm));
    decorView.setLayerType(View.LAYER_TYPE_HARDWARE,paint);
}

方案2:

1、先定义一个GrayFrameLayout布局

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.FrameLayout;
 
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
 
public class GrayFrameLayout extends FrameLayout {
    private Paint mPaint  =new Paint();
    public GrayFrameLayout(@NonNull Context context) {
        super(context);
    }
 
    public GrayFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        ColorMatrix  cm = new ColorMatrix();
        cm.setSaturation(0);
        mPaint.setColorFilter(new ColorMatrixColorFilter(cm));
    }
 
    @Override
    protected void onDraw(Canvas canvas) {
        canvas.saveLayer(null,mPaint,Canvas.ALL_SAVE_FLAG);
        super.onDraw(canvas);
    }
 
    @Override
    protected void dispatchDraw(Canvas canvas) {
        canvas.saveLayer(null,mPaint,Canvas.ALL_SAVE_FLAG);
        super.dispatchDraw(canvas);
    }
}

2、在Activity(可以放到项目的BaseActivity中)

 @Override
  public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
    if("FrameLayout".equals(name)){
      int attributeCount = attrs.getAttributeCount();
      for (int i = 0; i < attributeCount; i++) {
        String attributeName = attrs.getAttributeName(i);
        String attributeValue = attrs.getAttributeValue(i);
        if(attributeName.equals("id")){
          int id = Integer.parseInt(attributeValue.substring(1));
          String resourceName = getResources().getResourceName(id);
          if("android:id/content".equals(resourceName)){
            GrayFrameLayout frameLayout  = new GrayFrameLayout(this,attrs);
            return frameLayout;
          }
        }
      }
    }
    return super.onCreateView(parent, name, context, attrs);
  }

Android 11.0 系统开启和关闭黑白模式主题功能实现 在11.0的rom系统开发定制中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添加到systemui的下拉状态栏的功能开关里面,接下来先 查看系统是怎么实现黑白模式功能的,然后实现功能 阅读详情

相关推荐

Android实现黑白主题切换(附完整源码)

Android实现黑白主题切换(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 584

Android 全局黑白-模拟颜色空间

在一些特殊的子,如默哀、灾难,纪念,哀悼等,许多的APP、网页、海报等都开始使用黑白色主题。Android全局黑白实现方案,可以考虑使用模拟颜色空间的方法。借助硬件加速渲染选项,您可以利用基于硬件的选项(如 GPU、硬件层和多重采样抗锯齿 (MSAA)针对目标硬件平台优应用。点按模拟颜色空间可以更改整个设备界面的配色方案。此设置下面的选项是指色盲类型。已停用(无模拟配色方案)全色盲(配色方案限于黑色、白色和灰色)

ansondroider的博客 2340

Android App首页全局黑白方案探索

关于黑白页面,这几年是比较常见的场景。比如,在清明节或特殊时政,各大APP都会进行黑白处理。普通小白刚接到需求的时一定会感觉是不是好麻烦,要搞一套换肤吗?下面有三种实现方案,一起来探索吧!最后咱们再总结一下黑白方案:使用了 ColorMatrix 设置饱和度为 0,设置到 Paint 中,让根布局拿着这个 Paint 去进行重绘。

csdn_aiyang的博客 1005

Android实现黑白模式及黑夜模式

实现黑边模式及黑夜模式

cbxboy163的博客 1944

安卓APP全局黑白实现方案

对现有黑白方案进行原理分析,并总结一套简易的APP黑白方案,对遇到的坑进行列举,有完整代码可以复制立即生效。

Steins Gate 1万+

Android APP全局黑白实现方案

最后咱们再总结一下黑白方案。使用了ColorMatrix设置饱和度为0,设置到Paint中,让根布局拿着这个Paint去进行重绘。这样APP全局黑白的介绍就结束了,希望大家读完这篇文章,会对APP黑白有一个更深入的了解。如果我的文章能给大家带来一点点的福利,那在下就足够开心了。

xiaoerbuyu1233的博客 3908

Android实现黑白模式(附带源码)

Android实现黑白模式(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1472

一键实现app全局黑白方法总结

方法一: 自定义view,设置饱和度为0,变成灰度 原理: 自定义view时,对paint设置setColorFilter,将饱和度设置为0,canvas通过saveLayer把paint替换即可,全局设置时,可以采用以下方式。 创建GrayFrameLayout public class GrayFrameLayout extends FrameLayout { private Paint mPaint = new Paint(); public GrayFrameLayout(Cont

楠之枫雪的博客 4238

Android实现APP黑白 (附带源码)

Android实现APP黑白 (附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1639

App 黑白技术实践

很高兴遇见你~最近打开各大 App 会发现它们都做了黑白,如下支付宝的处理:可以看到应用设置全局灰色调,表达了一种对逝者的哀悼,非常的应景和人性。作为程序猿,我们来探索一下它从技术角度是怎么实现的。本篇文章我们介绍了:1、App 黑白实现原理:将 Paint 的饱和度设置为 0,然后进行 View 的绘制2、App 黑白两种方案实践:1、对页面的 DecorView 进行黑白设置2、替换页面的内容栏 FramLaout 为黑白 FrameLayout。

star_nwe的博客 953

特殊纪念Android APP设置黑灰色背景

今天在学习鸿洋大神的博客的时候看到了相关文章,于是动手实现了一下; 当在特殊的某一个子,我们会表达我们的悼念之情,APP会在某一设置成黑灰色: 实现: //设置整个APP的所有活动页面变为黑白色;屏蔽掉色彩,特殊节需要用到; private void initGrayScreen(){ Paint paint = new Paint(); ColorMatrix cm = new ColorMatrix(); cm.setSaturation(0

RunningNewBie的博客 4261

Android APP界面黑白处理

的属性更改界面背景颜色,通过设置颜色过滤器更改画笔的色调、饱和度和亮度。考虑性能使用HardwareLayer(GPU内部的Buffer)对绘制的图形进行缓存。设置置灰,实现全局置灰效果。创建自己对应的层,并将自己绘制到层上。Android页面绘制流程一般分为。Android页面置灰。

假装你是大灰狼的专栏 819

Android实现APP黑白(附带源码)

Android实现APP黑白(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 845

苹果手机夜间模式怎么设置_微信怎么设置夜间模式?iPhone夜间模式设置教程 省电又护眼!...

最近有小伙伴后台留言问了这样一个问题,微信怎么设置夜间模式?首先微信APP目前本身并没有加入夜间模式,如果觉得夜间看手机刺眼的话,可以开启手机自动的夜间模式,大多数安卓和iOS手机都支持,开启后不仅更省电,还可以更好的保护用户眼睛。手机夜间模式设置攻略微信怎么设置夜间模式?以下是安卓和iPhone夜间模式设置使用教程。1、安卓手机安卓手机设置夜间模式操作很简单,首先需要先开启安卓手机的开...

weixin_39963853的博客 857

Android实现设置灰白模式效果

细心点的童鞋会发现,到特殊节比如清明节这天很多App设置了符合主题的灰白模式,比如京东,如图所示: 我们再来看看最终实现的效果图: 那我们今天就介绍三种方案全局设置灰白模式方案一: 这也是我回复这位童鞋的方案:给Activity的顶层View设置置灰,实现全局置灰效果,下面我们来看看具体的实现过程。 可以在BaseActivity的onCreate方法中,使用ColorMatrix设置灰度 @Override protected void onCreate(@Nullable B

龙旋的博客 4965

android 夜间模式源码,Android Support Library 之 夜间模式

前言夜间模式实现方式:1、通过切换theme来实现夜间模式。优点:可以匹配多套主题,并不局限于黑白模式缺点:需要大量定义主题详见博客:http://wuxiaolong.me/2015/08/19/ChangeTheme/2、通过修改uiMode来切换夜间模式。修改uimode是修改Configuration,这种主题切换只限于黑白模式,没有其他模式,不需要大量定义主题,即本文介绍的内容。效果预览...

weixin_36296864的博客 274
上一篇: android webview加载网页获取对应url 参数值的方法
下一篇: android从相册中获取图片Base64后通过JS桥传递给H5加载实现
wwslina
博客等级 码龄11年 24粉丝 · 61原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值