Codenameone 无限进步隐藏完整的android屏幕
在带有浏览器组件的Android上,无限进度隐藏完整性屏幕,看不到内容,而在IOS上则可以正常工作 如果表单没有浏览器组件,在Android和IOS中运行良好,屏幕变暗,但我们可以看到内容 我附加了一个示例代码(仅限于start方法)Codenameone 无限进步隐藏完整的android屏幕,codenameone,Codenameone,在带有浏览器组件的Android上,无限进度隐藏完整性屏幕,看不到内容,而在IOS上则可以正常工作 如果表单没有浏览器组件,在Android和IOS中运行良好,屏幕变暗,但我们可以看到内容 我附加了一个示例代码(仅限于start方法) InfiniteProgress创建一个对话框,该对话框显示在中间,但有效地阻止了周围的输入BrowserComponent不能很好地处理对话框,因为对话框的背景需要“绘制”,并且不是真正的底层表单 通常,解决方法是使用交互对话框。您还可以使用LayeredPan
InfiniteProgress
创建一个对话框
,该对话框显示在中间,但有效地阻止了周围的输入BrowserComponent
不能很好地处理对话框,因为对话框的背景需要“绘制”,并且不是真正的底层表单
通常,解决方法是使用交互对话框
。您还可以使用LayeredPane
来放置InfiniteProgress
,甚至对其进行适当的着色,使其“外观”相同。但复制阻塞行为更难。我不确定您是否能够做到这一点,因为本机小部件处理自己的事件。阻止来自Codename One组件的输入非常容易,但是当您获得事件时,它可能已经被本机小部件处理过了
我能想到的解决这方面问题的唯一办法就是用JavaScript完成这一部分。
InfiniteProgress
创建了一个对话框,该对话框显示在中间,但有效地阻止了周围的输入BrowserComponent
不能很好地处理对话框,因为对话框的背景需要“绘制”,并且不是真正的底层表单
通常,解决方法是使用交互对话框
。您还可以使用LayeredPane
来放置InfiniteProgress
,甚至对其进行适当的着色,使其“外观”相同。但复制阻塞行为更难。我不确定您是否能够做到这一点,因为本机小部件处理自己的事件。阻止来自Codename One组件的输入非常容易,但是当您获得事件时,它可能已经被本机小部件处理过了
我能想到的解决这方面问题的唯一办法就是用JavaScript来完成这一部分
public void start() {
if(current != null){
current.show();
return;
}
Form hi2 = new Form("No browser Form", BoxLayout.y());
hi2.add(new Button(new Command("Show Infinite Progress") {
@Override
public void actionPerformed(ActionEvent evt) {
try {
Dialog ip = new InfiniteProgress().showInfiniteBlocking();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ip.dispose();
}
}).start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}));
hi2.add(new Label("No browser Form"));
hi2.add(new Button(new Command("show browser Form") {
@Override
public void actionPerformed(ActionEvent evt) {
try {
Form hi = new Form("browser Form");
hi.setLayout(new BorderLayout());
BrowserComponent browserComponent = new BrowserComponent();
browserComponent.setURL("https://www.codenameone.com/");
hi.add(BorderLayout.CENTER, browserComponent);
hi.add(BorderLayout.SOUTH, new Button(new Command("Show Infinite Progress") {
@Override
public void actionPerformed(ActionEvent evt) {
try {
Dialog ip = new InfiniteProgress().showInfiniteBlocking();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ip.dispose();
}
}).start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}));
hi.show();
} catch (Exception ex) {
Dialog.show("Error", ex.getMessage(), "OK", null);
ex.printStackTrace();
}
}
}));
hi2.show();
}