[JAVA] Effet d'entraînement Android (vue personnalisée)


Objectif
Indiquez clairement où vous appuyez lorsque vous appuyez sur un bouton ou quelque chose.


Méthode
Pour être honnête, il y a plusieurs choses. Proposition 1. Définissez le comportement lorsque vous appuyez sur XML.    https://qiita.com/ujikawa1026/items/a79d418b70d88d1d69ba Proposition 2. Utilisez une API appelée "ondulation matérielle". Un autre site: https://github.com/balysv/material-ripple


Hypothèses
Je conçois des couleurs, des polices et des tailles avec logique. XML (proposition 1) n'est pas fixe, mais je souhaite le définir librement (proposition 2). Au contraire, il est meilleur que XML car il a ses propres paramètres tels que la couleur d'arrière-plan, la couleur, la police et la taille.


Difficultés

    1. Si la vue cible est Invisibility ou Gone, L'effet d'entraînement (vue) demeure.
  1. Je veux le définir facilement dans une méthode ... → Appelez la vue recherchée par findViewByID à chaque fois ...! ?? (Gênant)
    Solution
    · Vue personnalisée ...!

yourCustomView.java


    //Difficultés 1. Solution
    @Override
    public void setVisibility(int visibility){
        //Cette vue est désactivée lorsque vous appuyez sur ([invisibility]or[GONE])
        //Néanmoins, cela l'empêche de se fixer.
        super.setVisibility(visibility);
        if(getParent() instanceof MaterialRippleLayout){
            ((MaterialRippleLayout) getParent()).setVisibility(visibility);
        }
    }

    //Difficulté 2. Solution
    @Override
    protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
        super.onVisibilityChanged(changedView, visibility);
        switch (visibility){
            //Changer dynamiquement lorsque la vue est visible
            case VISIBLE:MaterialRippleLayout.on(changedView)
                            .rippleColor(Color.GREEN)
                            .rippleAlpha(0.5f)
                            .rippleOverlay(true)
                            .rippleHover(true)
                            .rippleDuration(100)
                            .create();
                break;
            //ne fais rien.
            case INVISIBLE:
                break;
        }
    }

Merci de votre collaboration.

Recommended Posts

Effet d'entraînement Android (vue personnalisée)
Vue Android
[Kotlin / Android] Créer une vue personnalisée
Personnaliser la vue de liste sur Android
Implémenter la représentation ondulatoire dans les images sur Android