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

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

程序员文章站 2023-12-09 14:08:51
本文主要介绍了android 获取屏幕的多种宽高信息的示例代码,分享给大家,具体如下: 包含的宽高信息如下图所示: 在模拟器上获取到的数据: 08-26 07...

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

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