在ImageView android中获取相关图像(Drawable)

时间:2011-09-01 06:39:40

标签: android imageview

我将图像设置为android中的imageview控件:

iv.setImageResource(R.drawable.image1);

我想得到这个相关的Drawable,看起来像:

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

谢谢!

8 个答案:

答案 0 :(得分:32)

你可以得到像

这样的抽象
Drawable myDrawable = iv.getDrawable();

您可以将其与可绘制资源(如

)进行比较
if(iv.getDrawable()==getResources().getDrawable(R.drawable.image1)){
    //do work here
}

答案 1 :(得分:8)

很遗憾,没有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();
}

我希望这会对你有所帮助,这确保我的工作更轻松。

答案 2 :(得分:7)

首先定义Drawable。

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

答案 3 :(得分:5)

使用Drawable drawable=imageview.getDrawable();

答案 4 :(得分:1)

您可以比较

等可绘制资源
     if (imageView.getDrawable().getConstantState() == 
        ContextCompat.getDrawable(getContext(), R.drawable.image1).getConstantState()) {
}

从同一资源创建的BitmapDrawables将共享一个存储在其ConstantState中的唯一-bitmap https://developer.android.com/reference/android/graphics/drawable/Drawable.ConstantState

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

答案 5 :(得分:0)

如果您可以使用视图的id成员变量,这是一种简单的方法:只需使用v.setId()存储R.drawable id。然后使用v.getId()将其恢复。

答案 6 :(得分:0)

if ((holder.fav.getDrawable().getConstantState()) == context.getResources().getDrawable(R.drawable.star_blank).getConstantState() ) {

  holder.fav.setImageDrawable(context.getResources().getDrawable(R.drawable.star_fill));

// comparison is true
} 

// getConstantState()是键

答案 7 :(得分:0)

getResources().getDrawable() 现已弃用,只需使用 getDrawable(R.id.myImage);