支持所有平板电脑的 Android - 对可绘制对象和布局进行分类

标签 android screen-resolution resourcebundle

我在 stackoverflow 中看到很多线程讨论这个问题(比如 thisthisthis),并且我已经阅读了关于支持多屏幕和设计的文档。但是我还是不清楚drawables的文件夹结构和不同屏幕的布局

我正在开发一款支持安卓手机和平板电脑的应用程序。我的项目显示了一些图像,这些图像需要在所有可能的 android 设备上以高质量显示。我需要告诉我的设计师针对所有这些分辨率进行设计。

从文档看来我应该为以下分辨率添加可绘制对象(可绘制文件夹名称在末尾给出),

1) 240 x 320  - Phone LDPI  -> drawable-ldpi

2) 320 x 480  - Phone MDPI  -> drawable-mdpi

3) 480 x 800  - Phone HDPI  -> drawable-hdpi

//Now for tablets

4) 1024x600   - Tablet LDPI -> ??

5) 1280x800   - Tablet MDPI -> ??

6) 1536x1152  - Tablet HDPI -> ??

7) 2560x1600  - Tablet XHDPI-> ??

来自支持multiple screens documentation ,看来我可以使用像

这样的文件夹
1) drawable-sw600dp  ( a 7” tablet (600x1024 mdpi).)
2) drawable-sw720dp   (a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).

但是对于分辨率在 1536x1152、2560x1600 等范围内的平板电脑呢?10' 分辨率范围(720 x 1280 等)对它们来说似乎很小。我的客户有一个分辨率为 2560×1600 的 Nexus 10,我想要我的应用在上面看起来很完美..

我知道, 9-patch 图像,使用 wrap_content 的布局和其他类似的良好做法。但是对于这个项目,我有一些图像,根据要求,它们应该在所有常见屏幕上都清晰可见,并且我至少在我的 bundle 中需要这些图像的多个版本。

那么我应该向设计师提什么和什么决议呢?以及如何将它们分类为提供正确文件夹名称的包。

最佳答案

实际上平板电脑是按大小而不是 dpi 分类的,即 7"标签是 drawable-large 而 10"标签是 drawable-xlarge。现在您可以再次按 dpi 分类,例如 drawable-large-hdpi,这意味着它是 7"的标签,具有高密度。

您可以使用SW 最小宽度概念来定位,参见Application Skeleton to support multiple screen并进行计算。

平板电脑平板电脑分为两种尺寸。

7" (1024X(600-48(navigation bar))) = 1024 X 552 (drawable-large)
10" (1280X(800-48(navigation bar))) = 1280 X 752 (drawable-xlarge)

对于 2560x1600,使用公式计算 SW dp

px= Device's width
dpi= Device's density

给出的公式

px = dp * (dpi / 160)

如果你有 px 的值,交换公式

dp = px / (dpi / 160)

所以 drawable-swxxxdp 将完成这项工作

关于支持所有平板电脑的 Android - 对可绘制对象和布局进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151121/

相关文章:

android - 按下后退按钮时如何删除 Stack 中的所有 Activity

android - 调用 retrofit.Call<> 时出现 NullPointerException

java - 使用实现而不是编译时无法访问库模块依赖项

java - Spring MVC 中资源包的最佳方法是什么?

spring - Grails:阅读资源包

php - Sylius:添加具有可翻译内容的资源

android - Play-Services-Map与Firebase之间的依赖冲突

html - 横幅背景图像屏幕分辨率

html - 如何在服务器端获取浏览器的屏幕分辨率?

cocos2d-x - 对所有安卓设备的多分辨率支持