根据有关过渡的材料指南,我想在应用程序屏幕上建立某种外观,以传达这些过渡的层次结构。意思是,从左到右过渡的所有事物都处于相同的水平或重要性。较小的表格或简短的用户输入将作为简单的弹出窗口(而不是水平而是垂直)跳入和跳出。
预期行为:
实际行为
幻灯片形式在我的情况下正常工作。
show()使弹出表单从底部滑入屏幕,而源表单则保留在原位,被遮盖了(如预期的那样)。 但是 showback()导致主窗口从顶部滑入,覆盖了弹出屏幕。
完整代码示例以显示实际行为
public markFormGroupTouched(formGroup: FormGroup) {
Object.values(formGroup.controls).forEach(control => {
control.markAsTouched();
if (control instanceof FormGroup) {
// if its a FormGroup then just call the method recursively
this.markFormGroupTouched(control)
}
});
}
}
具有不同的CommonTransition类型,即in过渡与out过渡,过渡方向参数,最重要的是show()vs showback()的方向令人困惑。
我如何才能实现弹出表单正确滑出的预期行为?
是否有更好的方法或更少的代码来实现这一目标?
谢谢。
答案 0 :(得分:1)
封面具有输入/输出效果,而幻灯片仅具有输出效果。当您从表格A滑到表格B时,会有一个动作包括两个表格的工作原理完全相反。但是,有了盖子,它就可以在A型表的顶部滑动,而后者保持在原位,然后从A型表滑下,看起来好像A型表一直在它的下面。
这意味着过渡和过渡都用于传达两种覆盖模式。但是,这可能会与形式A之外的过渡冲突,因此我们需要暂时将其禁用。
例如:
removeTransitionsTemporarily(backTo);
f.setTransitionInAnimator(CommonTransitions.createCover(CommonTransitions.SLIDE_VERTICAL, false, 300));
f.setTransitionOutAnimator(CommonTransitions.createUncover(CommonTransitions.SLIDE_VERTICAL, true, 300));
public static void removeTransitionsTemporarily(final Form f) {
final Transition originalOut = f.getTransitionOutAnimator();
final Transition originalIn = f.getTransitionInAnimator();
f.setTransitionOutAnimator(CommonTransitions.createEmpty());
f.setTransitionInAnimator(CommonTransitions.createEmpty());
f.addShowListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
f.setTransitionOutAnimator(originalOut);
f.setTransitionInAnimator(originalIn);
f.removeShowListener(this);
}
});
}