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

发布时间 - 2026-01-11 02:58:28    点击率:

本文主要介绍了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 获取屏幕的多种宽高信息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# android获取屏幕宽度  # android  # 获取屏幕宽高  # 安卓获取屏幕宽度  # Android 四种获取屏幕宽度的方法总结  # android开发教程之textview内容超出屏幕宽度显示省略号  # 转换为  # 标题栏  # 也会  # 给大家  # 所示  # 这里下载  # 者也  # 大家多多  # 如下图  # 状态栏  # 器上  # getVirtualBarHeightIfRoom  # getAvailableScreenHeight  # getStatusBarHeight  # pre  # class  # java  # brush  # getVirtualBarHeight  # chenZY 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 香港服务器网站卡顿?如何解决网络延迟与负载问题?  Linux系统运维自动化项目教程_Ansible批量管理实战  PHP正则匹配日期和时间(时间戳转换)的实例代码  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  香港服务器租用每月最低只需15元?  LinuxCD持续部署教程_自动发布与回滚机制  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  如何批量查询域名的建站时间记录?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何在橙子建站中快速调整背景颜色?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  Laravel如何为API编写文档_Laravel API文档生成与维护方法  如何在IIS中新建站点并配置端口与IP地址?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  如何快速查询网址的建站时间与历史轨迹?  网站建设整体流程解析,建站其实很容易!  Laravel如何创建自定义Facades?(详细步骤)  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  怎么用AI帮你为初创公司进行市场定位分析?  太平洋网站制作公司,网络用语太平洋是什么意思?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  简历在线制作网站免费版,如何创建个人简历?  Linux后台任务运行方法_nohup与&使用技巧【技巧】  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  如何快速生成高效建站系统源代码?  微信小程序 wx.uploadFile无法上传解决办法  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  JS去除重复并统计数量的实现方法  微信h5制作网站有哪些,免费微信H5页面制作工具?  jQuery 常见小例汇总  PythonWeb开发入门教程_Flask快速构建Web应用  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel如何为API生成Swagger或OpenAPI文档  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  如何在阿里云部署织梦网站?  Python文件操作最佳实践_稳定性说明【指导】