首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【翻译】MotionLayout实现折叠工具栏(Part 1)

【翻译】MotionLayout实现折叠工具栏(Part 1) 2018-08-13 by Liuqingwen | Tags: Android 翻译 | Hits ?...本系列教程,我会讲解如何使用 MotionLayout 来创建一个我们已经非常熟悉的动画行为:一个折叠工具栏动画( a Collapsing Toolbar )。...举个例子,一个折叠工具栏应该根据用户的滚动进行展开和折叠,所以实际动画的运行应该时刻跟随用户的拖拽进行。这也是那些框架办不到的地方。 废话不多说,让我们看下我们所要尝试模拟做到的行为动作。...这其中内部原理非常复杂,它由 RecyclerView滚动行为所驱动。 为了理解这两个 ConstrainSet 的定义,让我们先假设这里只有两件事情需要进行控制。...我们使用的是一个标准的 ImageView 控件,当其位于 ConstraintSet 下的 Constraint 元素,其主要的属性变成可以是 ConstraintLayout.LayoutParams

1.9K31

【翻译】MotionLayout实现折叠工具栏(Part 2)

本系列教程,我会讲解如何使用 MotionLayout 来创建一个我们已经非常熟悉的动画行为:一个折叠工具栏动画( a Collapsing Toolbar )。...因此我们得到的是一个非常平滑的过渡动画,从工具栏开始发生折叠一直到工具栏完全达到折合状态为止。这也很好的解释了我们所看到的在 MotionLayout 对动画行为的实现。...目前来说,发生的情况是:图片的透明度在过渡动画还没有达到 60% 之前是不会发生变化的(也就是至少超过一半的折叠状态下不发生变化),接下来会慢慢开始淡出,直到工具栏达到 90% 折叠完全透明。 ?...最终标题文本会走在工具栏折叠动画之前,接着在折叠完全结束的时候直接回落到正确的位置上: ?...你只需要记得在最终发布版本要关闭这个功能——我建议定义一个布尔值资源,在布局中使用,然后你就可以在发布版本总能设置它为 false 就可以了。 好吧,这次就到这里。

1.6K30
您找到你想要的搜索结果了吗?
是的
没有找到

Android开发笔记(一百三十五)应用栏布局AppBarLayout

那么Android5.0也同时给出了相应的解决方案,即推出MaterialDesign库,通过该库的AppBarLayout控件,对Toolbar加以包装,从而实现顶部工具栏的动态变化效果。...下面是AppBarLayout结合RecyclerView实现的工具栏向上滚动效果截图: ?...NestedScrollView继承自FrameLayout,其用法与ScrollView相似,都必须且只能带一个直接子视图,都是允许视图上下滚动等等。...2、AppBarLayout内部的高度也可能变化,比如它嵌套了可折叠工具栏布局CollapsingToolbarLayout,有关可折叠工具栏布局的详细介绍参见《Android开发笔记(一百三十六)可折叠工具栏布局...3、exitUntilCollapsed : 该标志保证页面上至少能看到最小化的工具栏,不会完全看不到工具栏。具体的滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠的最小高度。

1.9K40

Android开发笔记(一百三十六)可折叠工具栏布局CollapsingToolbarLayout

折叠工具栏布局CollapsingToolbarLayout 上一篇博文《Android开发笔记(一百三十五)应用栏布局AppBarLayout》阐述了如何把Toolbar往上滚动,那反过来,...上述属性在代码的设置方法如下所示: setContentScrim/setContentScrimColor/setContentScrimResource : 设置布局内部未展开的背景颜色。...折叠系数可通过属性app:layout_collapseParallaxMultiplier配置,该属性为1.0折叠效果同pin模式即固定不动;该属性为0.0折叠效果等同于none模式,即也跟着移动相同距离...3、exitUntilCollapsed : 该标志保证页面上至少能看到最小化的工具栏,不会完全看不到工具栏。具体的滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠的最小高度。...具体的滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠的最小高度。然后头部与主体先一起滚动,头部滚到位后,主体继续向上。 向下滚动:头部与主体先一起滚动,一直滚到头部折叠的最小高度。

3.1K30

折叠屏上应用设计规范,了解一下?

深入理解布局 深入理解布局指南 介绍了布局容器的相关概念,它提供了一个整体框架,可帮助开发者思考如何在屏幕上排列导航栏、工具栏和内容等界面元素。...包括适当缩放以展示更多内容,示例的副标题和日期,以及较小的组合技术,例如在紧凑型的布局对内容进行视觉分组并保持其相关性等。...△ 折叠设备的三种常见姿态 与其他大屏幕设备一样,我们需要多想想用户会怎样握持未折叠设备?平板电脑,部分屏幕区域难以用大拇指触及,用户也很难腾出整只手来自由操控屏幕。...△ 平均分布在铰链两侧的八栏网格 (蓝背景) 适配示例 现在我们来看如何在运行期间利用好折叠状态。Jetpack Window Manager 库提供了相应的 API,可以检测应用窗口是否存在折叠。...,当折叠导致内容视图被割裂,我们应该及时更新布局参数。

4.3K20

实践 | Google IO 应用是如何适配大尺寸屏幕 UI 的?

应用在大尺寸屏幕 (平板、可折叠设备甚至是 Chrome OS 和台式个人电脑) 上的使用体验是我们的关注点之一: 在过去的一年,大尺寸屏幕的设备越来越受欢迎,用户使用率也越来越高,如今已增长到 2.5...△ 平板横屏的搜索应用栏 (窄模式) △ 平板竖屏的搜索应用栏 (宽模式) 此前,我们通过在搜索 Fragment 的视图层次的应用栏部分使用 标签,并提供两种不同版本的布局来实现此功能...在窄屏幕设备上,您会看到一列项目,它们会在点击展开或折叠。在宽尺寸屏幕上,这些列表项会转换为一格一格的卡片,卡片上直接显示了详细的内容。 △ 左图: 窄屏幕显示 Codelabs。...为了让元素能够一直滚动显示到 RecyclerView 的边缘,需要设置 android:clipToPadding="false"。 屏幕越多样越好 Android 一直是个多样化的硬件生态系统。...随着更多的平板和可折叠设备在用户普及,请确保在这些不同尺寸和屏幕比例测试您的应用,这样一些用户就不会觉得自己被 "冷落" 了。

2.1K20

CoordinatorLayout使用全解析

exitUntilCollapsed:当你定义了一个minHeight,此布局将在滚动到达这个最小高度的时候折叠。 snap:当一个滚动事件结束,如果视图是部分可见的,那么它将被滚动到收缩或展开。...,它可以控制包含在CollapsingToolbarLayout的控件(:ImageView、Toolbar)在响应layout_behavior事件作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端...CollapsingToolbarLayout可以通过app:contentScrim设置折叠工具栏布局的颜色,通过app:statusBarScrim设置折叠状态栏的颜色。...pin:CollapsingToolbarLayout折叠后,此布局将固定在顶部。 parallax:CollapsingToolbarLayout折叠,此布局也会有视差折叠效果。...应该说在MDRecyclerView代替了ListView,而NestedScrollView代替了ScrollView,他们两个都可以用来跟ToolBar交互,实现上拉下滑ToolBar的变化。

1.9K20

Android5.0和6.0之后新增的控件说明

SwipeRefreshLayout Android 5.0 抽屉布局 DrawerLayout Android 5.0 滑动面板布局 SlidingPaneLayout Android 5.0 嵌套滚动视图...NestedScrollView Android 5.0 appcompat-v7 工具栏 Toolbar Android 5.0 recyclerview-v7 循环视图 RecyclerView...FloatingActionButton Android 5.0 底部弹窗 BottomSheetBehavior Android 6.0 应用栏布局 AppBarLayout Android 5.0 可折叠工具栏布局...使用v4控件唯一需要注意的地方,是布局文件要引用完整路径的控件名称,抽屉布局android.support.v4.widget.DrawerLayout、下拉刷新布局android.support.v4...这部分控件数量最多,实现的界面特效最丰富,而且互相之间存在依赖关系,design库依赖于appcompat-v7库,部分design控件NavigationView还依赖于recyclerview-v7

1.2K20

Android--AppBarLayout基本使用

AppBarLayout一般用于赋予Toolbar(不限于Toolbar)滚动行为,AppBarLayout是一个垂直的LinearLayout,实现了Material Designapp bar的scrolling...AppBarLayout只有作为CoordinatorLayout的直接子View才能正常工作,为了让AppBarLayout能够知道何时滚动其子View, 我们还应该在CoordinatorLayout...布局中提供一个可滚动View,RecyclerView 布局文件 <?...4.exitUntilCollapsed--需要和minHeight一起配合使用,否则没效果 Toolbar完全展开不遮挡滑动控件,消失效果变为折叠成最小高度,其他和scroll相同 ?...5.snap Toolbar折叠的高度大于原高度的50%,则完全折叠,否则恢复展开,同样的展开的高度大于50%,则完全展开,否则恢复折叠 ?

3.4K20

NestedScrollView 嵌套 ListView 实现滑动折叠效果

当我们引入RecyclerView的时候,恰好是压死骆驼的最后一根稻草,故不得不采用其他方案来代替RecyclerView 和 CollapsingToolbarLayout实现的折叠效果。...app:layout_scrollFlags="scroll|exitUntilCollapsed" 表示CoordinatorLayout的依赖元素滚动的时候,进行折叠。...enterAlways - 实现quick return效果, 当向下移动,立即显示View(比如Toolbar). exitUntilCollapsed - 向上滚动收缩View,但可以固定Toolbar...enterAlwaysCollapsed - 当你的View已经设置minHeight属性又使用此标志,你的View只能以最小高度进入,只有当滚动视图到达顶部才扩大到完整高度。...题外话:直接使用RecyclerView折叠动画不平滑问题 在stackoverflow上找到如下解决方案,大致是由于google官方留的Behavior坑。

3.3K50

Android 三级NestedScroll嵌套滚动实践

所以通过 NestedScrolling(Parent2/Child2) 实现嵌套滚动,当你触发了一个 fling ,也可以做很顺滑连贯的交替滚动,而 1 就很难达到相同的效果。...三级嵌套滚动 一个常见的嵌套滚动例子是 CoordinatorLayout/AppbarLayout – RecyclerView, 实现的效果是向上滑动列表,会先将 AppbarLayout 向上滑动直到完全折叠...这里的滑动逻辑是: 向上滑动,最先折叠刷新动画,向下滑动最后展开刷新动画。 向上滑动列表折叠 AppbarLayout,AppbarLayout 完全折叠后再折叠搜索框。...根据上图即刻首页滑动的实现思路就很简单了: onPrePreScroll 执行折叠刷新动画的逻辑,onAfterAfterScroll 执行展开刷新动画的逻辑。...onPreScroll 执行折叠 AppbarLayout 的逻辑,onAfterPreScroll 执行搜索框折叠的逻辑。

1.5K30

常用Android布局文件优化技巧总结

在布局文件,可以定义各种视图元素, TextView、Button、ImageView 等。每个视图元素都可以设置一些属性,宽度、高度、边距、背景颜色等。...这些属性可以用来控制视图元素在布局的位置和大小。 布局文件的解析过程 当应用程序启动,Android 系统会将布局文件解析成一个视图层次结构,然后将其加载到内存。...使用 RecyclerView 来优化列表布局。 在应用程序,列表布局是最常用的视图之一。...,还可以使用 RecyclerView.Adapter 和 RecyclerView.ViewHolder 来实现数据和视图之间的绑定,从而更好地管理和展示列表数据。...使用 Lint 来检查布局文件的问题。 在编写布局文件,我们可能会遇到一些常见的问题,布局文件过大、布局文件层次结构过深、布局文件加载时间过长等。

20020

Constraint Layout 2.0 用法详解

implementation “androidx.constraintlayout:constraintlayout:2.0.1” 随着 2.0 版本的发布,我们专门在 github 上创建了 Constraint...Flow Flow 是一种新的虚拟布局,它专门用来构建链式排版效果,当出现空间不足的情况,它能够自动换行,甚至是自动延展到屏幕的另一区域。...您可以对视图的移动、滚动、缩放、旋转、淡入淡出等一系列动画行为进行自定义,甚至可以定义各个动画本身的自定义属性。它还可以处理手势操作所产生的物理移动效果,以及控制动画的速度。...这样一来,在协调多个视图的动画,就可以做到对各个细节进行精细操控。...尤其是在以下两种情况下,MotionLayout 会比其它动画构建工具更胜一筹: 可追溯的动画 - 由其它输入驱动的动画,例如工具栏滚动时会出现的折叠效果 状态转换 - 由状态更改驱动的动画,例如用户进入某一界面后

2.2K30
领券