在Android中将dip转换为px

在Android中将dip转换为px,android,Android,我写了一个从dip中获取像素的方法,但它不起作用。它给我运行时错误 实际上,我在单独的类中运行这个方法,并在活动类中初始化 Board board = new Board(this); board.execute(URL); 此代码以异步方式运行。请帮帮我 public float getpixels(int dp){ //Resources r = boardContext.getResources(); //float px = (int)TypedVa

我写了一个从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;

    }
试试这个:

爪哇

科特林

fun Context.dipToPixels(dipValue: Float) =
    TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, resources.displayMetrics)
公式为:px=dp*(dpi/160),用于在160 dpi屏幕上显示。有关更多信息,请参阅

你可以试试:

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

希望这有帮助…

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

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

更容易…

试试这个:因为不需要传递上下文

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

你有什么错误?boardContext为空?getResources为空?像素的浮点值是多少?是否应该将其转换为int?可行,但似乎将w,h应用到我的浮动活动中,android在右侧和左侧添加了16dp(总计32dp),我必须传递的dipValue是布局xml中的dipValue+32dp-修复了它
 public static float dipToPixels(float dipValue) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, Resources.getSystem().getDisplayMetrics());
    }