2012-11-29 15 views
9

क्या कोई छवि दृश्य पर इमेज चेंज लिस्टनर() है?ImageView onImageChangedListener एंड्रॉइड

मुझे इमेज व्यू से छवि बदलने पर ईवेंट की आवश्यकता है।

+0

छवि कैसे बदलती है? – Simon

+0

छवि को कैमरा या एसडीकार्ड से चुनकर बटन पर क्लिक किया गया है। – Naskov

+0

मेरा मतलब है कि आप छवि को कैसे बदल रहे हैं? setImageBitmap? setImageDrawable? अन्य? – Simon

उत्तर

3

grepcode में imageView कोड की जाँच करें। आप नहीं जानते कि यह कब बदला जाता है या फिर से खींचा जाता है। ऐसा इसलिए है क्योंकि सेट करने के बाद ImageDrawable(), imageview अमान्य हो जाएगा। इस समय, जब तक ऑर्डर नहीं किया जाता है तब तक छवि सही ढंग से बदल नहीं जाती है।

वैसे भी, आप onimagechangedlistener क्यों जानना चाहते हैं?

22

वहाँ एंड्रॉयड में कोई डिफ़ॉल्ट श्रोता .. है, लेकिन हम वर्ग 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

आपको अपनी गतिविधि में इंटरफ़ेस को कार्यान्वित करना चाहिए और छवि को ओवरराइड करना चाहिए ChangedInView()। 'गतिविधि लागू करता है OnImageChangeListiner' – Simon

0

यदि आप नेटवर्क से छवि लोड करना चाहते हैं और छविदृश्य में परिवर्तन की जांच करना चाहते हैं तो आप imageView.isAttachedToWindow() का उपयोग कर सकते हैं। मैंने नेटवर्क से छवि डाउनलोड करने का प्रयास किया है और छवि डाउनलोड और खिड़की से जुड़ा हुआ प्रगति पट्टी अक्षम कर दी है। उपयोग,

  if(imageView.isAttachedToWindow()){ 
      //your code here 
      } 
संबंधित मुद्दे