代号一个 - 避免在Android屏幕尺寸变化对应用程序启动时

问题描述:

这个问题产生于Android 2个不良影响:代号一个 - 避免在Android屏幕尺寸变化对应用程序启动时

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

下面的代码,在三星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 /代号1(17264):sizechanged :1080 1945 [email protected] 12-18 00:49:45.627 D/libEGL(17264):loaded /vendor/lib64/egl/libGLES_mali.so加载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 - New屏幕尺寸: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()); 
    }); 

我们只是传递视图的大小和我们从Android获得的事件。原因可能与在启动时可能隐藏的状态栏有关,然后为了兼容性而添加。

我们有一个RFE到enable status bar hiding on Android这可能会解决这个问题虽然与Android,这也许可以在状态栏默认是不隐藏在其他设备中的类似问题......

+0

在同时,作为临时解决方法,我只是在'hi.show();'之前添加'TestUtils.waitFor(500);'。它(显然?)解决了不必要的窗体背景大小调整问题。你能建议我一个更好的解决方法吗?谢谢:) –

+0

这不是你应该做的,因为它可能会导致崩溃。如果这是一个问题,我会设置不同的背景图案。 –

+0

它为什么会导致崩溃? –