Android App Material Design 风格下 Toolbar 的渐近消失效果

在 Android App 中,Toolbar 是一个非常重要的组件,它可以用来展示应用程序的名称、菜单、搜索框等功能。在 Material Design 风格下,Toolbar 通常是固定在屏幕顶部,并且会随着用户滚动页面而渐近消失。这种效果可以让用户更好地聚焦在内容上,提升用户体验。

本文将介绍如何在 Android App Material Design 风格下实现 Toolbar 的渐近消失效果,包括使用 CoordinatorLayout 和 AppBarLayout、设置滚动标志位以及使用透明度动画等技术。

使用 CoordinatorLayout 和 AppBarLayout

在 Material Design 风格下,通常使用 CoordinatorLayout 和 AppBarLayout 来实现 Toolbar 的渐近消失效果。CoordinatorLayout 是一个可以协调子视图之间交互的布局,而 AppBarLayout 是一个可以用来展示 Toolbar 的布局。

首先,在布局文件中引入 CoordinatorLayout 和 AppBarLayout,并将 Toolbar 放置在 AppBarLayout 中:

----- ------------- ------------------
------------------------------------------------
    ----------------------------------------------------------
    ---------------------------------------------------
    -----------------------------------
    -------------------------------------

    -------------------------------------------
        -----------------------------------
        -------------------------------------

        ----------------------------------
            -------------------------
            -----------------------------------
            -------------------------------------------
            ---------------------------------------------

    ---------------------------------------------

    ---

--------------------------------------------------

其中,app:layout_scrollFlags 属性用来设置 Toolbar 的滚动标志位。scroll 表示当用户滚动页面时,Toolbar 会随之滚动;enterAlways 表示当用户向下滚动页面时,Toolbar 会立刻显示出来。

接下来,将 RecyclerView 或 NestedScrollView 放置在 CoordinatorLayout 中,并设置 app:layout_behavior 属性为 android.support.design.widget.AppBarLayout$ScrollingViewBehavior:

---------------------------------------
    -------------------------------
    -----------------------------------
    ------------------------------------
    --------------------------------------------------------------

这样,当用户滚动 RecyclerView 或 NestedScrollView 时,AppBarLayout 就会根据滚动情况来控制 Toolbar 的显示和隐藏。

设置滚动标志位

在上一步中,我们已经将 Toolbar 的滚动标志位设置为 scroll 和 enterAlways,这样就可以实现 Toolbar 的渐近消失效果。但是,如果我们想要在特定的情况下禁止 Toolbar 的渐近消失效果,该怎么办呢?

这时,我们可以在代码中动态设置 Toolbar 的滚动标志位。例如,在 RecyclerView 的滚动监听器中,可以根据滚动距离来动态设置 Toolbar 的滚动标志位:

------------------------------------ ------------------------------- -
    ---------
    ------ ---- ----------------------- ------------- --- --- --- --- -
        -- --- - -- -
            -- ------- ------- ------
            -------------------------
        - ---- -
            -- ------- ------- ------
            ------------------------------------------------------------------ -
                    ----------------------------------------------------
        -
    -
---

------- ---- ------------------------- ------ -
    ------------------------- ------ - --------------------------- --------------------------
    -----------------------------
    --------------------------------
-

其中,setToolbarScrollFlags 方法用来设置 Toolbar 的滚动标志位。当 dy 大于 0 时,表示用户向下滚动页面,此时禁止 Toolbar 的渐近消失效果;当 dy 小于等于 0 时,表示用户向上滚动页面,此时启用 Toolbar 的渐近消失效果。

使用透明度动画

除了渐近消失效果外,我们还可以使用透明度动画来让 Toolbar 更加平滑地消失。例如,在 AppBarLayout 的滚动监听器中,可以根据滚动距离来动态设置 Toolbar 的透明度:

------------------------------------------- -------------------------------------- -
    ---------
    ------ ---- ---------------------------- ------------- --- --------------- -
        --- ---------------- - -----------------------------------
        ----- ----- - - - ------- ------------------------ - ------- -----------------
        ------------------------
    -
---

其中,totalScrollRange 表示 AppBarLayout 的总滚动范围,verticalOffset 表示当前滚动距离。根据滚动距离计算出 Toolbar 的透明度,然后使用 setAlpha 方法来设置 Toolbar 的透明度。

示例代码

完整的示例代码如下:

----- ------------- ------------------
------------------------------------------------
    ----------------------------------------------------------
    ---------------------------------------------------
    -----------------------------------
    -------------------------------------

    -------------------------------------------
        -----------------------------------
        -------------------------------------

        ----------------------------------
            -------------------------
            -----------------------------------
            -------------------------------------------
            ---------------------------------------------

    ---------------------------------------------

    ---------------------------------------
        -------------------------------
        -----------------------------------
        ------------------------------------
        --------------------------------------------------------------

--------------------------------------------------
------------------------------------ ------------------------------- -
    ---------
    ------ ---- ----------------------- ------------- --- --- --- --- -
        -- --- - -- -
            -- ------- ------- ------
            -------------------------
        - ---- -
            -- ------- ------- ------
            ------------------------------------------------------------------ -
                    ----------------------------------------------------
        -
    -
---

------------------------------------------- -------------------------------------- -
    ---------
    ------ ---- ---------------------------- ------------- --- --------------- -
        --- ---------------- - -----------------------------------
        ----- ----- - - - ------- ------------------------ - ------- -----------------
        ------------------------
    -
---

------- ---- ------------------------- ------ -
    ------------------------- ------ - --------------------------- --------------------------
    -----------------------------
    --------------------------------
-

总结

本文介绍了在 Android App Material Design 风格下实现 Toolbar 的渐近消失效果的方法,包括使用 CoordinatorLayout 和 AppBarLayout、设置滚动标志位以及使用透明度动画等技术。通过这些技术,我们可以让 Toolbar 更加智能地控制自身的显示和隐藏,提升用户体验。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66399546d3423812e47be444