首页 > 系统 > Android > 正文

获取Android手机屏幕宽高(虚拟按键)

2019-11-09 14:53:29
字体:
来源:转载
供稿:网友

获取屏幕的宽高,通常方法如下几种:

// 获取屏幕密度(一)

Display display = getActivity().getWindowManager().getDefaultDisplay();

int screenWidth = display.getWidth(); // 屏幕宽

int screenHeight = display.getHeight(); // 屏幕高// 获取屏幕密度(二)DisplayMetrics dm = getResources().getDisplayMetrics();int screenWidth = dm.widthPixels; // 屏幕宽int screenHeight = dm.heightPixels; // 屏幕高// 获取屏幕密度(三)DisplayMetrics dm = new DisplayMetrics();getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);int screenWidth = dm.widthPixels; // 屏幕宽int screenHeight = dm.heightPixels; // 屏幕高

但是这几个方法有点问题,正常的手机没毛病,但是android4.0之后有了虚拟按键,有虚拟按键的系统调用上面的方法尺寸会减去虚拟按键的尺寸。

解决方法如下:①API 17 之后提供了方法DisplayMetrics dm = new DisplayMetrics();  getWindowManager().getDefaultDisplay().getRealMetrics(dm);int width = dm.widthPixels;  // 屏幕宽int height = dm.heightPixels;  // 屏幕高

②在API 17之前通过反射获取

Display display = getWindowManager().getDefaultDisplay();DisplayMetrics dm = new DisplayMetrics();@SupPRessWarnings("rawtypes")Class c;try {    c = Class.forName("android.view.Display");    @SuppressWarnings("unchecked")    Method method = c.getMethod("getRealMetrics",DisplayMetrics.class);    method.invoke(display, dm);}catch(Exception e){    e.printStackTrace();}int width = dm.widthPixels;int height = dm.heightPixels;


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表