如何使来自同一资源的多个可绘制对象唯一?

Posted

技术标签:

【中文标题】如何使来自同一资源的多个可绘制对象唯一?【英文标题】:How do I make multiple drawables from the same resource unique? 【发布时间】:2015-05-07 16:29:54 【问题描述】:

在我的 android 应用程序中,我尝试以编程方式创建一个可绘制资源的多种颜色变化。 (我对拼字游戏集中的每个字母都有一个独特的资源,并且在给定时间,板上随机有 X 个相同的字母图块)

现在我的 Draw 方法对每个唯一资源调用相同的 id:

int id = context.getResources().getIdentifier(this.tileLetter.toString(), "drawable", mypackagename);

Drawable t = context.getResources().getDrawable(id);
t.setAlpha(num);
t.draw(mycanvasname);

我的问题是,当我尝试对同一类的不同对象调用 setAlpha 时,更改会显示在画布上相同字母的所有图块上。 (同样,考虑尝试仅更改板上一个独特的瓷砖“A”的 alpha,而让其他“A”独自一人)。

更新 在 t.setAlpha(num) 之前调用 t.mutate() 就可以了。

【问题讨论】:

【参考方案1】:

如果您创建 Drawable 的副本并根据需要修改每个副本会怎样?在此处查看 Flavio 的答案:Android: Cloning a drawable in order to make a StateListDrawable with filters

【讨论】:

很棒的链接——在 setAlpha() 之前调用 mutate() 就可以了。

以上是关于如何使来自同一资源的多个可绘制对象唯一?的主要内容,如果未能解决你的问题,请参考以下文章

来自同一程序集的System.Type类型对象的哈希码是否保证唯一?

如何从多个 .csv 文件中的命名列中选择唯一值?

如何在来自特定用户的 Google People API 响应中唯一标识 Person 资源?

Vue.js 只显示具有唯一属性的对象

线程进程与程序+并行与并发

Android - 如何显示来自可绘制资源的图像?