Android项目开发中很多时候需要获取手机屏幕的宽高以及屏幕密度来进行动态布局,这里总结了三种获取屏幕大小和屏幕密度的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// 获取屏幕密度(方法1)
int
screenWidth = getWindowManager().getDefaultDisplay().getWidth();
// 屏幕宽(像素,如:480px)
int
screenHeight = getWindowManager().getDefaultDisplay().getHeight();
// 屏幕高(像素,如:800p)
Log.e(TAG +
" getDefaultDisplay"
,
"screenWidth="
+ screenWidth +
"; screenHeight="
+ screenHeight);
// 获取屏幕密度(方法2)
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)
float
xdpi = dm.xdpi;
float
ydpi = dm.ydpi;
Log.e(TAG +
" DisplayMetrics"
,
"xdpi="
+ xdpi +
"; ydpi="
+ ydpi);
Log.e(TAG +
" DisplayMetrics"
,
"density="
+ density +
"; densityDPI="
+ densityDPI);
screenWidth = dm.widthPixels;
// 屏幕宽(像素,如:480px)
screenHeight = dm.heightPixels;
// 屏幕高(像素,如:800px)
Log.e(TAG +
" DisplayMetrics"
,
"screenWidth="
+ screenWidth +
"; screenHeight="
+ screenHeight);
// 获取屏幕密度(方法3)
dm =
new
DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density;
// 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
densityDPI = dm.densityDpi;
// 屏幕密度(每寸像素:120/160/240/320)
xdpi = dm.xdpi;
ydpi = dm.ydpi;
Log.e(TAG +
" DisplayMetrics"
,
"xdpi="
+ xdpi +
"; ydpi="
+ ydpi);
Log.e(TAG +
" DisplayMetrics"
,
"density="
+ density +
"; densityDPI="
+ densityDPI);
int
screenWidthDip = dm.widthPixels;
// 屏幕宽(dip,如:320dip)
int
screenHeightDip = dm.heightPixels;
// 屏幕宽(dip,如:533dip)
Log.e(TAG +
" DisplayMetrics"
,
"screenWidthDip="
+ screenWidthDip +
"; screenHeightDip="
+ screenHeightDip);
screenWidth = (
int
)(dm.widthPixels * density +
0
.5f);
// 屏幕宽(px,如:480px)
screenHeight = (
int
)(dm.heightPixels * density +
0
.5f);
// 屏幕高(px,如:800px)
Log.e(TAG +
" DisplayMetrics"
,
"screenWidth="
+ screenWidth +
"; screenHeight="
+ screenHeight);
|