Pab*_*rra 7 android android-motionlayout
我有一个这个layoutDescription的动画布局: app:layoutDescription="@xml/scene"
scene.xml
<MotionScene
xmlns:motion="http://schemas.android.com/apk/res-auto">
<Transition
motion:constraintSetStart="@layout/view_home_card_start"
motion:constraintSetEnd="@layout/view_home_card_end"
motion:duration="1000">
<OnSwipe
motion:touchAnchorId="@+id/button"
motion:touchAnchorSide="left"
motion:dragDirection="dragLeft" />
</Transition>
</MotionScene>
Run Code Online (Sandbox Code Playgroud)
我认为xml view_home_card_start和view_home_card_end无关紧要.
如何以编程方式调用此动画?
Pab*_*rra 14
最后我这样做:
((MotionLayout)findViewById(R.id.motionLayout)).transitionToEnd();
((MotionLayout)findViewById(R.id.motionLayout)).transitionToStart();
Run Code Online (Sandbox Code Playgroud)
小智 14
你也可以在你的 xml 中使用
motion:autoTransition="animateToEnd"
Run Code Online (Sandbox Code Playgroud)
和
motion:autoTransition="animateToStart"
Run Code Online (Sandbox Code Playgroud)
我们可以简单地像这样 motion_layout.transitionToEnd()
但是在 Activity 恢复时,它会非常快地启动我们的动画,以至于我们可能会错过少数或整个动画。所以我建议添加一些延迟。
GlobalScope.launch (Dispatchers.IO){
delay(1000)
withContext(Dispatchers.Main){
motion_layout.transitionToEnd()
}
}
Run Code Online (Sandbox Code Playgroud)
如果未添加,您还需要添加 Coroutines 依赖项。
实现 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
小智 6
如果有人从片段中执行此操作:
进口:
import androidx.constraintlayout.motion.widget.MotionLayout;
Run Code Online (Sandbox Code Playgroud)实例化 MotionLayout:
MotionLayout motionLayout = view.findViewById(R.id.your_motion_layout);
Run Code Online (Sandbox Code Playgroud)过渡到运动结束/开始:
motionLayout.transitionToStart();
Run Code Online (Sandbox Code Playgroud)或者
motionLayout.transitionToEnd();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2462 次 |
| 最近记录: |