直接上代码:
XfermodeView.java
/*** Created by 57 on 2016-4-21.*/ public class XfermodeView extends View{private Bitmap mBgBitmap,mFgBitmap;private Paint mPaint;private Canvas mCanvas;private Path mPath; public XfermodeView(Context context) {super(context);init();}public XfermodeView(Context context, AttributeSet attrs) {super(context, attrs);init();} public XfermodeView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();} @Overrideprotected void onDraw(Canvas canvas) { canvas.drawBitmap(mBgBitmap,0,0,null);canvas.drawBitmap(mFgBitmap,0,0,null);}private void init() {mPaint = new Paint();mPaint.setAlpha(0);mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));mPaint.setStyle(Paint.Style.STROKE);mPaint.setStrokeJoin(Paint.Join.ROUND);mPaint.setStrokeWidth(50);mPaint.setStrokeCap(Paint.Cap.ROUND);mPath = new Path();mBgBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test5);mFgBitmap = Bitmap.createBitmap(mBgBitmap.getWidth(),mBgBitmap.getHeight(),Bitmap.Config.ARGB_8888);mCanvas = new Canvas(mFgBitmap);mCanvas.drawColor(Color.GRAY); } @Overridepublic boolean onTouchEvent(MotionEvent event) {switch(event.getAction()){ case MotionEvent.ACTION_DOWN: mPath.reset(); mPath.moveTo(event.getX(),event.getY()); break; case MotionEvent.ACTION_MOVE: mPath.lineTo(event.getX(),event.getY()); break;}mCanvas.drawPath(mPath,mPaint);invalidate();return true;} }Xfermode有三个子类 :
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。