Java 如何循环MotionLayout动画?
我正在试用Java 如何循环MotionLayout动画?,java,android,android-motionlayout,Java,Android,Android Motionlayout,我正在试用MotionLayout,据我所知,它似乎用于从点A过渡到B是否存在从a到B并重新启动的循环属性? 我还没试过什么。只是在编写代码之前做研究。不 您可以在转换A->B,B->C&C->A中使用3种状态(A,B&C)来实现它。 将它们全部设置为autoTransition=“animateToEnd” 它可能适用于两种转换A->B和B->A设置B->A自动转换=“jumpToEnd” 让动画永远在屏幕上循环通常是不好的。 如果您只需要重复X次,请考虑键区或KimTimeCyes。< /P
MotionLayout
,据我所知,它似乎用于从点A
过渡到B
是否存在从a
到B
并重新启动的循环属性?
我还没试过什么。只是在编写代码之前做研究。不
您可以在转换A->B,B->C&C->A中使用3种状态(A,B&C)来实现它。
将它们全部设置为autoTransition=“animateToEnd”
它可能适用于两种转换A->B和B->A设置B->A自动转换=“jumpToEnd”
让动画永远在屏幕上循环通常是不好的。
如果您只需要重复X次,请考虑键区或KimTimeCyes。< /P>
(有关主题的短片:
)否
您可以在转换A->B,B->C&C->A中使用3种状态(A,B&C)来实现它。
将它们全部设置为autoTransition=“animateToEnd”
它可能适用于两种转换A->B和B->A设置B->A自动转换=“jumpToEnd”
让动画永远在屏幕上循环通常是不好的。
如果您只需要重复X次,请考虑键区或KimTimeCyes。< /P>
(有关主题的短片:
)提供的答案与此类似,但我想要简单的答案
这是我的方法:
MotionLayout motionLayout = findViewById(R.id.motionLayout);
motionLayout.transitionToEnd();
motionLayout.setTransitionListener(new MotionLayout.TransitionListener()
{
@Override
public void onTransitionStarted(MotionLayout motionLayout, int i, int i1)
{
}
@Override
public void onTransitionChange(MotionLayout motionLayout, int i, int i1, float v)
{
}
@Override
public void onTransitionCompleted(MotionLayout motionLayout, int i)
{
if(!looped)
motionLayout.transitionToStart();
else
motionLayout.transitionToEnd();
looped = !looped;
}
@Override
public void onTransitionTrigger(MotionLayout motionLayout, int i, boolean b, float v)
{
}
});
其中循环
以false开始。在onTransitionCompleted
的第一次触发时,它会快速抖动,因为它试图同时从开始到结束和从结束到开始(别问我为什么,它就是这样)。但是,它工作得很好,因为我想要它的目的几乎不明显。提供的答案也有类似之处,但我想要简单的东西
这是我的方法:
MotionLayout motionLayout = findViewById(R.id.motionLayout);
motionLayout.transitionToEnd();
motionLayout.setTransitionListener(new MotionLayout.TransitionListener()
{
@Override
public void onTransitionStarted(MotionLayout motionLayout, int i, int i1)
{
}
@Override
public void onTransitionChange(MotionLayout motionLayout, int i, int i1, float v)
{
}
@Override
public void onTransitionCompleted(MotionLayout motionLayout, int i)
{
if(!looped)
motionLayout.transitionToStart();
else
motionLayout.transitionToEnd();
looped = !looped;
}
@Override
public void onTransitionTrigger(MotionLayout motionLayout, int i, boolean b, float v)
{
}
});
其中循环
以false开始。在onTransitionCompleted
的第一次触发时,它会快速抖动,因为它试图同时从开始到结束和从结束到开始(别问我为什么,它就是这样)。但是,它工作得很好,因为我想要它的目的几乎看不出来。是的,我想过类似的事情。我想再检查一下是否有更合适的,是的,我也想过类似的事情。想要再次检查是否有更合适的东西,是的,这是一个很好的代码解决方案。作为一个小的改进,我建议使用TransitionAdapter,因为您只需要实现一个方法。我肯定会对此进行研究。谢谢我对你的答案投了赞成票,因为它确实让我对我可以探索的其他领域有了一些见解。是的,这是一个很好的代码解决方案。作为一个小的改进,我建议使用TransitionAdapter,因为您只需要实现一个方法。我肯定会对此进行研究。谢谢我对你的答案投了赞成票,因为它确实让我对我可以探索的其他领域有了一些见解。