可以通过DisplayMetrics类来获得手机屏幕的宽度、高度、密度等,代码如下:
DisplayMetrics metric = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5 / 2 / 2.5 / 3)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240 / 320 / 480)
dip和具体像素值的对应公式为:px = dp * (dpi / 160),如:
width * height:1440*2392,density:3.5,densityDpi:560
width * height:720*1280,density:2.0,densityDpi:320
width * height:1080*1920,density:3.0,densityDpi:480
所以根据产品给的像素值,可以计算出相应的dp值,例如产品以720*1280的屏幕来作图,标记的像素值为48px,则720p屏幕对应的dp值为48/2=24dp,而1080p对应的dp值为48/3=16