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());

总结

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

(0)

相关推荐

  • Android编程实现获取标题栏、状态栏的高度、屏幕大小及模拟Home键的方法

    本文实例讲述了Android编程实现获取标题栏.状态栏的高度.屏幕大小及模拟Home键的方法.分享给大家供大家参考,具体如下: 1. 获取标题栏高度: /** * 获取标题栏的高度 * * @param activity * @return */ public int getTitleHeight(Activity activity) { Rect rect = new Rect(); Window window = activity.getWindow(); window.getDecorVi

  • Android 取得状态栏、任务栏高度的小例子

    复制代码 代码如下: package com.aslibra.test; import android.app.Activity; import android.graphics.Rect; import android.os.Bundle; import android.util.Log; import android.view.Window; import android.widget.ImageView; public class test extends Activity {   Ima

  • Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例

    本文实例讲述了Android编程实现获取系统内存.CPU使用率及状态栏高度的方法.分享给大家供大家参考,具体如下: DeviceInfoManage类用于获取系统的内存,CPU的信息,以及状态栏的高度 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReade

  • Android 获取屏幕高度,标题高度,状态栏高度(实例代码)

    通过View提供的方法获取高度方式有两种: 1, 当前显示的view中直接获取当前view高宽2, 通过Activity的getWindow().findViewById(Window.ID_ANDROID_CONTENT)获取系统当前显示的 view根(是一个framelayout对象),android绘制会将要绘制的view放置在framelayout中绘制. Display对象获取屏幕高宽 : 获取display对象 Activity中getWindowManager().getDefau

  • Android中获取状态栏高度的两种方法分享

    前言 最近在做一个关于FAB的功能的时候需要获取状态栏的高度,在网上查了很多种方法,下面是选出的比较合理的两个方法.主要参考stackoverflow的这篇问答:http://stackoverflow.com/questions/3407256/height-of-status-bar-in-android 方法一: private double getStatusBarHeight(Context context){ double statusBarHeight = Math.ceil(25

  • Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法

    本文实例讲述了Android获取手机屏幕宽高.状态栏高度以及字符串宽高信息的方法.分享给大家供大家参考.具体如下: 首先定义TextView对象commentText 获取文字的宽高: TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); textPaint.setTextSize(commentText.getTextSize()); textPaint.setColor(Color.WHITE); FontMetrics fo

  • Android有效获取状态栏(StatusBar)高度的方法

    本文实例讲述了Android有效获取状态栏(StatusBar)高度的方法.分享给大家供大家参考,具体如下: 碰到了需要获取状态栏高度的问题. 就像android后期版本,无法直接退出一样.找了一些方法来获取状态栏高度,结果都是为0. 还好,牛人是很多的,当时,找到一段代码,能够有效的获取状态栏的高度.特此记录,备忘,以及供大家参考使用: Class<?> c = null; Object obj = null; Field field = null; int x = 0, sbar = 0;

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

    前言 本文主要给大家介绍了关于Android获取屏幕.状态栏及标题栏高度的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 在开始之前,先来看一张图: 绿色区域:屏幕区域 蓝色区域:状态栏区域 红色区域:标题栏区域 黄色区域:view绘制区域 1.Android手机屏幕的高度 整个手机使用发亮,不使用变黑的部分,绿色区域 获取屏幕的高度方法一 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getD

  • Android 录制手机屏幕视频生成GIF图片实例详解

    Android 录制手机屏幕视频生成GIF图片实例详解 无图无真相,在我们日常的网络交流中往往需要给交流对象提供直观的显示,而视频是一个很好的方式,但是视频需要播放器,还需要当做文件进行对点传输,并不是很方便.想CSDN这样的博客网站也并不支持在博客里放视频这种方式,除非你贴外链,太烦了不是么.最好是如下图这种gif方式,直观 今天来教大家一个易操作的录制方式.当然,一般只适合Android开发者.因为你需要有AndroidStudio 工具 AndroidStudio(完成手机屏幕的视频录制,

  • Android编程实现禁止状态栏下拉的方法详解

    本文实例讲述了Android编程实现禁止状态栏下拉的方法.分享给大家供大家参考,具体如下: 简介 项目需求APP全屏时,要禁止状态栏的下拉,这个应该是一个普遍的需求了吧,但Android系统没有直接提供给普通APP直接调用的接口.那么我们只能自己想办法增加接口去实现该功能了. 具体实现方法 1. 修改SystemUI 路径:==/frameworks/base/packages/SystemUI//src/com/android/systemui/statusbar/phone/PhoneSta

  • Android如何获取子View的位置及坐标详解

    一.View 1.1.View 概述 视图 (View) 是一个容器,专门负责布局.表现为显示在屏幕上的各种视图,如 TextView.LinearLayout 等. 1.2.View 分类 View 主要分为两类,具体如下表格所示: 类别 示例 特点 单一视图 即一个 View,如 TextView.EditText 不包含子View 视图组 即多个 View 组成的 ViewGroup,如 RelativeLayout 包含子View 1.3.View 类简介 View 类是 Android

  • Android自动获取输入短信验证码库AutoVerifyCode详解

    一.简介 Android的短信验证码自动输入库,内嵌自动申请权限,兼容性高,支持多项配置. 短信验证码长度 验证码类型(大写字母.小写字母.大小写字母.数字.数字字母) 短信内容过滤 发送者号码过滤 短信权限回调,失败重新操作等等 消息回调,可自行处理 Github地址: https://github.com/tpnet/AutoVerifyCode 二.使用 2.1 最简单的使用 适用在验证码为数字,而且验证码为4-6位. AutoVerifyCode.getInstance() .with(

  • Android五种隐藏状态栏和标题栏的方法

    Android五种隐藏状态栏和标题栏的方法 方法一: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 隐藏标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); // 隐藏状态栏 getWindow().se

  • Android获取屏幕或View宽度和高度的方法

    本文实例讲述了Android获取屏幕或View宽度和高度的方法.分享给大家供大家参考,具体如下: 在Activity中获取屏幕的高度和宽度 Display display=getWindowManager().getDefaultDisplay(); int width=display.getWidth(); int height=display.getHeight(); 在重写ViewGroup中获取屏幕的有效宽度和高度在OnMesure方法中 protected void onMeasure

  • Android编程获取屏幕宽高与获取控件宽高的方法

    本文实例讲述了Android编程获取屏幕宽高与获取控件宽高的方法.分享给大家供大家参考,具体如下: 获取屏幕宽高 // 获取屏幕宽高(方法1) int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕宽(像素,如:480px) int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p) L

  • Android App获取屏幕旋转角度的方法

    本文实例为大家分享了Android App获取屏幕旋转角度的具体代码,供大家参考,具体内容如下 一.获取屏幕旋转角度的方法是:int rotation = mActivity.getWindowManager().getDefaultDisplay().getRotation(); 二.测试代码 1.getRotation\app\src\main\java\com\example\getrotation\MainActivity.java package com.example.getrota

  • Android 状态栏的设置适配问题详解

    Android 状态栏的设置适配问题详解 最近看了很多关于状态栏的问题的处理,总结出处理状态栏分两个方向1>5.0一下2>5.0以上的手机状态栏的设置,,,,,,,,这里说的都是自定义的toolbar,我这里已经把titlebar给隐藏掉了 (1) 关于5.0一下:首先我们需要在res文件下的style中设置, <!-- Base application theme. --> <style name="AppTheme" parent="AppT

随机推荐