Android 開發之自定義控制元件開發-01
阿新 • • 發佈:2018-11-26
最近一直在忙於公司的專案,因為要去現場測試正式使用,專案不大但是經手了三個人,到我這裡只能去填坑了,不說這個了,說一下今天得主題,自定義控制元件之基本圖形繪製。
我們平時畫圖需要兩種工具:紙和筆。在Android中 Paint 就是畫筆,而Canvas類就是紙,在這裡叫做畫布。
所以,凡是跟畫筆有關的設定,比如畫筆的大小、粗細、畫筆顏色、透明度、字型樣式等,都在Paint類裡設定,同光;凡是要畫出成品的東西,比如圓形、矩形、文字等,都要呼叫Canvas裡的函式生成。
下面我們自定義一個控制元件來說明一下:
public class BasisView extends View { public BasisView(Context context) { super(context); } public BasisView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public BasisView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); /** 建立一個畫筆 */ Paint paint= new Paint(); /** 設定畫筆顏色 */ paint.setColor(Color.RED); /** 設定填充樣式 */ paint.setStyle(Paint.Style.STROKE); /** 設定畫筆寬度 */ paint.setStrokeWidth(50); /** 畫圓 */ canvas.drawCircle(190,200,150,paint); } }
程式碼很簡單,首先寫一個類派生自View 。 派生的View 表示當前是一個自定義控制元件,類似Button、TextView這些控制元件都是派生自View的。如果我們想像LinearLayout、RelativeLayout這樣生成一個容器,則需要派生ViewGroup。這個我們以後再說。
其次,重寫onDraw(Canvas canvas)函式。可以看到,在該函式中,入參是一個Canvas 對應,也就是當前控制元件的畫布,所以我們只要呼叫Canvas ,的繪製函式,效果就可以直接顯示在空間上了。
在onDraw (Canvas canvas) 函式中,我們設定了畫筆的基本屬性。
/** 建立一個畫筆 */
Paint paint= new Paint();
/** 設定畫筆顏色 */
paint.setColor(Color.RED);
/** 設定填充樣式 */
paint.setStyle(Paint.Style.STROKE);
/** 設定畫筆寬度 */
paint.setStrokeWidth(50);
然後我們通過 canvas.drawCircle繪製出圓形和它的位置
/** x= 180, y=200 半徑=150 畫筆=paint */ canvas.drawCircle(190,200,150,paint);
就這樣一個基礎的圖形,圓就畫出來了