AppBarLayout Änderungen der Höhe werden bei appCompat v24.0.0 verzögert

8

In Appcompat v24.0.0 bewirkt das Rendern von Schatten / Höhe auf AppbarLayout , nachdem Aktivität sichtbar ist. Und eine Verzögerung kann leicht in der Schattenzeichnung zu AppbarLayout gesehen werden.

Und diese Verzögerung war in der vorherigen Version der AppCompat-Bibliothek nicht vorhanden.

Getestet mit Appcompat v24.0.0 und Appcompat v23.4.0 , Schattenzeichnung, die in der neuen Version deutlich zu sehen ist.

    
Vipul Asri 22.06.2016, 06:34
quelle

4 Antworten

18

Dies ist ein Fehler in Appcompat v24.0.0 .

  

Referenzen: Ссылка

Um die Verzögerung in elevation drawing zu minimieren, setze die Dauer auf 1ms in deinem eigenen StateListAnimator und wende es auf AppbarLayout an.

appbar_always_elevated.xml im Ordner animator-v21 im Verzeichnis res .

%Vor%

In AppbarLayout:

%Vor%     
Vipul Asri 23.06.2016, 14:59
quelle
10

Chris Banes hat hier gesagt:

  

Der StateListAnimator besitzt jetzt die gesamte Höhenbehandlung. Wenn Sie es selbst tun möchten, setzen Sie einen Null StateListAnimator und rufen Sie setElevation () auf, wie Sie möchten.

Wenn Ihr AppBarLayout nicht zusammenklappbar ist, können Sie Folgendes verwenden:

%Vor%     
Eugen Pechanec 05.08.2016 00:23
quelle
7

Ich denke, es ist kein Fehler, ein Feature.

Die Dauer der Anhebungsanimation von AppBarLayout wird von R.integer.app_bar_elevation_anim_duration die standardmäßig 150 ist.

Um die Animation zu entfernen, tun Sie Folgendes und das ist es:

<integer name="app_bar_elevation_anim_duration" tools:override="true">0</integer>

    
Yoonjae Yoo 14.12.2016 08:13
quelle
0

@Vipul Asri hat uns eine gute Antwort gegeben, aber die appbar_always_elevated.xml sollte in animator-v11 anstatt animator-v21 -Ordner. Das Layout mit AppbarLayout sollte in einem v21-Ordner enthalten sein.

Zusammenfassend ist die Struktur wie folgt:

%Vor%

Beachten Sie, dass es zwei Dateien a_layout_wich_has_the_appbarlayout.xml ( AppbarLayout im Ordner v21 mit der Eigenschaft android: stateListAnimator und nicht ) gibt v21 Ordner ohne diese Eigenschaft).

Sieh es dir an:

In einem nicht v21 Layoutordner:

%Vor%

Und im v21 Layout-Ordner:

%Vor%

BEARBEITEN

Wenn Sie AppbarLayout mit einem TabLayout verwenden, wird der Schatten seltsamerweise sofort gezeichnet. Beachten Sie jedoch, dass bei Verwendung der Eigenschaft android: stateListAnimator dieser Fall verwendet wird , die Schattenansicht ist ein bisschen anders.

    
Filipe de Lima Brito 10.09.2016 00:52
quelle