2012-05-02 12 views
5

से लोड की गई छवि दृश्य में चित्र में फीका कैसे करें I छवि दृश्य में एक फीड-इन एनीमेशन लागू करना चाहते हैं ताकि छवि को यूआरएल से लोड किया गया हो, डाउनलोड डाउनलोड होने पर फीड हो।यूआरएल

मुझे पता है कि एक यूआरएल से एक छवि दृश्य में this answer में एक छवि को कैसे डाउनलोड करें, और मुझे पता है कि छवि के लिए एक फीड-इन एनीमेशन कैसे लागू करें like here

यह प्रयास

Drawable d = ImageUtils.fetchDrawable("the url"); 
imageView.setImageDrawable(d); 
imageView.startAnimation(fadeInAnimation); 

परिणाम एक झपकी प्रभाव में (देखें, नहीं देखते हैं, को देखने के लिए में फीका)। दो अंतिम लाइनों के क्रम को उलटाने से भी एक झपकी होती है।

मैं googled है और एक कॉलबैक/श्रोता के रूप में एक समाधान के लिए एसओ की खोज - कुछ इस तरह:

imageView.setOnLoadCompleteListener... 

imageView में लोड हो रहा है पूरा घटना रजिस्टर करने के लिए, लेकिन मैं कुछ भी साथ नहीं मिला है उन पंक्तियों।

मैं किसी भी संकेतक के लिए इस प्रभाव को कार्यान्वित करने के समाधान के लिए आभारी रहूंगा।

उत्तर

2

INVISIBLE को ImageView दृश्यता सेट या GONE अपने एनीमेशन पर setAnimationListener निर्धारित किया है। और जब onAnimationEndImageView की दृश्यता बदलता है।

fadeInAnimation.setAnimationListener(new AnimationListener() { 
     @Override 
     public void onAnimationEnd(Animation arg0) { 

      // let make your image visible 


     } 

     @Override 
     public void onAnimationRepeat(Animation animation) {} 
     @Override 
     public void onAnimationStart(Animation animation) {} 
    }); 
+0

त्वरित जवाब के लिए धन्यवाद। अच्छी तरह से काम। –

29

आप उपयोग कर सकते हैं: TransitionDrawable, सरल कोड इस प्रकार है:

 // Transition drawable with a transparent drwabale and the final bitmap 
     final TransitionDrawable td = 
       new TransitionDrawable(new Drawable[] { 
         new ColorDrawable(Color.TRANSPARENT), 
         new BitmapDrawable(mResources, bitmap) 
       }); 
     // Set background to loading bitmap 
     imageView.setBackgroundDrawable(
       new BitmapDrawable(mResources, mLoadingBitmap)); 

     imageView.setImageDrawable(td); 
     td.startTransition(FADE_IN_TIME); 
+0

धन्यवाद, इसे आज़माएं। –

+6

यह बहुत अच्छा काम करता है, यदि आपके पास ImageView में प्लेसहोल्डर के रूप में पहले से ही एक और छवि है, तो आप getDrawable() को कॉल कर सकते हैं और ट्रांसपेरेंट कलरड्राउबल के बजाय इसका उपयोग कर सकते हैं जो दो छवियों के बीच एक संक्रमण बनाएगा। – Raanan

+2

2 छवियों के बीच क्रॉसफैडिंग को सक्षम करने के लिए td.setCrossFadeEnabled (true) का उपयोग करें, क्योंकि डिफ़ॉल्ट रूप से क्रॉसफ़ाइडिंग अक्षम है। – moondroid