3

現在、メインビューに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)

4

3 に答える 3

1

ドローアブルの名前/IDをImageViewに設定した場所に保存します。したがって、現在の画像識別子を保持するメンバー変数がクラス/アクティビティに常にあります。

于 2012-05-24T10:16:46.357 に答える
0

このリンクを見てください

ImageViewでドローアブルのIDを取得します

基本的に、ImageViewで画像を設定し、必要な場所から取得するときはいつでも、ImageViewタグでIDを設定できます。

于 2012-05-24T10:45:52.783 に答える
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

DrawableinImageViewは常にリソースIDから取得されるとは限らないことに注意してください。Drawableそれはオブジェクトまたは画像のウリから来ている可能性があります。このような場合、はmResource0にリセットされます。したがって、これにあまり依存しないでください。

于 2012-12-27T04:26:35.120 に答える