2016-04-11 17 views
3

Ich habe ein Layout basierend auf Ansichten (keine Fragmente, eine Aktivität) und animiere zwischen verschiedenen Zuständen. Für eine bessere Laufruhe benutze ich zwei Symbolleisten und überbleiche sie.Gesperrte Ansichten zurücksetzen

Das Problem ist, dass, wenn ich die Navigationsschaltfläche einer Symbolleiste drücken und die Überblendanimation starten, die Navigationsschaltfläche nicht den Zustand der Presse (wahrscheinlich aufgrund der Animation) wiederherstellen, was dazu führt, dass der Selektor nicht verschwindet ... Wenn ich nun diese Werkzeugleiste wieder anzeige, sieht die Navigationsschaltfläche gedrückt aus (die Ripple-Zeichen sind weiterhin sichtbar).

Kann ich die Ripple-Animation manuell löschen?

Was ich versucht

ich die Symbolleiste Navigationsansicht erhalten wie folgt: Get Toolbar's navigation icon view referrence

  1. Ich habe versucht, die Animation der Ansicht gelöscht werden: Durch toolbarNavigationView.clearAnimation()
  2. Ich versuchte, die ziehbar mit ViewCompat.jumpDrawablesToCurrentState(toolbarNavigationView); Zurücksetzen
  3. Ich habe versucht, dies in der Symbolleiste, um sicherzustellen, dass die Layou t legte sich wie folgt:

    toolbar.post(new Runnable() 
    { 
        @Override 
        public void run() 
        { 
         ViewCompat.jumpDrawablesToCurrentState(toolbarNavigationView); 
        } 
    }); 
    

Antwort

0

Versuchen Sie, die Animation zu erhalten, und setzen Sie es, wie folgt aus:

Animation anim = yourView.getAnimation(); 
      if (anim != null) { 
       yourView.reset(); 
      } 
      yourView.clearAnimation(); 
0

Dieser Hack funktioniert zum Löschen des Touch-Animation einer Ansicht mit android:background="?attr/selectableItemBackground" (getestet an API 24, Support-Bibliothek 26.0.0):

view.setVisibility(View.INVISIBLE); 
view.setVisibility(View.VISIBLE);