Material Design 中如何实现可拖拽的 Floating Action Button?

阅读时长 9 分钟读完

Material Design 是由 Google 推出的设计语言,它提供了一套丰富的设计组件,使应用程序的设计更加精美和统一。其中,Floating Action Button(FAB)是 Material Design 中非常重要的一个组件,经常被应用在主要操作的位置,用户可以轻松地通过点击 FAB 完成相应的操作。

但是有时候,我们需要让 FAB 具有更多的功能,比如可拖拽、可变色、可伸缩等。本文将介绍如何在 Material Design 中实现可拖拽的 FAB。

实现方式

实现可拖拽的 FAB,需要使用 Android 系统自带的 CoordinatorLayoutBehaviorCoordinatorLayout 代表一个父容器,可以用于布局子 View,并且可以指定 Behavior。而 Behavior 则定义了一个 View 在 CoordinatorLayout 中的行为。

  1. 首先,将需要拖动的 FAB 继承自 FloatingActionButton
-- -------------------- ---- -------
    ----------------------------------------------------------------------
        -------------------------------
        -----------------------------------
        ------------------------------------
        --------------------------------
        -------------------
        --------------------------------------
        -------------------------------------
        -----------------------------------------------------
        ----------------------- --
  1. 然后,创建一个 Behavior 类,我们将 FAB 移动的逻辑放到其中。在这个例子中,我们实现了一个简单的拖拽效果。
-- -------------------- ---- -------
------ ----- -------------------- ------- ----------------------------- -

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

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

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

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

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

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

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

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

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

        ----------- - ----- ------------- - ------
        -----------------
    -
-   
  1. 最后,在 FAB 中声明我们刚刚创建的 Behavior

示例代码

完整的示例代码如下:

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

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

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

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

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

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

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

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

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

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

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

总结

通过使用 CoordinatorLayoutBehavior,我们可以很容易地实现可拖拽的 FAB。但是,这只是一个简单的例子,实际上我们可以使用各种各样的 Behavior,来实现更多有趣的效果。希望这篇文章能够给大家带来一些启发和帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fe830095b1f8cacdd45da0

纠错
反馈