自定義view基礎練習

age cgg.com.simplecustomview.views;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;

import cgg.com.simplecustomview.R;

/**
 * author: Wanderer
 * date:   2018/1/7 20:43
 * email:  none
 * <p>
 * 一般情況下寫三個構造方法 讓其最終調用有三個參數的構造
 * 自定義控件重寫的方法:
 * 1,
 */

public class MyCustomView extends View {

    private Paint paint;
    private Bitmap bitmap;

    // 供代碼創建實例
    public MyCustomView(Context context) {
        this(context, null);
    }

    // 供XML佈局文件是創建view 有屬性參數
    public MyCustomView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    // 加了個樣式
    public MyCustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        // 實例化畫筆
        paint = new Paint();
        // 設置畫筆樣式
        paint.setStyle(Paint.Style.STROKE);
        // 設置畫筆的顏色
        paint.setColor(Color.RED);

        // 解碼圖片
        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.cosplay02);
        // 修改圖pain大小
        /**createScaledBitmap:
         * src 圖片
         * dstWidth 寬
         * dstHeight 高
         * filte 是否過濾
         */
        bitmap = Bitmap.createScaledBitmap(bitmap, 100, 100, true);
    }

    /**
     * canvas:畫布
     * drawCircle:參數註釋
     * float cx,   -->圓心的左邊距
     * float cy,   -->圓心的上邊距
     * float radius, ---> 圈圈的半徑
     * Paint paint    ---> 畫筆對象
     * <p>
     * drawRect:繪製矩形
     * left和right:矩形左邊和右邊距離父控件的左邊邊距
     * top和bottom:矩形上邊和下邊距離父控件的上邊邊距
     * Paint paint
     */
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 畫個圈圈
        canvas.drawCircle(60, 50, 50, paint);

        // 畫個矩形
        canvas.drawRect(10, 110, 100, 160, paint);

        // 畫個圖像
        canvas.drawBitmap(bitmap,10,180,null);
    }
}
效果圖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章