状況は次のとおりです。
向きの変更中にコンテンツを変更する単純なアクティビティがあります。
ボタンのクリックに応答して、反対の向き (横 -> 縦、縦 -> 横) を強制し、その後も向きの変更を処理する機能が必要です。
具体的な例で自分自身を説明しようとします(これを達成したいです)-
デバイスが縦向きモードであるとしましょう - >アクティビティは縦向きモードで開始されます。
ここで、ユーザーが何らかのボタンをクリックすると、それに応じてアクティビティが強制的に横向きモードになります。
ここで、ユーザーはデバイスを横向きモードに回転させますが、アクティビティは横向きモードに強制されているため、アクティビティには何も起こりません。
ここで、ユーザーがデバイスを縦向きモードに戻すと、アクティビティは再び縦向きモードになります。
だから、ここに私が向きを強制する方法があります:
public void onButtonClick()
{
if (mLastOrientation == Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
else
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
}
そして、向きの変更の処理は次のとおりです。
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
int currentOrientation = newConfig.orientation;
//
// Some UI changes according to orientation .............
//
mLastOrientation = currentOrientation;
// Here's where I'm allowing device orientation changes again
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
問題は、setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) を呼び出しているときに、アクティビティが現在のデバイスの向きに戻っていることです。これにより、強制的な向きが正しく機能しなくなります。
これを解決する方法はありますか?
前もって感謝します!