2012-11-29 14 views
9

ImageViewにonImageChangedListener()はありますか?ImageView onImageChangedListener Android

イメージがImageViewから変更されたときにイベントが必要です。

+0

画像はどのように変更されますか? – Simon

+0

イメージはカメラまたはSDCardから選択してonButtonClickに変更されます。 – Naskov

+0

イメージをどのように変更していますか? setImageBitmap? setImageDrawable?その他? – Simon

答えて

3

grepcodeでImageViewのコードを確認してください。変更または再描画されたときはわかりません。これは、setImageDrawable()を実行すると、イメージビューが無効になるためです。この時点では、オンドローが呼び出されるまでイメージは正しく変更されません。

とにかく、なぜあなたはonimagechangedlistenerを知りたいですか?

22

そこには、デフォルトのリスナーが... Androidのではありませんが、我々は.. imagechangeのlistinerを作成するクラスをコピーして、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

そして私が「OnImageChangeListinerは型に解決できない」ためにインポートする必要がありますを使用していた場合 – Naskov

+0

任意のパッケージでこのクラスをコピーします... import packagename.MyImageView; – Sandy09

+0

アクティビティにインターフェイスを実装し、imageChangedInView()をオーバーライドする必要があります。 'アクティビティMyImageView.OnImageChangeListiner – Simon

0

ネットワークからイメージをロードし、イメージビューの変更をチェックする場合は、imageView.isAttachedToWindow()を使用できます。私はネットワークから画像をダウンロードしようとしましたが、画像がダウンロードされてウィンドウに添付された後、プログレスバーは無効になりました。 使用、

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