Android ——————刮刮卡效果(二)

本文介绍了如何在Android中实现刮刮卡效果,包括创建GuaGuaKa类以处理刮刮卡的大部分效果,如画布、画笔的初始化,计算刮开面积占比,以及绘制和显示中奖信息。此外,文章还讲解了自定义属性的过程,如在values/attr.xml中定义属性,如文字大小、颜色和内容。在布局文件中使用这些自定义属性,并展示了如何在刮完后通过Toast展示中奖信息。
摘要由CSDN通过智能技术生成

首先我们先创建一个类GuaGuaKa:在这个类里我们完成刮刮卡的大部分效果,创建画布,创建画笔,初始化其中的画笔画布,计算刮开的涂层面积占得百分比,绘制中奖信息,调用中奖信息,这些都在这个类里面。

下面我们看一下代码实现:

public class GuaGuaKa extends View {

    private Paint mOutterPaint;  //定义画笔
    private Path mPath;          //定义路径
    private Canvas mCanvas;      //定义画布
    private Bitmap mBitmap;      //定义图片

    private int mLastX;           // 获取横坐标
    private int mLastY;          // 获取纵坐标

    private Bitmap mOutterBitmap;
    //- - - - - - - - - - - - - -
   // private Bitmap bitmap;

    private String mText;     //定义文本(中奖信息)
    private Paint  mBackPaint;  //定义画笔

    private Rect mTextBound;     //记录刮奖信息的宽和高
    private int mTextSize;
    private  int mTextColor;

    private volatile boolean mComplete = false;    //判断涂层区域是否消除达到阈值 (volatile保证子线程的更新和主线程的可见性)

    /**
     * 刮完涂层满足阈值回调接口
     */
    public interface OnGuaGuaKaCompleteListener
    {
        void complete();
    }
    private OnGuaGuaKaCompleteListener mListener;

    public void setOnGuaGuaKaCompleteListener(OnGuaGuaKaCompleteListener mListener)
    {
        this.mListener = mListener;
    }

    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();

        //设置一下自定义属性的值
        TypedArray a = null;
        try {
            a = context.getTheme().obtainStyledAttributes(attrs,R.styleable.GuaGuaKa,defStyleAttr,0);

            int n = a.getIndexCount();
            for (int i = 0;i<n ;i++)
            {
                int attr = a.getIndex(i);
                switch (attr)
                {
                    case R.styleable.GuaGuaKa_text:
                        mText = a.getString(attr);
                        break;

                    case R.styleable.GuaGuaKa_textColor:
                        mTextColor = a.getColor(attr,0x000000);
                    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值