studio recursos programacion móviles mostrar imagen getresources desarrollo curso aplicaciones android xml android-imageview

recursos - mostrar imagen en imageview android



¿Cómo verificar qué recurso de imagen actual se adjunta a ImageView en Android xml? (6)

Hola, por favor, intente con esto de la siguiente manera

if (regProfile.getDrawable().getConstantState() == getResources().getDrawable( R.drawable.ivpic).getConstantState()) { Toast.makeText(_con, "Image is ivPic", Toast.LENGTH_LONG).show(); // new RegisterAsyntaskNew().execute(); } else { Toast.makeText(_con, "Image isn''t ivPic", Toast.LENGTH_LONG).show(); // new RegisterAsyntask().execute(); }

por favor use .getConstantState() para comparar

visitar

http://developer.android.com/reference/android/graphics/drawable/Drawable.html

http://developer.android.com/reference/android/graphics/drawable/Drawable.ConstantState.html

EDITAR:

.getResources().getDrawable(imageResource)

Está en desuso en API21, así que cambié la respuesta de Jitesh Upadhyay.

Aquí está el código:

@SuppressWarnings("deprecation") @SuppressLint("NewApi") public static boolean checkImageResource(Context ctx, ImageView imageView, int imageResource) { boolean result = false; if (ctx != null && imageView != null && imageView.getDrawable() != null) { ConstantState constantState; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { constantState = ctx.getResources() .getDrawable(imageResource, ctx.getTheme()) .getConstantState(); } else { constantState = ctx.getResources().getDrawable(imageResource) .getConstantState(); } if (imageView.getDrawable().getConstantState() == constantState) { result = true; } } return result; }

Quiero verificar qué recurso de imagen está adjunto a ImageView en xml. Puedo verificar qué recurso de imagen está adjunto a la vista de imagen, pero mi requisito es cómo verificar que ImageView tenga el mismo recurso que he establecido en xml o no, en función de eso necesito realizar algunas acciones. El código siempre ejecuta otra parte. A continuación es mi código,

if (regProfile.getDrawable() == getResources().getDrawable( R.drawable.ivpic)) { Toast.makeText(_con, "Image is ivPic", Toast.LENGTH_LONG).show(); // new RegisterAsyntaskNew().execute(); } else { Toast.makeText(_con, "Image isn''t ivPic", Toast.LENGTH_LONG).show(); // new RegisterAsyntask().execute(); }


La misma solución en kotlin :

if (regProfile.drawable.constantState == ContextCompat.getDrawable(this, R.drawable.ivpic).constantState) { Toast.makeText(_con, "Image is ivPic", Toast.LENGTH_LONG).show(); // new RegisterAsyntaskNew().execute(); } else { Toast.makeText(_con, "Image isn''t ivPic", Toast.LENGTH_LONG).show(); // new RegisterAsyntask().execute(); }


Me enfrento al mismo problema pero lo resolví en Android kotlin

override fun onClick(v: View?) { when (v!!.getId()) { R.id.exo_fullscreen_button -> { if (exo_fullscreen_icon.drawable.constantState == resources.getDrawable( R.drawable.exo_controls_fullscreen_enter).constantState) { Toast.makeText(activity, "Correct Image ", Toast.LENGTH_LONG).show(); }else{ Toast.makeText(activity, "wrong image", Toast.LENGTH_LONG).show(); } } } }


Puedes hacer algo como seguir,

Establezca una tag a través de xml o dinámicamente según su requisito.

A través de XML,

<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageview1" android:background="@drawable/bg" android:tag="bg"/>

Dinamicamente,

ImageView imageView=(ImageView)findViewById(R.id.imageview1); imageView.setTag("bg");

Use imageView.getTag() para recuperar información de la imagen.

String backgroundImageName = String.valueOf(imageView.getTag());

Editar:

Si está cambiando el fondo de ImageView con frecuencia, entonces,

imageView.setTag(R.drawable.drawablename); imageView.setImageResource(R.drawable.drawablename); String backgroundImageName = String.valueOf(imageView.getTag());

Ahora puedes hacer tu cheque.

if (backgroundImageName.equals("bg")) // here "bg" is the tag that you set previously { Toast.makeText(_con, "Image is ivPic", Toast.LENGTH_LONG).show(); // new RegisterAsyntaskNew().execute(); } else { Toast.makeText(_con, "Image isn''t ivPic", Toast.LENGTH_LONG).show(); // new RegisterAsyntask().execute(); }


Puedes hacer así. Primero necesitas establecer la propiedad de etiqueta de imageview como esta

android:tag="ic_grade_grey_24dp" if (viewHolder.imgfav.getTag().equals("ic_grade_grey_24dp")) // here "bg" is the tag that you set previously { Toast.makeText(mContext, "ic_grade_black_24dp", Toast.LENGTH_LONG).show(); // new RegisterAsyntaskNew().execute(); viewHolder.imgfav.setImageResource(R.drawable.ic_grade_black_24dp); viewHolder.imgfav.setTag("ic_grade_black_24dp"); } else { Toast.makeText(mContext, "Second", Toast.LENGTH_LONG).show(); viewHolder.imgfav.setImageResource(R.drawable.ic_grade_grey_24dp); viewHolder.imgfav.setTag("ic_grade_grey_24dp"); }


Ya respondí sobre el tema similar aquí: Obtenga la ID de un dibujo en ImageView . El enfoque se basa en etiquetar una vista con un ID de recurso especificado en el LayoutInflater personalizado. Todo el proceso está automatizado por una simple biblioteca TagView .

Como resultado, puedes comparar dos elementos dibujables solo por sus ID:

TagViewUtils.getTag(regProfile, ViewTag.IMAGEVIEW_SRC.id) == R.drawable.ivpic