2

私は現在、画面の向きに応じて動作が異なる Android アプリケーションに取り組んでいます。

getWindowManager().getDefaultDisplay().getRotation() を使用して onCreate() メソッドで画面の向きを取得し、そこから管理しています。

基本的に、私の問題は、向きを制御する必要があることです。横向きモードでは、ユーザーが決定すると、アプリケーションは縦向きモードに切り替える必要があり、その状態を維持しますが、使用が縦向きモードになり、次に横向きになるまでのみです。

私は setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) を使用して、横向きのときに向きを変更しています。問題は、これを使用すると、ランドスケープに戻れないことです。onCreate() で setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) を使用すると、問題は数秒後に横向きモードに切り替わることです (画面がまだ横向きであるため)。

これを管理する他の方法はありますか?基本的に、listner を使用して画面の向きの変更をキャッチする方法はありますか (または、ビューが縦向きモードでロックされている場合は呼び出されないため、onCreate 以外の場所)。私はそれについて何も見つけることができません...

どんなアイデアでも大歓迎です!

ありがとう!

4

1 に答える 1

2

レイアウトランドに 1 つ、レイアウトポートに 1 つ、合計 2 つのレイアウトを作成してみてはいかがでしょうか。これらは、デバイスの向きが変わると自動的に適用されます。

これらのそれぞれの内部で、縦向きビュー用と横向きビュー用の 2 つの異なる子レイアウトを作成し、これらの可視性を変更してユーザーの好みを反映させます。

したがって、ローテーションの変更を処理する必要はまったくなく、Android にそれを管理させ、ユーザー オーバーライドを管理するだけです。

于 2011-04-06T08:16:56.237 に答える