最后创建了一个处理多个屏幕的布局和图标的结构。
Android 根据两个参数将设备显示分为几类:
- 屏幕尺寸,显示器的物理尺寸(对角线测量)
- 屏幕密度,显示器的物理像素密度(以每英寸像素数或 ppi 为单位)`
要快速确定屏幕尺寸和密度,请安装适用于 Android 的“我的尺寸是多少”应用程序。
屏幕尺寸
Android 定义了四种通用的屏幕尺寸:
Qualifier Size
small ~3 inches (approx)
normal ~4 inches (approx)
large Exceeds 4 inches
xlarge Exceeds 7 inches
- 大多数手机被归类为小型或普通(对角线大约 3 到 4 英寸)。但是现在大屏手机很多,比如 Galaxy S4、HTC One、Xperia Z
- 像三星 Galaxy Tab 这样的小型平板电脑被归类为大型(大于 4 英寸)
- 超大适用于大型设备,例如大型平板电脑
Android 定义了四种通用的屏幕密度:
Qualifier Description Nominal value
ldpi low density 120 ppi
mdpi medium density 160 ppi
hdpi high density 240 ppi
xhdpi extra high density 320 ppi
通常:
- 屏幕尺寸对您的应用布局影响最大
- 屏幕密度对您的图像和图形资源的影响最大
这里列出了设备屏幕的百分比差异
- Ldpi- 75%
- Mdpi- 100%(基于 Android 开发者网站)
- Hdpi- 150%
- XHdpi- 200%
但是我们现在知道大多数设备都带有480X800,所以我认为这是基于设备的,所以我们的新计算会像这样
- Ldpi- 50%
- Mdpi- 66.67%
- Hdpi- 100%
- XHdpi- 133.33%
这意味着将只为480X800创建第一个图标和设计,然后为其余的(即 Ldpi、Mdpi、Xhdpi)创建图标和设计。
有些图像对于所有布局都是通用的,并且颜色和形状必须一致(没有复杂的形状,没有曲线),所以对于这种图像,我们正在创建9patch
将其放在“drawable(无后缀)”文件夹中。要创建 9Patch 图像,您可以使用DrawNinePatch或BetterNinePatch
现在只需根据 Android 的标准重命名您的图像并完成您的应用程序,hdpi
然后只需创建drawable-hdpi
文件夹并打开Adode Photoshop(推荐)创建多个大小的操作(只需根据百分比更改大小)一旦为所有大小创建操作然后执行批量自动化并给出源(drawable-hdpi)和目标(drawable-ldpi,drawable-mdpi,drawable-xdpi)。
我坚持你使用 Photoshop 的原因是它会自动调整你的图像大小,还有一个优点是你不需要重命名文件(它会分配与原始文件相同的名称)。
完成所有图像的创建后,刷新您的项目并对其进行测试。
有时,支持屏幕(xhdpi、hdpi、mdpi)的布局可能会在小屏幕(ldpi)中被剪切,因此为了处理这个问题,只需为其创建单独的布局文件夹(layout-small)并添加ScrollView
(大部分)。就是这样。
平板电脑 平板
电脑分为两种尺寸。
- 7"(1024X(600-48(导航栏))) = 1024X552 (drawable-large)
- 10"(1280X(800-48(导航栏))) = 1280X752 (drawable-xlarge)
在这个我们需要为两个屏幕创建图像并相应地放置它们
所以总而言之,我们将在我们的应用程序中有这个文件夹来支持多屏。
drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-large
drawable-xlarge
将有更多的限定词组合Screen size and Screen density
drawable-large-ldpi
drawable-large-mdpi
drawable-large-hdpi
drawable-large-xhdpi
更多限定词Screen density and Version
drawable-ldpi-v11
drawable-mdpi-v11
drawable-hdpi-v11
drawable-xhdpi-v11
和更多的限定符Screen size and Version
drawable-large-v11
drawable-xlarge-v11
和更多的限定符Smallest width concept(SW)
drawable-sw???dp
此外,在 Android V3.0 Honeycomb 中,他们引入SW(smallest width)
了将设备分类为屏幕宽度的新概念,因此如果我们创建一个名为的文件夹,drawable-sw360dp
则具有 720dp(宽度或高度)的设备将使用此文件夹中的资源。
例如找到Samsung Galaxy S3
dp后缀到drawable-sw?dp
参考DP Calculation,如果你想支持你的布局或 drawable 到 S3 那么计算说
px= 设备宽度 = 720
dpi= 设备密度= 320
给出的公式
px = dp * (dpi / 160)
交换公式,因为我们有 px 的值
dp = px / (dpi / 160)
现在把价值,
dp= 720 / (320/160);
dp=360.
所以drawable-sw360dp
会做这项工作
从GsmArena
Sameway 获取设备配置,您还可以根据设备的 Android API 版本创建文件夹,即 drawable-hdpi-v11`,因此具有 API11 且为 Hdpi 的设备将使用此资源。
附加提示:
使用相对布局、dp、sp 和 mm
dp 单位- 在 160 ppi 屏幕上,与设备无关的像素标准化为 1 个物理像素,即中等密度。在运行时缩放。用于屏幕元素尺寸
sp 单位- 缩放的像素,指定为浮点值,基于 dp 单位,但还针对用户的字体大小首选项设置进行了缩放。在运行时缩放。用于字体大小
您应该始终使用 RelativeLayout 进行布局;AbsoluteLayout 已弃用,不应使用。
使用适当的图像格式 - PNG 与 JPEG
Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.
但是,PNG 和 JPEG 不是等价物。他们有不同的质量权衡,PNG并不总是最好的:
与 PNG 相比, JPEG最多可减少 50% 的文件大小,如果您的应用程序是图像密集型应用程序,这一点非常重要
对于相同的文件大小,更高质量的“有损”JPEG 可能比高度压缩的“无损”PNG 看起来更好
为您的图像和图形添加标签以进行调试
使用 support-screens 元素
使用真实设备值配置您的模拟器
通常,桌面系统以 72ppi (Mac) 或 96ppi (Windows、Linux) 显示。与移动设备相比,桌面显示器始终是低密度的。
始终将您的 Android 模拟器配置为模仿真实的设备值,并始终将它们设置为缩放以模拟设备密度。
在 Eclipse 中,很容易创建多个模拟器(从 Eclipse 菜单栏中,选择Window > AVD Manager > New),并为真实设备配置值:
为其模拟的真实设备命名模拟器指定分辨率,不要使用内置通用尺寸设置设备密度以匹配真实设备(在硬件窗格中将抽象 LCD 属性设置为真实密度,始终为整数值)
启动设备时,请始终选择将显示缩放为实际尺寸,并以英寸为单位输入实际屏幕尺寸。
如果不设置设备密度,则模拟器默认为低密度,并且始终加载 ldpi 特定的资源。分辨率(像素尺寸)将是正确的,但与密度相关的图像资源不会按预期显示。
当然,您所做的任何事情都不会在较低密度的桌面显示器上再现较高密度的图像质量。
以下是截至 2012 年 10 月 1 日的 7 天期间收集的数据。要查看有关 Android 平台版本的最新统计信息,请转到此处
基于屏幕尺寸
基于屏幕密度