我为appbarlayout
创建了此行为
https://youtu.be/jr28PNPTDF4
但是我根据recyclerviews
滚动侦听器折叠了搜索栏,所以效率很低,而且确实很滞后,就像您从视频中看到的那样。
我使用这两个动画进行折叠和展开,但是确实很慢。
fun collapseToolbar(v: View) {
ObjectAnimator.ofFloat(v, "translationY", -(70.px).toFloat()).apply {
duration = 200
start()
}
val params = v.layoutParams as FrameLayout.LayoutParams
ValueAnimator.ofInt(0, -(70.px)).apply {
addUpdateListener {
params.bottomMargin = it.animatedValue as Int
v.requestLayout()
}
duration = 200
start()
}
}
fun expandToolbar(v: View) {
ObjectAnimator.ofFloat(v, "translationY", 0F).apply {
duration = 200
start()
}
val params = v.layoutParams as FrameLayout.LayoutParams
ValueAnimator.ofInt(-(70.px), 0).apply {
addUpdateListener {
params.bottomMargin = it.animatedValue as Int
v.requestLayout()
}
duration = 200
start()
}
}
我可以通过scrollflags实现相同的行为吗? 这非常接近,但不适用于我的情况 CoordinatorLayout with multiple snapping points
这是我的XML
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:background="@color/colorPrimary"
app:elevation="0dp"
android:elevation="0dp">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="200dp"
app:layout_scrollFlags="scroll|snap"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="@dimen/app_bar_expanded_title_margin_start">
<LinearLayout
android:id="@+id/expanded_layout"
android:visibility="visible"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginBottom="?attr/actionBarSize"
android:orientation="vertical"></LinearLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="70dp"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:layout_gravity="bottom"
app:layout_collapseMode="pin">
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>