关闭

Android DisplayMetrics类简介

标签: android手机google文档
1519人阅读 评论(0) 收藏 举报
分类:

    Android 获取屏幕分辨率及 DisplayMetrics 简介 Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机 屏幕的边界,以避免缩放造成的布局变形问题。 手机的分辨率信息是手机的一项重要信息,很好的是,Android 已经提供 DisplayMetircs 类可以 很方便的获取分辨率。

    下面简要介绍 DisplayMetics 类: Andorid.util 包下的 DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和 字体。 

为了获取 DisplayMetrics 成员,首先初始化一个对象如下: 

DisplayMetrics metrics = new DisplayMetrics(); 

getWindowManager().getDefaultDisplay().getMetrics; 

注:构造函数 DisplayMetrics 不需要传递任何参数;调用 getWindowManager() 之后,会取得 现有 Activity 的 Handle ,此时,getDefaultDisplay() 方法将取得的宽高维度存放于 DisplayMetrics 对象中,而取得的宽高维度是以像素为单位(Pixel) ,“像素”所指的是“绝对像素” 而非“相对像素”。

通过 DisplayMetrics 的 toString()方法可以获取到 DisplayMetrics 的大部分 fields 信息,如下 是在分辨率为 480x320 情况下的一些输出信息:

其中,density 为显示的逻辑分辨率(文档中说了很多,看得不是很明白);width 及 height 就为 屏幕分辨率 (为绝对宽度与高度) 与 fields 中的 widthPixels 及 heightPixels 一致; , scaleDensity 与 density 一致;xdpi 及 ydpi 为准确物理像素。 


下面我们来比较 Android 中 dip, dp, px, sp 之间的区别: 

dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有 关,一般我们为了支持 WVGA、HVGA 和 QVGA 推荐使用这个,不依赖像素。 

px: pixels(像素). 不同设备显示效果相同, 一般我们 HVGA 代表 320x480 像素, 这个用的比较多。

pt: point,是一个标准的长度单位,1pt=1/72 英寸,用于印刷业,非常简单易用; 

sp: scaled pixels(放大像素). 主要用于字体显示 best for textsize,根据 google 的建议, TextView 的字号最好使用 sp 做单位, 过去, 程序员通常以像素为单位设计计算机用户界面。 例如, 定义一个宽度为 300 像素的表单字段, 列之间的间距为 5 个像素,图标大小为 16×16 像素 等。这样处理的问题在于,如果在一个每英寸 点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能 会小到难以看清 内容。 与分辨率无关的度量单位可以解决这一问题,Android 支持下列所有单位: px(像素):屏幕上的点。 in(英寸):长度单位。

mm(毫米):长度单位。 pt(磅):1/72 英寸。 dp (与密度无关的像素) 一种基于屏幕密度的抽象单位。 : 在每英寸 160 点的显示器上, 1d
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:618416次
    • 积分:5886
    • 等级:
    • 排名:第4299名
    • 原创:29篇
    • 转载:126篇
    • 译文:0篇
    • 评论:113条
    最新评论