Android各种版本正确获取屏幕分辨率的方法

由于,Android版本碎片化的问题,导致很多老接口在新版本中获取的数据都不准确,本人结合一些网上的资料,和实际运行的结果,写了一个兼容的API,能够保证获取到正确的屏幕分别率。


	public static Point getDisplaySize(Context context) {
		if (context == null) {
			return new Point(0, 0);
		}
		
		Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
		
		if (display != null) {
			DisplayMetrics dm = new DisplayMetrics();
			int version = Build.VERSION.SDK_INT;
			Point point = new Point();
			display.getMetrics(dm);
			point.x = dm.widthPixels;
			
			if (version < Build.VERSION_CODES.HONEYCOMB_MR2) {
				point.y = dm.heightPixels;
			} else if (version == Build.VERSION_CODES.HONEYCOMB_MR2) {
				try {
					Method mt = display.getClass().getMethod("getRealHeight");
					point.y = (Integer) mt.invoke(display);
				} catch (Exception e) {
					e.printStackTrace();
				}
			} else if (version > Build.VERSION_CODES.HONEYCOMB_MR2 &&
					   version < Build.VERSION_CODES.JELLY_BEAN_MR1) {
				
				try {
					Method mt = display.getClass().getMethod("getRawHeight");
					point.y = (Integer) mt.invoke(display);
				} catch (Exception e) {
					e.printStackTrace();
				}
				
			} else {
				display.getRealMetrics(dm);
				point.x = dm.widthPixels;
				point.y = dm.heightPixels;
			}
			
			
			return point;
		}
		
		return new Point(0, 0);
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值