web-dev-qa-db-ja.com

ImageViewで関連付けられた画像(Drawable)を取得android

androidで画像をimageviewコントロールに設定しました:

iv.setImageResource(R.drawable.image1);

この関連付けられたDrawableを取得したいのですが、次のようになります。

Drawable myDrawable = iv.getImageResource(); //wrong

ありがとう!

10
thenosic

あなたは次のようなドローアブルを手に入れることができます

Drawable myDrawable = iv.getDrawable();

あなたはそれを次のようなドローアブルリソースと比較することができます

if(iv.getDrawable()==getResources().getDrawable(R.drawable.image1)){
    //do work here
}
35
A.J.

最初にDrawableを定義します。

Drawable myDrawable = getResources().getDrawable(R.drawable.image1);
iv.setImageDrawable(myDrawable);
8
nahwarang

残念ながら、getImageResource()またはgetDrawableId()はありません。ただし、ImageViewタグを使用して簡単な回避策を作成しました。

OnCreate()の場合:

imageView0 = (ImageView) findViewById(R.id.imageView0);
imageView1 = (ImageView) findViewById(R.id.imageView1);
imageView2 = (ImageView) findViewById(R.id.imageView2);

imageView0.setTag(R.drawable.Apple);
imageView1.setTag(R.drawable.banana);
imageView2.setTag(R.drawable.cereal);

次に、必要に応じて、描画可能なIDを取得するための簡単な関数を作成できます。

private int getImageResource(ImageView iv) {
    return (Integer) iv.getTag();
}

これがお役に立てば幸いです。確かに私の仕事が楽になりました。

8
Anonsage

Drawable drawable=imageview.getDrawable();を使用する

6
Balaji.K

次のような描画可能なリソースを比較できます

     if (imageView.getDrawable().getConstantState() == 
        ContextCompat.getDrawable(getContext(), R.drawable.image1).getConstantState()) {
}

同じリソースから作成されたBitmapDrawablesは、たとえば、ConstantStateに格納されている一意のビットマップを共有しますhttps://developer.Android.com/ reference/Android/graphics/drawable/Drawable.ConstantState

getResources.getDrawable is deprecated so you can use ContextCompat.getDrawable inplace of it.
1
akhil choudhary

ビューのidメンバー変数を使用できる場合、これは簡単なアプローチです。v.setId()を使用してR.drawableIDを保存するだけです。次に、v.getId()で元に戻します。

0
Peri Hartman