将APP变成黑白的颜色

思路:

1、我们View的层级是一层嵌套一层的,而绘制的画笔也是由顶层给到下层的。那我们拿到顶部的容器,改它的画笔颜色即可

如何拿到最顶部的容器呢?

View decorView = this.getWindow().getDecorView();

2、画笔要怎么设置?

我们可以通过矩阵,设置它的饱和度为0即可

   ColorMatrix cm = new ColorMatrix();
   cm.setSaturation(0);
   Paint paint = new Paint();
   paint.setColorFilter(new ColorMatrixColorFilter(cm));

3、修改容器的画笔

decorView.setLayerType(View.LAYER_TYPE_SOFTWARE,paint);
  • 如何作用于所有UI呢? 我们不是有BaseActivity吗?所以我们在onCreate的时候,设置了contentView,去修改即可。不行我们再要求一下重新布局/重新绘制。

代码:

 

@Override
    protected void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutResId());
        // 1、拿到顶部容器
        View decorView = getWindow().getDecorView();
        // 2、修改矩阵的饱和度为0
        ColorMatrix colorMatrix = new ColorMatrix();
        colorMatrix.setSaturation(0);
        // 3、创建画笔
        Paint paint = new Paint();
        paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
        // 4、修改容器的画笔
        decorView.setLayerType(View.LAYER_TYPE_SOFTWARE, paint);
        mBind = ButterKnife.bind(this);
        initView();
        initEvent();
        initPresenter();
    }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值