他の何千人もの開発者と同じように、私はある時点で画像の水平ギャラリーが必要でした。(私の場合、PageViewerのページに入れたかったのです)。それから、この状況専用に設計された android.wiget.Gallery というウィジェットがあると聞きました。
すぐに、Gallery が非推奨であると聞き始め、StackOverflow を確認したところ、HorizontalScrollView を使用することを提案する投稿が次々と出てきました。
ギャラリーを放棄し、HorizontalScrollView ですべてをセットアップします。最初に気がついたのは、HorizontalScrollView は 1 つのルート レイアウトしか処理できないという意味で、実際にはウィジェットではないということです。わかりましたので、ルート レイアウトを LinearLayout として実装しました。すべてのスクロール可能オブジェクトを LinearLayout に追加し、HorizontalScrollView にもアダプターがないことに気付きます。問題ありません。ビューを 1 つずつ膨らませ、AsyncTask をキャストして画像を読み込みます。4.03 で正常に動作します。次に、2.2 で実行したところ、実行中の非同期タスクが多すぎたため、クラッシュしました。おそらく、すべてを実行する単一の AsyncTask ですが、30 を超える画像があります。今、私は再びギャラリーを検討し始めています.
しかし、HorizontalListView があると聞きました。私はそれを実装し、さらにアダプターを追加しました。スクロールが(ViewPagerのページ内で)それほどスムーズではないことを除いて、完全に機能し、(ViewPagerのページ内で)数回リロードするとスタックします。HorizontalListView の変更にもっと時間を割くべきか、それとも他の 3 つの実装を再検討するべきか疑問に思います。たぶん、非推奨をそれほど真剣に受け止めるべきではなかったのでしょう。
助言がありますか?
エピローグ:
最終的に、ViewPager 内では HorizontalScrollView を使用し、他の状況では HorizontalListView を使用することにしました。これは、スクロール効率が非常に速いためで、HorizontalScrollView で onScroll をオーバーライドし、CountDownTimer と組み合わせて、速度に関係なく定期的に範囲内の画像を更新することで、最終的にカスタム アダプターを作成することができました。提案された別の解決策は、十分に遅いときに速度を使用してダウンロードを開始することでした。HorizontalListView の支持者が ViewPager 内での動作をチェックして、最適化して改善できると確信していれば、それは素晴らしいことです。もっと時間があれば、これが私の好ましい解決策だったでしょう。しかし、時間はつかの間です..