0

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で実装されていることに気付きました。

4

1 に答える 1

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コードを使用して、必要に応じてコンポーネントを更新するようサーバーに要求しました。

于 2012-10-27T17:20:51.077 に答える