2

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

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

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

是否存在支持超过 setDefaultImageResId 的现有扩展?如果没有,是否有推荐的替换库可以相当容易地换出支持此功能的库?

4

2 回答 2

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().

于 2015-01-20T06:13:01.513 回答
0

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

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

2.使用反射API。我不会,

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

这些库将图像加载到您已经定义ImageView的 s 中,因此您可以调用imageView.setBitmap(bitmap). 而已

于 2015-01-20T09:05:16.660 回答