2013-02-23 73 views
0

我需要在屏幕上绘制一个精确的3x3厘米正方形,您需要任何类型的屏幕中的确切尺寸作为设计工作。在Android中画平方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"/> 

非常感谢你

回答

3

我认为你需要使用DPI在特定的方向x和y如:

// 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); 

然后你将有更多的机会,但他们并不准确的每一个电话。我得到了以下结果把这个代码的的onDraw()方法和Android应用后:

Nexus 7:  2.8 cm 
Galaxy Nexus 3.0 cm 
HTC Sensation 3.0 cm 
HTC Desire HD 2.7 cm 

所以并不确切在所有情况下。

+0

非常感谢,但结果并不确切。 有没有办法在屏幕上进行准确的测量? – 2013-02-23 11:05:12

+0

我必须调整每个单元的大小? – 2013-02-23 17:58:54