2012-11-29 4 views
9

Y at-il un onImageChangedListener() sur un ImageView?ImageView onImageChangedListener Android

J'ai besoin de l'événement lorsque l'image est modifiée à partir de l'ImageView.

+0

Comment l'image est-elle modifiée? – Simon

+0

L'image est modifiée surButtonClick, en le choisissant à partir de la caméra ou SDCard. – Naskov

+0

Je veux dire exactement comment changez-vous l'image? setImageBitmap? setImageDrawable? Autre? – Simon

Répondre

3

Vérifiez le code imageview dans grepcode. Vous ne savez pas quand il est changé ou redessiné. C'est parce que, après setImageDrawable(), imageview sera invalide. À ce moment, l'image n'est pas modifiée correctement jusqu'à ce que le retrait soit appelé.

Quoi qu'il en soit, pourquoi voulez-vous connaître le onimagechangedlistener?

22

Il n'y a pas d'écoute par défaut dans Android .. mais nous pouvons créer le listiner de imagechange .. copier la classe et au lieu d'utiliser l'utilisation ImageView MyImageView ..

public class MyImageView extends ImageView { 

     private OnImageChangeListiner onImageChangeListiner; 


     public MyImageView(Context context) { 
      super(context); 
     } 

     public MyImageView(Context context, AttributeSet attributeSet) {   
      super(context, attributeSet); 
     } 


     public void setImageChangeListiner(
       OnImageChangeListiner onImageChangeListiner) { 
      this.onImageChangeListiner = onImageChangeListiner; 
     } 

     @Override 
     public void setBackgroundResource(int resid) { 
      super.setBackgroundResource(resid); 
      if (onImageChangeListiner != null) 
       onImageChangeListiner.imageChangedinView(this); 
     } 


     @Override 
     public void setBackgroundDrawable(Drawable background) { 
      super.setBackgroundDrawable(background); 
      if (onImageChangeListiner != null) 
       onImageChangeListiner.imageChangedinView(this); 
     } 


     public static interface OnImageChangeListiner { 
      public void imageChangedinView(ImageView mImageView); 
     } 
    } 
+0

Et que devrais-je importer pour "OnImageChangeListiner ne peut pas être résolu en un type"? – Naskov

+0

copier cette classe dans n'importe quel paquet ... import packagename.MyImageView; – Sandy09

+0

Vous devez implémenter l'interface dans votre activité et remplacer imageChangedInView(). 'extends extends Implémente OnImageChangeListiner' – Simon

0

Si vous souhaitez charger l'image à partir du réseau et vérifier les modifications dans la vue d'image, vous pouvez utiliser imageView.isAttachedToWindow(). J'ai essayé de télécharger l'image à partir du réseau et désactivé la barre de progression après l'image téléchargée et attachée à la fenêtre. Utilisation,

  if(imageView.isAttachedToWindow()){ 
      //your code here 
      }