我正在制作一个标尺应用程序,并且我希望其中一个视图在任何屏幕上的宽度都精确地为1.7英寸,而与使用该应用程序的单个设备的dpi无关。我知道如何在像素和dp之间进行转换以及如何以编程方式设置视图的布局参数,但是我不确定如何确定在每个屏幕密度下将需要多少dp以确保我的视图始终以一定的宽度绘制1.7英寸

除非我弄错了,否则一旦我理解了这种转换,就应该能够使用这样的调用来进行设置:

RelativeLayout.LayoutParams viewParams = new RelativeLayout.LayoutParams( **width in dp converted from inches**, RelativeLayout.LayoutParams.MATCH_PARENT);

最佳答案

我建议这样做:

    public int pixelsOfWantedInches(double inches, Activity act) {
        DisplayMetrics dm = new DisplayMetrics();
        act.getWindowManager().getDefaultDisplay().getMetrics(dm);
        int dens=dm.densityDpi;
        int pixels = (int)(inches * (double) dens);

        return pixels;
    }


int wantedPixels = pixelsOfWantedInches(1.7, this);

10-01 22:16