`

Android获取屏幕分辨率及DisplayMetrics简介

阅读更多
Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题。

手机的分辨率信息是手机的一项重要信息,很好的是,Android 已经提供DisplayMetircs 类可以很方便的获取分辨率。下面简要介绍 DisplayMetics 类:

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

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

DisplayMetrics outMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(outMetrics); 
System.out.println("outMetrics.densityDpi=" + outMetrics.densityDpi
				+ ",outMetrics.heightPixels=" + outMetrics.heightPixels
				+ ",outMetrics.widthPixels=" + outMetrics.widthPixels);


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

修改自:http://blog.csdn.net/zhangqijie001/article/details/5894872
  • 大小: 4.9 KB
分享到:
评论

相关推荐

    android获取屏幕分辨率

    获取屏幕分辨率的方法主要涉及Android的`DisplayMetrics`类。这个类提供了关于设备屏幕的各种信息,包括宽度、高度、密度等。下面是一个简单的步骤来获取屏幕分辨率: 1. **获取`DisplayMetrics`对象**:在Activity...

    android获取设备屏幕分辨率

    本文将深入探讨如何在Android系统中获取屏幕分辨率,并结合`TestDisplayMetrics`这个示例,来讲解相关知识。 一、Android屏幕分辨率概念 屏幕分辨率是指屏幕上像素的数量,通常用宽度和高度的像素数表示,如1920x...

    android 获取屏幕硬件分辨率方法

    下面我们将通过代码示例来演示如何获取屏幕分辨率: ```java TextView tv = (TextView)findViewById(R.id.tv); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm)...

    android获取屏幕分辨率实现

    本篇文章将详细介绍如何在Android系统中获取屏幕分辨率,并探讨DisplayMetrics类的相关知识。 首先,Android系统提供了DisplayMetrics类来获取设备的显示信息,包括屏幕的宽度、高度、密度等。DisplayMetrics是...

    获取屏幕分辨率示例【源代码】

    总的来说,获取屏幕分辨率是Android开发中的基础技能,结合`DisplayMetrics`类和`Display`对象,我们可以轻松地获取到设备的屏幕尺寸信息,从而实现更优质的用户体验。这个示例程序将提供一个直观的教程,帮助开发者...

    获取手机屏幕分辨率Demo

    以下是一个简单的示例代码,演示如何获取屏幕分辨率: ```java import android.content.Context; import android.util.DisplayMetrics; public class ScreenResolutionUtil { public static void ...

    Android实例-获取屏幕的物理分辨率

    在描述中提到的"有图有真像",可能是指附带的图片`Android获取屏幕的物理分辨率.jpg`,这张图片可能展示了代码执行后的结果,即屏幕的物理分辨率以像素形式直观地展示出来,帮助开发者理解代码的工作原理。...

    Android-获取手机屏幕大小屏幕分辨率屏幕密度导航栏高度标题栏高度

    在Android开发中,了解设备的屏幕属性是至关重要的,这些属性包括屏幕大小、屏幕分辨率、屏幕密度以及系统组件的高度如导航栏和标题栏。这些信息对于优化应用布局、适配不同设备以及提供良好的用户体验至关重要。...

    获取android手机的分辨率

    可以在onConfigurationChanged()方法中重新获取屏幕分辨率。 5. 屏幕尺寸分类: Android系统将屏幕尺寸分为small、normal、large和xlarge,这主要基于屏幕对角线的物理尺寸。开发者可以通过在AndroidManifest.xml中...

    获取手机屏幕大小(DisplayMetrics类取得画面宽高)

    本篇文章将基于提供的代码示例,详细解析如何使用`DisplayMetrics`类来获取手机屏幕的宽度和高度,并探讨其应用场景及背后的工作原理。 #### DisplayMetrics类简介 `DisplayMetrics`类是Android系统提供的用于描述...

    获取android手机的分辨率、像素密度等

    获取这些信息的方法主要通过Android提供的DisplayMetrics类,该类包含屏幕的各种度量信息。以下是如何在代码中获取这些数据: ```java DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager()....

    安卓源码获取当前屏幕分辨率

    以下是获取屏幕分辨率的基本步骤: 1. 获取`DisplayMetrics`对象: 首先,我们需要获取到一个`DisplayMetrics`实例,这通常通过`WindowManager`服务完成。`WindowManager`是系统服务,用于管理窗口和屏幕显示。...

    Android编程获取手机屏幕分辨率大小的方法

    本文实例讲述了Android编程获取手机屏幕分辨率大小的方法。分享给大家供大家参考,具体如下: import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android....

    获取和更改屏幕分辨率的资源

    在移动设备上,例如Android,开发者可以通过DisplayMetrics类获取屏幕信息,而改变分辨率则较为复杂,通常不推荐,因为这可能对系统稳定性和应用兼容性造成影响。在iOS,屏幕分辨率由硬件固定,一般不能更改,但...

    android 获取屏幕宽度和高度的工具类

    // 获取屏幕分辨率 WindowManager wm = (WindowManager) (context.getSystemService(Context.WINDOW_SERVICE)); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); int ...

    获取当前的分辨率Demo

    在Android开发中,获取设备当前的屏幕分辨率是一项基础但重要的任务。这可以帮助开发者优化应用界面,确保内容在不同尺寸和分辨率的屏幕上都能正确显示。在本教程中,我们将深入探讨如何在Android应用中获取并使用...

    获取android硬件信息

    在Android中,可以使用DisplayMetrics类来获取屏幕分辨率。DisplayMetrics对象包含了与屏幕相关的各种尺寸信息,如宽度、高度、像素密度等。以下代码片段展示了如何获取分辨率: ```java DisplayMetrics ...

    解决app获取分辨率少了导航栏高度.zip

    通过修改framework代码解决app获取分辨率少了导航栏高度。一般app获取系统分辨率有很多种,如下: Display defaultDisplay = getWindowManager().getDefaultDisplay(); Point point = new Point(); ...

    android获取屏幕大小的正确方法

    此外,对于API 17及以上版本,可以使用`Display.getSize(Point)`方法直接获取屏幕的宽和高(单位为像素)。 屏幕的密度也是很重要的一个参数,它影响着UI元素在不同屏幕上的显示效果。`DisplayMetrics`类中的`...

    Android编程基础之获取手机屏幕大小(DisplayMetrics应用)示例

    接下来,我们可以通过`dm.widthPixels`和`dm.heightPixels`来获取屏幕的像素宽度和高度。在示例中,我们创建了一个`TextView`和一个`Button`。当用户点击按钮时,触发一个监听器,将屏幕的分辨率信息显示在`TextView...

Global site tag (gtag.js) - Google Analytics