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

可折叠设备的桌面模式

△ Duo 应用在优化前后的对比 在这篇文章中,您会了解到一个简单而又高效的方式来使您的应用在可折叠设备上运行时适配布局。...MotionLayout 结合了父类的灵活性,同时又具备在视图从一种姿态过渡到另一种时展示流畅动画的能力。...首先考虑视频播放器 Activity 的布局,其根元素是包含了三个子视图的 MotionLayout。...这样一来,当您将 ReactiveGuide 从底部移动至折叠位置时,布局的转换就会发生。 您可能想要将播放控件一直限定在 ReactiveGuide 的底部。...如果是这样的话,您可以计算出折叠处的相对位置,然后将 ReactiveGuide 移动到该位置;如果情况相反,您可以将其移动到 0 (屏幕底部)。

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

    MotionLayout教你轻松玩转动画

    将MotionLayout添加到项目中并使用 MotionScene ConstraintSet Transition CustomAttribute MotionLayout是什么 首先我们来介绍一下...MotionLayout,它是google推出的一种实现动画的布局view,基于ConstraintLayout为基础,可以让开发者直接通过xml布局的方式来轻松实现动画。...,但MotionLayout却基本兼容了它们的使用场景,也就是说,MotionLayout是它们的结合体。...将MotionLayout添加到项目中并使用 如果你项目中已经使用了ConstraintLayout,只要版本不是很低就无需新增依赖,可以直接使用。...包括它的宽高,布局约束,这些都会直接覆盖layout中的宽高与约束。 另一个end,代表的是,动画结束的位置,也就是TextView结束之后的展示方式。

    1.1K20

    静若处子动若脱兔-Constraintlayout2.0一探究竟

    与传统的Android动画设计方式不同,这次的设计思路完全使用了申明式的UI设方式,MotionLayout完全通过申明约束的方式进行驱动。 通过下面的代码可以直接接入MotionLayout。...在ConstraintSet中,就是描述的当前状态下的约束关系,这里的一个约束就是将ImageView的在顶部的约束,改成了在底部的约束。...布局的限制,Android的布局将每个View限制在了它的Measure范围内,导致突破区域的动画很难做 命令式编程,需要制定动画对象的所有行为 参数难调,编译时间太长 借助MotionLayout,Google...使用场景 ConstraintLayout是一盘大棋,Google先通过ConstraintLayout来将整个布局打平,再借助MotionLayout来实现动画就自然而然解决了很多原始Android布局的限制...UI与动画进行了分离,MotionLayout将所有的动画逻辑放在了Scene中,跟最早Android布局的写法,将UI和代码进行分离的方式类似,但这种方式在现在的开发模式下,并不是很直观,因为MotionLayout

    1.1K10

    太有意思了,教你实现实现王者荣耀团战!

    MotionLayout 是 ConstraintLayout 的子类,在其丰富的布局功能基础之上构建而成。...KeyFrameSet关键帧,可以设定动画过程中的某个关键位置或属性。 设定关键帧后,MotionLayout会平滑地将视图从起点移至每个中间点,然后移至最终目标位置。...但是,Motionlayout还是有缺点的,比如直接通过xml代码的情况下,无法设置动画的衔接,设定动画的先后顺序。 所以到底motionlayout应用场景是什么呢?...midlayout,白色布局,从底部依附父布局到bottomView的上方,这个layout是为了让toplayout下来的时候更加自然,因为recycleview会变完全透明,就需要这个白色布局过渡,...关键帧:到75%进度的时候,就完全透明。 bottomView,从父布局视图下面(看不到)到父布局底部(看得见) 就这么多,分析好每个布局的起始位置,结束位置,再调整一下关键帧。

    1.2K10

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

    使用 MotionLayout 做到接近上述动画效果非常简单。首先从我们的布局文件开始: 这基本上是使用标准的 ConstraintLayout 创建出来的一个布局,唯一区别在于父布局实际为一个 MotionLayout 布局( MotionLayout 继承于 ConstraintLayout...在折叠状态下它会垂直居中,而在展开状态下它会对齐在底部,因此 TextView 会更多的相对于 ImageView 的大小尺寸来进行相关设定。...如果我们使用该布局来代替一开始我们就使用的 CoordinatorLayout 布局来实现,那么我们将会得到这样的行为: ?...这事实上效果已经非常接近,但是仔细看你会发现这里与刚开始我们使用的 CoordinatorLayout 方式有一个细微的区别:在 CoordinatorLayout 布局下图片的褪色渐变动画和 MotionLayout

    2K31

    突破传统动画:探索MotionLayout的独特优势

    本文将深入介绍MotionLayout的使用和原理,帮助您掌握这个令人兴奋的技术。 什么是MotionLayout?...MotionLayout提供了一种声明性的方法,让我们能够以一种直观的方式定义和管理动画。 如何使用MotionLayout? 在使用MotionLayout之前,需要先在项目中引入它的依赖库。...,就可以在布局文件中使用MotionLayout了。...可以与用户输入、状态变化等事件进行交互,实现更加丰富的用户体验。 基于ConstraintLayout,具有灵活的布局能力,可以轻松实现复杂的布局结构。...我们相信,通过本文的介绍,你已经了解了MotionLayout的基本概念和使用方法,并掌握了更加高级的使用技巧。

    34240

    MontionLayout:打开动画新世界大门(其一)

    第一眼见到 MotionLayout 时无疑是兴奋的,在经过使用和熟悉了这个布局组件之后,我就想将这份喜悦传递给国内开发者,从此“拳打”设计,“脚踢”产品?。...2.2 在布局文件中使用 MotionLayout 想要使用 MotionLayout,只需要在布局文件中作如下声明即可: MotionLayout...同时,为了帮助大家理解,此处将开始结合一些具体小实例来帮助大家快速理解和使用它。 首先,我们从实现下面这个简单的效果讲起: ?...GIF 画质有点渣,见谅,但从上图我们可以发现这是一个简单的平移动画,通过点击自身(篮球)来触发,让我们来通过 MotionLayout 的方式来实现它。首先来看下布局文件: 使用的是 parentRelative,即以整个 MotionLayout 的布局为坐标系,左上角为坐标原点,即参考 View 的坐标系即可,

    97030

    Constraint Layout 2.0 用法详解

    图片 : 该动画展示了 Flow 创建多个链将布局元素充裕地填充一整行 Flow 是一种虚拟布局。...您可以对 wrapMode 指定三种模式: none – 所有引用的视图以一条链的方式进行布局,如果内容溢出则溢出内容不可见; chain – 当出现溢出时,溢出的内容会自动换行,以新的一条链的方式进行布局...; align – 同 chain 类似,但是不以行而是以列的方式进行布局。...使用 MotionLayout构建的动画是可追溯且可逆的,这意味着您可以随意切换到动画过程中任意一个点,甚至可以倒着执行动画效果。...每个界面都旨在向您展示在某些场景下如何使用 Motion Layout 构建实用的动画效果,以及如何将这些效果集成到其它视图上。 Constraint Layout 2.0 还有很多新功能。

    2.3K30

    ConstraintLayout2.0一篇写不完之Carousel

    与实现此类视图的其他解决方案相比,Carousel可以利用MotionLayout迅速为轮播创建复杂的动画效果。 Carousel支持带有开始和结束的列表以及循环环绕列表。...概念:轮播如何MotionLayout工作 假设我们要构建一个简单的水平轮播视图,并放大一个居中视图: 我们的基本布局包含几个视图,代表了我们的轮播项目: 通过MotionLayout创建具有三个状态的...ConstraintSet(请确保为它们提供ID): previous start next 如果start状态与该基本布局相对应,则previous的状态则应该表示为轮播项目向右移动一个。...这种无限轮播的错觉的方式,实际上是将实际视图移回它们的位置,然后使用新的匹配内容将其重新初始化。...可以使用另一种模式,其中Carousel Helper将这些视图标记为View.GONE。

    1.5K20

    ConstraintLayout2.0一篇写不完之极坐标布局与动画

    相对于一般布局方式的笛卡尔坐标系,MotionLayout还拓展了ConstraintLayout中的相对中心布局方式,我们暂且称之为「极坐标布局」方式。...极坐标布局方式在某些场景下,比笛卡尔坐标系的建立更加方便,特别是涉及到一些圆周运动和相对中心点运动的场景。...image-20302 Relative Animation 在MotionLayout中,它进一步加强了在动画中对极坐标运动的支持,特别是一些极坐标的相对运动动画,可以通过MotionLayout,以非常简单的方式表现出来...这样一个复杂的极坐标动画效果,虽然借助ConstraintLayout可以很方便的实现定位布局,但是运动时,却无法继续保持极坐标的依赖关系,所以,这里需要使用MotionLayout来维持运动时的极坐标约束关系...首先,使用ConstraintLayout来完成起始布局的建立,代码如下所示。 <?xml version="1.0" encoding="utf-8"?

    66550

    Android Studio 中的 Motion Editor 用法详解

    Motion Editor 是一款专门针对 MotionLayout 布局类型所构建的可视化编辑器,通过它可以轻松地创建和预览动画效果。...Motion Editor 中运行的动画 Motion Editor 是 Android Studio Layout Editor (布局编辑器) 的一个扩展,当您在一个包含 MotionLayout...您可以使用已在布局编辑器中所熟知的交互方式来编辑布局和 Motion Scene 文件,并可以直接在 Android Studio 预览界面中对动画效果进行预览。...Motion Editor 可以通过 Overview 面板将这些状态的转变可视化。要编辑 ConstraintSet 中的约束,点击 Overview 面板中相应的选项即可。 ?...如果您想了解更多本文中使用的代码以及其他几个 MotionLayout 的示例,如果您想了解更多关于 MotionLayout 的内容,请查阅以下资源: 使用 MotionLayout 管理 motion

    2.2K10

    Android Studio 4.0 最新进展,这几个新体验太牛逼了!

    动画方面 使用 MotionLayout 我们需要在 xml 中自定义 MotionScene,在 MotionScene 中指定不同 Layout 之间的变化。...查看到官方的 Demo 之后,说实话这种动画编写方式还是有些繁琐的,还好这次 Android Studio 4.0 支持了新的动画编辑器,让我们可以通过可视化的操作,来创建 MotionLayout 动画...有了 MotionLayout 和全新的动画编辑器,在 Android 上做动画限制你的不再是 API 而是你的想象力。...File → New → Import Sample 查看官方提供了最佳实践代码,有 AAC 架构、有动画、有 CameraX、有 NDK 各种分类应有尽有,评论告诉我,我应该不说最后一个知道这个功能的吧...最后 感谢大家能耐着性子,看完我啰哩啰嗦的文章。 愿与各位坚守在Android开发岗位的同胞们互相交流学习,共同进步!

    1.5K20

    ConstraintLayout2.0一篇写不完之ViewTransition

    这也是一个重复使用特定动画的好方法(参见MotionEffect的使用,它可以利用ViewTransition的优势来实现多个元素的动画效果)。..."来自动执行 KeyTrigger可以启动视图转换 以编程方式启动从代码中启动 Launching a View transition from code MotionLayout有几个API用于处理ViewTransition...applyViewTransition(int viewTransitionId, MotionController motionController) { } ViewTransitions允许你将逻辑与动画分开...,ViewTransition就是一个动画和组件分离的工具,你可以借助ViewTransition,将组件的动画抽取出来,做到复用。.../ 点击原文一键直达 专注 Android-Kotlin-Flutter 欢迎大家访问 往期推荐 群英传2.0 闲言碎语——第三期 ConstraintLayout2.0一篇写不完之极坐标布局与动画

    71430

    8个硬核技巧带你迅速提升CSS技术

    养成看设计图就能大概规划出整体布局的前提是必须熟悉这些常用布局的特点与构造。曾经需结合很多属性才能完成一个布局,如今在现代属性的加持下能更好地快速实现各种布局,节约更多时间去做更重要的事情。...;将主体的top和bottom分别声明为顶部高度和底部高度。...居中布局是一个很经典的问题,所以笔者在小册中罗列了所有居中布局方式,详情请查看小册第6章布局方式。 ? 居中布局 在此直接上一个目前最简单最高效的居中方式。...从中可得出一个技巧:「List集合里具备与索引递增相关的属性值都可用变量与calc()结合使用生成出来」。...使用单个结合::before和::after,通过错位叠加的方式生成一个心形。在叠加前看看以下图形,是不是发现很像米老鼠呢。 ?

    2.8K30

    在 View 上使用挂起函数 | 实战

    由于上述原因,导致该依赖库执行回退,使用第一个条目进行展开。 理想的解决方案 我们期望行为是什么呢?...将新条目布局 // 滑动 RecyclerView 展示指定的剧集 recyclerView.scrollToItemId(nextEpisodeToWatch.id) /...MotionLayout.awaitTransitionComplete() 目前还没有 MotionLayout 的 ktx 扩展方法提供我们使用,并且 MotionLayout 暂时不支持添加多个监听...这里我们使用 MotionLayout 的子类来实现多监听器的支持: MultiListenerMotionLayout。...对于所有 API,将回调、监听器、观察者封装为挂起函数的方式基本相同。希望您此时已经能感受到我们文中例子的重复性。那么接下来还请再接再厉,将您的 UI 代码从链式回调中解放出来吧!

    1.4K30

    如何提升CSS技术?8个硬核技巧带你迅速提升CSS技术

    养成看设计图就能大概规划出整体布局的前提是必须熟悉这些常用布局的特点与构造。曾经需结合很多属性才能完成一个布局,如今在现代属性的加持下能更好地快速实现各种布局,节约更多时间去做更重要的事情。...float + margin-left的方式了,若使用margin-left还得结合左中列宽度计算。...居中布局是一个很经典的问题,所以笔者在小册中罗列了所有居中布局方式,详情请查看小册第6章布局方式。 在此直接上一个目前最简单最高效的居中方式。...从中可得出一个技巧:List集合里具备与索引递增相关的属性值都可用变量与calc()结合使用生成出来。...使用单个结合::before和::after,通过错位叠加的方式生成一个心形。在叠加前看看以下图形,是不是发现很像米老鼠呢。

    2.2K40

    Android-MotionLayout动画

    ,将其根布局转为MotionLayout。...image.png 注意:我们尽量采用右键自动转化为MotionLayout的方式,避免手动将ConstratintLayout变为MotionLayout根布局文件,有时不能正常显示的问题,可能需要重启...: MotionScene为项目的根标签 Transition指定了动画要使用的ConstraintSet,及动画的触发方式等 ConstraintSet指定了动画开始页面和结束页面的控件状态 KeyFrameSet...用来描述一系列运动过程中的关键,我们稍后说 完善布局 添加背景动画 由于MotionLayout是ConstraintLayout的子类,所以我们可以像使用ConstraintLayout一样使用它....定义了动画开始的状态;id为end的Constraint的则定义了动画结束的状态,Constraint标签用来描述一个控件的位置和属性,但光有这些还不够,我们还需要添加一个动画的触发方式,这里有两种触发方式

    1.1K40
    领券