在ZK中,如何根据移动设备的方向调整UI组件?

时间:2012-08-07 15:33:20

标签: java android iphone zk

我正在使用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版本中实现,而不是来自稳定版本。

1 个答案:

答案 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代码要求服务器在必要时更新组件。