Volley NetworkImageView使用默认图像而不是默认图像资源ID

时间:2015-01-19 20:26:37

标签: android svg android-volley networkimageview

我正在使用Google Volley NetworkImageView取得巨大成功。我也正在通过android-svg将各种图像切换到SVG。我想使用一些svg转换的图像作为NetworkImageView的默认图像,但它只支持setDefaultImageResId()而不支持setDefaultImage()。

查看实际的源代码,看起来扩展类不是一个好选择,因为loadImageIfNecessary方法有一个引用mDefaultImageId的ImageContainer内部类和一个引用该变量的setDefaultImageOrNull方法是私有的。

真的不想换到另一个图书馆,除非这是解决这个问题的唯一方法。

是否存在支持超过setDefaultImageResId的现有扩展?如果没有,那么推荐的替换库很容易换出来支持这个功能吗?

2 个答案:

答案 0 :(得分:1)

你可以做的是使用FrameLayout并将默认图像和加载的图像叠加在一起。

<FrameLayout android:layout_width="match_parent"
             android:layout_height="@dimen/photo_height">

    <SVGImageView android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  ...etc.../>
    <com.android.volley.toolbox.NetworkImageView
                  android:id="@+id/photo"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"/>

</FrameLayout>

默认SVG图像将显示,直到照片被Volley加载。然后,您可以将默认图像保留在那里,或使用setVisibility()隐藏它。

答案 1 :(得分:0)

我查看了源代码,设置ImageView位图所需的所有变量都是私有的。所以这是你的选择:

1.更改源代码,我强烈建议不要。

2.使用Reflection API。我不会,

3.Come上有两个主要的替代库可以做你想做的事情,实际上他们已经构建它只是为了通过互联网下载图像,他们已经做得那么好。 Volley主要用于RESTful通信。以下是替代库UniversalImageDownloaderPicasso

这些库会将图片加载到您已定义的ImageView,以便您可以致电imageView.setBitmap(bitmap)。就是这样