`

Android 获取屏幕高度,标题高度,状态栏高度详解

阅读更多
转自:http://www.iteye.com/topic/828830

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 获取屏幕、状态栏、标题栏宽高详解 在Android开发过程中,有时我们需要精确地了解设备屏幕的具体尺寸,包括状态栏和标题栏的高度等信息。这对于实现自适应布局、全屏显示等功能至关重要。本文将详细...

    Android如何获取屏幕、状态栏及标题栏的高度详解

    第二种方法是使用`getResources().getDisplayMetrics()`,同样可以得到`DisplayMetrics`对象,然后获取屏幕高度。 2. **Android手机状态栏的高度** 状态栏显示系统时间和通知,其高度可以通过以下几种方式获得: ...

    5种方法完美解决android软键盘挡住输入框方法详解

    - 当需要沉浸式状态栏且不需手动计算状态栏高度时,可以使用此属性。优点是简单易用,缺点是可能会重写其他View的padding,并且仅适用于Android 4.4及以上系统,全屏或沉浸式状态栏界面。 3. **方法三:自定义View...

    Android FiveChess五子棋源代码

    本文将深入探讨五子棋游戏的开发过程,重点关注如何实现全屏显示、隐藏标题栏、获取屏幕尺寸以及构建GameView等关键点。 一、隐藏标题栏与全屏显示 在Android应用中,标题栏通常是系统默认的UI元素,但为了提供更...

    详解Android沉浸式实现兼容解决办法

    此外,为了确保在不同设备和屏幕尺寸上的一致性,还需要考虑横屏模式、平板设备以及各种状态栏高度的变化。在某些情况下,可能还需要为特定的设备或定制系统进行额外的适配。 ApkUtil.getColor(this, colorResId) ...

    Android框架揭秘

    这些通知可以出现在状态栏中,当用户下拉时可以看到详情。通过这种方式,应用可以在不打断用户当前操作的情况下传达重要信息。 ### Java运行环境与核心类库 Android使用自定义的Java虚拟机(Dalvik虚拟机,以及...

    详解mpvue中小程序自定义导航组件开发指南

    开发者可以按照自己的需求设计导航栏的样式和布局,并将获取到的状态栏高度和标题栏高度应用到中。 在mpvue中,自定义导航栏组件的实现需要结合JavaScript逻辑和模板。在beforeMount生命周期钩子中,使用wx....

    世上最全面的android权限大全,还等神马?

    此权限允许应用扩展状态栏,通常用于显示额外的信息或操作选项,如音乐播放器的控制按钮。 #### 2. android.permission.FACTORY_TEST 这是一个特殊的权限,主要用于工厂测试模式下,对设备进行硬件检测和调试,非...

    Android 开发技巧

    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和...

    myChapter04_UI_Toast

    首先,我们可以获取屏幕的宽度和高度,然后计算出居中的坐标。接下来,我们需要自定义一个`ViewGroup`作为`Toast`的父视图,并设置其布局参数。最后,通过`setGravity()`方法指定Gravity为` Gravity.CENTER`,确保...

    最新熊猫视频乐享运营版影视e4a源码+全套类库+支持全面屏+安装教程.txt

    可以通过设置透明状态栏或预留相应高度来解决这一问题。 3. **安全区域适配**:为了避免摄像头等异形切割区域影响用户体验,在设计时需要预留出安全区域范围内的空间。这通常可以通过系统提供的API来获取并应用到...

Global site tag (gtag.js) - Google Analytics