AndroidのViewPagerで表示ページによって画面の向きを変更する

ソースコード

ViewPagerの表示している画面によって画面の向きを固定・回転を変更するアプリです。

最初の画面では、画面は縦向きに固定しています。
2番目の画面では、画面は回転でき、縦向き・横向きの表示ができます。

*https://github.com/gesource/ViewPagerRotationSample

解説

画面を回転できるようにActivityを設定します。

AndroidManifest.xml

android:configChanges="orientation"

FragmentPagerAdapterのコンストラクタの第2引数にFragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTを指定します。

MainActivity.java

    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
    viewPager.setAdapter(
            new MyFragmentPagerAdapter(
                    getSupportFragmentManager(),
                    FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
            )
    );

FragmentのonResume()メソッドで画面の向きを設定します。

Fragment1.java

@Override
public void onResume() {
    super.onResume();
    Activity activity = getActivity();
    if (activity != null) {
        // 縦向き固定
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

Fragment2.java

@Override
public void onResume() {
    super.onResume();
    Activity activity = getActivity();
    if (activity != null) {
        // センサーの状態に従う
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
    }
}

以上。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください