Android获取屏幕高度的方法主要由view提供

通过View提供的方法获取高度方式有两种:

1, 当前显示的view中直接获取当前view高宽
2,通过Activity的getWindow().findViewById(windows.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(windows.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

Android获取屏幕高度、标题高度、状态栏高度详解的更多相关文章

  1. Android游戏开发之旅 View类详解

    Android游戏开发之旅 View类详解 自定义 View的常用方法: onFinishInflate() 当View中所有的子控件 均被映射成xml后触发 onMeasure(int, int) ...

  2. Android编程之LayoutInflater的inflate方法详解

    LayoutInflater的inflate方法,在fragment的onCreateView方法中经常用到: public View onCreateView(LayoutInflater infl ...

  3. 分享我开发的网络电话Android手机APP正式版,图文详解及下载

    分享我开发的网络电话Android手机APP正式版,图文详解及下载 分享我开发的网络电话Android手机APP正式版 实时语音通讯,可广域网实时通讯,音质清晰流畅! 安装之后的运行效果: 第一次安装 ...

  4. 【转】【Android UI设计与开发】之详解ActionBar的使用,androidactionbar

    原文网址:http://www.bkjia.com/Androidjc/895966.html [Android UI设计与开发]之详解ActionBar的使用,androidactionbar 详解 ...

  5. Android消息传递之EventBus 3.0使用详解

    前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习 ...

  6. Android Studio系列教程五--Gradle命令详解与导入第三方包

    Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...

  7. Android 颜色渲染(九) PorterDuff及Xfermode详解

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色渲染(九)  PorterDuff及Xfermode详解 之前已经讲过了除ComposeShader之外Shader的全部子类 ...

  8. android emulator启动的两种方法详解

    android emulator启动的两种方法详解    转https://blog.csdn.net/TTS_Kevin/article/details/7452237 对于android学习者,模 ...

  9. Android ADB命令教程二——ADB命令详解

    Android ADB命令教程二——ADB命令详解 转载▼ 原文链接:http://www.tbk.ren/article/249.html       我们使用 adb -h 来看看,adb命令里面 ...

随机推荐

  1. 用TTTAttributedLabel创建变化丰富的UILabel

    转自:http://blog.csdn.net/prevention/article/details/9998575 1. 不同颜色的字段混合在一个Label里怎么实现? 看TTTAttributed ...

  2. TensorFlow人脸识别

    TensorFlow框架做实时人脸识别小项目(一)https://blog.csdn.net/Goerge_L/article/details/80208297 TensorFlow框架做实时人脸识别 ...

  3. cpu降频问题

    cpu做为能耗很高的硬件,最近几年厂商在节能方面做了很多处理,在服务器运行时,基于负载情况可调节成节能模式,节省电能,副作用是cpu的频率会降低,导致应用程序性能降低. 有第三方统计,服务器规模达到万 ...

  4. Oracle PLSQL Demo - 12.定义包体[Define PACKAGE BODY]

    CREATE OR REPLACE PACKAGE BODY temp_package_demo is FUNCTION f_demo(userid NUMBER) RETURN BOOLEAN IS ...

  5. eclipse 项目中的java文件没有在WEB-INF目录下的classes中 生成相对应的编译后的类

    1.首先确定project->Build Automatically是否勾选上: 2.执行完第一步之后测试一下看是否能编译,如果还是不能,则进行手动编译:  3,进入clean对话框,选择Cle ...

  6. Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件

    转自:http://wangli-5665.diandian.com/post/2011-08-18/4039228 这么多年来,数据压缩对我们来说是非常有用的.无论是在邮件中发送的图片用的zip文件 ...

  7. css3和jquery实现的可折叠导航菜单(适合手机网页)

    之前为大家介绍了好几款css3导航,今天为大家在介绍的是一款适合放在手机网页的导航菜单.点击列表图标以下拉式的形式显示菜单,单击关闭,动画关闭.效果相当不错.效果图如下: 在线预览   源码下载 这个 ...

  8. Lo4j(一)初识

    最近开始在研究log4j,可能因为是想要自己去搭建框架那. 废话不多说,先上一个例子好了. 第一步:当然是引入对象的jar包了 地址:http://www.apache.org/dyn/closer. ...

  9. C++14尝鲜:Generic Lambdas(泛型lambda)

    所谓泛型lambda.就是在形參声明中使用auto类型指示说明符的lambda. 比方 auto lambda = [](auto x, auto y) {return x + y;}; 依据C++1 ...

  10. datagridview添加行

    添加明细按钮 DataRow dRow = DtDetail.NewRow(); dRow["PriceId"] = ConvertUtil.GetIntFromObject(dr ...