我正在制作一个标尺应用程序,并且我希望其中一个视图在任何屏幕上的宽度都精确地为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);