getImageResource()Android.这可能吗?

San*_*ana 10 android android-imageview

我已经设置了一个ImageView使用的图像setImageResource(R.drawable.icon1).

现在我的要求是找出为a设置的图像是什么ImageView并进行一些处理.

喜欢

if (imageView.getImageResource() == R.drawable.icon1) {
  //do some processing
else if (imageView.getImageResource() == R.drawable.icon2) {
  //do somethign else
else 
 //display
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否存在一种方法(AFAIK,它不存在),以及它是否如何跟踪已为其设置的资源ImageView.

谢谢.萨纳.

小智 7

您应该能够使用tag属性,如下所示:

imageView.setImageResource(R.drawable.icon1);
imageView.setTag(Integer.valueOf(R.drawable.icon1));

// later

int drawable = (Integer) imageView.getTag();

switch(drawable) {

    case R.drawable.icon1:
         // do_something....
         break;

    case R.drawable.icon2:
         // do_something....
         break;

    ...
}
Run Code Online (Sandbox Code Playgroud)


Joe*_*Joe 6

你假设因为你输入了一个整数,你可以得到一个整数,但这不是setImageResource()有效的.请参见ImageView#setImageResource().这只是一种方便的方法:Android在幕后做的是查找Drawable资源(在大多数情况下,它是BitmapDrawable,但它可以是任何类型),然后将该资源应用于ImageView作为位图对象(即仅图像数据 - 它不知道其原始的"资源ID"以前是什么).

您最好的解决方案是跟踪您使用的最后一个资源ID:

imageView.setImageResource(R.drawable.image1);
this.mLastResourceId = R.drawable.image1;
// ...

// Later, when checking the resource:
if (this.mLastResourceId == R.drawable.image1) {
    // Do something
}
Run Code Online (Sandbox Code Playgroud)