自定義View-Point類和PointF類
阿新 • • 發佈:2018-12-23
Point 類和 PointF 類:
Point 類是一種最簡單的結構,代表一個“點”,實現了 Parcelable 介面,支援序列化與反序列化。Point 類定義了兩個 int 成員 x 和 y,代表點的 x 座標和 y 座標,圖形座標系與數學中的平面座標系有所不同,x 方向向左為負,向右為正,y 方向向上向負,向下為正,圖形座標系的原點在左上角,這一點要特別注意,所以,預設情況下,當 x、y 為正數時該點會顯示在螢幕之內(取決於螢幕大小),如果為負數就顯示在螢幕之外。在 Android 中,通過相應的 API 是可以對圖形座標系進行平移和旋轉的。
Point 類作為一種最簡單的資料結構,提供的也只有簡單的功能,大概如下:
初始化點的 x、y 座標:
可以為 Point 提供一個(x,y)座標值,也可以將一個 Point 的座標值複製給另一個 Point。改變 x、y 的座標值:Point 類 提供了三個方法用於改變 Point 物件的 x、y 值,分別是:
PointF 類和 Point 類的定義是完全一樣的,最大的不同就是成員變數 x、y 的型別不是 int 而是 float,這也是加了字尾“F”的原因。不過,PointF ᨀ供了一個很貼心的功能,定義了 length()方法計算座標原點(0,0)到(x,y)之間的距離,而且有兩個版本:靜態的 length()和非靜態的length(),程式碼如下:
Point 類是一種最簡單的結構,代表一個“點”,實現了 Parcelable 介面,支援序列化與反序列化。Point 類定義了兩個 int 成員 x 和 y,代表點的 x 座標和 y 座標,圖形座標系與數學中的平面座標系有所不同,x 方向向左為負,向右為正,y 方向向上向負,向下為正,圖形座標系的原點在左上角,這一點要特別注意,所以,預設情況下,當 x、y 為正數時該點會顯示在螢幕之內(取決於螢幕大小),如果為負數就顯示在螢幕之外。在 Android 中,通過相應的 API 是可以對圖形座標系進行平移和旋轉的。
Point 類作為一種最簡單的資料結構,提供的也只有簡單的功能,大概如下:
初始化點的 x、y 座標:
public Point() { }
public Point(int x,int y){
this.x = x;
this.y = y;
}
public Point(Point src) {
this.x = src.x;
this.y = src.y;
}
可以為 Point 提供一個(x,y)座標值,也可以將一個 Point 的座標值複製給另一個 Point。改變 x、y 的座標值:Point 類 提供了三個方法用於改變 Point 物件的 x、y 值,分別是:
public void set( int x, int y){ this.x = x; this.y = y; }
public final void negate () {
x = -x;
y = -y;
}
public final void offset ( int dx, int dy){
x += dx;
y += dy;
}
其中,set()方法簡單粗暴地為 x、y 重新賦值,negate()方法將 x、y 取反,offset()方法則改變x、y 的偏移量,正負符號決定座標偏移的方向。
PointF 類和 Point 類的定義是完全一樣的,最大的不同就是成員變數 x、y 的型別不是 int 而是 float,這也是加了字尾“F”的原因。不過,PointF ᨀ供了一個很貼心的功能,定義了 length()方法計算座標原點(0,0)到(x,y)之間的距離,而且有兩個版本:靜態的 length()和非靜態的length(),程式碼如下:
public final float length() { return length(x, y); } public static float length(float x,float y) { return FloatMath.sqrt(x * x + y * y); }