Android 如何正确的获取屏幕高度
来源:互联网 发布:wav音频分割软件 编辑:程序博客网 时间:2024/05/16 01:43
一、问题描述
目前很多手机主流手机将Back键、Home键、Menu键设计成虚拟功能键。当我们获取屏幕高度时就会遇到问题,获取到的并不是实际的高度,从而不能正确的布局。
下边通过俩种方式获取:
1.通过判断(Build.VERSION.SDK_INT >= 17)使用方法getRealMetrics()获取。
2.通过反射调用getRealMetrics获取。
二、正确方法
// 方法一public void initScreenInfo(Context context) { try { DisplayMetrics dm = new DisplayMetrics(); // 测试设备 1440*2960 --- SDK VERSION 24 --- 包含虚拟功能键 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRealMetrics(dm); // 包含虚拟功能键高度 dm.heightPixels = 2960 } else { ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(dm); // 不包含虚拟功能键高度 dm.heightPixels = 2768 } int WIDTH = Math.min(dm.widthPixels, dm.heightPixels); int HEIGHT = Math.max(dm.widthPixels, dm.heightPixels); float DENSITY = dm.density; int DENSITY_DPI = dm.densityDpi; float SCALED_DENSITY = dm.scaledDensity; tv.setText(" WIDTH:" + WIDTH + " HEIGHT:" + HEIGHT + " DENSITY:" + DENSITY + " DENSITY_DPI:" + DENSITY_DPI + " SCALED_DENSITY:" + SCALED_DENSITY); } catch (Exception e) { e.printStackTrace(); }}// 方法二private void initScreenInfo() { Display display = getWindowManager().getDefaultDisplay(); DisplayMetrics dm = new DisplayMetrics(); Class c; try { c = Class.forName("android.view.Display"); Method method = c.getMethod("getRealMetrics", DisplayMetrics.class); method.invoke(display, dm); int HEIGHT = dm.heightPixels; int WIDTH = dm.widthPixels; tv2.setText(" WIDTH:" + WIDTH + " HEIGHT:" + HEIGHT); } catch (Exception e) { e.printStackTrace(); }}
阅读全文
1 0
- Android 如何正确的获取屏幕高度
- 如何正确获取Android控件的高度
- Android 如何优雅的获取屏幕的高度和宽度
- Android中如何获取屏幕的高度和宽度
- android如何获取屏幕宽度和高度
- Android获取屏幕高度
- android获取屏幕高度
- Android获取屏幕高度
- Android获取屏幕高度
- android 获取屏幕高度 Actionbar高度 状态栏的高度获取 Indecator高度的获取
- android获取屏幕的高度和宽度
- Android 里面获取屏幕的高度,宽度
- Android 获取屏幕的宽度和高度
- android: 获取屏幕的宽度和高度
- Android获取屏幕的高度和宽度
- android获取屏幕的高度和宽度
- android获取屏幕的高度和宽度
- Android获取屏幕,状态栏,标题栏的高度
- Spring Boot(三)--- Mybatis
- TFRecord数据集
- java类加载器以及双亲委派机制
- memset按字节对内存块进行初始化
- Lombok介绍与使用
- Android 如何正确的获取屏幕高度
- Android自定义ViewGroup ,动态添加数目不确定的ImageView
- 机器学习岗面试总结
- 讲给Android程序员看的前端教程(09)——HTML5标签(8)
- Mysql之基本增删改查
- 基本的布局文件
- Mysql数据表查询
- 浅谈equals与==
- 深入理解java虚拟机—类文件结构