android获取分辨率
A. android 怎么获取当前使用的屏幕分辨率
请看下面截图,例子来自android学习手册,360手机助手中下载,排到第4个,里面有108个例子、源码还有文档
我们在网上看得最多的应该是以下这个方法:
WindowManagerwm=getWindowManager();
Displaydisplay=wm.getDefaultDisplay();
intscreenWidth=display.getWidth();
intscreenHeight=display.getHeight();
但studio提示它已经过时了,建议不再使用。
再去查看android源码,发现可使用getSize替代,代码如下:
publicstaticPointgetSize(Activityact){
Displaydisplay=act.getWindowManager().getDefaultDisplay();
Pointsize=newPoint();
display.getSize(size);//size.x就是宽度,size.y就是高度
returnsize;
}
一段时间后发现getWindowManager方法只能在activity中使用或者被activity实例调用,那像我们在Fragment或者Adapter中想获得屏幕分辨率,又有困难了(因为Fragment和Adapter一般只有Context),虽然可以通过强制类型转换来处理,可是毕竟劳民伤财需要时时记得去转换。所以又改了从Context获取系统服务,然后再去取分辨率,改后的代码如下:
publicstaticPointgetSize(Contextctx){
WindowManagerwm=(WindowManager)ctx.getSystemService(Context.WINDOW_SERVICE);
Displaydisplay=wm.getDefaultDisplay();
Pointsize=newPoint();
display.getSize(size);
returnsize;
}
再后来发现通过DisplayMetrics也能获取分辨率
publicstaticPointgetSizeNew(Contextctx){
WindowManagerwm=(WindowManager)ctx.getSystemService(Context.WINDOW_SERVICE);
DisplayMetricsdm=newDisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
Pointsize=newPoint();
size.x=dm.widthPixels*dm.density;
size.y=dm.heightPixels*dm.density;
returnsize;
}
不久便发现这个新方法时常量错了,结果确认widthPixels和heightPixels就是宽和高,无需再乘上density。因为widthPixels和heightPixels的单位都是像素,而density指的是像素密度,即一个单位内有几个像素,所以在我这边乘上density没有意义,只有除以density才有意义。dm.widthPixels/dm.density指的是宽度上有多少单位,dm.heightPixels/dm.density指的是高度上有多少单位。网上乘以density的做法,可能只是他们恰好遇上部分特殊机型罢了。最后的代码如下:
publicstaticPointgetSizeNew(Contextctx){
WindowManagerwm=(WindowManager)ctx.getSystemService(Context.WINDOW_SERVICE);
DisplayMetricsdm=newDisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
Pointsize=newPoint();
size.x=dm.widthPixels;
size.y=dm.heightPixels;
returnsize;
}
B. 如何通过adb命令获取android设备的屏幕分辨率
1、在命令行中输入“adb shell” 2、进入shell之后,再输入“cat /system/build.prop grep "proct"” 其实,设备信息,主要是存放在“/system/build.prop”文件,通过“cat”命令就可以查看了。
C. android获取屏幕的分辨率方法有几种
获取屏幕分辨率的方式如下:
一、在activity中
1、DisplayMetrics dm = getResources().getDisplayMetrics();
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
2、DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
二、在service中
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
D. 怎样获取Android手机屏幕的大小(分辨率、密度)
下面的代码即可获取屏幕的尺寸: 在一个Activity的onCreate方法中,编写以下代码: DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; // 宽度(PX) int height = metric.heightPixels; // 高度(PX) float density = metric.density; // 密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; // 密度DPI(120 / 160 / 240) 需要注意的是,在一个低密度的小屏手机上,仅靠上面的代码是不能获取正确的尺寸的。 所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens节点,如下: 这样当前的Android程序就支持了多种分辨率,那么就可以得到正确的物理尺寸了。