10

他の何千人もの開発者と同じように、私はある時点で画像の水平ギャラリーが必要でした。(私の場合、PageViewerのページに入れたかったのです)。それから、この状況専用に設計された android.wiget.Gallery というウィジェットがあると聞きました。

すぐに、Gallery が非推奨であると聞き始め、StackOverflow を確認したところ、Horizo​​ntalScrollView を使用することを提案する投稿が次々と出てきました。

ギャラリーを放棄し、Horizo​​ntalScrollView ですべてをセットアップします。最初に気がついたのは、Horizo​​ntalScrollView は 1 つのルート レイアウトしか処理できないという意味で、実際にはウィジェットではないということです。わかりましたので、ルート レイアウトを LinearLayout として実装しました。すべてのスクロール可能オブジェクトを LinearLayout に追加し、Horizo​​ntalScrollView にもアダプターがないことに気付きます。問題ありません。ビューを 1 つずつ膨らませ、AsyncTask をキャストして画像を読み込みます。4.03 で正常に動作します。次に、2.2 で実行したところ、実行中の非同期タスクが多すぎたため、クラッシュしました。おそらく、すべてを実行する単一の AsyncTask ですが、30 を超える画像があります。今、私は再びギャラリーを検討し始めています.

しかし、Horizo​​ntalListView があると聞きました。私はそれを実装し、さらにアダプターを追加しました。スクロールが(ViewPagerのページ内で)それほどスムーズではないことを除いて、完全に機能し、(ViewPagerのページ内で)数回リロードするとスタックします。Horizo​​ntalListView の変更にもっと時間を割くべきか、それとも他の 3 つの実装を再検討するべきか疑問に思います。たぶん、非推奨をそれほど真剣に受け止めるべきではなかったのでしょう。

助言がありますか?

エピローグ:

最終的に、ViewPager 内では Horizo​​ntalScrollView を使用し、他の状況では Horizo​​ntalListView を使用することにしました。これは、スクロール効率が非常に速いためで、Horizo​​ntalScrollView で onScroll をオーバーライドし、CountDownTimer と組み合わせて、速度に関係なく定期的に範囲内の画像を更新することで、最終的にカスタム アダプターを作成することができました。提案された別の解決策は、十分に遅いときに速度を使用してダウンロードを開始することでした。Horizo​​ntalListView の支持者が ViewPager 内での動作をチェックして、最適化して改善できると確信していれば、それは素晴らしいことです。もっと時間があれば、これが私の好ましい解決策だったでしょう。しかし、時間はつかの間です..

4

1 に答える 1

3

まだ を使用したい場合は、ここでレイアウトHorizontalScrollViewを探し、ここで項目選択リスナーを処理することをお勧めします。ただし、このルートは好きではありません。基本的に、内部に1 つの巨人を作成しているだけなので、画面外でもすべての画像が保持されるため、メモリの問題が発生する可能性があります。LinearLayoutHorizontalScrollView

個人的には、HorizontalListView見つかった hereを使用することをお勧めします。

于 2013-01-02T06:03:10.397 に答える