1. 程式人生 > >RectF、Rect ;Matrix;Paint及Canvas,PointF與Point

RectF、Rect ;Matrix;Paint及Canvas,PointF與Point

> RectF、Rect 和Matrix,Paint及Canvas

-- Rect和RectF區別:(矩形)
(1).精度不一樣。Rect是使用int型別作為數值,RectF是使用float型別作為數值。 
(2).兩個型別提供的方法也不是完全一致。
RectF(float left,float top,float right,float bottom)構造一個指定了4個引數的矩形 

-- 自定義View-Point類和PointF類
  序列化與反序列化:重寫了 Parcelable 介面的 writeToParcel()、readFromParcel()等相關方法,雖然 Java 中也有序列化介面 Serializable,但是 Parcelable 的效率更高、效能更好。
  Point 類和 PointF 類:
  Point 類是一種最簡單的結構,代表一個“點”,實現了 Parcelable 介面,支援序列化與反序列化。Point 類定義了兩個 int 成員 x 和 y,代表點的 x 座標和 y 座標,圖形座標系與數學中的平面座標系有所不同,x 方向向左為負,向右為正,y 方向向上向負,向下為正,圖形座標系的原點在左上角,這一點要特別注意,所以,預設情況下,當 x、y 為正數時該點會顯示在螢幕之內(取決於螢幕大小),如果為負數就顯示在螢幕之外。在 Android 中,通過相應的 API 是可以對圖形座標系進行平移和旋轉的。 
  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);
}

- Rect:
equals(Object obj)   (for some reason it as it's own implementation of equals)
exactCenterX()
exactCenterY()
flattenToString()
toShortString()
unflattenFromString(String str)

- RectF:
round(Rect dst)
roundOut(Rect dst)
set(Rect src)