Android刮刮卡效果


package cn.fly.refreshlayout.demo.ui.activity;

import android.app.Activity;
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.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;

/**
 * Created by Fly0116 on 2016/4/27 0027.
 */
public class GuaGuaCardActivity extends Activity{
        int screenWidth = 0;
        int screenHeight = 0;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            DisplayMetrics dm  = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);
            screenWidth = dm.widthPixels;
            screenHeight = dm.heightPixels;

            setContentView(new GuaGuaKa(this));
        }
        class GuaGuaKa extends View {
            private Canvas mCanvas = null;
            private Path mPath = null;
            private Paint mPaint = null;
            private Bitmap bitmap = null;
            public GuaGuaKa(Context context) {
                super(context);
                init(context);
            }

            private void init(Context context) {
                setBackground();

                mPath = new Path();
                bitmap = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.ARGB_8888);
                mPaint = new Paint();
                mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
                mPaint.setAntiAlias(true);
                mPaint.setDither(true);
                mPaint.setStyle(Paint.Style.STROKE);
                mPaint.setStrokeWidth(10);
                mPaint.setStrokeCap(Paint.Cap.BUTT.ROUND);
                mPaint.setStrokeJoin(Paint.Join.ROUND);
                mPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
                mPaint.setAlpha(0);

                mCanvas = new Canvas(bitmap);
                mCanvas.drawColor(Color.GRAY);
            }

            private void setBackground() {
                Paint paint = new Paint();
                Bitmap bitmap = Bitmap.createBitmap(screenWidth,screenHeight, Bitmap.Config.ARGB_8888);
                paint.setTextSize(30);
                paint.setColor(Color.BLACK);
                paint.setFlags(Paint.ANTI_ALIAS_FLAG);
                paint.setAntiAlias(true);

                Canvas canvas = new Canvas(bitmap);
                canvas.drawColor(Color.WHITE);
                canvas.drawText("谢谢惠顾", 100, 100, paint);
                canvas.drawText("再来10", 100, 250, paint);
                setBackgroundDrawable(new BitmapDrawable(getResources(), bitmap));

            }

            @Override
            protected void onDraw(Canvas canvas) {
                super.onDraw(canvas);
                mCanvas.drawPath(mPath, mPaint);
                canvas.drawBitmap(bitmap, 0, 0, null);
            }
            int x = 0;
            int y = 0;
            @Override
            public boolean onTouchEvent(MotionEvent event) {
                int action = event.getAction();
                int currX = (int) event.getX();
                int currY = (int) event.getY();
                switch(action){
                    case MotionEvent.ACTION_DOWN:{
                        mPath.reset();
                        x = currX;
                        y = currY;
                        mPath.moveTo(x, y);
                    }break;
                    case MotionEvent.ACTION_MOVE:{
                        mPath.quadTo(x, y, currX, currY);
                        x = currX;
                        y = currY;
                        postInvalidate();
                    }break;
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_CANCEL:{
                        mPath.reset();
                    }break;
                }
                return true;
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值