如何使来自同一资源的多个可绘制对象唯一?
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类型对象的哈希码是否保证唯一?