android - ChildView 是否可以 setSaturation 值大于 Parent?
问题描述
我有一个布局,一个 ImageView 在一个 FrameLayout 中,ImageView 的原色是红色。首先我将 FrameLayout 设置为灰色。代码如下:
public GrayFramLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
mPaint.setColorFilter(new ColorMatrixColorFilter(cm));
}
public GrayFramLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void dispatchDraw(Canvas canvas) {
canvas.saveLayer(null, mPaint, Canvas.ALL_SAVE_FLAG);
super.dispatchDraw(canvas);
canvas.restore();
//canvas.save();
}
@Override
public void onClick(View v) {
if(ivTest != null) {
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(1);
mPaint.setColorFilter(new ColorMatrixColorFilter(cm));
ivTest.setLayerType(View.LAYER_TYPE_HARDWARE, mPaint);
}
}
运行应用程序后,ImageView 是灰色的,然后我点击 ImageView,调用代码,但 ImageView 不能是原来的红色!任何人都可以帮助我吗?
解决方案
推荐阅读
- c - 从字符串中获取第二个单词
- python-3.x - 使用 Imagenet 预训练的 Resnet152 嵌入的图像相似性
- java - Android Select Image From Gallery java.lang.NullPointerException:尝试在空对象上调用虚拟方法“boolean Bitmap.compress()”
- c - 在c中写入和读取文件
- sql - 如何编写复杂的主从查询 SQL Server
- spring-boot - 如何扫描 springboot 应用程序以列出硬编码值?
- angular - Angular 8:访问放置在 app-root 上的 2 个相同组件
- javascript - 在javascript(打字稿)中格式化数字
- java - hadoop mapreduce 索引失败
- reactjs - 在对钩子和引导程序做出反应时,如何在手风琴打开时更改雪佛龙?