首先,先認識一下android的座標系統,自定義view的時候需要非常清楚座標系的正負方向,要知道android系統中的座標方向和數學中的座標系方向是不一樣的,android中的螢幕座標系如下圖所示:
android的螢幕座標係以螢幕左上角為原地(0,0),x軸和y軸的正方向分別為向右和向下。
這裡也說明一下getx/gety和getrawx/getrawy的區別:
getx/gety:返回相當於當前view左上角的x和y座標;
getrawx/getrawy:返回相對於手機螢幕左上角的x和y座標。
android中的角度座標系方向對自定義view也是很重要的,比如drawarc的時候如果不清楚角度座標的正負方向豈不是很尷尬!android系統中角度座標系和數學中角度座標系中同樣是不一樣的,android角度座標系如下圖所示:
如上,android中角度座標係以順時針方向為角度增大方向,原點豎直向下為90度角,原點豎直向上為270度角,這幾點區別於傳統數學中的角度座標系。
這裡順便提醒一下,當使用math類的三角函式或反三角函式時,如math.sin()正弦函式,需要特別注意傳入的引數是乙個弧度而不是角度,所以在**中使用三角函式或反三角函式時一定要先把角度換算成弧度,角度和弧度的換算公式如下:
弧度 = 角度 * π / 180°
角度 = 弧度 * 180° / π
下面**顯示了如何獲取sin30°的值:
double rad = 30 * math.pi / 180;
double value = math.sin(rad);
關於android座標系的介紹就先到這裡了,明確座標系的方向是非常重要的,在自定義view的過程中難免會碰到對座標的處理,只有找準方向了,才能順利進行下一步操作。
下一節將介紹android中螢幕尺寸資訊以及單位的轉換。
Android 自定義View 一
android的ui介面都是由view和viewgroup及其派生類組合而成的。其中,view是所有ui元件的基類,而viewgroup是容納這些元件的容器,其本身也是從view派生出來的。androidui介面的一般結構可參見下面的示意圖 可見,作為容器的viewgroup可以包含作為葉子節點的v...
android 自定義view 一
android自定義控制項分為兩類,一類是繼承view,一類是繼承viewgroup。由於直接繼承viewgroup是在子view的基礎上進行測量和定位的。自定義view大體上可以分類三類 接下來分析如何做,我們先看整體 public class customerrunline extends vi...
Android自定義View 一 View的測量
想要讓系統繪製出你所需要的圖形,就必須告訴系統view的大小,所以,在繪製view時,先實現view的onmesure 方法。在測量view之前,要先了解measurespec這個類,measurespec物件中包含了測量的模式和測量的大小 measurespec.exactly 精確模式 當我們將...