我正在构建一个在主视图上有6个图像的应用程序,它会从我的drawable
文件夹中生成随机图像(洗牌一副牌)
初始化套牌:
public static void initDecks() {
int m = 0;
for (int i = 0; i < suites.length; i += 1) {
for (int j = 0; j < regularCards.length; j += 1) {
regularDeck[m++] = "drawablw/" + suites[i] + regularCards[j]
+ ".jpg";
}
}
m = 0;
for (int i = 0; i < suites.length; i += 1) {
for (int j = 0; j < trickCards.length; j += 1) {
trickDeck[m++] = "drawable/" + suites[i] + trickCards[j]
+ ".jpg";
}
}
Collections.shuffle(Arrays.asList(regularDeck));
Collections.shuffle(Arrays.asList(trickDeck));
}
洗牌:
public static String[] getCards(int size) {
String[] result = new String[size];
for (int i = 0; i < size - 2; i += 1) {
result[i] = regularDeck[i];
}
result[size - 1] = trickDeck[0];
Collections.shuffle(Arrays.asList(result));
return result;
}
在我的主要活动中,我将卡分配给视图,当用户点击它们时,我想知道图像是技巧卡还是普通卡。
有没有办法找出被点击的卡片是否是一个技巧?类似于if(image.getImageDrawable().equals(R.drawable.trick.jpg)
?
答案 0 :(得分:1)
将drawable的名称/ ID存储在您将其设置为ImageView的位置。因此,您的类/活动中始终有一个包含当前图像标识符的成员变量。
答案 1 :(得分:0)
请看这个链接
Get the ID of a drawable in ImageView
基本上,当您在ImageView中设置图像并从需要的地方获取图像时,您可以在ImageView标记中设置id ....
答案 2 :(得分:0)
public static Integer getDrawableId(ImageView obj)
throws SecurityException, NoSuchFieldException,
IllegalArgumentException, IllegalAccessException, ClassNotFoundException {
Field f = ImageView.class.getDeclaredField("mResource");
f.setAccessible(true);
Object out = f.get(obj);
return (Integer)out;
}
我发现Drawable
资源ID存储在mResource
对象的ImageView
字段中。
请注意,Drawable
中的ImageView
可能并非始终来自资源ID。它可能来自Drawable
对象或图像Uri。在这些情况下,mResource
将重置为0.因此,不要依赖这么多。