package com.example.mohon.retrofitproject;
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.graphics.Path;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.icu.util.Measure;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
/**
* Created by Mohon on 2016/10/23.
*/
public class GuaGuaLei extends View {
private Paint paint;
private Path path;
private Bitmap bgBitmap;
private Bitmap srcBitmap;
private Canvas mCanvas;
public GuaGuaLei(Context context) {
super(context);
}
public GuaGuaLei(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public GuaGuaLei(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private void init(Context context) {
paint = new Paint();
//設置透明
paint.setAlpha(0);
//設置層疊方式 Dst是先畫的圖形,Src是後畫的圖形
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(50);
path = new Path();
//刮刮蕾的背景圖
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
bgBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.alalei, options);
//創建相同大小的遮蓋層
srcBitmap = Bitmap.createBitmap(bgBitmap.getWidth(), bgBitmap.getHeight(), Bitmap.Config.ARGB_8888);
//類似雙緩存的設計,手勢操作都是執行在srcBitmap上
mCanvas = new Canvas(srcBitmap);
mCanvas.drawColor(Color.GRAY);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.reset();
path.moveTo(event.getX(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
path.lineTo(event.getX(), event.getY());
break;
}
mCanvas.drawPath(path, paint);
invalidate();
return true;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(bgBitmap, 0, 0, null);
canvas.drawBitmap(srcBitmap, 0, 0, null);
}
}
刮刮蕾的簡單設計
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.