Android获取屏幕分辨率及DisplayMetrics简介[通俗易懂]

Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题。手机的分辨率信息是手机的一项重要信息,很好的是,Android 已经提供DisplayMetircs 类可以很方便的获取分辨率。下面简要介绍 DisplayMetics 类:Andorid.util 包下的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信息,如下是在分辨率为 480×320情况下的一些输出信息:

Android获取屏幕分辨率及DisplayMetrics简介[通俗易懂]


其中,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代表320×480像素,这个用的比较多。 
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点的显示器上,1dp = 1px。 
dip:与dp相同,多用于android/ophone示例中。 
sp(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121465.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何删除带有密码的赛门铁克企业版客户端?

    如何删除带有密码的赛门铁克企业版客户端?如何删除带有密码的赛门铁克企业版客户端?NortonAntiVirus的客户或赛门铁克防病毒客户尤其是企业版客户端可以安装作为管理网络安装类型由赛门铁克防病毒服务器。当赛门铁克防病毒客户端的管理,系统会提示输入密码时,卸载客户端通过在本地计算机上控制面板添加或删除程序Applet的。如果您不知道或忘记密码,客户端是无法卸载或删除。客户端卸载的密码是不同的从服务器组密码,可以…

    2022年5月7日
    100
  • 复合熵、条件熵和信息增益

    复合熵、条件熵和信息增益

    2021年11月19日
    41
  • 除了we tool还有哪些免费安全好用的微信群发软件?这两个软件比we tool好用!

    除了we tool还有哪些免费安全好用的微信群发软件?这两个软件比we tool好用!除了wetool还有哪些安全好用的微信群发软件?群发工具是社群运营使用频率最高的工具,无论是给群内推送消息,还是给个人推送消息。按键精灵:点击左侧链接下载按键精灵是一款模拟鼠标键盘动作的软件。通过制作脚本,可以让按键精灵代替您的双手,自动执行一系列鼠标键盘动作。按键精灵免费版简单易用,不需要任何编程知识就可以作出功能强大的脚本。只要您在电脑前用双手可以完成的动作,按键精灵都可以替您完成。按键精灵用途广泛,具有大量脚本资源。简单百宝箱:点击左侧链接下载简单百宝箱是一个绿色和安全的游戏

    2022年6月4日
    94
  • FIST! FIST! FIST! Its all in the wrist: Remote Exec[通俗易懂]

    FIST! FIST! FIST! Its all in the wrist: Remote Exec[通俗易懂]==PhrackInc.==Volume0x0b,Issue0x3e,Phile#0x08of0x10|=—–=[FIST!FIST!FIST!Itsallint

    2022年8月5日
    3
  • DatabaseMetaData元数据

    DatabaseMetaData元数据通过java.sql.DatabaseMetaData接口,您可以获得有关您已连接到的数据库的元数据。例如,你可以看到哪些表的数据库,和什么中定义的列的每个表的数量,是否是给定功能支持等。DatabaseMetaData接口包含很多的方法,和并不是所有将在本教程中覆盖。你应该看看的JavaDoc。此文本将只是覆盖面不够,给你一种感觉,你可以用它。获得一个DatabaseMetaData实例

    2022年6月19日
    24
  • privacypolicy什么意思_privacyversion

    privacypolicy什么意思_privacyversion隐私政策网址(URL)移动APP应用尊重和保护利用用户的隐私所有的服务。为了向您提供更准确,更人性化的服务,将移动APP应用使用和披露按照本隐私政策您的个人信息。但是移动APP应用将是一个高度的勤勉,审慎义务对待这些信息。除本隐私政策另有规定外,未经您的许可之前,移动APP应用信息将不会被披露或向第三方提供。移动APP应用更新本隐私政策不时。当您同意移动APP应用服务协议,您将被视为……

    2022年9月2日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号