问题标签 [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.
android - MotionLayout 滑动而不捕捉到状态?
我注意到到目前为止所有的 MotionLayouts 总是捕捉到它们的一个最终状态,即使你在动画的中途拖动一个视图,停止,然后放手。我想要实现的是让motionlayout 只对用户交互和动量起作用。如果用户在动画中间放开,它应该在动量用完后完全停止,并且不会继续插值直到明确定义的状态,这是默认行为。
列表、滚动视图、coordinatorlayouts 都支持这种“中途”停止,那么为什么不支持motionlayout呢?
那么有谁知道如何冻结状态之间运动布局的进度?它应该适用于时间线上的任何位置,所以我不想添加额外的状态,因为它需要 100 个状态。
android - MotionLayout:如何为边距设置动画
我正在使用MotionLayout
动画将视图的大小从全屏调整为具有特定边距的较小尺寸(如下所示)。它大部分工作正常,但显示的边距为 0,直到动画结束,然后立即应用它们。有什么办法也可以为这些设置动画吗?
我尝试使用KeyFrameSet
创建具有不同边距值的中间点,但这没有效果。
例如
更新
所以,看起来问题与我正在使用的事实有关SurfaceView
......如果我尝试使用ImageView
例如边距确实会逐渐变化。
android - 使用动作布局时我开始与 UI 交互后进度条可见性重置
约束布局版本:2.0.0-alpha3
所以我正在使用 MotionLayout 我想创建类似的东西。https://blog.stylingandroid.com/motionlayout-collapsing-toolbar-part-2/
我想实现当用户进入活动ProgressBar
时,当我加载数据时(需要一些时间)我想ProgressBar
隐藏。
我的问题是,当我开始与 UI 交互时,ProgressBar
状态被重置并再次可见
我应该怎么做才能防止progressBar在用户开始与之交互后开始显示?
这是一个简化版本
layout file
这是布局说明 ( xml/collapsing_toolbar
)
这是一个简单的活动,我在 1 秒后隐藏 ProgressBar
我在用androidx.constraintlayout:constraintlayout:2.0.0-alpha3
编辑:我也将此报告为错误https://issuetracker.google.com/issues/124812189
编辑:对此的部分解决方案是将 progress_bar 和错误可见性设置为 GONE << 但是,相同的场景适用于此处,因此如果您与加载交互,您可以看到scrollView
,但是当应该有内容时,它比看到 ProgressBar 更好。
android - 以编程方式更改 MotionLayout 运动场景中的 ConstraintSet 属性
我有一个用例,我想使用 MotionLayout 创建类似 Youtube 的动画。此repo中有此动画的示例。但问题是,在这个例子中,他们使用静态高度来启动约束,如下所示320dp
:
但我要求使用纵横比设置约束。对于静态纵横比,我可以app:layout_constraintDimensionRatio="w,16:9"
像这样在约束中设置使用。
但是每个视频都有不同的宽高比,我从 API 获得。所以我想根据视频设置不同的宽高比。我无法找到以编程方式设置它的方法ConstraintSet
我尝试了一种解决方法来以android:layout_height="wrap_content"
编程方式设置和更改视图纵横比。但它不起作用,动画也不能正常工作。
任何解决方案或建议将不胜感激。
android - 第一次向相反方向滑动时,MotionLayout OnSwipe 过渡故障
我正在使用 MotionLayout 来实现一个简单的动画:我的 MotionLayout 中有两个视图,一个限制在顶部的条形图和一个限制在条形图底部的 RecyclerView。当我滚动 RecyclerView 时,顶视图应该被推出。(就像一个折叠工具栏)我的 MotionScene 如下所示:
过滤器是顶视图,table_view是 RecyclerView。动画就像一个魅力,只有一个很大的小故障。当我第一次进入屏幕并开始向下拖动 RecyclerView时,整个顶视图正在消失。如果我开始向上滚动,一切都会恢复正常,我无法再重现故障。我不知道是我做错了什么,还是 MotionLayout 有错误。
备注:我需要转换 Y用于特定目的。如果我将 OnSwipe 方向更改为dragDown,当我开始向上滚动时也会发生同样的事情。
android - MotionLayout - clicking on the layout behaves incorrectly
For a project I am using MotionLayout, all's working well and smoothly, except for one little thing. When I open the app and press somewhere on the screen, sometimes the layout jumps to an undefined state.
The states that I have defined are: - the app starts with a 'broken-white' background - when swiping right, a frame layout with a blue background will be shown - when swiping up, a frame layout with a red background will be shown, hiding all other imageViews
The state the app takes when pressing somewhere on the screen - A red background appears with all imageViews visible.
I have been looking for a reason as to why this happens, I guess it's a bug (seeing as it's still in alpha), but wanted to get another one's opinion.
The code will be attached to reproduce it fairly easily.
The main layout:
The motion layout:
android - 为 MotionLayout 实现“类似 YouTube 的动作示例”时出现问题
当我想从这里实现 YouTube 之类的动作示例时,我遇到了一些错误。这是我的 XML 代码。
活动主.xml:
片段主:
片段媒体播放器.xml:
场景_24.xml:
在 activity_main.xml 我使用两个 frameLayout 来显示两个不同的片段。其中一个用于fragment_main.xml,另一个用于fragment_media_holder.xml。我想在向上滑动时喜欢“YouTube like motion Example”,我会看到所有媒体播放器部分,而在滑动底部时只看到 img_cover 和 playPauseView 和 ProgressBar。请帮我在我的代码中找到错误?!谢谢你
android - 水平和垂直回收器视图中的滚动问题
我有一个带有 ViewPager 的 MotionLayout。在 ViewPager 托管的片段之一中,我有一个带有两个水平 RecyclerView 的垂直 RecyclerView。垂直滚动效果很好,但是,当我尝试在内部 RecyclerViews 上水平滚动时,它不能很好地工作。它似乎试图垂直滚动(这里的问题视频:https ://youtu.be/94rQ5Qkr2ew )我怀疑这与我正在使用的视图组合有关,但我不完全确定如何去做修复它或找出问题所在。我已经在内部(水平) RecyclerView 上尝试过这个,它似乎并没有太大的区别:
这是 MotionLayout 容器的布局文件:
它使用以下运动场景:
知道如何解决这个问题吗?或者至少改进一下?
android - MotionLayout:多个累积过渡
我正在使用MotionLayout
并尝试应用一系列转换(在MotionScene
文件中定义)。例如,Transition1 改变 View1 的位置,然后 Transition2 随后改变 View2 的位置。我看到的问题是 Transition2 导致 View1 恢复到原来的布局。我正在使用调用来触发转换transitionToState()
(我还尝试使用setTransition()
然后调用显式提供转换的开始/结束状态transitionToEnd()
)。
我在https://www.raywenderlich.com/8883-motionlayout-tutorial-for-android-getting-started中看到了评论
如果您不为视图提供结束约束,它将消失。发生这种情况是因为库不知道它应该在动画结束时应用哪些约束
是否还需要在ConstraintSet
Transition2 中包含有关 View1 布局的信息?
https://github.com/googlesamples/android-ConstraintLayoutExamples/blob/master/README.md中有一个“多状态”示例,但看起来包含的转换都从单个基本状态开始(而不是“累积”)