我有一个带有MotionScene的MotionLayout,我想做一个“if-check”(在Kotlin中),以检查场景当前是否处于过渡“开始”或“结束”。
有谁知道如何做到这一点?
这是我在MotionScene中的“开始”和“结束”过渡:
<Transition
motion:constraintSetEnd="@+id/end"
motion:constraintSetStart="@+id/start"
motion:duration="1000">
最佳答案
您可以根据需要使用TransitionListener回调
motionLayout.setTransitionListener(new MotionLayout.TransitionListener() {
@Override
public void onTransitionStarted(MotionLayout motionLayout, int i, int i1) {
Log.i(TAG, "onTransitionStarted: ");
}
@Override
public void onTransitionChange(MotionLayout motionLayout, int i, int i1, float v) {
if (isViewVisible) {
hideViews();
}
}
@Override
public void onTransitionCompleted(MotionLayout motionLayout, int i) {
if (i != R.layout.start) {
showViews();
}
}
@Override
public void onTransitionTrigger(MotionLayout motionLayout, int i, boolean b, float v) {
}
});
您也可以使用motionLayout.getProgress()
在onTransitionChange
内部,每当抽屉位置改变时都会调用。像这样
public void onTransitionChange(MotionLayout motionLayout, int i, boolean b, float v) {
if (motionLayout.getProgress() == 0.0) {
// this is start
} else {
// this is end
}
}
关于android - 如何检查MotionScene是否处于过渡 “start”或 “end”上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64230143/