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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 前后端分离架构概述「建议收藏」

    1、背景      前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这

    2022年4月6日
    58
  • google earth engine(GEE)监督分类总结与代码分享

    google earth engine(GEE)监督分类总结与代码分享提供分类代码以及思路整理

    2026年1月21日
    4
  • java三种注释_java注释的三种形式分别是什么

    java三种注释_java注释的三种形式分别是什么java 注释的三种形式分别是 1 单行注释 如 单行注释 2 多行注释 如 多行注释 3 文档注释 如 author JAVA 的注释共有三种形式 单行注释 多行注释 文档注释 推荐教程 java 课程 1 单行注释 publicclasso publicstatic String args 这是一个单行注释 System

    2025年11月14日
    5
  • hybrid.js_js交互是什么意思

    hybrid.js_js交互是什么意思HybridApp(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“NativeApp良好交互体验的优势”和“WebApp跨平台开发的优势”。

    2022年9月22日
    3
  • Linux操作系统基础

    Linux操作系统基础Linux简介Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机Linux介绍Linux出现于1991年,是由芬兰赫尔辛基大学学生LinusTorvalds和后来加入的众多爱好者共同开发完成Linux特点多用户,多任务,丰富的网络功能…

    2022年4月29日
    36
  • 命令行升级pip_pip升级版本命令

    命令行升级pip_pip升级版本命令查询当前pythonpip版本:pipshowpip输入python-mpipinstall–upgradepip命令升级;报错:ERROR:CouldnotinstallpackagesduetoanEnvironmentError:[WinError5]拒绝访问。:‘c:\programfiles\python37\lib\site-packages\pip-19.2.3.dist-info\entry_points.txt’Considerusin.

    2025年6月19日
    4

发表回复

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

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