【问题标题】:Android images from url with different sizes来自不同大小的url的Android图像
【发布时间】:2016-03-05 17:18:41
【问题描述】:

我为我的安卓应用准备了图片。由于设备尺寸不同,我将具有不同尺寸的图像放入可绘制文件夹。现在我想从 url 获取这些。我想获得最适合设备尺寸的图像。我该怎么做?有什么建议吗?

【问题讨论】:

  • 把图片放到网页的不同文件夹里,比如www.example.com/thumb/1.jpg,再是www.example.com/normal/1.jpg,下一个是www.example.com/small /1.jpg
  • 是的,我会那样做。但是我怎么知道哪个图像是正确的呢?
  • 您制作具有您想要的特定尺寸的图像...
  • 或许,您需要确定屏幕分辨率。根据设备的屏幕大小,选择合适的url下载图片
  • 你得看看这个问题stackoverflow.com/questions/3166501/…

标签: android android-drawable


【解决方案1】:

从api中,你需要发送URI到各种尺寸的图片,然后在android中你需要下载适合设备dpi值的图片,代码是这样的:

你可以这样获取你设备的密度值

float density = Resources.getSystem().getDisplayMetrics().density * 160f;

float density = context.getResources().getDisplayMetrics().density * 160f;

然后您执行一系列 if else 语句并从您的服务器下载适当的图像。

if (density == DisplayMetrics.DENSITY_HIGH) {
    return downloadLargeImage();
} else if (density == DisplayMetrics.DENSITY_MEDIUM) {
    return downloadMediumImage();
} else if (density == DisplayMetrics.DENSITY_LOW) {
    return downloadSmallImage();
} else {
    return downloadMediumImage();
}

还有更多的密度值可以运行 if else 循环,我通常只处理这 3 种情况

或者还有另一种方法,您可以将设备密度值与图像的获取请求一起发送到服务器,如果在服务器上进行计算并返回适当的图像文件,请执行此操作。

这两种方法实际上是相同的,但是第二种方法在语义上是错误的,您的服务器不应该决定要发送哪个图像,而是您的设备决定要下载的图像大小

【讨论】:

  • 感谢您的回答。它帮助我找到答案。但你并不完全正确。你发现密度是浮动的。但它不会等于 DisplayMetrics.DENSITY_HIGHT 或 DisplayMetrics.DENSITY_MEDIUM 或 DisplayMetrics.DENSITY_LOW 等。它总是其他语句。我研究并发现了如何找到 int 密度。所以,我应该找到这样的密度:DisplayMetrics metrics = getResources().getDisplayMetrics(); int 密度 = (int)(metrics.density * 160f);
  • @MeryemUysal 我刚刚修复了你现在可以标记它
猜你喜欢
  • 1970-01-01
  • 2013-05-02
  • 2017-03-27
  • 2021-11-08
  • 2023-03-03
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多