在做电商类产品时,经常会有一些活动需求,如抽奖,抽奖的一种方式就是刮刮乐,这次的内容是利用重写View的方式实现刮刮乐的效果。
思路:利用Bitmap做刮奖区的蒙版,利用paint将手指触摸过的区域置为透明,即可显示最先draw过的文字或者图片。以下为该View的具体实现:
package com.example.zhangyulong.guajiangtest; 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.os.Handler; import android.os.Message; import android.os.SystemClock; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.Toast; /** * Created by zhangyulong on 16/3/31. */ public class RubblerView extends View { private float TOUCH_TOLERANCE; // 填充距离,使线条更自然,柔和,值越小,越柔和。 // private final int bgColor; // 位图 private Bitmap mBitmap; private Bitmap mCoverBitmap; //覆盖图 刮奖钱的页面 // 画布 private Canvas mCanvas; // 画笔 private Paint mPaint; private Path mPath; private float mX, mY; private Paint mTextPaint; private final int TEXT_SIZE = 60; private String mText; private boolean isDraw = false; private int WIDTH; private int HEIGHT; private int openSize; private Context mContext; private boolean mHasOpen = false; public RubblerView(Context context) { super(context); init(context); } public