2013-01-07 1 views
1

현재 장치 DPI를 측정 한 다음 DPI에 따라 특정 수의 픽셀에 선을 그립니다 (DPI가 320이면 320 픽셀마다 한 줄을 표시 함). 내가 잘못하고있는 중이 야 무엇인지에Android 기기에서 DPI를 사용하여 정확한 길이를 인치로 어떻게 그릴 수 있습니까?

어떤 제안 ...

나는 그것이 일부 장치에 작업이,하지만 다른 방법으로 떨어져 나를 매우 혼란 떠난되는?

는 Heres는 코드 내가 화면의 상단에 선을 그린하고 heres는 어떻게 그런

metrics = context.getResources().getDisplayMetrics(); 
    width = metrics.widthPixels; 
    height = metrics.heightPixels; 
    xdpi = metrics.xdpi; 
    ydpi = metrics.ydpi; 
    densityDpi = metrics.densityDpi; 

(다른 다양한 것들 사이에) 장치 DPI를 취득 할 경우에 사용합니다.

x = 0; 
    while (x <= width) { 
     canvas.drawLine(x, 0, x, lineHeight, paint); 
     x = x + xdpi; 
    } 

처음에는 다양한 농도의 Dpi를 사용하여 선을 그리지 만 추정 된 DPI 만 알아 냈습니다. 그래서 xdpi로 코드를 변경했는데 실제 픽셀을 기반으로하는 것으로 가정되었지만 여전히 일부 장치에서는 정확하지 않습니다.

+3

안드로이드를 사용하고 있다면 놀랍습니다. X와 Y DPI가 다를 수도 있습니다. 유일하게 신뢰할 수는 있지만 실현 불가능한 방법은 내가 생각할 수있는 방법은 자신의 DB에 DPI를 사용하는 것입니다. 또 다른 옵션은 사용자가 신용 카드를 측정 수단으로 사용하도록 조정하여 사용자가 교정하도록하는 것입니다. –

+1

이 [thread] (https://groups.google.com/forum/#!topic/android-developers/g56jV0Hora0)는 지금까지의 답변을 확인합니다. 신뢰할 수있는 방법이 없습니다. – kcoppock

답변

3

실물과 동일한 크기로 동전을 그리는 데 필요한 동일한 문제가있었습니다. 각 장치는 적절한 DPI를보고해야하지만 일부 장치는 잘못된 데이터를 제공합니다. 결국 사용자가 이미지의 크기를 수동으로 조정할 수있게되었습니다.