【问题标题】:conversion from dp to pixel wrong [duplicate]从 dp 到像素的转换错误 [重复]
【发布时间】:2018-02-09 05:15:48
【问题描述】:

由于某些奇怪的原因,我无法从下面的函数中获得正确的输出,我知道我犯了一些愚蠢的错误,但不确定,

public static int convertDpToPixel(int dp, Context context){
       float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dp,context.getResources().getDisplayMetrics());
        return Math.round(px);
    }

我将函数称为 - gen_function.convertDpToPixel(R.dimen.button_left_right_margin,this);

输出是一个巨大的数字,这是意料之外的,非常感谢任何帮助。

【问题讨论】:

  • 使用public static float convertDpToPixel(float dp, Context context) { Resources resources = context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); float px = dp * ((float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT); return px; }

标签: android android-layout


【解决方案1】:

使用这个

int pixels = getResources().getDimensionPixelSize(R.dimen.button_left_right_margin);

【讨论】:

    【解决方案2】:

    希望对你有所帮助:-

    public static int convertDpIntoPx(Context mContext, float yourdpmeasure) {
        if (mContext == null) {
            return 0;
        }
        Resources r = mContext.getResources();
        int px = (int) TypedValue
                .applyDimension(TypedValue.COMPLEX_UNIT_DIP, yourdpmeasure, r.getDisplayMetrics());
        return px;
    }
    

    For more detail

    【讨论】:

      【解决方案3】:

      希望这会对你有所帮助。

      public static int dpToPx(int dp) {
      
      DisplayMetrics displayMetrics = BaseApplication.appContext.getResources().getDisplayMetrics();
       int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
      
      return px;
      
       }
      

      【讨论】:

        猜你喜欢
        • 2011-06-04
        • 2019-02-17
        • 1970-01-01
        • 2019-02-18
        • 1970-01-01
        • 1970-01-01
        • 2017-08-02
        • 1970-01-01
        相关资源
        最近更新 更多