Android 中的标准化屏幕尺寸
Normalized screen size in Android
在我的一项活动中,我想根据当前屏幕尺寸调整文本内容量。我应该依赖什么指标?
仅以像素为单位的宽度似乎不太可靠,因为字体缩放可能会有很大差异。另一方面,DisplayMetrics
的 DENSITY_280, DENSITY_400 ...
似乎过于宽泛。是否有可用的标准化指标,例如 width_in_pixels * font_scaling
?
以防万一:我的最低 SDK 版本是 15 (4.0.3)
您可以查看此 link 以了解如何 Supporting Multiple Screens on Android。
秘诀在于在布局中使用 dp 单位。
- px 是一个像素。
- sp 是与比例无关的像素。
- dp 是与密度无关的像素。
dp - 与密度无关的像素 - 一种基于屏幕物理密度的抽象单位。这些单位是相对于 160 dpi 屏幕而言的,因此 1 dp 是 160 dpi 屏幕上的一个像素。 dp-to-pixel 的比例会随着屏幕密度的变化而变化,但不一定成正比。注意:编译器接受 "dip" 和 "dp",尽管 "dp" 与 "sp".
更一致
你可以从 DisblayMetrics
得到像 dpi 这样的值,看这里 docs
此外,api、TypedValue.applyDimension() 中有一个针对不同大小指标的内置转换器,可用于从 sp 或 dp
获取像素
指定文本大小时,始终使用 sp:
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp" />
更多详情here and here
在我的一项活动中,我想根据当前屏幕尺寸调整文本内容量。我应该依赖什么指标?
仅以像素为单位的宽度似乎不太可靠,因为字体缩放可能会有很大差异。另一方面,DisplayMetrics
的 DENSITY_280, DENSITY_400 ...
似乎过于宽泛。是否有可用的标准化指标,例如 width_in_pixels * font_scaling
?
以防万一:我的最低 SDK 版本是 15 (4.0.3)
您可以查看此 link 以了解如何 Supporting Multiple Screens on Android。
秘诀在于在布局中使用 dp 单位。
- px 是一个像素。
- sp 是与比例无关的像素。
- dp 是与密度无关的像素。
dp - 与密度无关的像素 - 一种基于屏幕物理密度的抽象单位。这些单位是相对于 160 dpi 屏幕而言的,因此 1 dp 是 160 dpi 屏幕上的一个像素。 dp-to-pixel 的比例会随着屏幕密度的变化而变化,但不一定成正比。注意:编译器接受 "dip" 和 "dp",尽管 "dp" 与 "sp".
更一致你可以从 DisblayMetrics
得到像 dpi 这样的值,看这里 docs
此外,api、TypedValue.applyDimension() 中有一个针对不同大小指标的内置转换器,可用于从 sp 或 dp
获取像素指定文本大小时,始终使用 sp:
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp" />
更多详情here and here