Différentes formes de vue peuvent être réalisées en utilisant canvas fourni par l'API niveau 1 d'Android. N'est-ce pas l'usage général tel que créer une vue telle qu'un cercle ou un rectangle ou couper un bitmap? Donc, cette fois, je voudrais vous présenter comment ** évider la vue **.
public class CanvasView extends View {
    private Paint paint = new Paint();
    public CanvasView(Context context) {
        super(context);
    }
    public CanvasView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }
    public CanvasView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    public void draw(Canvas canvas) {
        super.draw(canvas);
        paint.setStyle(Paint.Style.FILL);
        canvas.drawCircle(getRootView().getWidth() / 2, getRootView().getHeight() / 2, 50, paint);
    }
}
 
public class CanvasView extends View {
    private Paint backgroundPaint = new Paint();
    private Paint paint = new Paint();
    public CanvasView(Context context) {
        super(context);
    }
    public CanvasView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }
    public CanvasView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    public void draw(Canvas canvas) {
        super.draw(canvas);
        setLayerType(View.LAYER_TYPE_HARDWARE, null);
        //Dessinez le tout
        backgroundPaint.setColor(ContextCompat.getColor(getContext(), android.R.color.background_dark));
        canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), backgroundPaint);
        //Creuser un cercle de tout l'arrière-plan
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
        canvas.drawCircle(getWidth() / 2, getHeight() / 2, 250, paint);
    }
}
 
J'ai créé une bibliothèque en utilisant la méthode présentée ici. Si vous l'aimez, je vous serais reconnaissant si vous pouviez lui donner une étoile.
https://github.com/TakuSemba/Spotlight

Recommended Posts