Android 获取屏幕大小以及尺寸
在Android开发中,获取手机屏幕像素的方法有多种。在这里,我仅仅做一个小小的总结,将这些方法分为两类。一类是使用Activity类来获取,另一类便是使用上下文(Context)来获取。
/*** @ 获取当前手机屏幕的尺寸(单位:像素)*/
public static float getPingMuSize(Context mContext) { int densityDpi = mContext.getResources().getDisplayMetrics().densityDpi;float scaledDensity = mContext.getResources().getDisplayMetrics().scaledDensity;float density = mContext.getResources().getDisplayMetrics().density;float xdpi = mContext.getResources().getDisplayMetrics().xdpi;float ydpi = mContext.getResources().getDisplayMetrics().ydpi;int width = mContext.getResources().getDisplayMetrics().widthPixels;int height = mContext.getResources().getDisplayMetrics().heightPixels;// 这样可以计算屏幕的物理尺寸float width2 = (width / xdpi)*(width / xdpi);float height2 = (height / ydpi)*(width / xdpi);return (float) Math.sqrt(width2+height2);
}
有一些需求是获取屏幕的大小像素
// 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获取获取Display对象Display display = getActivity().getWindowManager().getDefaultDisplay();// 方法一(推荐使用)使用Point来保存屏幕宽、高两个数据Point outSize = new Point();// 通过Display对象获取屏幕宽、高数据并保存到Point对象中display.getSize(outSize);// 从Point对象中获取宽、高int x = outSize.x;int y = outSize.y;// 通过吐司显示屏幕宽、高数据522Toast.makeText(context, "手机像素为:X:" + x + " Y:" + y, Toast.LENGTH_LONG).show();
获取屏幕宽高及尺寸的方法
// 通过WindowManager获取DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);System.out.println("width-display :" + dm.widthPixels);System.out.println("heigth-display :" + dm.heightPixels);// 通过Resources获取DisplayMetrics dm2 = getResources().getDisplayMetrics();System.out.println("width-display :" + dm2.widthPixels);System.out.println("heigth-display :" + dm2.heightPixels);// 获取屏幕的默认分辨率Display display = getWindowManager().getDefaultDisplay();System.out.println("width-display :" + display.getWidth());System.out.println("heigth-display :" + display.getHeight());
private static double mInch = 0; /** * 获取屏幕尺寸 * @param context * @return */ public static double getScreenInch(Activity context) { if (mInch != 0.0d) { return mInch; } try { int realWidth = 0, realHeight = 0; Display display = context.getWindowManager().getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); if (android.os.Build.VERSION.SDK_INT >= 17) { Point size = new Point(); display.getRealSize(size); realWidth = size.x; realHeight = size.y; } else if (android.os.Build.VERSION.SDK_INT < 17 && android.os.Build.VERSION.SDK_INT >= 14) { Method mGetRawH = Display.class.getMethod("getRawHeight"); Method mGetRawW = Display.class.getMethod("getRawWidth"); realWidth = (Integer) mGetRawW.invoke(display); realHeight = (Integer) mGetRawH.invoke(display); } else { realWidth = metrics.widthPixels; realHeight = metrics.heightPixels; } mInch =formatDouble(Math.sqrt((realWidth/metrics.xdpi) * (realWidth /metrics.xdpi) + (realHeight/metrics.ydpi) * (realHeight / metrics.ydpi)),1); } catch (Exception e) { e.printStackTrace(); } return mInch; } /** * Double类型保留指定位数的小数,返回double类型(四舍五入) * newScale 为指定的位数 */ private static double formatDouble(double d,int newScale) { BigDecimal bd = new BigDecimal(d); return bd.setScale(newScale, BigDecimal.ROUND_HALF_UP).doubleValue(); }
另提一点,我们通常所指的屏幕上的int尺寸是像素单位,如需在java代码中使用dp设定宽高请参考以下两个方法。
//pixel = dip*density;
private int convertDpToPixel(int dp) { DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics(); return (int)(dp*displayMetrics.density);
} private int convertPixelToDp(int pixel) { DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics(); return (int)(pixel/displayMetrics.density);
}
以及动态设置View宽高的方法
//获取view 的布局参数
ViewGroup.LayoutParams layoutParams = mShareBackgroundSign.getLayoutParams();
//设置宽度,也可自定义
layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
//设置高度
layoutParams.height = layoutParams.height = convertDpToPixel(480);;
//重新给view设置布局参数
mShareBackgroundSign.setLayoutParams(layoutParams);
Android 获取屏幕大小以及尺寸相关推荐
- android 获取屏幕的物理尺寸
计算方法:获取到屏幕的分辨率:point.x和point.y,再取出屏幕的DPI(每英寸的像素数量),计算长和宽有多少英寸,即:point.x / dm.xdpi,point.y / dm.ydpi, ...
- android获取屏幕的物理尺寸
/** * @ 获取当前手机屏幕尺寸 */ public static float getPingMuSize(Context mContext) {int densityDpi = mContext ...
- 获取屏幕大小 android,Android获取屏幕大小
屏幕像素--包含虚拟键 华为P9,参数规格: 分辨率 FHD 1920×1080 获取屏幕像素 DisplayMetrics dm = new DisplayMetrics(); getWindowM ...
- android获取软件大小,android获取屏幕大小包括状态栏和软件导航栏的大小
自API 17(JELLY_BEAN_MR1)以来添加了软件导航,因此我们只需要在API 17及更高版本中包含导航栏的大小. 并注意,当您获得屏幕尺寸时,它基于当前方向. public void se ...
- android获取屏幕尺寸,像素
public void getScreen(){// 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获 取获取Disp ...
- wift - 使用UIScreen类获取屏幕大小尺寸
UISreen类代表了屏幕,开发中一般用来获取屏幕相关的属性,例如获取屏幕的大小. 1 2 3 4 5 6 7 //获取屏幕大小 var screenBounds:CGRect = UIScreen. ...
- Android自适应屏幕大小和布局
一:不同的layout Android手机屏幕大小不一,有480x320, 640x360, 800x480,854x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下 ...
- android获取键盘状态,Android获取屏幕方向及键盘状态的小例子
Android获取屏幕方向及键盘状态的小例子 复制代码 代码如下: Configuration config = getResources().getConfiguration(); if (conf ...
- android 获取屏幕的宽高
今天,讲讲android如何获取屏幕的宽高. // 通过WindowManager获取 DisplayMetrics dm = new DisplayMetrics(); getWindowManag ...
最新文章
- mysql递归查询所有上下节点_【转】MySQL之Spider存储引擎原理详解
- CSS基础(part7)--字体样式属性
- JAVA_WEB--jsp概述
- 点击User Profile Service Application 报错
- oracle 强制 断开,ORA-01092: ORACLE 例程终止。强行断开连接
- Android启示录——开始Android旅途
- 如何在springboot中使用PageHelper分页插件
- 华科计算机系研究生遗书,看完华中科大研究生遗书《狗血的研究生生涯》,泪目了!有话要说...
- windows游戏编程 (一) 了解WinMain函数,创建一个信息框
- win10内存占用率高达95%解决方法
- ps添加的阴影怎么去除_PS怎么把阴影去掉
- 19网站实现QQ登录功能
- 爬取链家所有房源信息(在售、成交、租房)
- POJ 1375 Intervals
- PNAS | 南农张瑞福组揭示了微生物肥料功能菌根际趋化的信号识别新机制
- 参数服务器——分布式机器学习的新杀器
- 数字图像处理第十章 图像分割
- 基于多目标灰狼算法的冷热电综合三联供微网低碳经济 MATLAB 仿真
- 【短视频运营】短视频剪辑 ① ( 下载软件 | 安装软件 | 简单使用 )
- 查看Java虚拟机的运行状态