A
ndroid 获取屏幕高度、标题高度、状态栏高度详解
Jojol_Zhou ,2010/11/29
Android获取屏幕高度的方法主要由view提供
通过View提供的方法获取高度方式有两种:
1, 当前显示的view中直接获取当前view高宽
2, 通过Activity的getWindow().findViewById(Window.ID_ANDROID_CONTENT)获取系统当前显示的view根(是一个framelayout对象),android绘制会将要绘制的view放置在framelayout中绘制。
下面分别介绍获取屏幕的高宽度方法
虚线区域介绍:
View获取屏幕参数值方法:
Display对象获取屏幕高宽
:
获取display对象 Activity中getWindowManager().getDefaultDisplay()
getWidth() 返回显示界面宽度即屏幕宽度
getHeight() 返回显示界面高度即屏幕高度
由display对象设置DisplayMetrics高宽值,通过DisplayMetrics对象获取屏幕高宽,有点多此一举
:
getWidth() 返回显示界面宽度即屏幕宽度
getHeight() 返回显示界面高度即屏幕高度
常用一些值计算:
屏幕高宽
Canvas对象 、display对象和DisplayMetrics可获取屏幕的高宽
状态栏高度
View的getWindowVisibleDisplayFrame(Rect outRect)附值outRect后,outRect.top()即是状态栏高度
标题高度
View的getWindowVisibleDisplayFrame(Rect outRect1)附值outRect后,outRect.height()-view.getheight()即是标题高度。
绘制区域高宽
方法诸多 随便用。
测试:
测试代码
scrollTo(10, 10);
super.draw(canvas);
Display d = bReader.getWindowManager().getDefaultDisplay();
Log.e("====DisPlay size==", "Height--"+d.getHeight()+" Width--"+d.getWidth());
DisplayMetrics dm = new DisplayMetrics();
d.getMetrics(dm);
Log.e("====DisPlayMetrics size==", "Height--"+d.getHeight()+" Width--"+d.getWidth());
Log.e("====View size==", "Height--"+getHeight()+" Width--"+getWidth()+" Top--"+getTop()+" Left--"+getLeft());
View v = bReader.getWindow().findViewById(Window.ID_ANDROID_CONTENT);
Log.e("====CONTENTView size==", "Height--"+v.getHeight()+" Width--"+v.getWidth()+" Top--"+v.getTop()+" Left--"+v.getLeft());
Log.e("======canvas size==", "height--"+canvas.getHeight()+" width--"+canvas.getWidth());
Rect rect = new Rect();
this.getDrawingRect(rect);
Log.e("====view Drawing Rect==", "height--"+rect.height()+" width--"+rect.width()+" Top--"+rect.top+" Left--"+rect.left+" scrollx--"+getScrollX()+" scrollY--"+getScrollY());
this.getWindowVisibleDisplayFrame(rect);
Log.e("====view WindowVisible rect==", "height--"+rect.height()+" width--"+rect.width()+" Top--"+rect.top+" Left--"+rect.left);
测试结果输出:
====DisPlay size==(3032): Height--480 Width--320
====DisPlayMetrics size==(3032): Height--480 Width--320
====View size==(3032): Height--430 Width--320 Top--0 Left--0
====CONTENTView size==(3032): Height--430 Width--320 Top--50 Left--0
======canvas size==(3032): height--480 width--320
====view Drawing Rect==(3032): height--430 width--320 Top--10 Left--10 scrollx--10 scrollY--10
====view WindowVisible rect==(3032): height--455 width--320 Top--25 Left--0
界面:
全屏显示输出:
====DisPlay size==(3235): Height--480 Width--320
====DisPlayMetrics size==(3235): Height--480 Width--320
====View size==(3235): Height--480 Width--320 Top--0 Left--0
====CONTENTView size==(3235): Height--480 Width--320 Top--0 Left--0
======canvas size==(3235): height--480 width--320
====view Drawing Rect==(3235): height--480 width--320 Top--10 Left--10 scrollx--10 scrollY--10
====view WindowVisible rect==(3235): height--455 width--320 Top--25 Left--0
- 大小: 57.7 KB
- 大小: 15.3 KB
- 大小: 81 KB
- 大小: 55.5 KB
分享到:
相关推荐
### Android 获取屏幕、状态栏、标题栏宽高详解 在Android开发过程中,有时我们需要精确地了解设备屏幕的具体尺寸,包括状态栏和标题栏的高度等信息。这对于实现自适应布局、全屏显示等功能至关重要。本文将详细...
第二种方法是使用`getResources().getDisplayMetrics()`,同样可以得到`DisplayMetrics`对象,然后获取屏幕高度。 2. **Android手机状态栏的高度** 状态栏显示系统时间和通知,其高度可以通过以下几种方式获得: ...
- 当需要沉浸式状态栏且不需手动计算状态栏高度时,可以使用此属性。优点是简单易用,缺点是可能会重写其他View的padding,并且仅适用于Android 4.4及以上系统,全屏或沉浸式状态栏界面。 3. **方法三:自定义View...
本文将深入探讨五子棋游戏的开发过程,重点关注如何实现全屏显示、隐藏标题栏、获取屏幕尺寸以及构建GameView等关键点。 一、隐藏标题栏与全屏显示 在Android应用中,标题栏通常是系统默认的UI元素,但为了提供更...
此外,为了确保在不同设备和屏幕尺寸上的一致性,还需要考虑横屏模式、平板设备以及各种状态栏高度的变化。在某些情况下,可能还需要为特定的设备或定制系统进行额外的适配。 ApkUtil.getColor(this, colorResId) ...
这些通知可以出现在状态栏中,当用户下拉时可以看到详情。通过这种方式,应用可以在不打断用户当前操作的情况下传达重要信息。 ### Java运行环境与核心类库 Android使用自定义的Java虚拟机(Dalvik虚拟机,以及...
开发者可以按照自己的需求设计导航栏的样式和布局,并将获取到的状态栏高度和标题栏高度应用到中。 在mpvue中,自定义导航栏组件的实现需要结合JavaScript逻辑和模板。在beforeMount生命周期钩子中,使用wx....
4.4.4、获取标题栏和状态栏高度 57 4.4.5、标题栏显示简单的进度框 57 4.5、MENU 58 4.5.1、简单的代码 58 4.5.2、menu实现的两种方法 58 4.5.3、自定义MENU背景 62 4.5.4、触发menu 64 4.5.5、Context Menu和...
此权限允许应用扩展状态栏,通常用于显示额外的信息或操作选项,如音乐播放器的控制按钮。 #### 2. android.permission.FACTORY_TEST 这是一个特殊的权限,主要用于工厂测试模式下,对设备进行硬件检测和调试,非...
首先,我们可以获取屏幕的宽度和高度,然后计算出居中的坐标。接下来,我们需要自定义一个`ViewGroup`作为`Toast`的父视图,并设置其布局参数。最后,通过`setGravity()`方法指定Gravity为` Gravity.CENTER`,确保...
可以通过设置透明状态栏或预留相应高度来解决这一问题。 3. **安全区域适配**:为了避免摄像头等异形切割区域影响用户体验,在设计时需要预留出安全区域范围内的空间。这通常可以通过系统提供的API来获取并应用到...