有没有办法可以在不维护原始图像的单独灰色副本的情况下使 Android 中的 ImageButton 变灰?

Aur*_*uro 2 css java android grayscale android-imagebutton

我想有一个ImageButton最初有一个灰色的效果就可以了&轮流到其选择时原来的颜色。我正在努力实现类似的目标这个. 我知道这可以在 CSS 中完成,但想知道是否存在与它等效的任何 Android 属性/函数。

在这里读了一篇文章,似乎暗示我必须维护同一图像的不同灰色副本才能实现这一目标。但是,如果我有 100 个以上的 ImageButton,那么维护同一个 Image 的 2 个副本会消耗大量内存。

与常规 Button 不同,ImageButton 或具有图像背景的 Button 在禁用时不会变灰。您实际上必须使用另一个图像或以它看起来变灰的方式对其进行处理。

那么真的没有办法在 Android 中实现在 CSS 中使用灰度可以实现的目标吗?

感谢您的时间!!

Dan*_*iev 8

如果您使用的是.png图像,则可以使用ImageView滤色器属性。

public void setDisabled(ImageView imageView) {
    final ColorMatrix grayscaleMatrix = new ColorMatrix();
    grayscaleMatrix.setSaturation(0);
    imageView.setColorFilter(new ColorMatrixColorFilter(grayscaleMatrix));
}
Run Code Online (Sandbox Code Playgroud)