t_t_nの日記

開発の備忘録など

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個ほどタブを定義しても平気だった。