在我的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()就可以了。
答案 0 :(得分:0)
如果您创建Drawable的克隆并根据需要修改每个克隆,该怎么办?请参阅Flavio的答案:Android: Cloning a drawable in order to make a StateListDrawable with filters