画面向きの切り替え

画面の向きをコード中から切り替えるには現在の画面の向きを取得し、その値に応じて画面の向きを回転させます。

例えば、ボタンが押されたら画面を逆に回転させたい場合は次のようなコードを書きます。

public class MainActivity extends Activity
{
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button rotateButton = (Button)findViewById(R.id.rotate_button);
        rotateButton.setOnClickListener(new View.onClickListener()
        {
            public void onClick(View v)
            {
                Configuration config = getResources().getConfiguration();
                if(config.orientation == Configuration.ORIENTATION_LANDSCAPE){
                    setRequestedOrientation(
                            ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                        //もし横向きなら縦向きに回転
                }else if(config.orientation == Configuration.ORIENTATION_PORTRAIT){
                     setRequestedOrientation(
                             ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                        //もし縦向きなら横向きに回転
                }
            }
        });
    }
}

それぞれの値の意味は次の通りです。

定数名意味
ORIENTATION_LANDSCAPE横長方向固定
ORIENTATION_PORTRAIT縦長方向固定

setRequestOrientationメソッドに横か縦のどちらかの値を渡せばその方向に画面が変わります。

ただ、この方法で画面を回転させると画面が固定されてしまい、その後はコード中からしか画面向きを変更できなくなります。

もし、画面の固定をなくす場合は次のようにSCREEN_ORIENTATION_UNSPECIFIEDを値に渡します。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
関連項目
プライバシーポリシー