2017-10-14 16 views
0

Je veux vérifier si deux images correspondent ou non, en obtenant leur arrière-plan à partir du dessinable.Comment comparer deux images?

je ne l'utilise de cette façon:

 if (imgView1.getBackground().getConstantState() 
    .equals(ContextCompat.getDrawable(getApplicationContext(),R.drawable.myImage) 
    .getConstantState()) 
    && 
    imgView2.getBackground().getConstantState() 
.equals(ContextCompat.getDrawable(getApplicationContext(),R.drawable.myImage) 
    .getConstantState())) 
     { 


     // do something 
     } 

il fonctionne très bien sur l'API 23 et API 24, mais ne fonctionne pas avec l'API 21 et 26 API? est-il une autre façon de le faire fonctionner pour toutes les versions Android?

Répondre

1

essayez de comparer BitmapDrawable des deux d'entre eux:

Bitmap bitmap = ((BitmapDrawable)imgView1).getBitmap(); 
Bitmap bitmap2 = ((BitmapDrawable)imgView2).getBitmap(); 

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

il y a quelque chose de mal avec votre exemple idk pourquoi, quand je remplacerai imgView1 avec mon imageview Nom de la variable, il ne fonctionne pas, je devrais l'utiliser comme ceci: imgView1.getBackground()? –

+0

Désolé, vous devriez plutôt utiliser: Bitmap bitmap = ((BitmapDrawable) imgView1.getDrawable()). GetBitmap(); – Nawrez

+1

fonctionne très bien! mais encore besoin de savoir quelle image ils utilisent tous les deux? est-ce la pomme? ou orange? Donc, quand j'essaie d'obtenir leur fond actuel, il ne fonctionne pas avec API 26 ou API 21 –