public class BaseView extends View {
//畫筆
private Paint mPaint;
//路徑
private Path mPath;
//覆寫的方法
public BaseView(Context context, AttributeSet attrs) {
super(context, attrs);
initData();
}
private void initData() {
//執行個體化畫筆
mPaint=new Paint();
//畫筆寬度
mPaint.setStrokeWidth(3);
//不填充
mPaint.setStyle(Paint.Style.STROKE);
//設定畫筆顔色
mPaint.setColor(Color.RED);
//設定抗鋸齒
mPaint.setAntiAlias(true);
//使用Path首先要new一個Path對象
//Path的起點預設為坐标(0,0)
//特别注意:建立全局Path對象,在onDraw()按需求修改,盡量不要在onDraw()方法中new
//因為:若view頻繁重新整理,就會頻繁建立對象,拖慢重新整理的速度
mPath=new Path();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//預設起點(0,0)
//連接配接點到
mPath.lineTo(400,500);
//移動到點(800,200)
mPath.moveTo(800,200);
mPath.lineTo(400,500);
mPath.lineTo(300,100);
//moveTo(800,200)表示已經是新的起點,Path.close()就3點進行閉合
mPath.close();
canvas.drawPath(mPath,mPaint);
}
實作的效果:
2)方法:setLastPoint()
運作結果:
2、關于重置路徑
重置Path的兩個方法:reset() 和 rewind()
方法 | 是否保留原有的資料結構 | 是否保留FillType設定 |
mPath.reset() | 否 | 是 |
mPath.rewind() | 是 | 否 |
資料結構 影響重建的速度, FillType 影響顯示效果。是以我們一般選擇 Path.reset().
3、添加路徑
3.1添加基本圖形
作用:在Path路徑中添加基本圖形,如圓形路徑、圓弧路徑等等
從上面的方法當中我們發現有個 dir 的參數。dir = Direction = 圖形的方向。CW:順時針。CCW:逆時針。舉例:
順時針:
逆時針:
結果:
結果:
結果:
結果:
結果:
3.2添加路徑
作用:合并路徑
具體使用:
結果:
運作結果:
判斷路徑屬性:
1)代替set
2)平移offset
運作結果:
4、布爾操作
作用:兩個路徑Path之間的運算
應用場景:用簡單的圖形通過特定規定合成相對複雜的圖形
異或示例:
運作結果: