Android分享笔记 获取屏幕尺寸,包括状态栏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android分享笔记 获取屏幕尺寸,包括状态栏相关的知识,希望对你有一定的参考价值。

一大波干货来袭,屏幕尺寸各种获得,状态栏尺寸可正确获得,亲测。

package com.elyar.app.util.measure;

import java.lang.reflect.Field;
import android.app.Activity;
import android.util.DisplayMetrics;
public class DisplayMeasure {
 /**
  * Note:个人经验不服来辩<br>
  * 只有activity可以使用getWindowManager,否则应该使用<br>
  * Context.getResources().getDisplayMetrics()来获取.<br>
  * 
  * @author ElyarAnwar 2016-1-29 21:24 Aksu
  * 
  */
 public DisplayMeasure() {
 
 }
 
 
 /**
  * 获取屏幕尺寸,单位为像素
  * @param context Activity的上下文
  * @return 屏幕宽度 单位PX
  */
 public static int getScreenWidthPixel(Activity context){
  DisplayMetrics outMetrics = new DisplayMetrics();
  context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
  int widthPixels = outMetrics.widthPixels;
  return widthPixels;
 }
 
 /**
  * 获取屏幕尺寸,单位为像素
  * @param context Activity的上下文
  * @return 屏幕高度 单位PX
  */
 public static int getScreenHeightPixel(Activity context){
  DisplayMetrics outMetrics = new DisplayMetrics();
  context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
  int heightPixels = outMetrics.heightPixels;
  return heightPixels;
 }
 
 /**
  * 获取屏幕尺寸,单位为dp
  * @param context Activity的上下文
  * @return 屏幕宽度 单位Dp
  */
 public static int getScreenWidthInDp(Activity context){
  DisplayMetrics outMetrics = new DisplayMetrics();
  context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
  int widthDp = outMetrics.widthPixels;
  return ChangeUnits.px2dp(context, widthDp);//将PX转换成Dp
 }
 
 /**
  * 获取屏幕尺寸,单位为dp
  * @param context Activity的上下文
  * @return 屏幕高度 单位Dp
  */
 public static int getScreenHeightInDp(Activity context){
  DisplayMetrics outMetrics = new DisplayMetrics();
  context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
  int heightDp = outMetrics.heightPixels;
  return ChangeUnits.px2dp(context, heightDp);
 }
 
 
 /**
  * 获取状态栏高度
  * @param context 上下文
  * @return 状态栏高度 单位像素
  */
 public static int getStatusBarHeightPixel(Activity context){ 
        Class<?> c = null; 
        Object obj = null; 
        Field field = null; 
        int x = 0, statusBarHeight = 0; 
        try { 
            c = Class.forName("com.android.internal.R$dimen"); 
            obj = c.newInstance(); 
            field = c.getField("status_bar_height"); 
            x = Integer.parseInt(field.get(obj).toString()); 
            statusBarHeight = context.getResources().getDimensionPixelSize(x);  
        } catch (Exception e1) { 
            e1.printStackTrace(); 
        }  
        return statusBarHeight; 
    }
 
 
 /**
  * 获取状态栏高度
  * @param context 上下文
  * @return 状态栏高度 单位dp
  */
 public static int getStatusBarHeightInDp(Activity context){ 
        Class<?> c = null; 
        Object obj = null; 
        Field field = null; 
        int x = 0, statusBarHeight = 0; 
        try { 
            c = Class.forName("com.android.internal.R$dimen"); 
            obj = c.newInstance(); 
            field = c.getField("status_bar_height"); 
            x = Integer.parseInt(field.get(obj).toString()); 
            statusBarHeight = context.getResources().getDimensionPixelSize(x);  
        } catch (Exception e1) { 
            e1.printStackTrace(); 
        }  
        return ChangeUnits.px2dp(context, statusBarHeight); 
    }
}

 

本文出自 “分享是最好的记忆” 博客,请务必保留此出处http://elyar.blog.51cto.com/9864306/1740025

以上是关于Android分享笔记 获取屏幕尺寸,包括状态栏的主要内容,如果未能解决你的问题,请参考以下文章

Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键

android 怎么获取当前屏幕的截图

微信小程序学习点滴《十二》:图片等比例缩放 获取屏幕尺寸图片尺寸 自适应

android中getRealMetrics获取屏幕原始尺寸的替代方法是啥

在Android中获取屏幕尺寸[重复]

java Android的获取屏幕尺寸