TabLayoutのタブ画像を通信して取得する
画面に表示されている範囲だけ画像を取ってきたい。
また、タブのスクロールに合わせて、適宜画像を取得する。
1. 画面に表示されている範囲のタブだけ画像を取ってくるメソッドを定義する
private void loadTabImage() { // mScrollBoundsはメンバ変数 this.getHitRect(mScrollBounds); for (int i = 0; i < getTabCount(); i++) { final Tab t = getTabAt(i); // setCustomViewを事前に行う必要がある final View view = t.getCustomView(); // タグの有無で画像ロード済みのタブかどうか判断している if (t.getTag() != null) { continue; } if(!view.getLocalVisibleRect(mScrollBounds)) { continue; } // 画像とってくる処理をここに書く } }
2. TabLayoutを継承したカスタムTabLayoutを作り、computeScrollをoverrideして、1のメソッドを呼ぶ
@Override public void computeScroll() { super.computeScroll(); loadTabImage(); }
一通りのOSで確認したが、これで動いているように見える。
200個ほどタブを定義しても平気だった。