getImageResource()Android。 这可能吗?

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

现在我的要求是找出为ImageView设置的图像,并做一些处理。

喜欢

 if (imageView.getImageResource() == R.drawable.icon1) { //do some processing else if (imageView.getImageResource() == R.drawable.icon2) { //do somethign else else //display 

所以我想知道是否存在一个方法(AFAIK,它不),如果它不如何保持一个ImageView资源已经设置的轨道。

谢谢。 萨纳。

  • Horizo​​ntalScrollView或Carrousel?
  • 如何从中心裁剪animationImageView填充屏幕,反之亦然(Facebook风格)?
  • Android从setImageBitmap缩放imageview
  • 使用animation旋转图像
  • 带相机意图的照片,并在imageView或textView中显示?
  • 如何在工具栏中添加图像
  • Android:从SD卡显示图像
  • 阻止ImageView将视图推送到屏幕外
  • 你假设因为你把一个整数,你可以得到一个整数,这不是如何setImageResource()作品。 请参阅ImageView#setImageResource() 。 这只是一个方便的方法:Android在后台正在做的是查找Drawable资源(在大多数情况下,它是一个BitmapDrawable,但可以是任何types),然后将该资源作为位图对象(即,只有图像数据 – 它不知道以前的原始“资源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 } 

    您应该能够使用标签属性如下:

     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; ... } 

    另一种方法是,如果可能的话,将ImageView的子类inheritance,并将整数存储在一个重写的setImageResource()中。

     public class MyImageView extends ImageView { int rememberId = -1; @override void setImageResource(int resId){ rememberId = resId; } int getMyResId(){ return rememberId; } } 
     package com.widget; import android.content.Context; import android.util.AttributeSet; import android.widget.ImageButton; /** * custom star type imagebutton that can be obtain the background image resource * id. * * </p> your layout xml resource might be like the following code: <br> * <view class="com.widget.StarButton" <br> * android:id="@+id/starButton" <br> * android:layout_width="wrap_content" <br> * android:layout_height="wrap_content" <br> * android:background="@android:color/background_light" <br> * android:paddingTop="10dp" <br> * android:src="@drawable/star" /> <br> * * @author Jeffen * */ public class StarButton extends ImageButton { private int mLastResourceId = -1; public StarButton(Context context) { super(context); } public StarButton(Context context, AttributeSet attrs) { this(context, attrs, android.R.attr.imageButtonStyle); } public StarButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setFocusable(true); } /** * set image resource and sync image resource id. */ @Override public void setImageResource(int resId) { super.setImageResource(resId); setImageResourceId(resId); } public int getImageResourceId() { return mLastResourceId; } public void setImageResourceId(int resId) { mLastResourceId = resId; } } 

    你应该可以使用Bundle并设置你需要的任何属性。

     Intent i = new Intent(); Bundle extras = new Bundle(); i.putExtra("prop", "value");