2

2 つの表示モードを処理するアクティビティがあります。

  1. 通常モード : 画面は回転せず、常に縦向きモードです。
  2. フルスクリーン モード : 画面は縦向きまたは横向きにすることができます

2つのモードを処理するアクティビティは1つだけです:

  1. がフルスクリーン モードか通常モードisFullscreen()かを示すブール変数。Activity
  2. changeMode()setContentView()現在のモードに適切な XML レイアウトを切り替えるための呼び出し
  3. マニフェスト ファイルでandroid:configChanges="screenSize|orientation"Activityハンドル構成を変更する必要があります
  4. メソッドをオーバーライドしますonConfigurationChanged()

私はこれを試しました:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    if (isFullscreen) {
        super.onConfigurationChanged(newConfig);
    } else {
        super.onConfigurationChanged(newConfig);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

ただし、この場合: スクリーンはどのモードでも回転しません ( isFullscreen()et を true に設定したフルスクリーン モードでも回転しません) 。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    if (isFullscreen) {
        super.onConfigurationChanged(newConfig);
    } else {

    }
}

でもなんか得したSuper Not Called exceptionとか(ノーマルモードの場合はスーパーを呼ばないと画面が回転しないと思ってた)

そして最後に、私はこれを試しました:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    if (isFullscreen) {
        super.onConfigurationChanged(newConfig);
    } else {
        newConfig.orientation = Configuration.ORIENTATION_PORTRAIT;
        super.onConfigurationChanged(newConfig);
    }
}
4

1 に答える 1

2

フルスクリーン コールを切り替えている場合、これは onConfigurationChanged で実行しないでください

コード:

if(isFullscreen){
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}else{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
于 2013-05-16T16:28:05.263 に答える