0

アクティビティ クラス内でこれを行う方法は知っていますが、これは私のニーズには合いません。ビューを拡張するクラス内で、メソッドが呼び出されたら、画面の向きをロックしたいと思います。そして、別のメソッドが呼び出されたら、ロックを解除したいと思います。

ビューを拡張するクラス内でこれを行う方法はありますか?

ありがとう。

4

3 に答える 3

1
@Override
public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);

    setContentView(this.gameView);

    if (this.gameView.isOrientationChange() == false) {
        // Stop the screen orientation changing during an event
        switch (this.getResources().getConfiguration().orientation) {
            case Configuration.ORIENTATION_PORTRAIT:
                this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                break;
            case Configuration.ORIENTATION_LANDSCAPE:
                this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                break;
        }
    }
    else {
        // allow screen rotations
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
    }
}

View を拡張するクラスには、orientationChange ブール フィールドがあります。これは、デバイスの向きを変更できるかどうかを示すメソッドによって変更されます。これは機能しましたが、向きを変えると画面サイズも変わります。そのため、サイズに依存する大量のコードがあり、タイミングが合っている場合は、解決するよりも多くの問題が発生する可能性があります。

于 2013-05-03T12:03:45.900 に答える