美文网首页Android轮子
安卓尺寸工具类

安卓尺寸工具类

作者: _青_9609 | 来源:发表于2019-12-23 13:40 被阅读0次

    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项目展示

    示例APP

    项目地址

    https://github.com/bonepeople/DimensionUtil
    如果这个项目对你有帮助,欢迎来github加个星
    如果有任何改进建议也欢迎提交到https://github.com/bonepeople/DimensionUtil/issues

    相关文章

      网友评论

        本文标题:安卓尺寸工具类

        本文链接:https://www.haomeiwen.com/subject/fldznctx.html