Android dp2px とその他のツールのシステム書き込み方法

以前は自分でツール クラスをパッケージ化していましたが、Android システムは既に作成されており、doctrine に使用されています。
コアは引き続き変換式パッケージ
android.util;です。

TypedValue.java
public static float applyDimension(@ComplexDimensionUnit int unit, float value,
                                       DisplayMetrics metrics)
    {
    
    
        switch (unit) {
    
    
        case COMPLEX_UNIT_PX:
            return value;
        case COMPLEX_UNIT_DIP:
            return value * metrics.density;
        case COMPLEX_UNIT_SP:
            return value * metrics.scaledDensity;
        case COMPLEX_UNIT_PT:
            return value * metrics.xdpi * (1.0f/72);
        case COMPLEX_UNIT_IN:
            return value * metrics.xdpi;
        case COMPLEX_UNIT_MM:
            return value * metrics.xdpi * (1.0f/25.4f);
        }
        return 0;
    }


ViewUtilsを使用したカプセル化

 package com.google.android.material.internal;
 public class ViewUtils {
    
    
 ...
  public static float dpToPx(@NonNull Context context, @Dimension(unit = Dimension.DP) int dp) {
    
    
    Resources r = context.getResources();
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics());
  }

おすすめ

転載: blog.csdn.net/aikongmeng/article/details/127685358