gpt4 book ai didi

android - 如何将 PorterDuff 滤镜应用于文本颜色?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:56:07 26 4
gpt4 key购买 nike

我不想使用状态选择器。我想编写通用代码以将滤镜应用于文本颜色,无论原始颜色是什么。

这实际上是按下时着色按钮的一部分。我了解到我可以轻松地为 ImageButton 着色:

imageButton.setColorFilter(Color.argb(150, 155, 155, 155));

对于按钮,我可以为背景图像着色:

button.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);

但是,我无法弄清楚如何为按钮文本的颜色值着色。有任何想法吗?有什么方法可以让我将 PorterDuff 色调应用于任意颜色值,这样我就可以将新值设置为 tet 颜色吗?

最佳答案

我花了几个小时研究文档和论坛,但绝对找不到将 PorterDuff 过滤器应用于文本或任意 (int) 颜色值的直接方法;一切似乎都与图像有关。

我的解决方法很丑陋,但我找到的唯一解决方案是:

int normalTextColor = Color.argb(0, 155, 155, 155);
Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); //make a 1-pixel Bitmap
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(normalTextColor); //color we want to apply filter to
canvas.drawColor(pressedFilterColor, mode); //apply filter
int pressedTextColor = bitmap.getPixel(0, 0);

Presto——现在您可以在 TextView、Button 等上使用 setColor() 或 setTextColor() 以及新的 pressedTextColor。

我很乐意听到不涉及绘制单像素位图的替代方案,因为这看起来很荒谬——但这确实完成了工作。

关于android - 如何将 PorterDuff 滤镜应用于文本颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com