我正在使用Google Volley NetworkImageView取得巨大成功。我也正在通过android-svg将各种图像切换到SVG。我想使用一些svg转换的图像作为NetworkImageView的默认图像,但它只支持setDefaultImageResId()而不支持setDefaultImage()。
查看实际的源代码,看起来扩展类不是一个好选择,因为loadImageIfNecessary方法有一个引用mDefaultImageId的ImageContainer内部类和一个引用该变量的setDefaultImageOrNull方法是私有的。
真的不想换到另一个图书馆,除非这是解决这个问题的唯一方法。
是否存在支持超过setDefaultImageResId的现有扩展?如果没有,那么推荐的替换库很容易换出来支持这个功能吗?
答案 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通信。以下是替代库UniversalImageDownloader和Picasso。
这些库会将图片加载到您已定义的ImageView
,以便您可以致电imageView.setBitmap(bitmap)
。就是这样