jjzjj

MotionLayout

全部标签

【和UI斗智斗勇的日子】MotionLayout——让人又爱又恨的布局(一)

什么是MotionLayout在2018年5月发布的安卓ConstraintLayout2.0中,有这样一个新布局——MotionLayout。那么这个布局有什么用呢,在我看来,它的作用很像加强版的补间动画,你只需要提供给它开始和结束的xml布局文件,它就能自动帮你生成变换布局的动画,如下面安卓的官方示例图所示:更为强大的是,它还支持滑动触发动画和点击触发动画两种方式,可以帮助我们实现复杂的用户界面动画和过渡效果,还是以安卓的示例图举例:下面我们就来详细说说怎么使用这个神奇的布局控件。简单使用首先我们要简单了解下这个布局:MotionLayoutisalayouttypethathelpsyo

android - 无法为新的 MotionLayout 声明 MotionScene

我想尝试新的MotionLayot。但我无法加载MotionScreen。我已将此依赖项添加到gradle中:implementation'com.android.support:appcompat-v7:27.1.1'implementation'com.android.support.constraint:constraint-layout:2.0.0-alpha1'implementation'com.android.support:design:27.1.1'并且能够在xml文件中声明运动布局:但是当我试图在xml文件夹中添加一个新场景时,它不会弹出也无法点击到源。我做错了什么

android - 以编程方式更改 MotionLayout 运动场景中的 ConstraintSet 属性

我有一个用例,我想使用MotionLayout创建类似Youtube的动画。this中有此动画的示例repo。但问题是,在这个例子中,他们使用静态高度作为起始约束,如下所示,即320dp:但我要求使用宽高比设置约束。对于静态宽高比,我可以像这样在Constraint中使用app:layout_constraintDimensionRatio="w,16:9"进行设置。但是每个视频都有不同的纵横比,我从API获得了这些纵横比。所以我想根据视频设置不同的纵横比。我无法在ConstraintSet中找到以编程方式设置它的方法我尝试了一种解决方法来设置android:layout_height

android - 当手动将进度设置为 MotionLayout 时,它会清除所有约束

我有带有两个小部件的MotionLayout,一个在MotionLayout中描述,第二个在场景文件中描述。布局文件:场景文件:然后在Activity中我设置进度://onCreate,etc..MotionLayoutmotionLayout=findViewById(R.id.motion_layout);motionLayout.setProgress(0.5f);动态View在正确的位置,但静态View失去了所有约束,但不受场景影响,如所述here,只有场景文件中描述的小部件应该受到影响。Ontheotherhand,let’ssaythatyouhavealayoutwith

android - Android MotionLayout 中的多个转换问题

我正在Android中使用MotionLayout。我使用的是alpha2版本。'com.android.support.constraint:constraint-layout:2.0.0-alpha2'我想对两次不同的按钮点击使用react,并为每一次点击都触发一个动画。我目前的方法是在MotionScene中设置两个Transitions,每个都有一个OnClick触发器。问题是似乎只找到了第一个转换。对于第二个,什么也没有发生。我是不是做错了什么,或者您可以为每个MotionScene设置一个转换?如果是这种情况,是否有不同的解决方案?这是我的动态场景的重要部分感谢任何帮助。最

android - 使用新的 MotionLayout 模仿 Snackbar + CoordinatorLayout + FAB

假设我们有一个顶部有FAB的BottomNavigationBar。使用此设置并显示Snackbar时,Snackbar应出现在BottomNavigationBar上方,并在出现/消失时向上/向下插入FAB。这是使用CoordinatorLayout的常见场景。是否也可以使用新的MotionLayout创建此动画?错误跟踪器中有一个问题,但它已经关闭,因为OP没有明确提出问题(https://issuetracker.google.com/issues/112665540)我在尝试时遇到的问题:我们无权访问Snackbar的布局ID。我们也无权访问Snackbar的通用xml,因此我

从 alpha-2 迁移到 alpha-3 时,Android MotionLayout 崩溃

我在玩MotionLayout时遇到了一个奇怪的问题当我将使用的库版本从com.android.support.constraint:constraint-layout:2.0.0-alpha2更改为com.android.support.constraint:constraint-layout:2.0.0-alpha3我的应用程序崩溃了:E/AndroidRuntime:FATALEXCEPTION:mainProcess:ru.sergik.collapsibleexoplayer,PID:1376java.lang.NullPointerException:Attempttoin

带有 MotionLayout 的 Android 折叠工具栏 - 当 RecyclerView 为空/不可滚动时禁用运动

我正在尝试使用MotionLayoutView来获得折叠工具栏行为。我的方法类似于此处的示例:https://blog.stylingandroid.com/motionlayout-collapsing-toolbar-part-1/这工作正常,但过渡也会在滑动时开始,即使recyclerview为空或条目少于屏幕上显示的条目数也是如此。如果回收器实际上能够滚动,是否有任何方法只启用MotionLayout转换?我的OnSwipe描述: 最佳答案 if(dataList.isEmpty()){motionLayout.enable

android - 是否可以禁用 MotionLayout?

我有一个Fragment,它在MotionLayout中承载了一个RecyclerView。在回收站View之上,我有一个可以折叠和展开的View,所有这些都是在我的运动场景中完成的。它由单击触发以及响应拖动回收器View。到目前为止,这一切都按预期工作。现在是症结所在:我想在我的应用程序中完全隐藏某些状态的折叠View。但是如果我设置View的可见性或改变它的高度,当我拖动recyclerview时它仍然会回到View中。那么是否可以完全禁用MotionLayout(锁定约束)直到我再次启用它。禁用拖动识别器也是一个可行的解决方案。现在一些简化的XML来演示这种情况。包含带标题Vie

android - MotionLayout 和 ConstraintLayout 不围绕 child 高度设置动画

在RecyclerView中使用MotionLayouts时,我注意到如果它们的高度发生变化,MotionLayouts不会为环绕它们的child设置动画。重现该行为的一种简单方法是使用以下布局:以及与OnClick触发器关联的MotionScene:这将给出以下结果:如您所见,一旦过渡开始,MotionLayout的高度就会设置为最终的预期高度,使其蓝色背景可见,直到subview完成其自身的高度过渡并与它完全重叠。如果您尝试实现展开的项目动画,RecyclerView中也会发生同样的事情。是否有一种方法可以使MotionLayout在过渡期间恰好适合其子项的高度,或者这是否太划算了
12