我做了很多研究,但我觉得我还没有完全理解如何支持不同屏幕尺寸的整个系统。
所以我的设计师想知道我想要支持哪种屏幕尺寸,他想知道最初要构建哪种分辨率。
所以我建议我想要支持以下内容,
屏幕大小正常
mdpi - yes hdpi - yes xhdpi - yes
到目前为止,我假设了以下几点:
普通屏幕mdpi - 320x480 - 160ppi普通屏幕hdpi - 480x800 - 240ppi普通屏幕xhdpi - 640x960 - 320ppi
问题是如何为一个720x1280的屏幕定义资源?我是否使用为640x960定义的资源?
类似于S3的东西
发布于 2012-12-15 13:57:07
我已经在这里用设计者的观点陈述了application-skeleton-to-support-multiple-screen。
列出了设备屏幕的百分比差异
Ldpi- 75%
Mdpi- 100%
Hdpi- 150%
XHdpi- 200%
但正如我们现在所知,大多数设备都带有480X800,所以我认为这是基于设备的,所以我们的新计算将如下所示
Ldpi- 50%
Mdpi- 66.67%
Hdpi- 100%
XHdpi- 133.33%
你可以将XHdpi作为基础,因为当我们放大较小的图像时,图像会变得模糊,所以开始制作更大尺寸的图片,然后再制作更小的图片。
现在介绍配备高分辨率720x1280的设备,即S3
Android V3.0 Honeycomb引入了具有最小宽度概念(SW)的限定符
drawable-软件?dp
设备分类为屏幕宽度,因此如果我们创建一个名为drawable-sw360dp的文件夹,则具有720dp(宽度或高度)的设备将使用this文件夹中的资源。
例如,要查找三星Galaxy S3 dp后缀drawable-sw?dp,引用,如果您想支持您的布局或可绘制到S3,则计算结果为
px=设备的宽度= 720
dpi=设备的density= 320
给出的公式
px = dp * (dpi / 160)互换公式,因为我们有px的值
dp = px / (dpi / 160)现在把价值放在
dp= 720 / (320/160);
dp=360. 因此,drawable-sw360dp将为S3做这项工作
从GsmArena获取设备配置,同样,您也可以为不同的设备(笨拙的/最新的)创建文件夹
您也可以为布局文件夹添加相同的后缀layout-sw360dp
发布于 2012-12-10 23:47:12
我也同意其他人在Android开发者网站上发布了Supporting Multiple Screens的链接,因为这是一个很好的资源,可以了解屏幕类别(小屏幕,普通屏幕,大屏幕)和不同屏幕密度(ldpi,mdip,hdpi)之间的差异。
还有一篇关于Metrics and Grids的非常有趣的文章,它对我帮助很大。
你还应该将像素的比例保持在你的后脑勺:
ldpi: 1dp = 0.75px、mdpi: 1dp = 1px、hdpi: 1dp = 1.5px和xhdpi: 1dp = 2px
我个人喜欢把ldpi和大约240x320的分辨率联系起来,把mdpi和320x480联系起来,把hdpi和480x800联系起来,把xhdpi和任何更大的东西联系起来,比如SGS3。
例如,指向Metrics and Grids的链接说明按钮的大小应至少为48dp。这意味着如果你想创建一个48x48大小的按钮,你还必须提供一个包含96x96 px for xhdpi、72x72 px for hdpi和36x36 px for ldpi的图形。
我还建议你和你的设计师看一看9-patch images,试着调整你的UI。这将使您作为开发人员的生活少得多的麻烦。这样做的原因是,你可以创建小尺寸的图像,这些图像可以在整个应用程序中缩放得非常好。
很明显,你应该尝试用最高的分辨率(例如xhdpi)来创建你的图形,然后缩小到hdpi,mdpi和ldpi。
我遇到的另一个技巧,我已经没有来源了,那就是使用Android中的资源文件夹,因为与只提供大图像相比,它的性能要好得多,让操作系统在移动中缩小它的大小。(But this SO post has some valid arguments in the answers)
发布于 2012-12-07 21:29:36
你可以使用SVG库实现矢量图形,并且非常有用,支持多分辨率屏幕,源代码是here
https://stackoverflow.com/questions/13763988
复制相似问题