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); } }
效果圖