android 屏幕高度、状态栏高度、titlebar高度详解
来源:互联网 发布:听歌软件排行 编辑:程序博客网 时间:2024/05/13 19:26
一、屏幕高度、状态栏高度、titlebar高度区分
二、获取整个屏幕的高度
DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); Log.e("Allence", "屏幕高:" + dm.heightPixels);
三、获取状态栏的高度
1.通过系统尺寸资源获取
状态栏高度定义在Android系统尺寸资源中status_bar_height,但这并不是公开可直接使用的,例如像通常使用系统资源那样android.R.dimen.status_bar_height。但是系统给我们提供了一个Resource类,通过这个类可以获取资源文件,借此可以获取到status_bar_height:
/** * 获取状态栏高度——方法1 * */ int statusBarHeight1 = -1; //获取status_bar_height资源的ID int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { //根据资源ID获取响应的尺寸值 statusBarHeight1 = getResources().getDimensionPixelSize(resourceId); } Log.e("Allence", "状态栏-方法1:" + statusBarHeight1);2.通过R类的反射
大家都知道Android的所有资源都会有惟一标识在R类中作为引用。我们也可以通过反射获取R类的实例域,然后找status_bar_height:
/** * 获取状态栏高度——方法2 * */ int statusBarHeight2 = -1; try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); int height = Integer.parseInt(clazz.getField("status_bar_height") .get(object).toString()); statusBarHeight2 = getResources().getDimensionPixelSize(height); } catch (Exception e) { e.printStackTrace(); } Log.e("Allence", "状态栏-方法2:" + statusBarHeight2);
三、标题栏(titlebar)高度的测量1.如果设置了requestWindowFeature(Window.FEATURE_NO_TITLE)标题栏高度为0
2.获取标题栏高度的方法:
//屏幕 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); Log.e("WangJ", "屏幕高:" + dm.heightPixels); //应用区域 Rect outRect1 = new Rect(); getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect1); //View绘制区域 Rect outRect2 = new Rect(); getWindow().findViewById(Window.ID_ANDROID_CONTENT).getDrawingRect(outRect2); int viewTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); //要用这种方法 //获取status_bar_height资源的ID int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { //根据资源ID获取响应的尺寸值 statusBarHeight1 = getResources().getDimensionPixelSize(resourceId); } titleHeight1 = viewTop - outRect1.top; System.out.println(titleHeight1+"***************titleHeight1");
注意:在oncreat()方法中得到的titlebar的高度为0
阅读全文
0 0
- android 屏幕高度、状态栏高度、titlebar高度详解
- android屏幕高度、状态栏高度、titlebar高度详解
- Android 获取屏幕高度、标题高度、状态栏高度详解
- Android 获取屏幕高度、标题高度、状态栏高度详解
- Android 获取屏幕高度、标题高度、状态栏高度详解
- Android 获取屏幕高度、标题高度、状态栏高度详解
- Android 获取屏幕高度、标题高度、状态栏高度详解
- Android获取屏幕高度、标题高度、状态栏高度详解
- Android获取屏幕高度、标题高度、状态栏高度详解
- Android 获取屏幕高度、标题高度、状态栏高度详解
- Android 获取屏幕高度、标题高度、状态栏高度详解
- Android 获取屏幕高度、标题高度、状态栏高度详解
- Android获取屏幕高度、标题高度、状态栏高度详解
- Android获取屏幕高度、标题高度、状态栏高度详解
- Android 获取屏幕高度、标题高度、状态栏高度详解
- Android 获取屏幕高度、标题高度、状态栏高度详解
- Android 状态栏、titlebar的高度计算
- android 获取屏幕高度,宽度,状态栏高度
- 简单表单框架
- 14.(2)Struts2_值栈
- 数组、对象数组转化成JSON对象的情况
- 解决锁死数据库的sql
- angularjs添加排序查询
- android 屏幕高度、状态栏高度、titlebar高度详解
- tensorflow中变量的保存和加载
- 113. Path Sum II
- 超链接向后台传值含有日期
- 表格 -隔行换色
- bzoj2330: [SCOI2011]糖果
- SparkCore 知识点 (一)
- shell 随记
- RESTful API