一文搞清楚安卓屏幕密度、像素密度、分辨率、安卓计量单位(dp)

一文搞清楚安卓屏幕密度、像素密度、分辨率、安卓计量单位(dp)本文介绍了 Android 设备中的屏幕分辨率 像素密度 dpi 以及它们与 dp 的关系

大家好,欢迎来到IT知识分享网。

一、先搞清楚几个概念:

1、屏幕分辨率(px):

分辨率是手机屏幕的像素点总数,一般用屏幕宽的像素点数乘以屏幕高的像素点数。分辨率越大屏幕越细腻,能够显示的细节就越多。

常用的分辨率有320×240、640×480、1280×720、1280×960、1080×1920、2560×1440等,单位是像素。比如1080×1920表示屏幕宽度方向上有1080个像素,屏幕高方向上有1920个像素

2、像素密度(dpi):

指每英寸的屏幕中包含的像素数量

3、屏幕密度:

是像素密度的另一种表示形式,android以像素密度160dpi为基准对屏幕进行划分,当像素密度为160dpi时屏幕密度为1.0,像素密度为120dpi时屏幕密度为0.75,像素密度为320dpi时屏幕密度为2.0,及即: 屏幕密度 = 像素密度/160

4、安卓的计量单位dp,,主要是是用来标注控件的宽、高。其换算公式:

 屏幕的总dp值 = 分辨率/屏幕密度

5、屏幕对角线的长度值,以英寸为单位。

二、adb命令获取方式:

像素密度(dpi):adb  shell wm density

屏幕分辨率(px):adb shell wm size

三、代码获取方式:

1、屏幕密度、像素密度:

DisplayMetrics dm = new DisplayMetrics(); dm = getResources().getDisplayMetrics(); float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) int densityDPI = dm.densityDpi; // 像素密度(每寸像素:120/160/240/320)

2、分辨率:

通常,获取到的屏幕分辨率有两种需求,一种是屏幕的实际分辨率,另一种是受顶部或底部的虚拟导航栏占用产生的应用实际可用分辨率(相比实际分辨率减小了占用部分)。接下来代码示例下两种需求的获取方法:

一、获取屏幕实际分辨率

方法一:

WindowManager windowManager = getWindow().getWindowManager(); Point point = new Point(); windowManager.getDefaultDisplay().getRealSize(point); //屏幕实际宽度(像素个数) int width = point.x; //屏幕实际高度(像素个数) int height = point.y;

方法二:

WindowManager windowManager = getWindow().getWindowManager(); DisplayMetrics metrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getRealMetrics(metrics); //屏幕实际宽度(像素个数) int width = metrics.widthPixels; //屏幕实际高度(像素个数) int height = metrics.heightPixels;

二、获取屏幕可用分辨率

方法一:

WindowManager windowManager = getWindow().getWindowManager(); Display display = windowManager.getDefaultDisplay(); Point point = new Point(); display.getSize(point); //屏幕可用宽度(像素个数) int width = point.x; //屏幕可用高度(像素个数) int height = point.y;
  1. WindowManager windowManager = getWindow().getWindowManager();
  2. Display display = windowManager.getDefaultDisplay();
  3. Point point = new Point();
  4. display.getSize(point);
  5. //屏幕可用宽度(像素个数)
  6. int width = point.x;
  7. //屏幕可用高度(像素个数)
  8. int height = point.y;

方法二:

WindowManager windowManager = getWindow().getWindowManager(); Display display = windowManager.getDefaultDisplay(); //屏幕可用宽度(像素个数) int width = display.getWidth(); //屏幕可用高度(像素个数) int height = display.getHeight();

3、安卓会根据不同设备的像素密度值,加载对应的资源文件,不同像素密度对应的drawable文件夹如下所示:

a704face957b48fd9c22da263a9d49b5.png

 4、以mdpi为基线,各密度目录下的放大倍数(即缩放因子density)如下:

eb9ab3b97bbd4ab5bd460896e0c5977c.png

 

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/146989.html

(0)
上一篇 2025-04-10 20:15
下一篇 2025-04-10 20:20

相关推荐

发表回复

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

关注微信