ViewPagerのキャッシュする画面数を変更する
ViewPagerの生成時に複数のページを生成してキャッシュしておきたい。
解決
// 2ページ生成 mViewPager.setOffScreenPageLimit(2);
説明
一般的に OffScreen とは、生成されていて描画されていない画面のことを指すが、ViewPager では生成されていないページのことを OffScreen と呼ぶ。
デフォルトは 1 が設定される
private static final int DEFAULT_OFFSCREEN_PAGES = 1;
setOffScreenPageLimit(1) を設定すると
1ページ目が描画されている時は、2ページ目が生成されているが、3ページ目以降は生成されない。2ページ目に移動後、3ページ目に移動しようとしてドラッグすると3ページ目が直ちに生成されるが、3ページ目が非同期にロードする等、重たい時は処理が間に合わない場合がある。
setOffScreenPageLimit(2) を設定すると
1ページ目が描画されている時は、2ページ目と3ページ目が生成される。2ページ目から3ページ目に移動する時に、新たにビューが生成されることがないため、動作がスムーズになる。ただし、それだけメモリを消費することになるので、動作環境によってはメモリ不足になる可能性に注意すること。
参照
リファレンス(英語)
関連記事
ViewPager.SimpleOnPageChangeListener についてまとめた記事。
ViewPager.PageTransformer についてまとめた記事。