从服务

时间:2016-11-11 19:53:59

标签: android image service

在我的应用程序中,我想显示16:9的完整设备宽度(纵向)横幅图像。我正在使用Picasso从我拥有的后端服务提供的URL下载/显示图像。

我的问题是:人们使用什么策略来做这类事情?

注意:我一直在寻找想法,但没有找到太多具体的帮助。

浮现在脑海中的一些方法:

方法A:让服务销售高分辨率图像,并用毕加索调整大小。 优点:简单,不需要逻辑来抓取哪张照片。 缺点:小型设备需要使用带宽&存储空间,以无法显示的分辨率下载图像。

方法B: 在服务上有5个不同版本的图像(mdpi,hdpi,xhdpi,xxhdpi,& xxxhdpi)并根据我正在呼叫的设备获取每个版本,如下所示:

File ext            Dimensions
------------------------------
_mdpi.jpg           360x203
_hdpi.jpg           540x304
_xhdpi.jpg          720x405
_xxhdpi.jpg         1080x608
_xxxhdpi.jpg        1440x810

这看起来对手机来说还算不错,但是一旦我把平板电脑扔进了混合物,事情会变得更加混乱。在此之后,我可以像Android一样使用最小宽度限定符,并从服务中提供更多图像。所以有些东西......

File ext            Dimensions
------------------------------
_mdpi.jpg           360x203
_hdpi.jpg           540x304
_xhdpi.jpg          720x405
_xxhdpi.jpg         1080x608
_xxxhdpi.jpg        1440x810
_sw600-mdpi.jpg     600x338
_sw600-hdpi.jpg     800x450
_sw600-xhdpi.jpg    1200x675
...
_sw720-mdpi.jpg     720x405
_sw720-hdpi.jpg     1080x608
_sw720-xhdpi.jpg    1440x810
... 

但这不能处理宽度为900dp的更大型设备(例如Pixel C)(因为'sw720-xhdpi'1440x810图像需要升级到1800x1013)。

优点:我正在为每个要显示的设备下载非常接近正确的尺寸。 缺点:似乎过于复杂,因为我现在需要添加许多不同的副本,并且设备代码可以确定我所使用的设备类型并从中获取正确的图像服务。

方法C:您的方法。

我可能正在寻找中间人,或者如果你做了一些完全不同的事情,我也愿意听到这个。

1 个答案:

答案 0 :(得分:0)

如果它在将来帮助任何人,我最终做了一种选项B的形式,它使用3种不同的铲斗尺寸来提供图像。桶基于屏幕宽度,如下:S:0-599px,M:600-1199px,L:1200 + px。

不一定是最优雅的,但到目前为止一直运作良好。