2011-02-05 5 views
9

안드로이드 캔버스 클래스는 원, 라인 등 다양한 드로잉 프리미티브 세트를 지원합니다.이 클래스를 사용하여 통계 데이터를 차트로 표시하는 앱이 있습니다.캔버스 클래스 드로잉 프리미티브에 대한 독립성 구현

http://developer.android.com/reference/android/graphics/Canvas.html#drawLine%28float,%20float,%20float,%20float,%20android.graphics.Paint%29 에 대한 설명을 읽은 후. . . 좌표가 어떤 단위인지 또는 장치/해상도를 독립적으로 만드는 방법이 명확하지 않았습니다.

이러한 단위는 무엇이며 다양한 화면 크기 및 해상도에서 작동하는 선 및 원과 직사각형을 그릴 때 "모범 사례"는 무엇입니까? 미리 감사드립니다.

답변

4

Android 설명서에 "위치 및 크기 단위가 픽셀입니다."라고 나와 있습니다. 잠시 동안 실험 한 결과 버전 2.0 이전에는 픽셀 단위라는 것을 알게되었습니다. 하지만 2.0부터는 장치가 dip (장치 독립적 픽셀) 일 가능성이 큽니다. 다음 코드를

는 :

Paint paint = new Paint(); 
paint.setColor(Color.RED); 
paint.setStyle(Paint.Style.STROKE); 
paint.setStrokeWidth(0); 
canvas.drawRect(new Rect(1, 1, 319, 319), paint); 

나는 안드로이드 2.0 이상과 320 × 480, 480X800, 그리고 240 × 320 에뮬레이터에서 화면의 폭과 일치하는 동일한 크기의 사각형을 얻는다.

이 발견으로 문제를 해결할 수있었습니다. 대형 화면의 1 픽셀 세로선은 2 픽셀 너비입니다. 화면 크기에 관계없이 1- 픽셀 선을 그리려면 획 너비를 0으로 설정하십시오.

편집

안드로이드와 더 많은 경험을 얻고 난 후에, 나는 나의 결론을 수정해야합니다. 실제로 AndroidManifest.xml의 "supports-screens"태그에는 "android : anyDensity"속성이 있습니다. 이 속성은 기본적으로 true입니다. 그것이 사실 일 때 측정 단위는 dp이고, 그렇지 않으면 픽셀입니다.

관련 문제