GetImageResource () Android. es posible?
He fijado una imagen para un ImageView
usando el setImageResource(R.drawable.icon1)
.
Ahora mi requisito es descubrir cuál es la imagen que se fija para un ImageView
y hacer un poco de proceso.
- Cómo mantener la relación de aspecto de la imagen si imageview se extiende primero para rellenar padre
- Imageview se borra
- Impedir que ImageView empuje las vistas fuera de la pantalla
- Imagen SVG no visible en android 3.0+ con el mismo código
- La escala de ImageView no funciona
Me gusta
if (imageView.getImageResource() == R.drawable.icon1) { //do some processing else if (imageView.getImageResource() == R.drawable.icon2) { //do somethign else else //display
Por lo tanto, me gustaría saber si existe un método (AFAIK, no lo hace) y si no cómo mantener una pista de los recursos que se han establecido para un ImageView
.
Gracias. Sana.
- En Android, ¿puedo utilizar la imagen de los elementos de layout xml?
- Android Zoomable / desplazable ImageView con superposiciones
- Widget de aplicación setImageViewUri no actualiza la imagen
- Cambiar el tamaño de la imagen para ajustarse a Imageview
- Android y la configuración de alfa para (imagen) ver alfa
- Transición animada entre dos vistas de imagen
- ¿Cómo puedo obtener el mapa de bits en caché que he descargado con Volley ImageLoader?
- Crear animación cambiando la imagen en ImageView con Timer (o Handler)
Estás asumiendo que debido a que pusiste un entero en, eres capaz de recuperar un entero, y no es así como funciona setImageResource()
. Vea ImageView # setImageResource () . Esto es sólo un método de conveniencia para usted: lo que Android está haciendo detrás de las escenas, está buscando el recurso Drawable (en la mayoría de los casos, es un BitmapDrawable, pero podría ser de cualquier tipo), y luego aplicar ese recurso a ImageView como un Objeto de mapa de bits (es decir, sólo datos de imagen: no tiene idea de cuál era su "identificador de recurso" original).
Su mejor solución va a seguir el último identificador de recursos que utilizó:
imageView.setImageResource(R.drawable.image1); this.mLastResourceId = R.drawable.image1; // ... // Later, when checking the resource: if (this.mLastResourceId == R.drawable.image1) { // Do something }
Debe poder utilizar la propiedad tag de la siguiente manera:
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; ... }
Otra alternativa, si es posible, sería subclase el ImageView y almacenar el entero en un conjunto 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; } }
Usted debe ser capaz de utilizar Bundle y establecer las propiedades que usted necesita.
Intent i = new Intent(); Bundle extras = new Bundle(); i.putExtra("prop", "value");
- ¿Las constantes de código de la versión de Android funcionan con versiones anteriores?
- Configuración de fragmento de Android entrar y salir de las transiciones?