Codename One - 在Android启动时避免Android上的屏幕尺寸变化

问题描述 投票:1回答:1

此问题会在Android上产生两个不需要的效果:

  • 我不想要的SizeChangedListener(在app启动时)的一次执行;
  • 应用程序刚刚启动后,表单背景的可见和不需要的大小调整(使用选项Style.BACKGROUND_IMAGE_SCALED_FILL)。

以下代码在Samsung Galaxy S8 +上测试,生成此日志:

12-18 00:49:45.594 D / SizeChangedListener(17264):[EDT] 0:0:0,22 - 初始屏幕尺寸:1080 * 2008 12-18 00:49:45.596 I / System.out(17264): showKeyboard false 12-18 00:49:45.623 D / Codename One(17264):sizechanged:1080 1945 com.codename1.impl.android.CodenameOneView@10f7aa8 12-18 00:49:45.627 D / libEGL(17264):loaded / vendor / lib64 / egl / libGLES_mali.so 12-18 00:49:45.633 I / WebViewFactory(17264):正在加载com.google.android.webview版本60.0.3112.107(代码311210750)12-18 00:49:45.634 D / SizeChangedListener(17264):[EDT] 0:0:0,61 - 调用“hi Form”上的SizeChangedListener ... 12-18 00:49:45.635 D / SizeChangedListener(17264):[EDT] 0:0:0, 64 - 新屏幕尺寸:1080 * 1945

这是我用来复制此问题的非常简单的代码:

public void start() {
    if (current != null) {
        current.show();
        return;
    }
    Form hi = new Form("Hi World", BoxLayout.y());
    hi.add(new Label("Hi world"));
    Log.p("Initial Screen size: " + hi.getWidth() + " * " + hi.getHeight());
    hi.show();

    hi.addSizeChangedListener(l -> {
        Log.p("SizeChangedListener on \"hi Form\" invoked...");
        Log.p("New Screen size: " + hi.getWidth() + " * " + hi.getHeight());
    });
codenameone
1个回答
1
投票

我们只是转发视图的大小以及我们从Android获得的事件。其原因可能与状态栏有关,状态栏可能在启动时隐藏,然后添加以便兼容。

我们有一个针对enable status bar hiding on Android的RFE可能会解决这个问题,虽然在Android上它可能会在其他默认情况下未隐藏状态栏的设备中创建类似的问题...

© www.soinside.com 2019 - 2024. All rights reserved.