2011-02-05 47 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開始,單位最有可能是傾角(與設備無關的像素)。

對於以下的代碼:

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

我得到相同尺寸平方匹配屏幕的寬度上小320x480,480x800的,和240×320的仿真器與Android 2.0+。

這一發現使我要解決的問題:在大屏幕上的1像素的垂直線,有時2像素寬。將筆觸寬度設置爲0以繪製獨立於屏幕大小的1像素線。

編輯

獲得更多的經驗與Android之後,我需要糾正我的結論。實際上AndroidManifest.xml的「supports-screens」標籤中有一個屬性「android:anyDensity」。該屬性默認爲true。當它是真的,度量單位是dp,否則它是一個像素。