package com.marshalchen.common.uimodule.materialanimatedswitch.painter; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import com.marshalchen.common.uimodule.materialanimatedswitch.MaterialAnimatedSwitchState; /** * @author Adrián García Lomas */ public class ShaderPainter implements SwitchInboxPinnedPainter { private Paint maskPaint; private int height; private int width; private Bitmap mask; public ShaderPainter() { maskPaint = new Paint(); maskPaint.setColor(Color.TRANSPARENT); maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); maskPaint.setStyle(Paint.Style.FILL); } @Override public void draw(Canvas canvas) { canvas.drawLine(0, height / 2, width, height / 2, maskPaint); } @Override public void setColor(int color) { //Empty } @Override public int getColor() { return 0; } @Override public void onSizeChanged(int height, int width) { this.height = height; this.width = width; createMask(height, width, 10); } @Override public void setState(MaterialAnimatedSwitchState state) { //Empty } private void createMask(int w, int h, int radius) { if (mask != null) { mask.recycle(); } mask = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); Canvas maskCanvas = new Canvas(mask); maskCanvas.drawCircle(w, h, radius, maskPaint); } }