【问题标题】:Volley NetworkImageView with default image instead of default image resource idVolley NetworkImageView 使用默认图像而不是默认图像资源 id
【发布时间】:2015-03-17 22:47:53
【问题描述】:

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

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

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

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

【问题讨论】:

  • 那么你要问的是,在下载实际图像之前更改显示的默认图像?
  • 是的,我希望在 URL 图像准备好之前显示的默认图像不是 Android 资源 ID。我想使用从 SVG 对象创建的内存图像。

标签: android svg android-volley networkimageview


【解决方案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() 将其隐藏。

【讨论】:

    【解决方案2】:

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

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

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

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

    这些库将图像加载到您已经定义的ImageViews,因此您可以调用imageView.setBitmap(bitmap)。就是这样

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 1970-01-01
      • 2023-03-06
      • 2021-05-26
      • 1970-01-01
      相关资源
      最近更新 更多