【发布时间】:2021-05-06 14:47:04
【问题描述】:
我正在试用MotionLayout,据我所知,它似乎用于从点A 转换到B。 是否存在从A 到B 并重新启动的循环属性?
我还没有尝试过任何东西。只是在实际编码之前进行研究。
【问题讨论】:
标签: java android android-motionlayout
我正在试用MotionLayout,据我所知,它似乎用于从点A 转换到B。 是否存在从A 到B 并重新启动的循环属性?
我还没有尝试过任何东西。只是在实际编码之前进行研究。
【问题讨论】:
标签: java android android-motionlayout
没有 您可以在转换 A->B、B->C 和 C->A 中使用 3 种状态(A、B 和 C)来实现它。 将它们全部设置为 autoTransition="animateToEnd"。
它可能适用于两个过渡 A->B 和 B->A 设置 B->A autoTransition="jumpToEnd"。
让动画在屏幕上永远循环播放通常是不好的。 如果您只需要重复 X 次的内容,请考虑使用 KeyCycles 或 KeyTimeCycles。
(主题短片:KeyCycle KeyTimeCycle)
【讨论】:
@hoford 提供的答案做了类似的事情,但我想要一些简单的东西。
这是我的方法:
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)
{
}
});
looped 以 false 开头。它在onTransitionCompleted 的第一个触发器上进行这种快速抖动,因为它试图同时从头到尾以及从头到尾进行排序(不要问我为什么。它就是这样做的)。但是,它工作得很好,因为它对于我想要它的用途来说几乎不引人注目。
【讨论】: