2012-11-29 38 views
9

Có một onImageChangedListener() trên một ImageView không?ImageView onImageChangedListener Android

Tôi cần sự kiện khi hình ảnh được thay đổi từ ImageView.

+0

Hình ảnh được thay đổi như thế nào? – Simon

+0

Hình ảnh được thay đổi trênButtonClick, chọn hình ảnh từ Camera hoặc SDCard. – Naskov

+0

Tôi có nghĩa là bạn thay đổi hình ảnh như thế nào? setImageBitmap? setImageDrawable? Khác? – Simon

Trả lời

3

Kiểm tra mã ImageView trong grepcode. Bạn không biết khi nào nó được thay đổi hoặc vẽ lại. Đó là vì sau khi bạn setImageDrawable(), imageview sẽ vô hiệu. Tại thời điểm này, hình ảnh KHÔNG được sửa đổi đúng cho đến khi ondraw được gọi.

Dù sao, tại sao bạn muốn biết người theo dõi onimagechanged?

22

Không có người nghe mặc định trong Android .. nhưng chúng ta có thể tạo ra các listiner imagechange .. sao chép các lớp và thay vì sử dụng sử dụng 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

Và tôi nên nhập gì cho "OnImageChangeListiner"? – Naskov

+0

sao chép lớp này trong bất kỳ gói nào ... import packagename.MyImageView; – Sandy09

+0

Bạn nên triển khai giao diện trong hoạt động của mình và ghi đè imageChangedInView(). 'extends Activity thực hiện OnImageChangeListiner' – Simon

0

Nếu bạn muốn tải hình ảnh từ mạng và kiểm tra thay đổi trong imageview bạn có thể sử dụng imageView.isAttachedToWindow(). Tôi đã thử tải xuống hình ảnh từ mạng và vô hiệu hóa thanh tiến trình sau khi tải xuống hình ảnh và đính kèm vào cửa sổ. Sử dụng,

  if(imageView.isAttachedToWindow()){ 
      //your code here 
      } 
Các vấn đề liên quan