Android 获取屏幕的多种宽高信息的示例代码

作者:叶应是叶 时间:2021-07-10 06:07:10 

本文主要介绍了Android 获取屏幕的多种宽高信息的示例代码,分享给大家,具体如下:

包含的宽高信息如下图所示:

Android 获取屏幕的多种宽高信息的示例代码

在模拟器上获取到的数据:

08-26 07:19:32.712 7834-7834/com.czy.screeninfo E/MainActivity: getTotalScreenHeight 1920
08-26 07:19:33.505 7834-7834/com.czy.screeninfo E/MainActivity: getScreenWidth 1080
08-26 07:19:34.211 7834-7834/com.czy.screeninfo E/MainActivity: getAvailableScreenHeight 1794
08-26 07:19:34.979 7834-7834/com.czy.screeninfo E/MainActivity: getStatusBarHeight 63
08-26 07:19:35.580 7834-7834/com.czy.screeninfo E/MainActivity: getVirtualBarHeightIfRoom 126
08-26 07:19:36.340 7834-7834/com.czy.screeninfo E/MainActivity: getVirtualBarHeight 126
08-26 07:19:37.048 7834-7834/com.czy.screeninfo E/MainActivity: getTitleHeight 147

具体的代码:


/**
* 作者: chenZY
* 时间: 2017/8/26 14:37
* 描述:
*/
public class ScreenUtils {

/**
  * 返回包括虚拟键在内的总的屏幕高度
  * 即使虚拟按键显示着,也会加上虚拟按键的高度
  */
 public static int getTotalScreenHeight(Activity activity) {
   DisplayMetrics displayMetrics = new DisplayMetrics();
   activity.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics);
   return displayMetrics.heightPixels;
 }

/**
  * 返回屏幕的宽度
  */
 public static int getScreenWidth(Activity activity) {
   DisplayMetrics displayMetrics = new DisplayMetrics();
   activity.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics);
   return displayMetrics.widthPixels;
 }

/**
  * 返回屏幕可用高度
  * 当显示了虚拟按键时,会自动减去虚拟按键高度
  */
 public static int getAvailableScreenHeight(Activity activity) {
   DisplayMetrics displayMetrics = new DisplayMetrics();
   activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
   return displayMetrics.heightPixels;
 }

/**
  * 状态栏高度
  */
 public static int getStatusBarHeight(Activity activity) {
   int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
   return activity.getResources().getDimensionPixelSize(resourceId);
 }

/**
  * 获取虚拟按键的高度
  * 会根据当前是否有显示虚拟按键来返回相应的值
  * 即如果隐藏了虚拟按键,则返回零
  */
 public static int getVirtualBarHeightIfRoom(Activity activity) {
   DisplayMetrics displayMetrics = new DisplayMetrics();
   activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
   int usableHeight = displayMetrics.heightPixels;
   activity.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics);
   int realHeight = displayMetrics.heightPixels;
   return realHeight - usableHeight;
 }

/**
  * 获取虚拟按键的高度,不论虚拟按键是否显示都会返回其固定高度
  */
 public static int getVirtualBarHeight(Activity activity) {
   int resourceId = activity.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
   return activity.getResources().getDimensionPixelSize(resourceId);
 }

/**
  * 标题栏高度,如果隐藏了标题栏则返回零
  */
 public static int getTitleHeight(Activity activity) {
   return activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
 }

/**
  * 将dp值转换为px值
  */
 public static int dp2px(Context context, float dpValue) {
   float scale = context.getResources().getDisplayMetrics().density;
   return (int) (dpValue * scale + 0.5f);
 }

/**
  * 将px值转换为dp值
  */
 public static int px2dp(Context context, float pxValue) {
   float scale = context.getResources().getDisplayMetrics().density;
   return (int) (pxValue / scale + 0.5f);
 }

}

或者也可以从这里下载代码:Android 获取屏幕的多种宽高信息

来源:http://www.jianshu.com/p/4531185e7e68

标签:android,屏幕宽度
0
投稿

猜你喜欢

  • 浅谈Java字符串比较的三种方法

    2023-05-13 12:26:51
  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法

    2022-05-19 10:43:24
  • Spring JPA 错题集解决案例

    2022-03-26 22:44:03
  • Android编程调用Camera和相册功能详解

    2023-12-15 00:09:23
  • Android studio设计简易计算器

    2023-01-26 22:21:40
  • springboot依赖冲突问题及解决过程

    2023-03-13 11:49:53
  • Java操作Redis详细介绍

    2023-07-27 06:53:04
  • 如何使用C# Stopwatch 测量微秒级精确度

    2021-09-14 04:31:04
  • Java字节流和字符流总结IO流!

    2023-10-21 13:06:02
  • 如何利用java控制鼠标操作一些重复的事情

    2021-11-12 12:54:02
  • C#实现飞行棋小游戏

    2022-10-28 22:00:02
  • 基于Mybatis plus 自动代码生成器的实现代码

    2023-11-24 10:40:51
  • SpringBoot+Dubbo+Zookeeper实现简单分布式开发的应用详解

    2022-03-02 00:47:40
  • Android中ACTION_CANCEL的触发机制与滑出子view的情况

    2023-08-01 14:39:09
  • C语言 MD5的源码实例详解

    2022-12-22 05:37:16
  • C#使用smtp发送带附件的邮件实现方法

    2022-11-03 17:53:39
  • android实现简易计算器

    2023-06-21 04:26:09
  • Java 实现拦截器Interceptor的拦截功能方式

    2023-04-25 04:35:15
  • 解决IDEA中快捷键Alt+Enter不能使用的问题

    2022-09-14 07:54:07
  • Java Swing JFrame窗口的实现

    2021-11-30 12:03:37
  • asp之家 软件编程 m.aspxhome.com