Android屏幕:dip、dpi、density、px
1、Px (Pixel像素)
也称为图像元素,是作为图像构成的基本单元,单个像素的大小并不固定,跟随屏幕大小和像素数量的关系变化(屏幕越大,像素越低,单个像素越大,反之亦然)。所以在使用像素作为设计单位时,在不同的设备上可能会有缩放或拉伸的情况。
在Activity、Service或者View中可以获取到屏幕像素Px,Android都提供了getResources()方法虽然实现各不相同。
DisplayMetrics dm = getResources().getDisplayMetrics();
//获取屏幕宽度的像素数量
int screenWidth = dm.widthPixels;
//获取屏幕高度的像素数量
int screenHeight = dm.heightPixels;或者:
WindowManager wm = (WindowManager) (getSystemService(Context.WINDOW_SERVICE));
DisplayMetrics dm = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
int mScreenHeight = dm.heightPixels;
int mScreenWidth = dm.widthPixels;还可以通过传入Context的方式,获取到屏幕像素:
private void getPx(Context context) {
DisplayMetrics dm = context.getResources().getDisplayMetrics();
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
}X、Y 轴方向每英寸的像素:
DisplayMetrics dm = new DisplayMetrics();
float xdpi = dm.xdpi;
float ydpi = dm.ydpi;2、Resolution(分辨率)
是指屏幕的垂直和水平方向的像素数量,如果分辨率是 2267*1080 ,那就是垂直方向有 2267个像素,水平方向有 1080 个像素。
3、Dpi(像素密度)预设
是指屏幕上每英寸(1英寸 = 2.54 厘米)距离中有多少个像素点。如果屏幕为 320*240,屏幕长 2 英寸宽 1.5 英寸,Dpi = 320 / 2 = 240 / 1.5 = 160。查看《dp像素对照表》
获取手机屏幕densityDpi
DisplayMetrics dm = new DisplayMetrics();
float density = dm.densityDpi;4、Density(密度)比例
这个是指屏幕上每平方英寸(2.54 ^ 2 平方厘米)中含有的像素点数量。
获取手机Density,获取当前设备的基准比例:
DisplayMetrics dm = getResources().getDisplayMetrics();
//获取当前设备的基准比例
float density = dm.density;或者scaledDensity,获取系统dpi,随着 build.prop 文件中的代码而改变:
DisplayMetrics dm = getResources().getDisplayMetrics();
//获取系统dpi,随着 build.prop 文件中的代码而改变。
float scaledDensity= dm.scaledDensity;5、Dip / dp (设备独立像素)
也可以叫做dp,长度单位,同一个单位在不同的设备上有不同的显示效果,具体效果根据设备的密度有关,详细的公式请看下面 。
1. dpi(每英寸像素数)是有预设值的!120-160-240-320-480。对应不同的分辨率。
2. 基准比例 = dpi(每英寸像素数) / 160
3. px = dp x 基准比例
例IQOO:
Pix: width = 1080px height = 2267px
density = 3.0
Dip: width = 360.0dp height = 755.6667pd


评论 (1)
DisplayMetrics里面的一些属性: