2011-04-29 15 views
1

私はアプリが常にデバイスの自然な向きに固定されるようにします。だから、基本的には回転を0度にしたい。 getRotation()方法がここにあります:メソッドやコードで "setRotation()"を実行する方法はありますか?

http://developer.android.com/reference/android/view/Display.html

しかし、ここで見つけるSurface.ROTATION_Xパラメータの一つ受け入れるだろう何setRotation(int型の回転)がない:だから http://developer.android.com/reference/android/view/Surface.html

は、行うにはいくつかの方法がありますこれは、常に動作するコードの1行でですか?または、これはいくつかのコードで行う必要がありますか?

私がマニュアルソリューションと考えることができるのは、次のとおりですが、私はいくつか心配しています。

私はdisplay.getRotation()を使用できます。次に、0度か180度かをチェックし、その後、表示の高さと幅を取得し、どれがもう一方のものより長いかを確認します。私がランドスケープモードになっている場合は、デバイスの自然な向きが横長であることがわかりますので、横向きに設定することができます。しかし、ローテーションが270または90の場合、自然な向きがポートレートであることがわかり、ポートレートに設定できます。

しかし、私の懸念事項は、いつでも動作するようにこれを行う場所です。 getRotation()メソッドを使用している間にデバイスの向きが変わった場合、このコードが実行されているときにユーザーが画面を回転していて、if文で高さに対して幅を確認していないとすれば、すべてを捨てなさい。これをonCreate()またはonResume()に入れるとどうなりますか?物事が邪魔にならない可能性はありますか?

onCreate()またはonResume()は、ユーザーがデバイスを回したために画面の再配置によって中断される可能性がありますか?もう1つの問題は、デバイスを180度回転させても、その動作は決して破壊されないということです。この状況の動作は、90度の回転か180度の回転のいずれかになります。

答えて

1

マニフェストの画面の向きを「設定」することができます。ここをクリックしてください:http://developer.android.com/guide/topics/manifest/activity-element.html#screen

<activity 
    android:name=".Activity" 
    android:screenOrientation="portrait" 
    android:theme="@style/Theme.D1" 
    android:label="@string/title_activity"/> 

あなたが探している値は次のとおりです。 "user"ユーザーの現在の優先方向です。しかし、私はいくつかのテストケースでこれをテストして確かめます。 HTH!

+0

私は、ITが「不特定」になる可能性があることも見ています。私は両方を試してみるよ、ありがとう –

+0

私は "不特定"はデフォルトに似ていると思う。とにかく、テストするのが良い、推測しないでください。 – Martinez

関連する問題