2012-11-29 2 views
9

Gibt es einen OnImageChangedListener() auf einem ImageView?ImageView onImageChangedListener Android

Ich brauche das Ereignis, wenn das Bild von der ImageView geändert wird.

+0

Wie wird das Bild geändert? – Simon

+0

Das Bild wird onButtonClick geändert und von Kamera oder SDCard ausgewählt. – Naskov

+0

Ich meine genau, wie verändern Sie das Bild? setImageBitmap? setImageDrawable? Andere? – Simon

Antwort

3

den Imageview Code in grepcode prüfen. Sie wissen nicht, wann es geändert oder neu gezeichnet wird. Dies liegt daran, dass imageview nach dem Setzen von imageDrawable() ungültig wird. Zu diesem Zeitpunkt wird das Bild NICHT richtig geändert, bis die Entnahme ausgeführt wird.

Wie auch immer, warum möchten Sie den Onimagechange Listener wissen?

22

Es gibt keine Standard-Listener in Android .. aber wir können die imagechange listiner erstellen .. kopieren Sie die Klasse und stattdessen Image Verwendung MyImageView der Verwendung ..

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

Und was soll ich importieren für "OnImageChangeListiner kann nicht in einen Typ aufgelöst werden"? – Naskov

+0

kopieren Sie diese Klasse in ein beliebiges Paket ... import packagename.MyImageView; – Sandy09

+0

Sie sollten die Schnittstelle in Ihrer Aktivität implementieren und imageChangedInView() überschreiben. 'extends Activity implementiert OnImageChangeListiner' – Simon

0

Wenn Sie das Bild aus dem Netzwerk laden und Änderungen in der Bildansicht überprüfen möchten, können Sie imageView.isAttachedToWindow() verwenden. Ich habe versucht, das Bild aus dem Netzwerk herunterzuladen und die Fortschrittsanzeige nach dem Herunterladen des Bildes deaktiviert und an das Fenster angehängt. Verwendung,

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