2013-02-23 3 views
0

3x3cm 크기의 정사각형을 그릴 필요가 있습니다. 어떤 유형의 화면에서도 정확한 치수가 필요합니다.안드로이드에서 3x3cm 크기의 사각형을 그립니다.

삼성 에이스의 결과는 2.8cm이며 결과가 정확하지 않습니다.

자바 ...

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

난 당신이 방향 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); 

더 많은 기회를 갖지만 모든 전화에 대해 정확하지는 않습니다. 나는의의 onDraw() 메소드와 안드로이드 응용 프로그램에서이 코드를 배치 한 후 다음과 같은 결과를 얻었다 :

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

을 그래서 모든 경우에 정확한되지 않습니다.

+0

대단히 감사합니다. 결과는 정확하지 않습니다. 화면에서 정확한 측정을 할 방법이 없습니까? –

+0

각 셀의 크기를 조정해야합니까? –

관련 문제