安卓屏幕尺寸

19

我需要知道Android设备的屏幕尺寸,以支持多种屏幕尺寸的应用程序。


你需要设备的物理尺寸来确定屏幕大小吗?例如5英寸或10英寸? - Abhimaan
8个回答

18

17

我已经阅读并按照说明操作,但是当我在Android3模拟器上测试我的应用程序时,它只出现在屏幕的一小部分。但我希望它能填满整个屏幕,我能控制吗? - FAFI
你需要在清单文件中使用<supports-screens>标签来指示你的应用支持哪些屏幕尺寸。同时,还需要注意清单文件中uses-sdk标签的targetSdkVersion属性。如果你的目标sdk版本过低,那么运行较高版本的设备(和模拟器)可能会切换到兼容模式,这可能会限制你的应用程序模拟HVGA屏幕。 - Ted Hopp

16

不同的屏幕尺寸如下。

xlarge screens are at least 720dp 960dp
large screens are at least 480dp x 640dp
normal screens are at least 320dp x 470dp
small screens are at least 320dp x 426dp

如果您计划制作一个支持多个设备的应用程序,那么您必须为不同的布局创建不同的布局目录。

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

如果您计划添加不同尺寸的图像,请将它们放入相应的文件夹中。Android操作系统将自动从中选择最合适的图像。

res/drawable-ldpi/my_icon.png        // bitmap for low density
res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

在这里输入图像描述


如何在小屏幕文件夹中添加ldpi(240 * 320)和hdpi(480 * 640)的图像! - Tushar Pandey
你只需要将正确大小的图片放入相应的drawable文件夹中即可。Android操作系统将根据设备屏幕的尺寸自动从相应的drawable文件夹获取图片。 - enadun
1
谢谢enadun,我想你是想说这些类型的文件夹。 - Tushar Pandey

7

Android支持多种屏幕尺寸,没有具体的屏幕尺寸列表,只有大致范围。更多信息请参阅“支持多个屏幕”


我已经阅读过了,但整个重点是我想只有一个XML文件,并通过我的代码控制小部件的位置。 - FAFI
你无法预测所有可能的屏幕尺寸变体。因此,你需要以屏幕尺寸不可知的方式进行工作。如果你阅读参考文章,你将了解可以采取哪些方法使你的代码在所有(或大多数)屏幕上运行。 - inazaruk
我从那篇文章中了解到,我需要为不同的屏幕大小制作不同的XML文件。 - FAFI
@inazaruk 是正确的,如果你愿意,你可以拥有一个适用于所有屏幕尺寸的单一xml布局,或者你可以为每个低、中、高dpi值提供基于dpi的布局。关键是允许视图根据需要和dpi自行调整大小,而不是绝对定位和调整它们的大小。 - bensnider
好的,但是当我按照你刚才说的做时,我的应用在Android 3模拟器上看起来非常糟糕,这就是为什么我正在尝试做我正在做的事情。 - FAFI
实际上,看起来在and3模拟器上指定的应用程序大小很小,所以它看起来很小,我能控制吗? - FAFI


2

在支持不同屏幕大小方面,我建议您首先查看屏幕支持参考,可能能更好地解决您的问题。要查看特定尺寸的列表,请查看表2


1

来了!

  • (240, 320)
  • (240, 400)
  • (320, 480)
  • (360, 640)
  • (480, 640)
  • (480, 800)
  • (480, 854)
  • (540, 960)
  • (600, 800)
  • (600, 1024)
  • (640, 960)
  • (720, 1280)
  • (768, 1280)
  • (768, 1024)
  • (800, 1280)
  • (1080, 1920)
  • (1200, 1920)
  • (1600, 2560)

使用以下代码从http://en.wikipedia.org/wiki/Comparison_of_Android_devices 的HTML源文件中解析出来:

import re

s = ""

with open("sizes.html", "r") as src:
    s = src.read()

res = re.findall('([0-9]+)\s*[×xX]\s*([0-9]+)', s)

sizes = set()

for match in res:
    size_int = [int(match[0]), int(match[1])]
    size = (min(size_int), max(size_int))
    if size not in sizes:
        sizes.add(size)

sorted_sizes = list(sizes)
sorted_sizes.sort(key=lambda sz: sz[0])

for sz in sorted_sizes:
    print(sz)

抱歉我的Python

谢谢您提供的链接!这就是我想知道的……有多少像素。 - Vincent Cantin
@Vincent,欢迎您(另外,任何人:上面的列表包含手动删除了几个(大)相机分辨率的脚本输出)。 - mlvljr

0
这是一个小函数,用于获取设备的英寸尺寸,以支持多尺寸屏幕:
public double getInchSize()
{
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    return Math.hypot(metrics.widthPixels/metrics.xdpi, metrics.heightPixels/metrics.ydpi)
}

希望它能有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接