2011-02-05 15 views
9

Android Canvasクラスは、円、線など豊富な描画プリミティブをサポートしています。これらを使用して統計データのグラフを作成するアプリがあります。Canvasクラス描画プリミティブの独立性

http://developer.android.com/reference/android/graphics/Canvas.html#drawLine%28float,%20float,%20float,%20float,%20android.graphics.Paint%29 の説明を読んだ後。 。 。私は座標がどの単位であったか、またはそれらをデバイス/解像度に依存しないようにする方法が不明であった。

これらの単位は何ですか、さまざまな画面サイズと解像度で動作する線と円と四角形を描画するための「ベストプラクティス」は何ですか?前もって感謝します。

答えて

4

Androidのドキュメントには、「位置と寸法の単位はピクセルです」と記載されています。実験をした後、バージョン2.0より前のユニットがピクセルであることがわかりました。しかし、2.0からは、デバイスはディップ(デバイスに依存しないピクセル)である可能性が最も高いです。

次のコードについて

:私は、同じサイズの320×480の画面の幅に一致する正方形、480X800、とAndroid 2.0+を有する240×320エミュレータを取得

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

この発見によって私は問題を解決することができました。大画面の1ピクセル垂直線は、時には2ピクセル幅です。画面のサイズに関係なく、1ピクセルの線を描画するには、ストロークの幅を0に設定します。

編集

アンドロイドでより多くの経験を取得した後、私は私の結論を修正する必要があります。実際には、AndroidManifest.xmlの "supports-screens"タグに "android:anyDensity"という属性があります。この属性はデフォルトでtrueです。それが本当であれば、測定単位はdpです。それ以外の場合はピクセルです。

関連する問題