在Android上dialog.dispose()
之后,我出现了屏幕闪烁的问题(在iOS上没有)
以下是视频(请观看480p,因为YouTube会以较低的分辨率丢帧) https://www.youtube.com/watch?v=YExvPno3hjc
这是Dialog的代码
Dialog dialog = new Dialog("Shop");
TableLayout dialogLayout = new TableLayout(buttons.length, 4);
dialog.setName("ShopDialog");
dialog.setLayout(dialogLayout);
dialog.setDisposeWhenPointerOutOfBounds(true);
然后,TableLayout中充满了标签和按钮,包括“关闭”按钮
Button.setCapsTextDefault(false);
Button closeButton = new Button ("Close");
closeButton.getAllStyles().setFgColor(WordsSynonyms.UI_TEXT_COLOR);
closeButton.getAllStyles().setBgImage(theme.getImage("button.png"));
closeButton.addActionListener(new ActionListener<ActionEvent>() {
@Override
public void actionPerformed(ActionEvent evt) {
dialog.dispose();
}
});
Button.setCapsTextDefault(true);
最后像这样显示
dialog.showPacked(BorderLayout.CENTER, true);
问题是,如果我点击“关闭”按钮,整个屏幕都会闪烁, 看起来很简短,黑色的矩形覆盖了Form, 但是如果您不在对话框中点击就不会发生,它会正常消失
我尝试将“表格色调”更改为白色setTintColor(0x3fffffff)
,以检查它是否与该色调有关,但是看起来与它无关,尽管“表格色调”设置为25%,但仍有黑色闪烁白色
这发生在三种不同的窗体上,具有不同的对话框,所以应该更一般一些,以前不一样,但是我在全局一级所做的唯一更改是针对iOS的构建提示,对Android有影响
有什么想法吗?
答案 0 :(得分:1)
这可能是后台表单的性能问题或违反EDT。在Android中,我们异步绘制屏幕,如果错过一帧,可能会发生这种情况。您可以通过使用主题常量删除对话框过渡来减轻问题:
dialogTransitionIn=empty
dialogTransitionOut=empty
但这可能是由于表单中的元素花费太长时间来绘制所致。在模拟器中打开表单,并将其填写到显示问题的级别(无需打开对话框)。然后在性能监视器工具中刷新树并检查绘制表单所需的绘画操作。看看有没有什么特别贵的。