如何在从url加载的ImageView中淡入图片

Gun*_*son 5 android android-animation android-imageview

我想将一个淡入动画应用到ImageView,以创建在下载完成时从网址加载的图像淡入的效果.

我知道如何将图像从URL下载到ImageView,就像在这个答案中一样,我知道如何将淡入动画应用到像这里的imageView .

这种尝试

Drawable d = ImageUtils.fetchDrawable("the url");
imageView.setImageDrawable(d);
imageView.startAnimation(fadeInAnimation);
Run Code Online (Sandbox Code Playgroud)

导致眨眼效果(见,看不见,淡入看).反转最后两行的顺序也会导致闪烁.

我用Google搜索并搜索了一个回调/监听器形式的解决方案 - 类似这样:

imageView.setOnLoadCompleteListener...
Run Code Online (Sandbox Code Playgroud)

在ImageView中注册加载完成事件,但我没有在这些行中找到任何内容.

对于如何实现此效果的解决方案的任何指示,我将不胜感激.

Aut*_*ots 32

您可以使用: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);
Run Code Online (Sandbox Code Playgroud)

  • 这很好用,如果你在ImageView中已经有另一个图像作为占位符,你可以调用getDrawable()并使用它代替Transparent ColorDrawable,它将在两个图像之间创建一个过渡. (6认同)
  • 要在2个图像之间启用交叉淡化,请使用td.setCrossFadeEnabled(true),因为默认情况下禁用交叉淡化. (3认同)

Bla*_*elt 2

设置 动画ImageView的可见性INVISIBLEGONE 设置setAnimationListener动画。当onAnimationEnd 改变 的可见性时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) {}
    });
Run Code Online (Sandbox Code Playgroud)