我正在使用ZK6,我想根据移动设备的方向更改我的UI组件。
在ZK组件参考:Tablet Devices/Events/ClientInfoEvent中,getOrientation()
中有ClientInfoEvent
方法。 但是,我没有在课堂上看到这个方法,也没有找到关于这个方法的任何信息。 (见更新)
现在我正在使用这段代码在设备方向改变时调整组件大小。
@Override
public void doAfterCompose(Groupbox comp) throws Exception {
super.doAfterCompose(comp);
comp.addEventListener(Events.ON_CLIENT_INFO, new EventListener<ClientInfoEvent>() {
@Override
public void onEvent(ClientInfoEvent event) throws Exception {
getSelf().setHeight(event.getScreenHeight() + "px");
getSelf().setWidth(event.getScreenWidth() + "px");
}
});
}
但我对此并不满意,因为它需要服务器来更新组件,而我仍然不知道它是什么方向。
那么,我怎么知道方向?什么是根据这些信息调整元件尺寸的更好方法?
如果重要的话,我会使用android模拟器进行测试。
我注意到getOrientation()
在6.5.0版本中实现,而不是来自稳定版本。
答案 0 :(得分:0)
由于6.5.0已经发布了一段时间,我决定回答这个问题。
基本上,ClientInfoEvent
现在提供有关方向的信息,也是
设备像素比率
现在我们可以编写如下代码:
@Override
public void doAfterCompose(Groupbox comp) throws Exception {
super.doAfterCompose(comp);
comp.addEventListener(Events.ON_CLIENT_INFO, new EventListener<ClientInfoEvent>() {
@Override
public void onEvent(ClientInfoEvent event) throws Exception {
if (event.isLandscape()) {
// do things when landscape
} else {
// do other things else.
}
}
});
}
对于重新调整大小的组件,我编写了一些客户端代码来调整客户端的小部件宽度/高度,并使用java代码要求服务器在必要时更新组件。