10

像成千上万的其他开发人员一样,在某些时候我想要一个水平的图像画廊。(在我的情况下,我希望它在 PageViewer 的页面中)。然后我听说有一个名为 android.wiget.Gallery 的小部件专为这种情况而设计。

很快,我开始听说 Gallery 已被弃用,并检查 StackOverflow,一个接一个的帖子表明 Horizo​​ntalScrollView 是要走的路。

我放弃了 Gallery 并在 Horizo​​ntalScrollView 中设置了所有内容。我首先注意到 Horizo​​ntalScrollView 在某种意义上并不是一个真正的小部件,它只能处理一个根布局。好的,所以我将根布局实现为 LinearLayout。在 LinearLayout 中添加我所有的可滚动项,并意识到 Horizo​​ntalScrollView 也没有适配器。没问题,我将循环浏览视图,将它们一一放大,然后丢弃 AsyncTask 以加载图片。在 4.03 上运行良好。然后我在 2.2 上运行它,你猜怎么着,运行的异步任务太多 - 所以它崩溃了。也许一个 AsyncTask 贯穿所有但有超过 30 个图像。现在我又开始考虑画廊了。

但后来我听说有一个 Horizo​​ntalListView。我实现了它,加上一个适配器。它工作得很好,除了现在滚动不是那么流畅(在 ViewPager 的页面内),并且在重新加载几次后卡住了(在 ViewPager 的页面内)。我想知道我是否应该花更多时间修改 Horizo​​ntalListView 或重新审视我的其他三个实现。也许我只是不应该如此认真地对待弃用。

有什么建议么?

结语:

最后,我决定在 ViewPager 内部使用 Horizo​​ntalScrollView,在其他情况下使用 Horizo​​ntalListView。这是由于滚动效率快如闪电,我终于能够通过覆盖 Horizo​​ntalScrollView 中的 onScroll 来设计一个自定义适配器,并结合 CountDownTimer 定期更新某个范围内的图像,而不管速度如何。建议的另一个解决方案是在速度足够慢时使用速度开始下载。如果 Horizo​​ntalListView 倡导者会检查它在 ViewPager 中的行为,那就太好了,因为我确信它可以被优化和改进。如果我有更多时间,这将是我的首选解决方案。但时间转瞬即逝..

4

1 回答 1

3

如果您仍然打算使用 aHorizontalScrollView我建议在此处查找布局并在此处查找用于处理项目选择侦听器。但是我不喜欢这条路线,因为您实际上只是在其中制作一个巨人LinearLayoutHorizontalScrollView这可能会导致内存问题,因为所有图像即使在屏幕外仍然存在。

我个人建议使用HorizontalListView找到的here

于 2013-01-02T06:03:10.397 回答