Most visited

Recently visited

Added in API level 1

DisplayMetrics

public class DisplayMetrics
extends Object

java.lang.Object
   ↳ android.util.DisplayMetrics


描述有关显示的一般信息的结构,例如其大小,密度和字体缩放。

要访问DisplayMetrics成员,请像这样初始化一个对象:

 DisplayMetrics metrics = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(metrics);

Summary

Constants

int DENSITY_280

中间密度为 DENSITY_HIGH (240dpi)和 DENSITY_XHIGH (320dpi)之间的屏幕。

int DENSITY_360

介于 DENSITY_XHIGH (320 dpi)和 DENSITY_XXHIGH (480 dpi)之间的屏幕的中等密度。

int DENSITY_400

介于 DENSITY_XHIGH (320 dpi)和 DENSITY_XXHIGH (480 dpi)之间的屏幕的中等密度。

int DENSITY_420

介于 DENSITY_XHIGH (320 dpi)和 DENSITY_XXHIGH (480 dpi)之间的屏幕的中等密度。

int DENSITY_560

介于 DENSITY_XXHIGH (480 dpi)和 DENSITY_XXXHIGH (640 dpi)之间的屏幕的中等密度。

int DENSITY_DEFAULT

整个系统使用的参考密度。

int DENSITY_HIGH

用于高密度屏幕的标准量化DPI。

int DENSITY_LOW

用于低密度屏幕的标准量化DPI。

int DENSITY_MEDIUM

用于中等密度屏幕的标准量化DPI。

int DENSITY_TV

这是一个次要密度,为一些常见的屏幕配置添加。

int DENSITY_XHIGH

标准量化的DPI用于超高密度屏幕。

int DENSITY_XXHIGH

标准量化的DPI用于超高密度屏幕。

int DENSITY_XXXHIGH

标准量化DPI用于超高密度屏幕。

Fields

public static final int DENSITY_DEVICE_STABLE

该设备的密度稳定。

public float density

显示器的逻辑密度。

public int densityDpi

屏幕密度表示为每英寸点数。

public int heightPixels

可用显示大小的绝对高度(以像素为单位)。

public float scaledDensity

显示器上显示的字体缩放比例。

public int widthPixels

可用显示大小的绝对宽度(以像素为单位)。

public float xdpi

X维中每英寸屏幕的确切物理像素。

public float ydpi

Y维中每英寸屏幕的确切物理像素。

Public constructors

DisplayMetrics()

Public methods

boolean equals(Object o)

指示其他某个对象是否“等于”这一个。

boolean equals(DisplayMetrics other)

如果这些显示指标等于其他显示指标,则返回true。

int hashCode()

返回对象的哈希码值。

void setTo(DisplayMetrics o)
void setToDefaults()
String toString()

返回对象的字符串表示形式。

Inherited methods

From class java.lang.Object

Constants

DENSITY_280

Added in API level 22
int DENSITY_280

中间密度为DENSITY_HIGH (240dpi)和DENSITY_XHIGH (320dpi)之间的屏幕。 这不是一个应用程序应该瞄准,而是依托该系统,以扩展其密度DENSITY_XHIGH资产为他们。

常量值:280(0x00000118)

DENSITY_360

Added in API level 23
int DENSITY_360

介于DENSITY_XHIGH (320 dpi)和DENSITY_XXHIGH (480 dpi)之间的屏幕的中等密度。 这不是应用程序应该定位的密度,而是依靠系统为他们缩放其DENSITY_XXHIGH资产。

常量值:360(0x00000168)

DENSITY_400

Added in API level 19
int DENSITY_400

介于DENSITY_XHIGH (320 dpi)和DENSITY_XXHIGH (480 dpi)之间的屏幕的中等密度。 这不是应用程序应该定位的密度,而是依靠系统为它们缩放其DENSITY_XXHIGH资产。

常量值:400(0x00000190)

DENSITY_420

Added in API level 23
int DENSITY_420

介于DENSITY_XHIGH (320 dpi)和DENSITY_XXHIGH (480 dpi)之间的屏幕的中等密度。 这不是应用程序应该设定的密度,而是依靠系统来为他们缩放DENSITY_XXHIGH资产。

常量值:420(0x000001a4)

DENSITY_560

Added in API level 21
int DENSITY_560

介于DENSITY_XXHIGH (480 dpi)和DENSITY_XXXHIGH (640 dpi)之间的屏幕的中等密度。 这不是应用程序应该定位的密度,而是依靠系统为它们DENSITY_XXXHIGH资产。

常量值:560(0x00000230)

DENSITY_DEFAULT

Added in API level 4
int DENSITY_DEFAULT

整个系统使用的参考密度。

常量值:160(0x000000a0)

DENSITY_HIGH

Added in API level 4
int DENSITY_HIGH

用于高密度屏幕的标准量化DPI。

常量值:240(0x000000f0)

DENSITY_LOW

Added in API level 4
int DENSITY_LOW

用于低密度屏幕的标准量化DPI。

常量值:120(0x00000078)

DENSITY_MEDIUM

Added in API level 4
int DENSITY_MEDIUM

用于中等密度屏幕的标准量化DPI。

常量值:160(0x000000a0)

DENSITY_TV

Added in API level 13
int DENSITY_TV

这是一个次要密度,为一些常见的屏幕配置添加。 建议应用程序通常不将该目标作为一级密度 - 也就是说,不要为此密度提供特定图形,而是允许平台根据需要从其他密度(通常为DENSITY_HIGH )进行缩放。 在大多数情况下(例如在Drawable使用位图),平台可以在加载时执行此比例缩放,所以唯一的代价是一些轻微的启动运行时间开销。

该密度原来是为了与720p电视屏幕相对应而引入的:1080p电视机的密度为DENSITY_XHIGH ,这里的值为以720p运行的电视机提供相同的UI尺寸。 当这些设备具有1280x720显示器时,它也可用于7英寸平板电脑。

常量值:213(0x000000d5)

DENSITY_XHIGH

Added in API level 9
int DENSITY_XHIGH

标准量化的DPI用于超高密度屏幕。

常量值:320(0x00000140)

DENSITY_XXHIGH

Added in API level 16
int DENSITY_XXHIGH

标准量化的DPI用于超高密度屏幕。

常量值:480(0x000001e0)

DENSITY_XXXHIGH

Added in API level 18
int DENSITY_XXXHIGH

标准量化DPI用于超高密度屏幕。 应用程序通常不应该担心这种密度; 依靠XHIGH图形扩大到几乎所有情况下都足够了。 这种密度的典型用途是4K电视屏幕 - 3840x2160,这是2倍于在DENSITY_XHIGH上运行的传统高清1920x1080屏幕。

常量值:640(0x00000280)

Fields

DENSITY_DEVICE_STABLE

Added in API level 24
int DENSITY_DEVICE_STABLE

该设备的密度稳定。

该值在运行时不变,可能不会反映当前的显示密度。 要获取特定显示器的电流密度,请使用densityDpi

density

Added in API level 1
float density

显示器的逻辑密度。 这是密度无关像素单位的缩放系数,其中一个DIP在大约160 dpi的屏幕上(例如240x320,1.5“x2”屏幕)上的一个像素,提供系统显示的基线。 因此在160dpi的屏幕上,这个密度值将是1; 在120 dpi的屏幕上它将是0.75; 等等

该值并不完全遵循真实的屏幕尺寸(如 xdpiydpi所给出的,而是用于基于显示dpi的总体变化逐步缩放整个UI的尺寸。例如,240x320屏幕将具有即使其宽度为1.8“,1.3”等,但是,如果屏幕分辨率增加到320x480,但屏幕尺寸保持1.5“x2”,则密度将增加(可能为1.5)。

也可以看看:

densityDpi

Added in API level 4
int densityDpi

屏幕密度表示为每英寸点数。 可以是DENSITY_LOWDENSITY_MEDIUM ,或DENSITY_HIGH

heightPixels

Added in API level 1
int heightPixels

可用显示大小的绝对高度(以像素为单位)。

scaledDensity

Added in API level 1
float scaledDensity

显示器上显示的字体缩放比例。 这与density相同,只是可以根据用户对字体大小的偏好在运行时以较小的增量进行调整。

widthPixels

Added in API level 1
int widthPixels

可用显示大小的绝对宽度(以像素为单位)。

xdpi

Added in API level 1
float xdpi

X维中每英寸屏幕的确切物理像素。

ydpi

Added in API level 1
float ydpi

Y维中每英寸屏幕的确切物理像素。

Public constructors

DisplayMetrics

Added in API level 1
DisplayMetrics ()

Public methods

equals

Added in API level 1
boolean equals (Object o)

指示其他某个对象是否“等于”这一个。

equals方法在非空对象引用上实现等价关系:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

equals类的方法Object实现对象上最可能的等价关系; 也就是说,对于任何非空参考值xy ,当且仅当xy指向同一对象( x == y的值为true )时,此方法返回true

请注意,无论何时重写此方法,通常都必须重写 hashCode方法,以维护 hashCode方法的一般合同,该方法声明相等对象必须具有相同的哈希代码。

Parameters
o Object: the reference object with which to compare.
Returns
boolean true if this object is the same as the obj argument; false otherwise.

equals

Added in API level 17
boolean equals (DisplayMetrics other)

如果这些显示指标等于其他显示指标,则返回true。

Parameters
other DisplayMetrics: The display metrics with which to compare.
Returns
boolean True if the display metrics are equal.

hashCode

Added in API level 1
int hashCode ()

返回对象的哈希码值。 为了散列表的好处而支持该方法,例如由HashMap提供的HashMap

一般合约 hashCode是:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

尽可能合理实用,类Object定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java TM编程语言不需要此实现技术。)

Returns
int a hash code value for this object.

setTo

Added in API level 1
void setTo (DisplayMetrics o)

Parameters
o DisplayMetrics

setToDefaults

Added in API level 1
void setToDefaults ()

toString

Added in API level 1
String toString ()

返回对象的字符串表示形式。 通常, toString方法会返回一个“文本表示”此对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

ObjecttoString方法将返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

Hooray!