如何创建自定义的折叠工具栏滚动行为

时间:2019-08-22 10:24:35

标签: android android-layout android-collapsingtoolbarlayout

我为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>

0 个答案:

没有答案