Android自定義View常用整理

1.Canvas常用操作

操作類型 相關API 備註
基礎方法 getDensity, getWidth, getHeight,getDrawFilter,isHardwareAccelerated(API 11),getMaximumBitmapWidth,getMaximumBitmapHeight,getDensity,quickReject,isOpaque,setBitmap,setDrawFilter
繪製顏色 drawColor, drawRGB, drawARGB,drawPaint 使用單一顏色填充畫布
繪製基本形狀 drawPoint, drawPoints, drawLine, drawLines, drawRect, drawRoundRect, drawOval, drawCircle, drawArc 依次爲 點、線、矩形、圓角矩形、橢圓、圓、圓弧
繪製圖片 drawBitmap, drawPicture 繪製位圖和圖片
繪製文本 drawText, drawPosText, drawTextOnPath 依次爲 繪製文字、繪製文字時指定每個文字位置、根據路徑繪製文字
繪製路徑 drawPath 繪製路徑,繪製貝塞爾曲線時也需要用到該函數
頂點操作 drawVertices, drawBitmapMesh 通過對頂點操作可以使圖像形變,drawVertices直接對畫布作用、 drawBitmapMesh只對繪製的Bitmap作用
畫布剪裁 clipPath, clipRect, clipRegion,getClipBounds 畫布剪裁相關方法
畫布快照 save, restore, saveLayer, saveLayerXxx, restoreToCount, getSaveCount 依次爲 保存當前狀態、 回滾到上一次保存的狀態、 保存圖層狀態、 回滾到指定狀態、 獲取保存次數
畫布變換 translate, scale, rotate, skew 依次爲 位移、縮放、 旋轉、錯切
Matrix(矩陣) getMatrix, setMatrix, concat 實際畫布的位移,縮放等操作的都是圖像矩陣Matrix,只不過Matrix比較難以理解和使用,故封裝了一些常用的方法。

官網詳細文檔

2.Path常用操作

作用 相關方法 備註
移動起點 moveTo 移動下一次操作的起點位置
設置終點 setLastPoint 重置當前path中最後一個點位置,如果在繪製之前調用,效果和moveTo相同
連接直線 lineTo 添加上一個點到當前點之間的直線到Path
閉合路徑 close 連接第一個點連接到最後一個點,形成一個閉合區域
添加內容 addRect, addRoundRect, addOval, addCircle, addPath, addArc, arcTo 添加(矩形, 圓角矩形, 橢圓, 圓, 路徑, 圓弧) 到當前Path (注意addArc和arcTo的區別)
是否爲空 isEmpty 判斷Path是否爲空
是否爲矩形 isRect 判斷path是否是一個矩形
替換路徑 set 用新的路徑替換到當前路徑所有內容
偏移路徑 offset 對當前路徑之前的操作進行偏移(不會影響之後的操作)
貝塞爾曲線 quadTo, cubicTo 分別爲二次和三次貝塞爾曲線的方法
rXxx方法 rMoveTo, rLineTo, rQuadTo, rCubicTo 不帶r的方法是基於原點的座標系(偏移量), rXxx方法是基於當前點座標系(偏移量)
填充模式 setFillType, getFillType, isInverseFillType, toggleInverseFillType 設置,獲取,判斷和切換填充模式
提示方法 incReserve 提示Path還有多少個點等待加入**(這個方法貌似會讓Path優化存儲結構)**
布爾操作(API19) op 對兩個Path進行布爾運算(即取交集、並集等操作)
計算邊界 computeBounds 計算Path的邊界
重置路徑 reset, rewind 清除Path中的內容
reset不保留內部數據結構,但會保留FillType.
rewind會保留內部的數據結構,但不保留FillType
矩陣操作 transform 矩陣變換

官方文檔

3.PathMeasure常用操作

顧名思義,PathMeasure是一個用來測量Path的類,主要有以下方法:

構造方法

方法名 釋義
PathMeasure() 創建一個空的PathMeasure
PathMeasure(Path path, boolean forceClosed) 創建 PathMeasure 並關聯一個指定的Path(Path需要已經創建完成)。

公共方法

返回值 方法名 釋義
void setPath(Path path, boolean forceClosed) 關聯一個Path
boolean isClosed() 是否閉合
float getLength() 獲取Path的長度
boolean nextContour() 跳轉到下一個輪廓
boolean getSegment(float startD, float stopD, Path dst, boolean startWithMoveTo) 截取片段
boolean getPosTan(float distance, float[] pos, float[] tan) 獲取指定長度的位置座標及該點切線值
boolean getMatrix(float distance, Matrix matrix, int flags) 獲取指定長度的位置座標及該點Matrix

官方文檔

4.Matrix常用操作

方法類別 相關API 摘要
基本方法 equals hashCode toString toShortString 比較、 獲取哈希值、 轉換爲字符串
數值操作 set reset setValues getValues 設置、 重置、 設置數值、 獲取數值
數值計算 mapPoints mapRadius mapRect mapVectors 計算變換後的數值
設置(set) setConcat setRotate setScale setSkew setTranslate 設置變換
前乘(pre) preConcat preRotate preScale preSkew preTranslate 前乘變換
後乘(post) postConcat postRotate postScale postSkew postTranslate 後乘變換
特殊方法 setPolyToPoly setRectToRect rectStaysRect setSinCos 一些特殊操作
矩陣相關 invert isAffine(API21) isIdentity 求逆矩陣、 是否爲仿射矩陣、 是否爲單位矩陣 …

官方文檔


api詳細使用:

https://hencoder.com/tag/hui-zhi/

https://github.com/GcsSloop/AndroidNote

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章