问题标签 [android-motionlayout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
676 浏览

android - 编排 Android 运动布局动画

我有一个 xml 布局,我想在用户单击按钮时实现一些动画,所以我想使用带有 MotionScene 的新 MotionLayout。在布局中,我有一个必须向上滑动的背景 FrameLayout,以及一个在用户单击时必须出现的 ImageView(alpha 属性动画);问题是首先布局应该向上滑动,然后出现 ImageView,但是在 MotionScene 的转换中,我只能指定一个开始的 ConstraintSet 和一个结束的 ConstraintSet,但不能指定中间的;我想过使用 KeyAttributes,但它们不允许我设置背景布局的高度,如果我在(例如)动画的 50% 处将它们与 translationY 属性一起使用,那么它会保持原样吗?另外,如何从java代码开始一个MotionLayout动画呢?提前致谢。

0 投票
4 回答
8034 浏览

android - 如何在 recyclerview 中使用运动布局

尝试使用MotionLayoutwith RecyclerView,

向上滚动时,应用程序因错误而崩溃:

android.content.res.Resources$NotFoundException:找不到资源 ID #0xffffffff

片段布局代码是

和 layoutDescription 代码是:

0 投票
5 回答
3533 浏览

android - 运动布局阻止更新 recyclerview

我已经开始使用运动布局进行一些顶部栏滚动,并且看起来存在阻止回收器视图显示更新数据的问题。目前我正在使用2.0.0-alpha3. ConstraintLayout在视图中,我有工具栏和 2 个用作过滤器的选项卡,可以说filterXfilterY那些传递了一些 rx 的东西,这些东西基本上只是基于type这个过滤项目列表并不重要,因为数据被正确过滤,线程是正确的,数据被传递到每次都使用适配器,但是当我将运动布局滚动到顶部或底部时,有时更改不会反映在回收器视图中,它们会在我滚动一点甚至触摸后重新加载,在标准情况下不会发生ConstraitLayout. 有没有人经历过这个并且知道任何解决方案?

编辑:带有运动布局的布局:

和运动场景

0 投票
14 回答
12137 浏览

android - 是否可以禁用 MotionLayout?

我有Fragment一个RecyclerViewMotionLayout. 在回收站视图之上,我有一个可以折叠和展开的视图,所有这些都在我的运动场景中完成。它由单击触发以及响应拖动回收站视图。到目前为止,这一切都按预期工作。

现在问题来了:我想在我的应用程序中完全隐藏某些状态的折叠视图。但是,如果我设置视图可见性或更改其高度,当我拖动回收器视图时,它仍然会重新出现。

那么是否可以完全禁用 MotionLayout(锁定约束),直到我再次启用它。禁用阻力识别器也是一个可行的解决方案。

现在用一些简化的 XML 来演示这种情况。

包含带有标题视图和回收器视图的运动布局的布局

对应的运动场景:

使用约束布局版本“2.0.0-alpha3”

implementation "com.android.support.constraint:constraint-layout:2.0.0-alpha3"

所以回顾一下:我希望能够禁用运动布局,这样我就可以在不扩展标题的情况下滚动回收视图,直到我告诉它再次启用。不幸的是,它并不像favouritesMotionLayout.isEnabled = false,但这是我的想法。

0 投票
1 回答
199 浏览

android - PreferenceFragmentCompat 影响其他片段的性能

我按照谷歌指南(https://developer.android.com/guide/topics/ui/settings)将 PreferenceFragmentCompat 添加到我的应用程序中。

此外,我还有另一个片段(片段 A),其中包含 MotionLayout 中的 RecyclerView。MotionLayout 用于小动画,通过 onSwipe 将 RecyclerView 扩展为垂直全屏。

现在我面临以下问题:在我调用 PreferenceFragment 然后返回到 Fragment A 之后,MotionLayout onSwipe 动画的性能真的很差/滞后。根据日志,在滑动时多次调用 onDraw 方法。

有趣的事实是,onDraw 方法只被调用一次(@onCreate),而我还没有启动 PreferenceFragment?!

此外,调用我的其他片段的任意片段 X 不会影响我的片段 A的性能?!

这可能是什么原因?我该如何继续我的调查?

0 投票
1 回答
1776 浏览

android-constraintlayout - 如何在特定帧位置使用motionlayout旋转textview

我正在尝试将约束布局 2.0 用于布局和元素动画。我创建了具有运动的布局作为父级,其中包含另一个线性布局,其中 1 个线性用作抽屉,另一个用作主视图。我想旋转文本视图当 linear_pink 框架位置为 50 时为 20 度。

这是我的 MotionLayoutFile

这是我的motionlayout场景

0 投票
1 回答
2823 浏览

android - 如何在 ConstraintLayout 中刷新约束视图的高度

我有一个 ConstraintLayout,其中我有一个 View(称为 Bar)和一个 RecyclerView 限制在 Bar 的底部,RecyclerView 的高度设置为匹配 Constraint(0dp),

因此,如果在 Android 布局编辑器中我向上移动 Bar 例如,RecyclerView 高度增加并且总是“锚定”到 Bar,它的工作,

但这在运行时的行为不一样,当我移动 Bar(使用 onTouchListener)时,RecyclerView 的高度根本不会改变,并且如果 Bar 位于同一位置,则保持不变。

为了实现这种行为(移动 Bar 增加/减少 RecyclerView 高度),我考虑并尝试了 ConstraintLayout 解决方案,

所以我设置了一个约束(顶部)到栏的底部,我已经设置了高度以匹配约束,

我还尝试使用 LayoutParam 来实现此行为,根据移动的像素更改高度,但公式不是 100% 好,并且使用这种方式从视图的底部和顶部更改高度(显然不是使用约束解决方案)

编辑 :

这是<include>布局 1 中标签的内容:

0 投票
2 回答
1565 浏览

android - 当我在 MotionLayout 中使用 RecyclerView 和 SwipeRefreshLayout 做一些动画时,事情变得很奇怪

当 RecyclerView 向上拖动时,我正在使用 MotionLayout 来实现一些很酷的效果,但是当我想将 SwipeRefreshLayout 与 RecyclerView 一起使用时,似乎发生了冲突。

如果没有 SwipeRefreshLayout 就好了

如果我用 SwipeRefreshLayout 包围,向上拖动的行为就像反对一样奇怪

https://gist.github.com/GHChrisSu/6aadf40dc693bc47cbb83a167a82a4b9

运动场景如下

https://gist.github.com/GHChrisSu/a154d59f34555cccfc1b48617989ae16

0 投票
1 回答
100 浏览

android-motionlayout - 如何显示motionlayout android studio 设计工具?

如何展示这样的工具设计。 https://drive.google.com/file/d/1Yc_Or1Xscad24fsg35pgN_FGbOwR0Z67/view?usp=sharing 在我的 android 工作室中不显示。

0 投票
3 回答
2021 浏览

android - 无法更改 MotionLayout 中 TextInputLayout 的可见性

我是第一次尝试,但在MotionLayout更改.TextInputLayoutsMotionScene

motion_scene.xml

activity_main.xml

我试过摆弄东西,但我无法指出它为什么会发生。

请不要将此标记为重复,因为这是我正在尝试的一个相当新的库。如果需要,我很乐意进一步详细说明。