public void getScreen(){
// 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获 取获取Display对象
Display display = getWindowManager().getDefaultDisplay();
// 方法一(推荐使用)使用Point来保存屏幕宽、高两个数据
Point outSize = new Point();
// 通过Display对象获取屏幕宽、高数据并保存到Point对象中
display.getSize(outSize);
// 从Point对象中获取宽、高
int x = outSize.x;
int y = outSize.y;
// 通过吐司显示屏幕宽、高数据
Toast.makeText(this, "手机像素为:x:" + x + ",y:" + y+",screen:"+getPhysicsScreenSize(UDPConn.this), Toast.LENGTH_LONG).show();
}
/**
* 得到屏幕的物理尺寸,由于该尺寸是在出厂时,厂商写死的,所以仅供参考
* 计算方法:获取到屏幕的分辨率:point.x和point.y,再取出屏幕的DPI(每英寸的像素数量),
* 计算长和宽有多少英寸,即:point.x / dm.xdpi,point.y / dm.ydpi,屏幕的长和宽算出来了,
* 再用勾股定理,计算出斜角边的长度,即屏幕尺寸。
*
* @param context
* @return
*/
public static double getPhysicsScreenSize(Context context) {
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point point = new Point();
manager.getDefaultDisplay().getRealSize(point);
DisplayMetrics dm = context.getResources().getDisplayMetrics();
int densityDpi = dm.densityDpi;//得到屏幕的密度值,但是该密度值只能作为参考,因为他是固定的几个密度值。
double x = Math.pow(point.x / dm.xdpi, 2);//dm.xdpi是屏幕x方向的真实密度值,比上面的densityDpi真实。
double y = Math.pow(point.y / dm.ydpi, 2);//dm.xdpi是屏幕y方向的真实密度值,比上面的densityDpi真实。
double screenInches = Math.sqrt(x + y);
return screenInches;
}
/**
* 获取屏幕像素,尺寸,dpi相关信息
* @param activity 上下文
* @return 屏幕信息
*/
public static String getScreenInfo(Activity activity){
DisplayMetrics displayMetrics = new DisplayMetrics();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
//4.2开始有虚拟导航栏,增加了该方法才能准确获取屏幕高度
activity.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics);
}else{
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
//displayMetrics = activity.getResources().getDisplayMetrics();//或者该方法也行
}
Point point = new Point();
activity.getWindowManager().getDefaultDisplay().getRealSize(point);
double x = Math.pow(point.x / displayMetrics.xdpi, 2);//dm.xdpi是屏幕x方向的真实密度值,比上面的densityDpi真实。
double y = Math.pow(point.y / displayMetrics.ydpi, 2);//dm.xdpi是屏幕y方向的真实密度值,比上面的densityDpi真实。
double screenInches = Math.sqrt(x + y);
return "screenSize="+screenInches
+ ",densityDpi="+displayMetrics.densityDpi
+ ",width="+displayMetrics.widthPixels
+",height="+displayMetrics.heightPixels;
}
android获取屏幕尺寸,像素
最新推荐文章于 2024-08-12 22:25:42 发布