我的问题是在应用停止/恢复后将组件保持在分层窗格中的无效位置。我有一个不错的动画,它可以在分层窗格中移动某些组件,并且我希望这些组件保持其位置,直到用户与它们交互为止。
我了解到,当应用程序进入后台时,将调用stop()
方法:该方法在current
变量中存储当前的Form引用。然后,在恢复应用程序时,将调用start()
方法,特别是以下代码:
if (current != null) {
current.show();
return;
}
此方法的问题在于该应用程序没有像原来那样“完全”恢复,因为current.show()
似乎在重新验证当前表单的分层窗格(我不希望{{1} },因为我使用revalidate
),所以分层窗格中的某些组件处于无效位置。
作为一种解决方案,我尝试在animateUnlayout
方法中注释current.show();
,但是此方法不起作用(仅在模拟器中有效,在真正的Android和iOS设备上无效,应用停止/恢复后仍然可以重新验证分层窗格。
您知道在应用停止/恢复后如何将每个组件保持在其位置上(不重复将组件移动到无效位置的相同动画)吗?
答案 0 :(得分:1)
当我们从挂起状态恢复或设备旋转时,我们需要将组件布置到其自然位置。唯一的解决方法是通过安装伪造的组件来完全禁用布局管理器。这本质上将阻止布局的发生。我不确定是否存在有效的用例,如果只是视觉动画,可能会有更好的方法。
cnt.setLayout(new Layout() {
@Override
public void layoutContainer(Container parent) {
}
@Override
public Dimension getPreferredSize(Container parent) {
return new Dimension(getDisplayWidth(), getDisplayHeight());
}
});