今日は、カルーセル イメージ広告を作成するときに ViewPager を使用し、スライド時のページの読み込みと削除について調べました。
PagerAdapter には destroyItem メソッドと instantiateItem メソッドがあり、前者はページの削除に使用され、後者はページの読み込みに使用されます。
【注意】 現在のページがページ 0 の場合、プログラムは同様に、現在のページが views.size() (ViewPager に読み込まれたビューの数) の場合、instantiateItem メソッドを呼び出しません。 - 1. instantiateItem メソッドは呼び出されません。
観察用に簡単な ViewPager デモ (ナビゲーション ページなど) を作成し、Logcat を使用して情報を出力できます。
(ナビゲーション ページの書き方がわからない場合は、ViewPager を読んでナビゲーション ページを実装してください)
destroyItem メソッドで出力される情報:
Log.d("MainActivity", "Remove page" + 位置 );
instantiateItem メソッドで出力される情報:
Log.d("MainActivity", "Loading page" + Position);
onPageSelected で出力される情報:
Log.d("MainActivity " , "現在選択されているページ" + arg0);
次に、ナビゲーション ページを左から右に、右から左にスライドします (注: 合計 5 ページあります):
情報の印刷:
03-22 15:22:45.713: D/MainActivity(4835): 加载页面 003-22 15:22:45.713: D/MainActivity(4835): 加载页面 103-22 15:22:48.768: D/MainActivity(4835): 当前选择页面 103-22 15:22:49.408: D/MainActivity(4835): 加载页面 203-22 15:22:51.558: D/MainActivity(4835): 当前选择页面 203-22 15:22:52.198: D/MainActivity(4835): 移除页面 003-22 15:22:52.203: D/MainActivity(4835): 加载页面 303-22 15:22:53.988: D/MainActivity(4835): 当前选择页面 303-22 15:22:54.508: D/MainActivity(4835): 移除页面 103-22 15:22:54.508: D/MainActivity(4835): 加载页面 403-22 15:22:55.578: D/MainActivity(4835): 当前选择页面 403-22 15:22:55.928: D/MainActivity(4835): 移除页面 203-22 15:22:58.958: D/MainActivity(4835): 当前选择页面 303-22 15:22:59.503: D/MainActivity(4835): 加载页面 203-22 15:23:01.288: D/MainActivity(4835): 当前选择页面 203-22 15:23:01.928: D/MainActivity(4835): 加载页面 103-22 15:23:01.928: D/MainActivity(4835): 移除页面 403-22 15:23:02.613: D/MainActivity(4835): 当前选择页面 103-22 15:23:03.243: D/MainActivity(4835): 加载页面 003-22 15:23:03.248: D/MainActivity(4835): 移除页面 303-22 15:23:05.138: D/MainActivity(4835): 当前选择页面 003-22 15:23:05.773: D/MainActivity(4835): 移除页面 2
プログラムに入ると、表示するページ番号0がロードされ、次にページ番号1がプリロードされ、instantiateItemメソッドが2回呼ばれました。
当然、最初に入るときにそれを 2 回呼び出す必要があります。最初に自分の画像をロードし、次に次の画像をロードする必要があります。
このとき、もちろんページ番号 2 がプリロードされています。
ページ0を削除してページ3をロード
ページ番号 1 を削除して、ページ番号 4 をロードします
ページ番号 2 は最後まで到達しているので削除し、プリロードしないでください。
転送ダイヤルが完了しました。
この時点で、一般的なルールも確認できます
スライドするたびに、現在のページに隣接する 2 つのページが保持され (アンロードされたページはプリロードされ、ロードされたページは保存されます)、隣接するページは削除できません。ただし、ロードされたページは、一度に 3 ページしか存在しないことを意味します。
逆トグルにも同じ原理が当てはまります。ここで逆トグルの概略図を描く必要はありません。
このスライド機能を理解すると、ViewPager をより柔軟に使用できるようになります。
さて、今日はこれについて話しましょう 何か間違っていることがあれば、批判して修正してください!