Android如何获取屏幕、状态栏及标题栏的高度详解
程序员文章站
2023-12-09 13:24:15
前言
本文主要给大家介绍了关于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());
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。