转自: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
分享到:
相关推荐
ndroid屏幕适配方案.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android解析json总结.
封装出一个通用的Adapter。这个demo 是根据这一边博文整的http://blog.csdn.net/lmj623565791/article/details/38902805 。下载源码东西好多,索性自己摘出来整了一个demo,可以在项目中引用的 在这里谢谢博主了,
下载文件与打开网页是一样的,打开网页是将内容显示出来,保存文件就是保存到文件中即可
ndroid记忆简表ndroid记忆简表
本文包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.0平板底部状态栏的方法,分享给大家供大家参考,具体内容如下 方法一 public class MainActivity extends Activity { @Override protected void onCreate...
Android之 RecyclerView,CardView 详解和相对应的上拉刷新下拉加载,博客地址:http://blog.csdn.net/dickyqie/article/details/54913289
ndroid Notification 用法源码.~~~~~~~~~~~~
ndroid平台的相机开发的研究与应用
Android ndroid 查询工具源代码.zip
android-kernel-2.6.36-20110517.tar.gz Android系统所需要的Linux内核源代码包
自3G 网络普及以来, 智能手机在移动互联网领域迅速 占领市场, 尤其是... 基于这种环境下, 本篇将针对 A ndroid 系统架构进行研究分析, 图寻求通用性的 A ndroid 应用开发思想, 希望给各基础开发者提供参考思路。
ndroid游戏开发之单点触摸与多点触摸的响应方式
Android应用源码 android example有130多个实例,NDROID实例代码库
【Android源码】异步加载图片
全面介绍 android智能手机研发的研发情况
ndroid异步处理一:使用Thread+Handler实现非UI线程更新UI界面
LockPattern ... aCache.put(Constant.GESTURE_PASSWORD, bytes); } Warning: 使用 ACache 类保存密码并不是无限期的. 具体期限可以查看 ACache 类. 使用了 SHA 算法保存手势密码 /** * Generate an SHA-
android sqlite数据库查看工具
该Demo实现了,Android环境下的工控机连接多块显示屏之后的分屏显示。