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);
}
}
刮刮蕾的简单设计
最新推荐文章于 2024-07-25 00:26:26 发布