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

时间:2012-05-02 15:28:54

标签: android android-animation android-imageview

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

我知道如何将图像从网址下载到ImageView,就像在this answer中一样,我知道如何将淡入式动画应用到imageView like here

此尝试

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

会导致闪烁效果(请参阅,看不到,淡入看到)。颠倒最后两行的顺序也会导致闪烁。

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

imageView.setOnLoadCompleteListener...

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

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

2 个答案:

答案 0 :(得分:31)

您可以使用: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);

答案 1 :(得分: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) {}
    });