[JAVA] Android-Welleneffekt (benutzerdefinierte Ansicht)


Zweck
Machen Sie deutlich, wo Sie tippen, wenn Sie auf eine Schaltfläche oder etwas anderes tippen.


Methode
Um ehrlich zu sein, gibt es verschiedene Dinge. Vorschlag 1. Definieren Sie das Verhalten beim Tippen in XML.    https://qiita.com/ujikawa1026/items/a79d418b70d88d1d69ba Vorschlag 2. Verwenden Sie eine API namens "Material Ripple". Eine andere Seite: https://github.com/balysv/material-ripple


Annahmen
Ich entwerfe Farben, Schriftarten und Größen mit Logik. XML (Vorschlag 1) ist nicht festgelegt, aber ich möchte es frei einstellen (Vorschlag 2). Es ist vielmehr besser als XML, da es über eigene Einstellungen wie Hintergrundfarbe, Farbe, Schriftart und Größe verfügt.


Schwierigkeiten

    1. Wenn die Zielansicht Unsichtbarkeit oder Weg ist, Der Welligkeitseffekt (Ansicht) bleibt erhalten.
  1. Ich möchte es einfach in einer Methode definieren ... → Rufen Sie jedes Mal die von findViewByID gesuchte Ansicht auf ...! ?? (Problematisch)
    Lösung
    ・ Benutzerdefinierte Ansicht ...!

yourCustomView.java


    //Schwierigkeiten 1. Lösung
    @Override
    public void setVisibility(int visibility){
        //Diese Ansicht ist deaktiviert, wenn Sie auf tippen ([invisibility]or[GONE])
        //Trotzdem wird verhindert, dass es eingestellt wird.
        super.setVisibility(visibility);
        if(getParent() instanceof MaterialRippleLayout){
            ((MaterialRippleLayout) getParent()).setVisibility(visibility);
        }
    }

    //Schwierigkeit 2. Lösung
    @Override
    protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
        super.onVisibilityChanged(changedView, visibility);
        switch (visibility){
            //Dynamisch ändern, wenn die Ansicht sichtbar ist
            case VISIBLE:MaterialRippleLayout.on(changedView)
                            .rippleColor(Color.GREEN)
                            .rippleAlpha(0.5f)
                            .rippleOverlay(true)
                            .rippleHover(true)
                            .rippleDuration(100)
                            .create();
                break;
            //nichts tun.
            case INVISIBLE:
                break;
        }
    }

Danke für Ihre Kooperation.

Recommended Posts

Android-Welleneffekt (benutzerdefinierte Ansicht)
Android-Ansicht
[Kotlin / Android] Erstellen Sie eine benutzerdefinierte Ansicht
Passen Sie die Listenansicht auf Android an
Implementieren Sie die Welligkeitsdarstellung in Bildern auf Android