DimensionUtil - 尺寸工具类
简介
DimensionUtil是一个用于尺寸转换的工具类,主要的用途是将SP
转换为PX
。
主要功能
- 将DP单位的数值转换为PX单位的数值。
- 将其他TypedValue的数值转换为PX单位的数值。
- 将PX单位的数值转换为DP单位的数值。
- 获取屏幕显示区域的宽度。
- 获取屏幕显示区域的高度。
- 获取状态栏高度,添加了一个状态栏占位控件。
- 获取导航栏高度。
- 支持设置不同的屏幕密度进行计算。
集成方法
使用Gradle构建工具集成:
dependencies {
// android support 工程
implementation 'com.bonepeople.android.lib:DimensionUtil:1.1'
// androidX 工程
implementation 'com.bonepeople.android.lib:DimensionUtil:1.3.0'
}
使用示例
-
获取PX单位的数值
float height = 5.5f; int px = DimensionUtil.getPx(height);
float textSize = 5.5f; int px = DimensionUtil.getPx(android.util.TypedValue.COMPLEX_UNIT_SP, textSize);
-
获取DP单位的数值
int width = 44; float dp = DimensionUtil.getDp(width);
-
获取屏幕显示区域的宽度
int width = DimensionUtil.getDisplayWidth();
-
获取屏幕显示区域的高度
int height = DimensionUtil.getDisplayHeight();
-
获取状态栏高度/导航栏高度
此处获取的是手机状态栏高度的像素值,在java代码中可以直接调整控件的位置。
int statusBarHeight = DimensionUtil.getStatusBarHeight(); int navigationBarHeight = DimensionUtil.getNavigationBarHeight(); pageContainer.setPadding(0, statusBarHeight, 0, 0);
针对布局中无法引用状态栏高度的情况,可以使用StatusBarHolder控件达到状态栏占位的目的。
<android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.bonepeople.android.lib.dimensionutil.StatusBarHolder android:id="@+id/statusBarHolder" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/textView_title" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintTop_toBottomOf="@id/statusBarHolder" /> </android.support.constraint.ConstraintLayout>
工具类默认使用系统的屏幕密度进行计算,如果App设置了自己的屏幕密度,可以通过setDefaultMetrics(DisplayMetrics)
方法进行设置,新设置的屏幕密度会保存在静态变量中供后续使用。
DimensionUtil.setDefaultMetrics(getResources().getDisplayMetrics());
混淆说明
本项目对混淆无任何要求。
simple项目展示
项目地址
https://github.com/bonepeople/DimensionUtil
如果这个项目对你有帮助,欢迎来github加个星
如果有任何改进建议也欢迎提交到https://github.com/bonepeople/DimensionUtil/issues