自定义刮刮卡前奏,但是显示不出来
package com.example.asus.learning;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import com.example.asus.learning.Utils.ToastUtil;
import static android.R.attr.action;
/**
* Created by ASUS on 2017/3/25.
*/
public class GuaGuaKa extends View {
private Path mPath;
private Bitmap mBitmap;
private Canvas mCanvas;
private Paint mOutterPaint;
private int mLastX;
private int mLastY;
private int mX;
private int mY;
public GuaGuaKa(Context context) {
this(context, null);
}
public GuaGuaKa(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public GuaGuaKa(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
mPath = new Path();
}
//测量的方法,完成控件的测量工作
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//测量出屏幕的宽和高
int width = getMeasuredWidth();
int height = getMeasuredHeight();
//初始化bitmap
mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
//设置画笔
mOutterPaint = new Paint();
mOutterPaint.setColor(Color.RED);
mOutterPaint.setAntiAlias(true);
mOutterPaint.setDither(true);
mOutterPaint.setStyle(Paint.Style.STROKE);
mOutterPaint.setStrokeJoin(Paint.Join.ROUND);
mOutterPaint.setStrokeCap(Paint.Cap.ROUND);
//设置画笔的宽度
mOutterPaint.setStrokeWidth(20);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawPath();
canvas.drawBitmap(mBitmap, 0, 0, null);
}
private void drawPath() {
mCanvas.drawPath(mPath, mOutterPaint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int acton = event.getAction();
mX = (int) event.getX();
// String tag = "111";
// Log.v(tag,x + "");
mY = (int) event.getY();
switch (action) {
case MotionEvent.ACTION_DOWN:
ToastUtil.showToast("你点击了");
mLastX = mX;
mLastY = mY;
mPath.moveTo(mLastX,mLastY);
break;
case MotionEvent.ACTION_MOVE:
int dx = Math.abs(mX - mLastX);
int dy = Math.abs(mY - mLastY);
if (dx > 3 || dy > 3)
mPath.lineTo(mX, mY);
mLastX = mX;
mLastY = mY;
break;
}
invalidate();
return true;
}
}