【问题标题】:How to load images for different densities from server如何从服务器加载不同密度的图像
【发布时间】:2017-11-01 13:18:15
【问题描述】:

我的活动中有一个expandableListView,并从我从服务器获取的 JSON 传递数据。除图像部分外,一切正常。
我将图像路径作为字符串在JSON 中获取不同尺寸(48x4872x7296x96 等),但无法弄清楚如何根据屏幕密度分配图像。我想我可以将这些图像添加到相应的可绘制文件夹中,其余的由 android 完成。但是在搜索时,我没有找到任何关于如何在可绘制文件夹中动态添加图像的示例。

如果有任何方法可以将图像动态添加到可绘制文件夹中,请告诉我建议任何其他合适的解决方案。

【问题讨论】:

    标签: android json image screen drawable


    【解决方案1】:

    您不能将图像动态添加到可绘制文件夹中。

    但你可以get the device's screen density programmatically。您可以在您的 api 中使用该值并返回适当的图像。

    【讨论】:

      【解决方案2】:

      你必须了解this link在android中的drawables是什么

      你必须知道你不能将任何图像动态地放入其中,图标和静态图像必须放在drawables文件夹中,对于你在应用程序中使用它们的其他图像,你可以获取图像和缩略图

      【讨论】:

      • 链接为空,请添加网址。
      【解决方案3】:

      在运行时无法保存在 drawable 中。 你也不能使用 assets 文件夹。

      如果我是你,我不会费心去确定屏幕密度。使用GlidePicasso 以异步加载图像。

      更新:
      我应该提到的是,如果 ImaveView 是dp 的固定尺寸视图,那么根据 Android 的规格,它会在所有设备上显示为“相同尺寸”。 glide 和 Picasso 按像素读取视图大小,然后将图像缩放到该大小。

      我更喜欢 Glide,因为它通过一些不同的假设(例如缓存调整大小的图像而不是全尺寸的图像)来减少内存占用。

      编辑:
      @greenapps 你是完全正确的。它也不能保存在 assets 中。尝试创建一个目录并将drawable保存到该目录中

      【讨论】:

      • 我正在使用 [amitshekhariitbhu.github.io/Fast-Android-Networking/…,它也提供类似的功能,但对于所有屏幕密度加载相同尺寸的图像并不好。
      • 这些库会根据密度自动缩放图像吗?
      • it's not possible to save in drawable at runtime. you can use asset folder instead. 不,你也不能。也只读。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      相关资源
      最近更新 更多