Codenameone 代号一-避免应用启动时Android上的屏幕大小变化
这个问题对Android产生了两个不必要的影响:Codenameone 代号一-避免应用启动时Android上的屏幕大小变化,codenameone,Codenameone,这个问题对Android产生了两个不必要的影响: 在应用程序启动时执行一次SizeChangedListener 不想要 窗体背景的可见且不需要的大小调整 (使用选项Style.BACKGROUND\u IMAGE\u SCALED\u FILL)在应用程序启动后 刚刚开始 在三星Galaxy S8+上测试的以下代码生成此日志: 12-18 00:49:45.594 D/SizeChangedListener(17264):[EDT]0:0:0,22-初始屏幕大小:1080*2008 12-
- 在应用程序启动时执行一次SizeChangedListener 不想要李>
- 窗体背景的可见且不需要的大小调整
(使用选项
)在应用程序启动后 刚刚开始Style.BACKGROUND\u IMAGE\u SCALED\u FILL
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可以解决这个问题,尽管使用Android,它可能会在默认情况下不隐藏状态栏的其他设备中产生类似的问题…在此期间,作为临时解决方法,我只是添加了
TestUtils.waitFor(500)代码>就在hi.show()之前代码>。它(显然?)解决了表单背景不必要的大小调整问题。你能给我建议一个更好的解决办法吗?谢谢:)这不是你应该做的事情,因为它会导致崩溃。如果出现问题,我只会设置不同的背景模式。为什么会导致崩溃?在生命周期回调期间,您正在EDT上睡觉,这可能会导致操作系统认为应用程序没有响应,并将其杀死。