在滑动表单时,屏幕左侧部分只是白色,直到完成滑动,然后返回"表格终于画了。这是设计的吗?我期待"回到"形式要么逐渐显露,要么从左边滑入。
在iOS和Android上,刷卡的表格似乎也变为白色,因此整个屏幕都是白色的,直到刷卡结束。然而,模拟器不是这种情况,你可以看到表格,直到它完全滑出。
重现行为的代码:
Form redForm = new Form("Red Form");
redForm.getAllStyles().setBgColor(0xff0000);
Button btnToBlueForm = new Button("Go to blue form");
redForm.add(btnToBlueForm);
Form blueForm = new Form("Blue Form");
blueForm.getAllStyles().setBgColor(0x0000ff);
LazyValue<Form> lazyRedForm = (Object... args) -> redForm;
SwipeBackSupport.bindBack(blueForm, lazyRedForm);
btnToBlueForm.addActionListener((ActionListener<ActionEvent>) (ActionEvent evt) -> {
blueForm.show();
SwipeBackSupport.bindBack(blueForm, lazyRedForm);
});
redForm.show();
按红色表格中的按钮。现在出现蓝色表格。向后滑动并观察效果。
答案 0 :(得分:1)
这是因为转换中的SlideFade模式。如果您将其切换为幻灯片,它应该按预期的方式与背景一起工作。这是您的代码版本,通过将样式应用于内容窗格,可以正常工作:
Form redForm = new Form("Red Form");
redForm.getContentPane().getAllStyles().setBgColor(0xff0000);
redForm.getContentPane().getAllStyles().setBgTransparency(255);
Button btnToBlueForm = new Button("Go to blue form");
redForm.add(btnToBlueForm);
Form blueForm = new Form("Blue Form");
blueForm.getContentPane().getAllStyles().setBgColor(0x0000ff);
blueForm.getContentPane().getAllStyles().setBgTransparency(255);
LazyValue<Form> lazyRedForm = (Object... args) -> redForm;
SwipeBackSupport.bindBack(blueForm, lazyRedForm);
btnToBlueForm.addActionListener((ActionListener<ActionEvent>) (ActionEvent evt) -> {
blueForm.show();
SwipeBackSupport.bindBack(blueForm, lazyRedForm);
});
redForm.show();
这与原始代码相反的原因是SlideFade是两个单独的过渡,一个移动/淡化标题,另一个单独滑动内容窗格。由于内容窗格是透明的,因此背景不会被绘制,因为我们假设它是表单背景。通过设置内容窗格的颜色/不透明度,我们可以在SlideFade“看到”的图层上获得完全相同的效果。