1. 程式人生 > >Android 開發之自定義控制元件開發-01

Android 開發之自定義控制元件開發-01

最近一直在忙於公司的專案,因為要去現場測試正式使用,專案不大但是經手了三個人,到我這裡只能去填坑了,不說這個了,說一下今天得主題,自定義控制元件之基本圖形繪製。

我們平時畫圖需要兩種工具:紙和筆。在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);

就這樣一個基礎的圖形,圓就畫出來了