App 一行代码实现黑白化实现探索

2023-09-23 14 0

App 黑白化实现探索,有一行代码实现的方案吗?

4 月 4 日这一天,不少 网站、App 都通过黑白化,表达了深切的哀悼。

这篇文章我们纯谈技术。

我在当天,也给上线了黑白化效果:

直接撸代码吧!!

硬件加速方案

大家都知道硬件加速吧,我们一般选择硬件绘制还是软件绘制会调用下面的 API:

view.setLayerType(layerType, null);

我们很少关注,第二个参数。

第二个参数是Paint,然后我们可以这么做:

Paint mPaint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
mPaint.setColorFilter(new ColorMatrixColorFilter(cm));
getWindow().getDecorView().setLayerType(View.LAYER_TYPE_HARDWARE, mPaint);

看到了吗…

我们可以直接给任何一个 View 去设置灰度化。

而且我们 Activity 可以拿到 decorView,也就是说我们直接在 decorView 上设置上述代码就可以了。

运行了一下:自行运行

这个方案明眼人看一眼,都知道明显简单多了。

你可以在 BaseActivity 或者搞个ActivityLifecycleCallbacks,只要能拿到 DecorView 就行。

代码编程
赞赏

相关文章

使用RTL-SDR和Matlab Simulink玩转软件无线电(十二)
使用RTL-SDR和Matlab Simulink玩转软件无线电(十一)
使用RTL-SDR和Matlab Simulink玩转软件无线电(十)
使用RTL-SDR和Matlab Simulink玩转软件无线电(九)
使用RTL-SDR和Matlab Simulink玩转软件无线电(八)
使用RTL-SDR和Matlab Simulink玩转软件无线电(七)