How to fade in picture in ImageView loaded from url

匿名 (未验证) 提交于 2019-12-03 02:49:01

问题:

I would like to apply a fade-in animation to an ImageView to create the effect that the image, which is loaded from a url, fades in when the download is completed.

I know how to download an image from a url to an ImageView, like in this answer, and I know how to apply a fade-in animation to an imageView like here.

This attempt

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

results in a blink effect (see, not see, fade in to see). Reversing the order of the two last lines also results in a blink.

I've googled and searched SO for a solution in the form of a callback / listener - something like this:

imageView.setOnLoadCompleteListener...

to register the loading complete event in ImageView but I haven't found anything along those lines.

I'd be grateful for any pointers to a solution on how to implement this effect.

回答1:

set the ImageView visibility to INVISIBLE or GONE set setAnimationListener on your animation. and when the onAnimationEnd change the visibility of the ImageView.

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) {}     });


回答2:

You can use: TransitionDrawable, simple code as follows:

        // 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);


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!