ソースコード
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);
}
}
以上。