一、Canvas類android.graphics.Canvas
Canvas類好比手機中的畫紙,我們可以在Canvas上畫圖形或者圖像。一般我們用android來繪畫的時候,需要四個組成部分:
1、位圖:包含像素
2、Canvas畫板:包含繪畫內容,寫入位圖
3、初始圖形:如Rect、Bitmap、text等
4、Paint:用來描述上面初始圖形的顏色和類型等
Canvas類提供了三個構造方法:
Public Canvas();構造一個默認無參的Canvas對象
Public Canvas(Bitmap bitmap);根據一個Bitmap構造一個Canvas對象
Public Canvas(GL gl);根據一個GL來構造一個對象
下面我們來了解一下Canvas類提供的方法:
在Canvas類提供的方法中比較多經常用的是以draw開頭的方法,draw開頭的方法很容易理解就是向畫板中畫圖形,比如可以向Canvas中畫位圖,給圖形填充顏色等。
二、Paint類android.graphics.Paint
Paint類包含有用來畫幾何圖形、文本、位圖的類型和顏色等信息,如果把Canvas類看作是畫板,那我們可以把Paint類看做是畫筆,可以根據需要畫出不同顏色和樣式的圖形、文本等內容。
Paint類有三個構造方法:
Public Paint()構造一個缺省的Paint對象
Public
Paint(int flags);根據指定的flags來構造一個Paint對象,創建之後可以用
setFlags()方法來更改
Public Paint(Paint paint)根據指定的paint對象來構造一個Paint對象
Paint類提供了很多方法來設置和獲取Paint對象的屬性,比如:
public int getColor ()獲得Paint對象的顏色值
public ColorFilter getColorFilter ()獲得顏色過濾器
public float getTextSize ()獲得字體大小數值
public void setStyle (Paint.Style style)設置paint的類型
三 Color類android.graphics.Color
此類 定義了一些方法來創建和轉換顏色值。顏色被表示為封裝的數值,這個數值由四個字節組成,分別是:alpha、red、green、blue,這些值是非自 左乘的,也就是說任何透明性只存儲在alpha部分,而不是在顏色組成部分。每一部分按照如下的順序保存:(alpha<<24)| (red<<16)|
Color類提供了12個常量值來代表不同的顏色值,我們在開發工程中可以直接調用這些常量值來設置我們所要修飾的文本、圖形等對象。
Color類提供了一個無參的構造方法Color()
Color類提供了一些方法來進行顏色值的創建和轉換如下:
其中三個方法是用來返回一個顏色常量值的紅綠藍分色,數值分別在0-255之間,如下:
Public static red(int color);
Public static green(int color);
Public static blue(int color);
其中Public static int rgb(int red,int green,int blue);輸入紅綠藍三色,返回一個RGB顏色值。
下面幾個方法大家可以參考Android API來了解:
Public static int HSVToColor(int alpha,float[] hsv);
Public static int HSVToColor(float[] hsv);
Public static void RGBToHSV(int red,int green,int blue,float[] hsv);
Public static int alpha(int color);
Public static int argb(int alpha,int red,int green,int blue);
Public static colorToHSV(int color,float[] hsv);
Public static parseColor(String colorString);
四.Typeface類android.graphics.Typeface
Typeface類定義字體和字體內在的類型。這個類被用在畫筆Paint設置的時候,比如用textSize,textSkewX和textScale設置來指定text在畫的時候如何來顯示和測量。
Typeface 提供了一些常量值來表示自身的一些屬性,比如BOLD,BOLD_ITALIC,ITALIC等,開發者可以用 defaultFrOPhone SDNtyle(int style)獲得內在的Typeface對象。讀者可以參考詳細的API文檔再這裡就不再贅述了。
下面我們來看一下Typeface的主要方法。
Typeface類沒有構造方法,通常如果一個類沒有構造函數就無法通過構造來生成一個對象實體,此時一般會有特定的靜態方法來取得這個類的實體。Typeface就提供了四個靜態方法間接來得到Typeface實體分別如下:
Public static Typeface create(Typeface family,int style);
此方法返回一個與已經存在的Typeface字形體系相匹配且類型是指定類型的Typeface。如果你想得到一個與已經存在的Typeface字形體系 相類似,但是樣式不一樣的Typeface時可以調用此方法。其中family參數可以為null,如果為空則表示從默認的Typeface字形體系中選 擇。
Public static Typefaxe create(String familyname,int style);
此方法通過給定的字形體系的名稱familyname和指定的類型返回一個Typeface對象。如果給定字形體系的名稱為null,我們可以通過getStyle()方法來獲得返回Typeface對象的真正的屬性。
Public static Typeface createFromAsset(AssetManager mgr,String path);
此方法通過規定的字體數據來返回一個Typeface對象。第一個參數為資源管理器,第二個參數是指定字體類型。
Public static Typeface defaultFrOPhone SDNtyle(int style);此方法返回一個指定類型的Typeface對象
Typeface還提供了另外三個方法:
Public int getStyle();此方法返回Typeface內在的類型屬性
Public final Boolean isBold();如果getStyle()有BOLD位組將返回true
Public final Boolean isItalic();如果getStyle()有ITALIC位組將返回true
五、Path類android.graphics.Path
Path類(一組區域)的描畫,類囊括多種幾何圖形比如直線線段、二次曲線、三次曲線等,
調用Canvas.drawPath()方法可以將Path以所定義的paint的方式來畫到畫板上或者填出圖形,也可以用paint所指定方式來畫圖形。
六、RectF類android.graphics.RectF和Rect類android.graphics.Rect
RectF 這個類包含一個矩形的四個單精度浮點坐標。矩形通過上下左右4個邊的坐標來表示一個矩形。這些坐標值屬性可以被直接訪問,用width()和 height()方法可以獲取矩形的寬和高。注意:大多數方法不會檢查這些坐標分類是否錯誤(也就是left<=right和top& lt;=bottom).
RectF一共有四個構造方法:
RectF()構造一個無參的矩形
RectF(float left,float top,float right,float bottom)構造一個指定了4個參數的矩形
RectF(Rect F r)根據指定的RectF對象來構造一個RectF對象(對象的左邊坐標不變)
RectF(Rect r)根據給定的Rect對象來構造一個RectF對象
RectF提供了很多方法,下面介紹幾個方法:
Public Boolean contain(RectF r);判斷一個矩形是否在此矩形內,如果在這個矩形內或者和這個矩形等價則返回true,同樣類似的方法還有public Boolean contain(float left,float top,float right,float bottom)和public Boolean contain(float x,float y)。
Public void union(float x,float y)更新這個矩形,使它包含矩形自己和(x,y)這個點。
RectF類提供的方法都比較簡單,容易理解,再此就不再一一贅述
Android.graphics.Rect類,這個類同android.graphics.RectF很相似,不同的地方是Rect類的坐標是用整形表示的,而RectF的坐標是用單精度浮點型表示的。這裡大家一定要注意 啊。
七、Point類android.graphics.Point
這個類從字面意思就可以看出它跟點有關系,是點的一個對象類。
這個類有兩個屬性,分別是:X坐標和y坐標。
構造函數有三個:Point(),Point(int x,int y),Point(Point p)
主要方法有:
Public void set(x,y);重新設定一下x,y的坐標
Public final void offset(int dx,int dy);給坐標一個補償值,值可以使正的也可以是負的。
Public final void negate();否定坐標值。
Point類和android.graphics.PointF類似,不同點是前者坐標值的類型是int型,而後者的坐標值是float型。除此之外PointF類多加了幾個方法,比如:
Public final float length();返回(0,0)點到該點的距離。
Public static float length(float x,float y);返回(0,0)點到(x,y)點的距離。