2014-04-29 2 views
14

Ich möchte überprüfen, welche Bildressource an ImageView in Xml angehängt ist, kann ich überprüfen, welche Bildressource an Bildansicht angefügt ist, aber meine Anforderung ist, wie überprüft, dass die ImageView hat die gleiche Ressource, die ich festgelegt habe xml oder nicht, basierend darauf muss ich einige Aktionen ausführen. Code führt immer einen anderen Teil aus. mein Code finden,Wie überprüft man, welche aktuelle Bildressource ImageView in android xml angehängt ist?

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(); 
    } 
+0

jetzt meine Antwort zu sehen. –

+0

die antwort ist aktualisiert bitte überprüfen –

+0

informieren sie bitte über meine antwort woks für sie oder nicht, wie ich überprüft mit meinem code es funktioniert gut !! Ich habe nur für das Szenario gearbeitet und habe irgendwann daran gearbeitet und Erfolg gehabt, denke ich !! –

Antwort

41

Hallo bitte einen Versuch mit diesem haben wie

folgt
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(); 
} 

bitte .getConstantState() verwenden vergleichen

Besuch

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

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

EDIT:

.getResources().getDrawable(imageResource) 

Ist in API21 veraltet, also habe ich Jitesh Upadhyay Antwort. Hier

ist der Code:

@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; 
} 
+0

Danke Jitesh, mit .getConstantState(), um Aufgabe abzuschließen. – Reena

+0

Danke Sir Nlkolay, Ihr aktualisierter Code hat meine Arbeit abgeschlossen. – SimplyProgrammer

+0

Most Welcome @Reena und SimplyProgrammer –

10

Sie können eine tag etwas tun, wie folgt,

Set entweder durch xml oder dynamisch wie pro Ihre Anforderung.

Durch xml,

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

Dynamisch,

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

Verwenden imageView.getTag() Bildinformationen abzurufen.

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

Edit:

wenn Sie ändern ImageView Hintergrund häufig dann,

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

Jetzt können Sie Ihre Check machen.

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(); 
    } 
+0

Danke für die Antwort, aber wenn ich Bild von imageview dann ändern wird, sollte sonst Teil ausgeführt werden, das ist, warum ich versuchte, welche Ressource an die Imageview angehängt wird. – Reena

+0

@Reena: Siehe meine bearbeitete Antwort. –

+0

Dies ist die Logik, die ich verwendet habe. Danke – viper

Verwandte Themen