【发布时间】:2019-09-10 08:30:55
【问题描述】:
我需要我的自定义 ImageView(称为 ItemAnimationView)不绘制其图像的任何透明部分。
我将这个类用于很多实例和很多不同的图像,所以如果我只能使用我可以在 ImageView 上调用的方法来解决这个问题,那将是最好的,因为手动编辑所有不同的图像不会工作。
那么有没有某种ColorFilter 不仅会过滤掉某种颜色,而且会过滤掉任何程度透明的每个像素?
如果有一种方法可以在不访问实际位图的情况下执行此操作,那将非常方便,因为到目前为止我用于视图的唯一代码行是
setImageResource(item.getResourceID());
还有一些动画,所以我没有关联的Bitmap 对象。
【问题讨论】:
-
"I need my custom ImageView (called ItemAnimationView) to not draw any part of its image that is transparent."- 这里的“透明”是什么意思? (阿尔法通道!= 255)? -
没错。我只想查看具有 alpha 值
255的像素。 -
尝试使用
ColorMatrixColorFilter- 我认为你可以,但你需要在谷歌上搜索一下颜色矩阵(并阅读android.graphics.ColorMatrix官方文档) -
3 分钟谷歌搜索给出:quasimondo.com/colormatrix/ColorMatrix.as - 它具有
thresholdAlpha功能 - 但我不知道它是如何工作的(或者即使它是同一个矩阵) -
我有点理解,但问题是该方法有一个输入,而 java ColorMatrixFilters 只提供了在没有任何参数的情况下缩放和转换值的机会。如果我可以使用原始 alpha 值作为自定义数学函数的参数,我就会知道如何解决这个问题......
标签: android imageview alpha colorfilter