94 votes

La comparaison de deux un drawable dans android

Comment comparer deux un drawable, je fais comme ça, mais n'ayant pas eu de succès

public void MyClick(View view)
{
 Drawable fDraw = view.getBackground();
 Drawable sDraw = getResources().getDrawable(R.drawable.twt_hover);

  if(fDraw.equals(sDraw))
  {
   //Not coming
  }
}

150voto

Mejonzhan Points 882

en fait, il y a une autre façon de comparer:

mRememberPwd.getDrawable().getConstantState().equals
            (getResources().getDrawable(R.drawable.login_checked).getConstantState())

mRemeberPwd est ImageView, si est TextView, vous pouvez utiliser getBackground().getConstantState.

Cela fonctionne pour moi, et je pense que c'est facile.

14voto

Roshan Jha Points 735

Ma question était juste pour la comparaison de deux un drawable, j'ai essayé, mais ne pouvait pas obtenir de toute méthode de comparer directement les deux un drawable,cependant pour ma solution que j'ai changé drawable bitmap, puis de comparer deux images et qui est au travail.

Bitmap bitmap = ((BitmapDrawable)fDraw).getBitmap();
Bitmap bitmap2 = ((BitmapDrawable)sDraw).getBitmap();

if(bitmap == bitmap2)
    {
        //Code blcok
    }

4voto

waqaslam Points 31012

essayez peut-être de cette façon:

public void MyClick(View view)
{
 Drawable fDraw = view.getBackground();
 Drawable sDraw = getResources().getDrawable(R.drawable.twt_hover);

  if(fDraw.hashCode() == sDraw.hashCode())
  {
   //Not coming
  }
}

ou de préparer une méthode qui prend deux drawable arguments et retourner une valeur booléenne. Dans cette méthode, vous pouvez convertir drawable en octets et de comparer,

public boolean compareDrawable(Drawable d1, Drawable d2){
    try{
        Bitmap bitmap1 = ((BitmapDrawable)d1).getBitmap();
        ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
        bitmap1.compress(Bitmap.CompressFormat.JPEG, 100, stream1);
        stream1.flush();
        byte[] bitmapdata1 = stream1.toByteArray();
        stream1.close();

        Bitmap bitmap2 = ((BitmapDrawable)d2).getBitmap();
        ByteArrayOutputStream stream2 = new ByteArrayOutputStream();
        bitmap2.compress(Bitmap.CompressFormat.JPEG, 100, stream2);
        stream2.flush();
        byte[] bitmapdata2 = stream2.toByteArray();
        stream2.close();

        return bitmapdata1.equals(bitmapdata2);
    }
    catch (Exception e) {
        // TODO: handle exception
    }
    return false;
}

1voto

Pooja Akshantal Points 41

Utilisation getTag() et setTag() pour la comparaison

-1voto

Addon.mahesh Points 101

si Vous voulez comparer directement les deux drawable puis utilisez le code suivant

Drawable fDraw = getResources().getDrawable(R. drawable.twt_hover);

Drawable sDraw = getResources().getDrawable(R. drawable.twt_hover);

if (fDraw.getConstantState().equals(sDraw.getConstantState())) {
    //write your code.
} else {
    //write your code.
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X