从dp转换为像素错误

时间:2018-02-09 05:15:49

标签: android android-layout

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

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);

输出是一个巨大的数字,这是不期望的,任何帮助都非常赞赏。

3 个答案:

答案 0 :(得分:5)

使用此

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

答案 1 :(得分:1)

希望它会对你有所帮助: -

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

答案 2 :(得分:0)

希望这会对你有所帮助。

public static int dpToPx(int dp) {

DisplayMetrics displayMetrics = BaseApplication.appContext.getResources().getDisplayMetrics();
 int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));

return px;

 }