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; } } } }