[JAVA] Comment "évider" une vue sur Android

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 **.

Tout d'abord, comment dessiner View

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

Comment évider la vue

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

finalement

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

customTarget.gif

Recommended Posts

Comment "évider" une vue sur Android
Comment utiliser OpenCV 4 sur Android et afficher la vue en direct de la caméra
Comment détecter les conflits de microphone sur Android
Personnaliser la vue de liste sur Android
Comment déployer avec heroku
Vue Android
Comment déployer Laravel sur CentOS 7
Comment utiliser Ruby on Rails
Comment déployer Bootstrap sur Rails
Pour exécuter JavaFX sur Docker
Comment utiliser les bio-formats sur Ubuntu 20.04
Comment installer MariaDB 10.4 sur CentOS 8
Comment installer WildFly sur Ubuntu 18.04
[Android] Comment créer un fragment de dialogue
Comment vérifier Java installé sur Mac
Un mémorandum sur l'utilisation d'Eclipse
Comment utiliser binding.pry pour afficher le fichier
Comment utiliser Apache Derby sur Eclipse
Exemple d'affichage des notifications (tête haute) sur Android
[Android] Comment gérer les thèmes sombres
Comment installer Eclipse (Photon) sur votre Mac
Étapes pour publier une application sur Heroku
Comment changer de version de Java sur Mac
Comment installer la beta php8.0 sur CentOS8
[Ruby on Rails] Comment utiliser redirect_to
Comment installer kafkacat sur Amazon Linux2
Comment utiliser ExpandableListView dans Android Studio
Android 11 prendra en charge Reiwa en standard
[Android] Comment convertir une chaîne de caractères en resourceId
Comment installer les pilotes réseau sur Ubuntu autonome
[Android] Comment détecter le changement de volume (= pression sur le bouton de volume)
Parcourir une instance de Tab's View sur Android
Comment enregistrer des images sur Heroku dans S3 sur AWS
Notes sur l'utilisation de chaque règle de JUnit
Comment créer un plug-in natif Unity (version Android)
Remarquez comment restaurer Mysql déployé sur Heroku
Comment installer plusieurs JDK sur Ubuntu 18.04 LTS
[Rails MySQL] Comment réinitialiser la base de données sur heroku
Comment écrire React Native Bridge ~ Version Android ~
Comment créer un environnement Pytorch sur Ubuntu