像成千上万的其他开发人员一样,在某些时候我想要一个水平的图像画廊。(在我的情况下,我希望它在 PageViewer 的页面中)。然后我听说有一个名为 android.wiget.Gallery 的小部件专为这种情况而设计。
很快,我开始听说 Gallery 已被弃用,并检查 StackOverflow,一个接一个的帖子表明 HorizontalScrollView 是要走的路。
我放弃了 Gallery 并在 HorizontalScrollView 中设置了所有内容。我首先注意到 HorizontalScrollView 在某种意义上并不是一个真正的小部件,它只能处理一个根布局。好的,所以我将根布局实现为 LinearLayout。在 LinearLayout 中添加我所有的可滚动项,并意识到 HorizontalScrollView 也没有适配器。没问题,我将循环浏览视图,将它们一一放大,然后丢弃 AsyncTask 以加载图片。在 4.03 上运行良好。然后我在 2.2 上运行它,你猜怎么着,运行的异步任务太多 - 所以它崩溃了。也许一个 AsyncTask 贯穿所有但有超过 30 个图像。现在我又开始考虑画廊了。
但后来我听说有一个 HorizontalListView。我实现了它,加上一个适配器。它工作得很好,除了现在滚动不是那么流畅(在 ViewPager 的页面内),并且在重新加载几次后卡住了(在 ViewPager 的页面内)。我想知道我是否应该花更多时间修改 HorizontalListView 或重新审视我的其他三个实现。也许我只是不应该如此认真地对待弃用。
有什么建议么?
结语:
最后,我决定在 ViewPager 内部使用 HorizontalScrollView,在其他情况下使用 HorizontalListView。这是由于滚动效率快如闪电,我终于能够通过覆盖 HorizontalScrollView 中的 onScroll 来设计一个自定义适配器,并结合 CountDownTimer 定期更新某个范围内的图像,而不管速度如何。建议的另一个解决方案是在速度足够慢时使用速度开始下载。如果 HorizontalListView 倡导者会检查它在 ViewPager 中的行为,那就太好了,因为我确信它可以被优化和改进。如果我有更多时间,这将是我的首选解决方案。但时间转瞬即逝..