2012-02-16 5 views
3

私は常にランドスケープモードで起動する必要があるアクティビティを持っています。私のonCreate()メソッドでは、画面の大きさ(幅と高さ)を使用してインターフェイスを設定していますので、アクティビティが最初は間違った向きで作成されていないことが重要です。これを行うにはタブレットでランドスケープモードを強制する

は、私がマニフェストに次き:

<activity android:name="app.myapp.WideActivity" 
    android:screenOrientation="landscape" 
    android:configChanges="keyboardHidden|orientation" 
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>    

これが私の携帯電話に完全に正常に動作するようですが、私のタブレット(三星ギャラクシータブ、アンドロイド3.1)には以下のような起動されポートレートモードとスイッチの向きをほぼ即座に切り替えます(onCreate()メソッドの後です)。私の電話機(android 2.3)では、onCreate()メソッドが呼び出される前にスクリーンがすでに風景です。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); をonCreate()メソッドに配置しても効果がありません。私は何をしようとしているのですか?

答えて

0

正確な問題を解決できるかどうかはわかりません。私の問題は、samsungのアクティビティ/ウィンドウ管理フレームワークの実装にあります。 しかし、レンダリングを遅らせることで、厄介なUIが表示されないようにすることができます。

onCreate()にはいくつかのデフォルトレイアウトが表示されています。画面全体に伸ばした単純な黒いレイアウトです。 onResume()では、画面の向きを確認します。横向きでない場合、レイアウト(setContentView(my_UI))を適用する遅れた実行可能ファイルを投稿します。 runnableの内部では、画面の向きが横向きかどうかを確認し、向きがまだ縦向きの場合はrunnableを再度ポストします。そうでない場合はUIを設定します。

+0

お返事ありがとうございます。それは奇妙な振る舞いのように見えますが、それは肖像画を正しく扱いますが、景観は正しく扱えないようです私のアプリケーションでは、向きを確認し、必要に応じて高さと幅の値を入れ替えることができます。これにより、私の活動が正しく表示されます。 –

+0

実際には、私は 'configChanges =" orientation "'を取り除くと、デバイスが向きを変えてUIが自動的に修正されるときに、onCreate()メソッドが再度呼び出されることを考えました。また、onCreateメソッドでチェックを追加して、ポートレートモードでUIを描画しないようにすることもできます –

関連する問題