屏幕分辨率/物理尺寸

时间:2012-05-02 12:48:33

标签: android android-screen

我正在实施适用于Android的应用(API 10)。平板电脑(据称)和手机的设计很少。关于上一句话,它可能听起来有点愚蠢:在我看来,应该根据设备的物理尺寸选择布局 - 而不是分辨率,否则可能会有一个高分辨率的手机,比如5x5的网格渲染,相当混乱,不合适的小型方式。为了按物理尺寸提供除法,我必须使用 / res / layout - *文件夹。同意吗?

另外:我对multiple-screens指南关于物理尺寸的定义感到有点困惑。您是否介意根据Android平均值解释实际尺寸,衡量的内容?与dpi 有任何相关性吗?

感谢。

4 个答案:

答案 0 :(得分:1)

api 10级的解决方法可能是这样的:

  1. 使用SDK中的compat lib,以便您可以使用片段进行设计。

  2. 假设android 3之前的所有内容都是手机。例如,在布局/ *中使用布局文件(除非覆盖,否则其余部分将基于它)。对于2009年的原版三星Galaxy Tab 7,这个假设基本上是错误的。

  3. 假设android 3.x上的所有内容都是平板电脑(它们都是),所以如果你愿意,可以使用平板电脑专用布局,并将它们置于layout-v11下(如果有任何特定内容,也可以使用layout-v12) android 3.1)。平板电脑特定布局可能意味着您以不同方式排列片段和/或同时显示多个片段。

  4. 更新的东西(android 3.2+)你可以使用api level 13中的新东西。例如layout-sw600dp /用于某些布局等等。http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts

答案 1 :(得分:0)

物理尺寸通常以英寸为单位,它只是告诉您真实的设备的屏幕尺寸(手机通常为3-4英寸,平板电脑为8-11英寸) )。

dpi ,与之无关。 Dpi表示屏幕密度,在给定区域(通常是平方英寸)中显示多少像素。它可以被视为屏幕质量的衡量标准。

分辨率由两者的产品给出;它表示屏幕上的物理像素总数。

回到第一个问题,你应该尽可能密度独立;您的应用应该在具有不同密度的设备上“看起来相同”。 / res / layout - *文件夹旨在提供此功能,系统将可绘制资源缩放到适当的大小,然后您可以在清单中声明您的应用程序支持任何密度:

android:anyDensity="true"

在页面http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch上,您可以了解Android如何选择最佳匹配资源。

答案 2 :(得分:0)

使用Android API 10定位平板电脑的最佳选择可能只是通过以下方式区分代码中屏幕的实际大小: https://stackoverflow.com/a/5789916/1319155 如果返回的大小值大于6(或者您要声明为“平板电脑”的任何大小),则只加载不同的drawable。

你不能真正使用大小文件夹(即布局/大)的原因是因为文件夹不能很好地区分手机和平板电脑。点火和星系关系可能都被认为是“大型”设备。

你不能真正使用dpi的原因是因为它不能很好地反映它是什么类型的设备,只是像素在屏幕上的“密集”程度。无论如何,大多数新手机比平板电脑更密集(每英寸像素更多)。

答案 3 :(得分:0)

有两种方法可以做到这一点。从Android 1.6(API 4)开始,有四种布局描述了显示器的物理尺寸:small,normal,large和xlarge。如http://developer.android.com/guide/practices/screens_support.html所述,这些对应于:

  
      
  • xlarge屏幕至少为960dp x 720dp
  •   
  • 大屏幕至少为640dp x 480dp
  •   
  • 正常屏幕至少为470dp x 320dp
  •   
  • 小屏幕至少为426dp x 320dp
  •   

请注意,这些是在DP中测量的,而不是DPI。 DPI是每英寸点数,并指定屏幕密度。 DP,也写为DIP,是与密度无关的像素。再次从指南:

  

与密度无关的像素(dp)

     

在定义UI布局时应使用的虚拟像素单元,以与密度无关的方式表达布局尺寸或位置。   与密度无关的像素相当于160 dpi屏幕上的一个物理像素,这是系统为“中等”密度屏幕假定的基线密度。在运行时,系统根据使用的屏幕的实际密度,根据需要透明地处理dp单元的任何缩放。 dp单位到屏幕像素的转换很简单:px = dp *(dpi / 160)。例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。在定义应用程序的UI时,应始终使用dp单位,以确保在不同密度的屏幕上正确显示UI。

换句话说,160 DP = 1“。应用此标准,我们看到:

  • xlarge屏幕至少为6“x 4.5”(7.5“对角线)
  • 大屏幕至少为4“x 3”(5“对角线)
  • 正常屏幕至少为2.9“x 2”(3.5“对角线)
  • 小屏幕至少为2.6“x 2”(3.3“对角线)

(不确定选择为何如此奇怪,但这就是他们定义的内容。)

从Android 3.2 on(API 13),还有更多选项,如下所述: http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts

在这里,您可以使用“最小屏幕宽度”,“可用宽度”或“可用高度”选项来定义您自己的类别;再次,有问题的单位是DP,即1/160“。请注意,这些指定了设备上两个尺寸中较小的一个 - 例如,对于7”平板电脑,他们建议指定layout-sw600dp,即“最小宽度3.75英寸,“它将介于API 4中定义的”大“和”xlarge“尺寸之间。它们有关于此主题的一些特定注释,包括有关如何测量宽度的注释(可能排除类似于通知栏),所以值得一看文档。