欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-09 13:24:15
前言 本文主要给大家介绍了关于android获取屏幕、状态栏及标题栏高度的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 在开始之前,先来看一...

前言

本文主要给大家介绍了关于android获取屏幕、状态栏及标题栏高度的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

在开始之前,先来看一张图:

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

  • 绿色区域:屏幕区域
  • 蓝色区域:状态栏区域
  • 红色区域:标题栏区域
  • 黄色区域:view绘制区域

1.android手机屏幕的高度

整个手机使用发亮,不使用变黑的部分,绿色区域

获取屏幕的高度方法一

  displaymetrics dm = new displaymetrics();
  getwindowmanager().getdefaultdisplay().getmetrics(dm);
  log.e("tag", "屏幕高:" + dm.heightpixels);

获取屏幕的高度方法二

displaymetrics displaymetrics = getresources().getdisplaymetrics();
  log.e("tag","screenheight"+displaymetrics.heightpixels);

2.android手机状态栏的高度(蓝色区域)

状态栏指的是,手机最上方显示,系统时间,电量等等区域。

获取状态栏高度方法一

int statusbarheight1 = -1; 
 //获取status_bar_height资源的id 
 int resourceid = getresources().getidentifier("status_bar_height", "dimen", "android"); 
 if (resourceid > 0) { 
  //根据资源id获取响应的尺寸值 
  statusbarheight1 = getresources().getdimensionpixelsize(resourceid); 
 } 
 log.e("tag", "方法1:" + statusbarheight1); 

获取状态栏高度方法二

int statusbarheight1 = -1; 
 //获取status_bar_height资源的id 
 int resourceid = getresources().getidentifier("status_bar_height", "dimen", "android"); 
 if (resourceid > 0) { 
  //根据资源id获取响应的尺寸值 
  statusbarheight1 = getresources().getdimensionpixelsize(resourceid); 
 } 
 log.e("tag", "方法1:" + statusbarheight1); 

获取状态栏高度方法二

 int statusbarheight2 = -1; 
  try { 
   class<?> clazz = class.forname("com.android.internal.r$dimen"); 
   object object = clazz.newinstance(); 
   int height = integer.parseint(clazz.getfield("status_bar_height") 
     .get(object).tostring()); 
   statusbarheight2 = getresources().getdimensionpixelsize(height); 
  } catch (exception e) { 
   e.printstacktrace(); 
  } 
  log.e("tag", "方法2:" + statusbarheight2); 

获取状态栏高度方法三:

状态栏高度 = 屏幕高度 - 应用区高度

//屏幕 
  displaymetrics dm = new displaymetrics(); 
  getwindowmanager().getdefaultdisplay().getmetrics(dm); 
  //应用区域 
  rect outrect1 = new rect(); 
  getwindow().getdecorview().getwindowvisibledisplayframe(outrect1); 
  int statusbar = dm.heightpixels - outrect1.height(); //状态栏高度=屏幕高度-应用区域高度 
  log.e("wangj", "方法3:" + statusbar); 

3.android手机应用区域(红+黄区域)

手机应用区域=标题栏+view绘制区域(setcontent()中设置的布局)

获取手机以应用区域

//应用区域
  rect outrect1 = new rect();
  getwindow().getdecorview().getwindowvisibledisplayframe(outrect1);
   log.e("tag", "应用区高" + outrect1.height());

4.android手机标题高度(红色区域)

int viewtop = getwindow().findviewbyid(window.id_android_content).gettop();
 log.e("tag", "标题栏:" + viewtop);

5.android手机绘制区域高度(黄色区域)

rect outrect2 = new rect();
  getwindow().findviewbyid(window.id_android_content).getdrawingrect(outrect2);
  log.e("tag", "view绘制区域高度:" + outrect2.height());

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。