`
jojol_zhou
  • 浏览: 342605 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

原:Android 获取屏幕高度、标题高度、状态栏高度详解

阅读更多

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
分享到:
评论
2 楼 IWSo 2013-12-09  
测试代码写什么方法里?
1 楼 avi9111 2012-10-24  
这样的好贴也没人顶啊?

相关推荐

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

    本文主要给大家介绍了关于Android获取屏幕、状态栏及标题栏高度的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 在开始之前,先来看一张图: 绿色区域:屏幕区域 蓝色区域:状态栏...

    详解Android中获取软键盘状态和软键盘高度

    详解Android中获取软键盘状态和软键盘高度 应用场景 在Android应用中有时会需要获取软键盘的状态(即软键盘是显示还是隐藏)和软键盘的高度。这里列举了一些可能的应用场景。 场景一 当软键盘显示时,按下返回键...

    android系列:Android应用开发详解.part2

    android系列:Android应用开发详解.part2 华嵌智能提供 www.embedded-cn.com http://embedded-cn.taobao.com

    android系列:Android应用开发详解.part1

    android系列:Android应用开发详解.part1 华嵌智能提供 www.embedded-cn.com http://embedded-cn.taobao.com

    Android热门应用开发详解

    资源名称:Android热门应用开发详解内容简介:以热门应用为主线,引入了当前热门的综合应用实例(微博、视频点播、二维码、游戏、电话、相册、GTalk、上网),涵盖了几乎所有Android应用开发的知识。全书共分5篇:...

    第三章:Android控件架构和自定义控件详解.md

    第三章:Android控件架构和自定义控件详解.md

    Android游戏开发技术实战详解

    资源名称:Android游戏开发技术实战详解 内容简介:《Android游戏开发技术实战详解》详细讲解了Android游戏开发技术的基本知识。《Android游戏开发技术实战详解》内容新颖、知识全面、讲解详细,《Android游戏开发...

    Android网络开发技术实战详解

    资源名称:Android网络开发技术实战详解内容简介:《Android移动开发技术丛书:Android网络开发技术实战详解》以Android网络应用程序的开发为主题,从底层原理开始讲起,结合真实的案例向读者详细介绍了Android的...

    Android项目开发详解

    资源名称:Android项目开发详解内容简介:《移动平台开发书库:Android项目开发详解》从实战的角度出发,介绍了基于Android环境的Mobile/Server应用系统开发,涉及移动客户端和服务器端的开发环节,以满足智能手机...

    Android项目开发详解,完整扫描版

    《移动平台开发书库:Android项目开发详解》从实战的角度出发,介绍了基于Android环境的Mobile/Server应用系统开发,涉及移动客户端和服务器端的开发环节,以满足智能手机在线应用的需求。全书以一个Android应用程序...

    eoeAndroid特刊第十期:android2.2特色详解 pdf

    eoeAndroid特刊第十期:android2.2特色详解 pdf,主要介绍最新的android2.2系统。全面介绍android2.2中的重点升级,JIT内核编译器等方面的内容,本期亮点是推出了三份最近的android行业研究报告,技术盛宴版块里有...

    Android多媒体应用开发实战详解:图像、音频、视频、2D和3D

    Android多媒体应用开发实战详解:图像、音频、视频、2D和3D

    Android 沉浸式状态栏与隐藏导航栏实例详解

    可以看到,有状态栏、ActionBar(ToolBar)、导航栏等,一般来说,APP实现沉浸式有三种需求:沉浸式状态栏,隐藏导航栏,APP全屏 沉浸式状态栏是指状态栏与ActionBar颜色相匹配, 隐藏导航栏不用多说,就是将导航栏隐藏...

    Android 屏幕分辨率详解

    Android 屏幕分辨率详解,对应的屏幕大小,像素

    android之SQLite数据库开发详解

    android之SQLite数据库开发详解: Android 开发中使用 SQLite 数据库 简介: SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用...

    Android数据库SQLite详解

    Android 数据库SQLite 详解,简单学好SQLite

    Android各种控件详解

    Android各种控件详解,

Global site tag (gtag.js) - Google Analytics