您如何确定Android基线可绘制的像素尺寸?

时间:2011-11-09 22:21:11

标签: android graphics photoshop

简短问题

我的Android XML布局中有一个40dip by 40dip按钮。我需要在mdpi资源文件夹中放置哪个drawable的像素尺寸?

长问题

假设我有一个50dip x 40dip按钮。

<Button
    android:layout_width="50dip"
    android:layout_height="40dip"
    android:background="@drawable/someImage" />

我对手机上此按钮的物理尺寸感到满意。我的问题是当我在Photoshop中设计someImage.png时,我该如何决定图像的像素尺寸?目前,我只是制作一个巨大的500px×400px图像,并将其放在默认的drawable资源文件夹中,因为它在我测试过的所有手机和平板电脑上都能正常工作。

reference page on supporting multiple screens并没有告诉我如何决定 像素尺寸。

问题#1 - 基线图形

enter image description here

此图仅告诉我需要放入每个可绘制资源文件夹的图形的相对尺寸。但是,它并没有告诉我制作基线mdpi图形所需的像素尺寸,所有其他图形都与之相关。

问题#2 - 屏幕密度碎片

  

与密度无关的像素相当于a上的一个物理像素   160 dpi屏幕,这是系统假定的基线密度   用于“中等”密度屏幕。在运行时,系统透明   根据实际情况,根据需要处理dp单位的任何缩放   使用中的屏幕密度。将dp单位转换为屏幕   像素很简单:px = dp *(dpi / 160)。例如,240 dpi   屏幕,1 dp等于1.5个物理像素。你应该总是使用dp   定义应用程序UI时的单位,以确保正确显示   你的用户界面在不同密度的屏幕上。

这个小小的消息告诉我,160dpi屏幕上的50dip宽图形看起来是50px宽。你说,太好了。我应该在Photoshop中使我的mdpi图形(160dpi落在mdpi下)50px宽。嗯,这不是那么简单,因为并非所有的mdpi手机都是160dpi。如果我母亲的mdpi手机是167dpi怎么办?然后我的50dip宽图形在她的手机上显示为52.1875px,这可能会导致一些奇怪的模糊文物。那我该怎么办?我应该从母亲的167dpi手机上模拟我的基线mdpi,还是应该用完美的实验室160dpi手机模拟它,这可能在现实世界中甚至不存在?

3 个答案:

答案 0 :(得分:0)

我使用320x480作为总屏幕大小来关闭所有图形。在我准备导出其他密度图形之前,像素密度并没有发挥作用。最终是480 * 1.5等等。

再说一点,当你做50dip x 40dip时,你真正说的是使用320px x 480px基线的50px x 40px。 Android会在一定程度上为您缩放图像,因此您所做的事情看起来并不坏。在这种情况下你应该做的是为mdpi制作一个50px x 40px的按钮,并为hdpi等制作一个75px x 60px(这些是x 1.5)。

答案 1 :(得分:0)

当谈到问题#2 ......

  

我应该从母亲的167dpi手机上模拟我的基线mdpi,还是应该用完美的实验室160dpi手机模拟它,这可能在现实世界中根本不存在?

你应该针对完美的实验室160dpi手机进行建模。这几乎就是那篇文章试图告诉我们的内容。我的理由是ldpi,mdpi等是'通用'密度,Android OS的图形引擎负责正确补偿任何给定设备的实际dpi。除了强制设备制造商使用授权的屏幕组件(这不会发生)之外,没有任何其他方法可以做到这一点。

至于问题#1,我会看一下你的按钮的宽度:高度比,并根据 选择实际像素尺寸,但是比“模型”更大 50 x 40像素。 W:H的比例是5:4,所以我选择宽度可被5整除但大于50的宽度可能是60,这可以被5和4整除。这意味着将按钮图像创建为60 x 48像素当为ldpi目的乘以0.75时,给出exect值(45 x 36 px)。

答案 2 :(得分:0)

我不会创建进入我们应用程序的资产(设计师会这样做),但我花了很多时间来修复它们,以便它们可以在不同的设备上使用。

我建议这样的事情:

制作mdpi 320x480设备的布局设计(线框图),使您的漂亮设计成为您支持的最高分辨率。然后考虑一下 - 需要拉伸的资产,最小和最大尺寸等以支持不同的屏幕。不要只是按照设计中显示的资源切片,.9 patch,优化它们。

使用高分辨率设计中的资源并让Android为您缩小它们 - 您已经为mdpi设备配置了所有内容(不支持ldpi ... urggghhhh ....)。按钮背景不应该是一个设置的大小,它应该是一个9最小的png,最小尺寸 - 内容(文本或图标)/可用空间/ xml布局将决定最终尺寸。

我可能只是在喋喋不休。