我需要在屏幕上绘制一个3x3厘米的精确正方形,你需要在任何类型的屏幕上作为设计工作的确切尺寸。
三星Ace的结果是2.8厘米,结果并不准确。
...的Java
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float ld = 30 * metrics.densityDpi * (metrics.density/25.4f);
bitmap = Bitmap.createBitmap((int) ld, (int) ld, Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
paint = new Paint();
paint.setColor(Color.WHITE);
imageView.setImageBitmap(bitmap);
canvas.drawRect(0, 0, (float) ld, (float) ld, paint);
... XML
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/image_view"
android:scaleType="center"/>
非常感谢
答案 0 :(得分:3)
我认为您需要在特定方向x和y上使用dpi,例如:
// We want 30/25.4 inches but in dots
float inches = 30/25.4f;
float xdpi = getResources().getDisplayMetrics().xdpi;
float xDots = inches * xdpi;
float ydpi = getResources().getDisplayMetrics().ydpi;
float yDots = inches * ydpi;
Paint paint = new Paint();
paint.setColor(Color.WHITE);
canvas.drawRect(0, 0, xDots, yDots, paint);
然后你会有更多的机会,但它们对每部手机都不准确。将此代码放入Android应用程序的onDraw()方法后,我得到了以下结果:
Nexus 7: 2.8 cm
Galaxy Nexus 3.0 cm
HTC Sensation 3.0 cm
HTC Desire HD 2.7 cm
所以在所有情况下都不准确。