package com.example.fw.view; 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.support.annotation.Nullable; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.TextView; import com.example.fwzk1.R; /** * Created by 小薇 on 2018/7/9. */ public class MyViewPager extends android.support.v7.widget.AppCompatTextView{ private Paint mpaint; private Path path; private Bitmap bdbitmap; private Bitmap bdcreatebitmap; private Canvas mcanvas; private Paint textpaint; public MyViewPager(Context context) { super(context); init(); } public MyViewPager(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } public MyViewPager(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { //创建画笔,开始实现view mpaint = new Paint(); //透明度 mpaint.setAlpha(0); //设置填充 mpaint.setStrokeWidth(50); //设置样式 mpaint.setStyle(Paint.Style.STROKE); //去两层绘制交集,显示下层 mpaint.setXfermode(new PorterDuffXfermode((PorterDuff.Mode.DST_IN))); mpaint.setStrokeJoin(Paint.Join.ROUND); mpaint.setStrokeCap(Paint.Cap.ROUND); //设置要刮的路径 path = new Path(); //初始化要覆盖的内容 bdbitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ll); //初始化用来做覆盖 bdcreatebitmap = Bitmap.createBitmap(bdbitmap.getWidth(), bdbitmap.getHeight(), Bitmap.Config.ARGB_8888); //初始化画布 mcanvas = new Canvas(bdcreatebitmap); //初始化画笔,写字 textpaint = new Paint(); textpaint.setColor(Color.WHITE); textpaint.setTextSize(100); textpaint.setStrokeWidth(20); //画布的颜色 mcanvas.drawColor(Color.GRAY); //设置画布上的字 mcanvas.drawText("刮刮看咯",mcanvas.getWidth()/4,mcanvas.getHeight()/2,textpaint); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: //清空画笔 path.reset(); //手指移动 path.moveTo(event.getX(),event.getY()); break; case MotionEvent.ACTION_MOVE: //手指移动 path.lineTo(event.getX(),event.getY()); break; } //模拟刮来效果 mcanvas.drawPath(path,mpaint); //刷新 invalidate(); return true; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //画布 canvas.drawBitmap(bdbitmap,0,0,null); canvas.drawBitmap(bdcreatebitmap,0,0,null); } }
自定义view实现刮刮乐的效果
猜你喜欢
转载自blog.csdn.net/messagefang/article/details/80969453
今日推荐
周排行