在android中将dip转换为px

x33g5p2x  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(233)

我已经写了一个方法来从dip得到像素,但它不起作用。它给我运行时错误。
实际上,我在单独的类中运行这个方法,并在活动类中初始化

Board board = new Board(this);
board.execute(URL);

此代码异步运行。请帮帮我。

public float getpixels(int dp){

        //Resources r = boardContext.getResources();
        //float px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpis, r.getDisplayMetrics());

         final float scale = this.boardContext.getResources().getDisplayMetrics().density;
            int px = (int) (dp * scale + 0.5f);

        return px;

    }
falq053o

falq053o1#

公式为:px=dp*(dpi/160),用于在160 dpi屏幕上显示。看到了吗http://developer.android.com/guide/practices/screens_support.html 更多信息。
你可以试试:

public static int convertDipToPixels(float dips)
{
    return (int) (dips * appContext.getResources().getDisplayMetrics().density + 0.5f);
}

希望这有帮助。。。

3hvapo4f

3hvapo4f2#

您可以在dimen.xml中添加dp值并使用

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

更容易。。。

aoyhnmkz

aoyhnmkz3#

试试这个:
java

public static float dipToPixels(Context context, float dipValue) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, metrics);
}

Kotlin

fun Context.dipToPixels(dipValue: Float) =
    TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, resources.displayMetrics)
envsm3lx

envsm3lx4#

试试这个:因为没有传递上下文

public static float dipToPixels(float dipValue) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, Resources.getSystem().getDisplayMetrics());
    }

相关问题