Appcompat v24.0.0 では、アクティビティが表示された後にシャドウ/エレベーションがレンダリングされます。AppbarLayout
また、 への影の描画にラグが見られやすくなりますAppbarLayout
。
この遅延は、以前の Appcompat ライブラリ バージョンにはありませんでした。
Appcompat v24.0.0とAppcompat v23.4.0の両方を使用してテストしたところ、新しいバージョンでは影の描画がはっきりと見られました。
Appcompat v24.0.0 では、アクティビティが表示された後にシャドウ/エレベーションがレンダリングされます。AppbarLayout
また、 への影の描画にラグが見られやすくなりますAppbarLayout
。
この遅延は、以前の Appcompat ライブラリ バージョンにはありませんでした。
Appcompat v24.0.0とAppcompat v23.4.0の両方を使用してテストしたところ、新しいバージョンでは影の描画がはっきりと見られました。
Chris Banes 氏は次のように述べています。
StateListAnimator は現在、すべての高度処理を所有しています。自分でやりたい場合は、null の StateListAnimator を設定し、必要に応じて setElevation() を呼び出します。
したがって、折りたたみ可能でないAppBarLayout
場合は、これを使用できます。
<android.support.design.widget.AppBarLayout
android:stateListAnimator="@null"
android:elevation="@dimen/design_appbar_elevation">
バグや機能ではないと思います。
AppBarLayout の上昇アニメーションの長さはR.integer.app_bar_elevation_anim_duration
、デフォルトで によって制御されます150
。
アニメーションを削除するには、次の手順を実行するだけです。
<integer name="app_bar_elevation_anim_duration" tools:override="true">0</integer>
@Vipul Asri から良い回答が得られましたが、appbar_always_elevated.xmlはanimator-v21フォルダーではなくanimator-v11フォルダーに配置する必要があります。AppbarLayoutを持つレイアウトは、v21 フォルダーに配置する必要があります。
要約すると、構造は次のようになります。
-res
-animator-v11
-appbar_always_elevated.xml
-layout
-a_layout_wich_has_the_appbarlayout.xml
-layout-v21
-a_layout_wich_has_the_appbarlayout.xml
2 つのa_layout_wich_has_the_appbarlayout.xmlファイルがあることに注意してください( Android:stateListAnimator プロパティを含む v21 フォルダー内の AppbarLayout と、このプロパティを含まない非v21フォルダー内の AppbarLayout )。
見てみましょう:
v21以外のレイアウト フォルダー:
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
そして、v21レイアウト フォルダー:
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stateListAnimator="@animator/appbar_always_elevated">
編集
AppbarLayoutをTabLayoutと一緒に使用している場合、影は即座に描画されますが、この場合に android:stateListAnimator プロパティを使用している場合、影の表示が少し異なることに注意してください。