Material Design 中使用 CoordinatorLayout 与 CollapsingToolbarLayout 的效果

Material Design 是 Google 推出的一种设计语言,旨在为移动设备、桌面应用和 Web 应用提供一致的视觉和交互效果。其中,CoordinatorLayout 和 CollapsingToolbarLayout 是 Material Design 中常用的控件,能够让应用有复杂和新颖的设计效果。

什么是 CoordinatorLayout?

CoordinatorLayout 是 Android 设计库中的一个布局控件,用于协调组件间的交互。它允许组件之间进行交互,并提供一种简单方法来处理诸如响应嵌套滚动、视图之间的交互等行为。

在 CoordinatorLayout 中,可以使用多个子 View(称为 Behavior),每个 Behavior 都能够控制自己的触摸事件、滚动事件、布局大小等特性。这样,就可以将一个组件的行为与其他组件协调起来。

什么是 CollapsingToolbarLayout?

CollapsingToolbarLayout 是一个由 Google 提供的布局控件,它是 Toolbar 的一个扩展,提供了一个可收缩的 Toolbar。当滚动时,CollapsingToolbarLayout 可以隐藏或显示 Toolbar,可以按照需要进行背景图和标题的消失或缩小。

与普通的 Toolbar 不同,CollapsingToolbarLayout 拥有一个可折叠的区域,称为折叠区。折叠区域可以放置图片、文本等元素,与 Toolbar 结合起来,可以实现非常优美的 UI 设计。

如何使用 CoordinatorLayout 和 CollapsingToolbarLayout?

为了演示如何使用 CoordinatorLayout 和 CollapsingToolbarLayout 来实现复杂效果,假设我们要实现一个带有滚动列表的页面,并在顶部放置一张图片和一段描述文字。当向上滚动页面时,图片和描述文字逐渐消失,直到完全隐藏,同时顶部的 Toolbar 变得更加紧密,标题变为应用名。

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

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

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

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

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

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

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

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

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

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

在代码中,我们使用了 CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout 和 RecyclerView 四个控件。其中,RecyclerView 模拟了一个带有滚动的列表。AppBarLayout、CollapsingToolbarLayout 和 Toolbar 组成了顶部的 ToolBar 区域,ImageView 和 TextView 则是放在 CollapsingToolbarLayout 中的折叠区域内。

其中,CollapsingToolbarLayout 的 layout_scrollFlags 属性设置了两个值,分别是 scroll 和 exitUntilCollapsed。scroll 表示当列表滚动时,CollapsingToolbarLayout 会跟随滚动并且逐渐消失,exitUntilCollapsed 表示当 Toolbar 完全收缩时,折叠区域至少会保留一个像素的高度。

在 ImageView 和 TextView 中,layout_collapseMode 属性分别设置为 parallax 和 pin,parallax 表示在滚动时,ImageView 会产生一些视觉上的错觉,而 TextView 会在 Toolbar 完全收缩时固定在顶部。

在 CollapsingToolbarLayout 中使用 app:srcCompat 属性来引入背景图片,这里使用了一张名为 header 的示例图片。

总结

通过本文的讲解,我们学会了如何使用 CoordinatorLayout 和 CollapsingToolbarLayout 实现复杂的 UI 效果。这种方法可以让应用更加生动、有趣,强烈推荐给前端开发者学习掌握。

完整的实例代码可访问 Github 链接:https://github.com/Felix811009/MaterialDesignDemo。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/649d2c3848841e98949e66fe


猜你喜欢

  • 基于 Enzyme 实现 React 的渲染模板测试

    React 已经成为现代 Web 开发中使用最广泛的 JavaScript 库之一,而且随着 React 的不断演进和发展,编写高质量的 React 组件已经成为现代 Web 开发领域中不可避免的任务...

    1 年前
  • 用 Headless CMS 实现的智能自动化流程分享

    随着互联网时代的到来,前端开发变得越来越重要。对于前端开发人员而言,要想实现智能化的自动化流程,Headless CMS 是一个必不可少的工具。在这篇文章中,我们将探讨如何使用 Headless CM...

    1 年前
  • PM2 使用心得

    简介 PM2 是一个强大的 Node.js 进程管理器和负载均衡工具。它具有很多功能,比如自动重启、开箱即用的负载均衡、内存监控、日志管理等。 本文将介绍 PM2 的一些常用功能及使用心得,帮助读者更...

    1 年前
  • 使用 TypeScript 将日志记录集成到你的 React 应用程序中

    在开发应用程序时,日志记录是重要的一部分,它不仅可以帮助我们排查问题,也可以通过分析日志来优化程序性能。使用 TypeScript 将日志记录集成到 React 应用程序中,可以更好地维护和管理应用程...

    1 年前
  • 通过 Webpack 简化 Web 开发流程

    在现代 Web 开发中,随着前端技术的不断发展,越来越多的前端工具被应用于项目中。其中,WebPack 是一个用于打包应用程序的工具,通过提供静态资源打包、JS 代码分割、代码压缩等多种功能,可以大大...

    1 年前
  • 如何使用 Jest 框架测试一个 React 的高阶组件

    在前端开发中,单元测试是一个非常重要的环节,它可以保证代码的质量,并且能够帮助我们发现问题。Jest 是 Facebook 推出的一款 JavaScript 测试框架,它简单易用,支持快照测试和测试覆...

    1 年前
  • 如何使用 ARIA 标准完善无障碍用户体验

    随着Web技术的不断发展,越来越多的人开始使用互联网来获取信息、进行交流和购物等行为。然而,仍然有很多人受到视觉、听觉、认知和身体等方面的障碍,这些障碍导致他们难以访问网站并获取所需信息。

    1 年前
  • 使用 ESLint 解析器严格化 JavaScript 开发的规范

    使用 ESLint 解析器严格化 JavaScript 开发的规范 在前端开发的过程中,代码的规范性和可读性是非常重要的。使用 ESLint 解析器可以帮助我们实现对代码质量的控制和提升,让我们的代码...

    1 年前
  • PWA 应用中的多语言适配方法与实践

    作为一款跨平台,可离线访问的 web 应用,PWA 现在被越来越多的开发者所使用。在开发 PWA 应用的过程中,本地化的问题也逐渐得到了更多的关注。本文将介绍在 PWA 应用中实现多语言适配的方法和实...

    1 年前
  • Tailwind CSS 实战技巧:如何实现页面滚动效果?

    在前端开发中,滚动效果是非常常见且重要的一种交互方式。而使用 Tailwind CSS,可以让页面的滚动效果实现起来更加方便和简单。本文将介绍使用 Tailwind CSS 实现页面滚动效果的技巧和方...

    1 年前
  • Material Design 风格下实现循环进度条的方法

    在现代 Web 开发中,Material Design 已经成为一种非常流行的设计风格,特别是在移动端应用和响应式网站中。不令人惊讶的是,越来越多的网站开始体验 Material Design 的视觉...

    1 年前
  • Redux 和 Context API 的区别和使用场景

    引言 在前端开发中,传递数据是非常重要的,而 React 是一个高性能 UI 框架,在它的生态系统中 Redux 和 Context API 都是比较流行的状态管理工具,但是不同场景下它们的使用方法和...

    1 年前
  • React Native 中如何实现下拉刷新和上拉加载更多

    React Native 中实现下拉刷新和上拉加载更多可以让我们的应用更加流畅,并提高用户体验。本文将详细介绍如何通过React Native来实现这两种操作。 1. 引入组件 首先,我们需要在Rea...

    1 年前
  • 在 CSS Grid 中使用 “auto-fit” 和 “auto-fill” 自适应布局

    CSS Grid 是一个非常强大的布局模块,可以帮助我们轻松处理复杂的页面布局。其中,使用 auto-fit 和 auto-fill 可以实现自适应的布局效果,让布局更加灵活。

    1 年前
  • Serverless 实现 WebSocket 的最佳实践详解

    随着互联网应用的不断发展,WebSocket 作为一种轻量级、高效、实时性好的双向通信协议,在实时消息推送、在线聊天、游戏等领域得到了广泛应用和深入发展。然而,在传统架构下,WebSocket 的实现...

    1 年前
  • 通过 ES10 中的 flat() 方法,轻松展开多层嵌套数组

    在 JavaScript 的开发中,操作数组是很常见的需求,很多时候我们会面临需要扁平化多层嵌套数组的情况。在 ES10 中新增了 flat() 方法可以解决这个问题,本文将会详细介绍 flat() ...

    1 年前
  • SASS 开发中的组件库设计技巧

    随着前端开发的迅猛发展,组件化开发成为了越来越多前端开发者的选择。而随着组件化开发的兴起,设计一个高效且易于维护的组件库变得越来越重要。SASS 是一种强大的 CSS 预处理器,可以为我们提供更加丰富...

    1 年前
  • 使用 Docker Compose 部署 Flask 应用

    在 Web 应用开发中,使用 Flask 框架可以轻松地构建出高效的 Web 应用。但是,在将应用部署到生产环境中时,我们面临着很多问题,如不同环境中的依赖问题、不同机器的运行环境问题等等。

    1 年前
  • ES6 中的数组扩展技巧

    在 ES6 中,数组的扩展技巧变得更加方便和强大。本文将详细介绍 ES6 中数组的新特性,包括扩展运算符、解构赋值、 Array.from 方法、Array.of 方法、find、findIndex、...

    1 年前
  • 如何使用全局代理在 ECMAScript 2020 中代替 polyfill

    在前端开发中,我们通常会使用 polyfill 来填充浏览器对某些新特性的支持。但是,使用 polyfill 会增加项目体积,并且可能会影响网页性能。在最新的 ECMAScript 2020 中,我们...

    1 年前

相关推荐

    暂无文章