自定义刮刮卡前奏,但是显示不出来

FlyKingMiss 2017-03-26 02:18:02
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;
}
}
...全文
100 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧