android - 代号一 - ReplaceAndWait() 不起作用?

标签 android ios codenameone

这个问题与我之前的问题“Codename One - Transition from FormA to FormB to FormC”有关。

我花了很多时间尝试在 Form 之间进行工作转换,但在真实设备上没有成功(在模拟器上没有问题)。最后,我选择更改逻辑,将三个 Form 之间的转换替换为替换同一 Form 内的三个 Container。这个想法是 ReplaceAndWait() 方法确保我等待替换结束。但是......同样在这种情况下,代码在 Codename One 模拟器(使用 Android 和 iOS 皮肤)中运行良好,并且在真实设备上不起作用。更清楚一点:在真实设备上没有“淡入淡出效果”(在 Android 4.x 和 5.x 上测试过)。以下代码有什么问题?

        Container container1 = new Container(new BorderLayout(BorderLayout.CENTER_BEHAVIOR_SCALE));
        container1.add(BorderLayout.CENTER, FlowLayout.encloseCenterMiddle(myIcon));

        Container container2 = new Container(new BorderLayout(BorderLayout.CENTER_BEHAVIOR_SCALE));
        container2.add(BorderLayout.CENTER, FlowLayout.encloseCenterMiddle(new Label(" ")));

        Container container3 = new Container(new BorderLayout(BorderLayout.CENTER_BEHAVIOR_SCALE));
        container3.add(BorderLayout.CENTER, backgroundContainer);

        startForm.add(BorderLayout.CENTER, container1);
        startForm.show();

        container1.getParent().replaceAndWait(container1, container2, CommonTransitions.createFade(2000));
        container2.getParent().replaceAndWait(container2, container3, CommonTransitions.createFade(1000));

最佳答案

这在设备上对我有用:

    Form f = new Form("Fade", new BorderLayout());

    Container container1 = BorderLayout.center(FlowLayout.encloseCenterMiddle(new Label(duke)));

    Container container2 = BorderLayout.center(FlowLayout.encloseCenterMiddle(new Label(" ")));

    Label redDuke = new Label(duke);
    redDuke.getUnselectedStyle().setBgColor(0xff0000);
    redDuke.getUnselectedStyle().setBgTransparency(255);

    Container container3 = BorderLayout.center(FlowLayout.encloseCenterMiddle(redDuke));

    f.add(CENTER, container1);
    f.show();

    callSerially(() -> {
        container1.getParent().replaceAndWait(container1, container2, CommonTransitions.createFade(2000));
        container2.getParent().replaceAndWait(container2, container3, CommonTransitions.createFade(1000));
    });

但由于淡入淡出在设备上的工作方式不同,因此在模拟器上的工作方式并不完全相同。为了提高效率,淡入淡出在设备和模拟器上的实现方式略有不同,某些行为可能呈现不同,尤其是对于半透明/透明组件。

关于android - 代号一 - ReplaceAndWait() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47603776/

相关文章:

codenameone - 使用验证器验证表单

c# - 无法检测到 webview Appium

Android Studio - 应用程序未安装到手机上,但运行

ios - SwiftUI View 修改器 : How to create view modifier functions without using View extensions?

ios - 如何找出 CloudKit 订阅何时被删除?

java - CodeName1 - ipa 和源代码之间的不同响应代码

java - 如何从 URL 重定向到 Codename One 应用程序?

android - 无需用户交互即可卸载 Android 应用程序

android - 使用 ProGuard,对测试策略有何影响?

ios - UITableView Section Headers by month of dates in array