android中常用的尺寸单位及其关系

1 尺寸单位定义

  • px(pixel,像素):每个px对应屏幕上的一个点
  • dip或dp(device independent pixels,设备独立像素):一种基于屏幕密度的抽象单位。在每英寸160个点的显示器上,1dip = 1px。但随着屏幕密度的改变,dip与px的换算会发生改变,dp是与实际尺寸匹配的单位
  • sp(scaled pixels,比例像素):主要处理字体的大小,可根据用户的字体大小首选项 进行缩放
  • in(inch,英寸):标准长度单位,1inch = 25.4mm
  • pt(point,磅):标准长度单位,1inch = 72pt

2 PPI(Pixel Per Inch,像素密度):每英寸上的像素

  • PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数
  • 一般情况下的普通屏幕的PPI:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。

 3 屏幕级别

屏幕级别
屏幕密度
比率(相对)
物理大小(英寸)
dp
像素大小
通常的分辨率
ldpi
120
3
0.75
1
120/0.75=160
120
 
mdpi
160
4
1
1
160/1=160
160
320*480
hdpi
240
6
1.5
1
240/1.5=160
240
480*800
xhdpi
320
8
2
1
320/2 = 160
320
720*1280
xxhdpi
480
12
3
1
483/3 = 160
480
1080*1800

4 android屏幕匹配

  • android对应存在drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi,drawable-xxhdpi等文件夹
  • 文件夹所对应的屏幕密度/像素密度比low:medium:high:extra-high:extra-extra-high=3:4:6:8:12
  • 尺寸单位dp/sp与屏幕密度对应的单位:1dp*PPI/160 = 实际像素数       sp*ppi/160 = 实际像素 (dp表示图片尺寸,sp表示字体尺寸)
  • 按照图片所在文件夹,其显示实际尺寸与该屏幕密度对应,如果错位显示,其实际尺寸不变,但程序中尺寸数值应该与屏幕密度比例关系对应(也就是说,如果我的屏幕是hdpi的,结果我的图片是放到了xhdpi下,那系统会把这张图片进行缩小显示)即:3:4:6:8:12 = a:x:x:x:x

5 获取设备分辨率

        DisplayMetrics dm = new DisplayMetrics();     
        getWindowManager().getDefaultDisplay().getMetrics(dm);     
         //获得手机的宽度和高度像素单位为px     
        Helper.setWidthPixelsHeightPixels(dm.widthPixels, dm.heightPixels); 
原文地址:https://www.cnblogs.com/penghuster/p/4883963.html