gpt4 book ai didi

Android:克隆可绘制对象以使用过滤器制作 StateListDrawable

转载 作者:IT老高 更新时间:2023-10-28 13:08:05 26 4
gpt4 key购买 nike

我正在尝试制作一个通用框架函数,当按下/聚焦/选择/等时,使任何 Drawable 都高亮显示。

我的函数接受一个 Drawable 并返回一个 StateListDrawable,其中默认状态是 Drawable 本身,并且 android.R.attr.state_pressed 的状态是相同的 drawable,只是应用了一个过滤器使用 setColorFilter.

我的问题是我无法克隆可绘制对象并在应用过滤器的情况下创建一个单独的实例。这是我想要实现的目标:

StateListDrawable makeHighlightable(Drawable drawable)
{
StateListDrawable res = new StateListDrawable();

Drawable clone = drawable.clone(); // how do I do this??

clone.setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
res.addState(new int[] {android.R.attr.state_pressed}, clone);
res.addState(new int[] { }, drawable);
return res;
}

如果我不克隆,那么过滤器显然适用于两种状态。我试过玩 mutate() 但它没有帮助..

有什么想法吗?

更新:

接受的答案确实克隆了一个drawable。但它并没有帮助我,因为我的一般功能在另一个问题上失败了。似乎当您将可绘制对象添加到 StateList 时,它会丢失所有过滤器。

最佳答案

尝试以下方法:

Drawable clone = drawable.getConstantState().newDrawable();

关于Android:克隆可绘制对象以使用过滤器制作 StateListDrawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7979440/

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