在处理布局中的图像时,您会建议采用什么策略?我们都知道,Android硬件差异很大。不仅在密度方面,而且在屏幕尺寸方面也是如此。一些移动设备,可能大部分旧学校时间都有320dip的宽度,但是例如Galaxy S4有360dip。
我的问题是最好的可视化我猜一个例子。可以说我有2张图片,我想连续显示(horrizonatly)。如何做到这一点(通用,大多数情况下,整个项目,除了例外):
1)固定宽度和高度? 2)基于可用空间百分比的宽度和高度(例如,具有权重属性的组合)? 3)在将图像放入“资源”之前确保图像的大小正确,然后使用wrapped_content值“按原样”显示它们,并使图像的实际大小决定它们占用屏幕的空间< / p>
在那里,根据屏幕的大小,还有可能添加不同的布局,但是如果有人做过10个以上与图像打交道的项目给我一个提示,我真的很高兴。 expierience,关于如何在布局中调整图像大小的最佳长期策略。
答案 0 :(得分:1)
在处理多个屏幕密度和大小的图像时,请考虑分别使用特定于ldpi,mdpi,hdpi和x-hdpi的资源。
此外,最好使用9个补丁图像而不是png或位图图像。
答案 1 :(得分:0)
缩放您拥有的每张图片。 您可以使用此工具进行缩放:tool
答案 2 :(得分:0)
我相信你的问题没有一般性答案。相反,您需要根据UI设计,设备/方向兼容性和性能要求做出最佳设计决策。
例如,在很多情况下,设计将决定图像在屏幕上的显示方式,适用于手机/平板电脑的不同屏幕尺寸。因此,无论您将它们显示为固定宽度还是屏幕大小的百分比,都将取决于您所追求的可视结果(尽管在这种情况下,使用多个DPI存储桶中的缩放资源可以获得类似的结果)。
对于性能很重要的示例,您可能需要考虑以全分辨率显示图像(使用DPI存储桶)比使用Android扩展它们更有效。但是,因为您正在处理存储桶,所以由于DPI范围的不精确性,您对UI的显示方式将具有较少的绝对控制,因此在某些屏幕尺寸/ DPI上可能看起来不太理想。
只是为了扩展其他人提到的内容。如果你还没有,你应该看看这篇关于通过多种屏幕配置处理资源的android文章:
http://developer.android.com/guide/practices/screens_support.html
特别是,您需要注意的是,即使在布局中使用权重或dp值,您仍然希望通过使用资源限定符来优化资源以获得尽可能多的显示配置,这些资源限定符将配置分类为“桶” 。正如我上面提到的,这不仅是出于性能原因,而且还是为了优化组件的外观,因为您将依赖Android重新配置它们,在某些情况下(例如,显示在一个非常高的res图像上)非常低的DPI设备)给出了糟糕的视觉效果。
答案 3 :(得分:0)
如果您希望每台设备都能正常显示,那真的很难,因为有3.2英寸的mdpi设备和5.1英寸的mdpi设备。即使你在可绘制的mdpi中放置一个合适的图像文件,两个设备都会搞砸它。所以对于像背景这样的图像你必须妥协。
最好在清单文件中使用设备兼容性,或者为不同的设备提供不同的包。
对我来说,图像主要是替换按钮。考虑一个像a的图像 1。登录 - 一种颜色宽的条形图,中间有文字。 - 将背景颜色用于线性布局,并将文本视图放在重力中心内。 2.用户选择图像,一个共同的背景和一个人的中心图像 - 在这种情况下删除除人之外的所有图像内容。使用线性布局与背景匹配删除的部分。在这个线性布局内部将imageview与只有人的图像放在一起。确保此人图像的大小与Xhdpi匹配。
现在创建只创建不同的xml布局文件,但只创建一组图像。现在在不同的设备xml中提到图像的不同填充和线性布局的不同大小。 结果将是图像匹配范围广泛的设备。
至少对我来说,它减少了管理20张图片和几乎1Mb应用程序大小的开销。 希望它对你的情况有用。