Animiert Farbe der Statusleiste in DrawerLayout - Material Design

8

Ich schreibe eine einfache App, die eine Material Design-konforme Nav-Schublade implementiert, wie in diesem Stack-Beitrag beschrieben: Ссылка

Das ScrimInsetsFrameLayout funktioniert großartig und alles ist gut, bis ich versuche, die Farbe der Statusleiste programmgesteuert zu ändern. Meine App verwendet die Paletten-API, um die Farbe der Symbolleiste und Statusleiste dynamisch zu ändern.

Ich verwende die Eigenschaftsanimation api , um die Symbolleiste zu animieren, und sie funktioniert groß! aber ich versuche die gleiche animation auf der statusleiste zu machen und es scheint nicht animieren zu wollen. Hier ist ein Beispiel

Hier ist der Code für meinen Animator:

%Vor%

Hinweis: Der gleiche Code verblasst die Symbolleiste, so dass es funktioniert.

Meine Frage ist; Kennt jemand einen Weg, um einen reibungslosen Übergang zu erhalten, wenn Sie DrawerLayout.setStatusBarBackgorundColour() verwenden?

Hinweis: Ich habe die Methode window.setStatusBarColor() der Window-Methode verwendet, die animiert, aber die "transparente Statusleiste" bricht, wenn der NavDrawer eingezogen wird.

    
Spittal 13.01.2015, 00:49
quelle

2 Antworten

3

Wie von adneal's Kommentar zu meiner ursprünglichen Frage mitgeteilt, bestand die Antwort darin, die Ansicht während der Animation ungültig zu machen.

  

DrawerLayout berechnet den obersten Einschub und zeichnet den Hintergrund der Statusleiste selbst. Sie müssen also nur View.invalidate aufrufen, um das Neuzeichnen zu erzwingen, während die Animation aktualisiert wird. @adneal

Ich habe meinen Code zu diesem

aktualisiert %Vor%

Für jeden, der sich fragt, warum das funktioniert hat, fand ich diesen Stapel aufschlussreich: Wenn es notwendig ist, invalidate () in einer Ansicht auszuführen?

    
Spittal 13.01.2015 01:16
quelle
1

Sie können dies leicht wie folgt tun:

1 - Setzen Sie Ihre Statusbarfarbe auf transparent, indem Sie Folgendes verwenden:

%Vor%

2 - Definieren Sie die Ansicht der Anwendung, um den Hintergrund zu ändern:

%Vor%

3 - fügen Sie dann diese Funktion zu Ihrem Projekt hinzu:

%Vor%

4 - und ändern Sie dann die Hintergrundfarbenanimation der Lochanwendung mit der oben beschriebenen Funktion:

%Vor%     
Mahdi Astanei 29.04.2015 10:32
quelle

Tags und Links