关于Android设备屏幕大小及密度的系统参数类

功能

获取Android设备屏幕宽、高、dpi密度及横竖屏等参数

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/**
  * 系统参数类
  *
  * @author wader
  *
  */
public class MySystemParams {
  private final String TAG = "SystemParams" ;
  private static MySystemParams params;
  public int screenWidth; // 屏幕宽度,单位为px
  public int screenHeight; // 屏幕高度,单位为px
  public int densityDpi; // 屏幕密度,单位为dpi
  public float scale; // 缩放系数,值为 densityDpi/160
  public float fontScale; // 文字缩放系数,同scale
    
  public final static int SCREEN_ORIENTATION_VERTICAL = 1; // 屏幕状态:横屏
  public final static int SCREEN_ORIENTATION_HORIZONTAL = 2; // 屏幕状态:竖屏
  public int screenOrientation = SCREEN_ORIENTATION_VERTICAL; // 当前屏幕状态,默认为竖屏
    
  /**
   * 私有构造方法
   *
   * @param activity
   */
  private MySystemParams(Activity activity) {
   DisplayMetrics dm = new DisplayMetrics();
   activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
   screenWidth = dm.widthPixels;
   screenHeight = dm.heightPixels;
   densityDpi = dm.densityDpi;
   scale = dm.density;
   fontScale = dm.scaledDensity;
    
   screenOrientation = screenHeight > screenWidth ? SCREEN_ORIENTATION_VERTICAL
     : SCREEN_ORIENTATION_HORIZONTAL;
  }
    
  /**
   * 获取实例
   *
   * @param activity
   * @return
   */
  public static MySystemParams getInstance(Activity activity) {
   if (params == null ) {
    params = new MySystemParams(activity);
   }
   return params;
  }
    
  /**
   * 获取一个新实例
   *
   * @param activity
   * @return
   */
  public static MySystemParams getNewInstance(Activity activity) {
   if (params != null ) {
    params = null ;
   }
   return getInstance(activity);
  }
    
  /**
   * 参数信息
   */
  public String toString() {
    
   return TAG
     + ":[screenWidth: "
     + screenWidth
     + " screenHeight: "
     + screenHeight
     + " scale: "
     + scale
     + " fontScale: "
     + fontScale
     + " densityDpi: "
     + densityDpi
     + " screenOrientation: "
     + (screenOrientation == SCREEN_ORIENTATION_VERTICAL ? "vertical"
       : "horizontal" ) + "]" ;
  }
}

这篇文章被 Android中px与dip,sp与dip等的转换工具类引用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值