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


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

1, 当前显示的view中直接获取当前view高宽
2,通过Activity的getWindow().findViewById(windows.iD_ANDROID_CONTENT)获取系统当前显示的view根(是一个framelayout对象),android绘制会将要绘制的view放置在framelayout中绘制。


下面分别介绍获取屏幕的高宽度方法



获取屏幕高度、标题高度、状态栏高度详解" src="https://img.it610.com/image/product/30b5d8714e8d4358986c02348a56d7f4.jpg" alt="Android获取屏幕高度、标题高度、状态栏高度详解_第1张图片" width="361" height="495" style="border:1px solid black;">

虚线区域介绍:
获取屏幕高度、标题高度、状态栏高度详解" src="https://img.it610.com/image/product/3f35c0a3dfa24f1ba4a1394f956b2d1e.jpg" alt="Android获取屏幕高度、标题高度、状态栏高度详解_第2张图片" width="548" height="128" style="border:1px solid black;">


View获取屏幕参数值方法:


获取屏幕高度、标题高度、状态栏高度详解" src="https://img.it610.com/image/product/b8cc84868f6c4ee285d044ddd0211e9f.jpg" alt="Android获取屏幕高度、标题高度、状态栏高度详解_第3张图片" width="650" height="329" style="border:1px solid black;">



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

界面:

获取屏幕高度、标题高度、状态栏高度详解" src="https://img.it610.com/image/product/36c488a9626b4b899000182b713bad89.jpg" alt="Android获取屏幕高度、标题高度、状态栏高度详解_第4张图片" width="335" height="494" style="border:1px solid black;">


全屏显示输出:
====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

更多相关文章

  1. 关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi
  2. Android自动检测版本及自动升级
  3. 一种粗暴快速的Android全屏幕适配方案
  4. Android源码获取方法
  5. android自动屏幕旋转流程分析
  6. Android(安卓)屏幕适配
  7. Android系统信息获取 之四:系统语言信息获取
  8. Android屏幕适配全攻略(最权威的官方适配指导)
  9. View视图——TextView、EditText、Button、ImageView

随机推荐

  1. Android 浅谈MatrixCursor
  2. Android(安卓)ProgressBar 进度条
  3. Android app实现重启
  4. Android开发环境搭建及入门相关
  5. Android移动端音视频的快速开发教程(五)
  6. 【转】Android中Webview使用经验总结
  7. ToggleButton控件
  8. 64位系统使用Android虚拟机问题
  9. Android Studio 编译 freso问题
  10. Android(Java) GMT时间转换