水平滚动视图:它真的是一个解决方案吗?

时间:2012-12-26 04:03:14

标签: android android-layout

与成千上万的其他开发者一样,在某些时候我想要一个水平的图像库。 (在我的情况下,我希望它在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或重新访问我的其他三个实现。也许我不应该如此认真地对待这种弃用。

有什么建议吗?

结语:

最后,我决定继续使用Horizo​​ntalScrollView for ViewPager,并在其他情况下使用Horizo​​ntalListView。这是由于滚动效率,闪电般快,我能够通过覆盖Horizo​​ntalScrollView中的onScroll来最终计算出自定义适配器,并与CountDownTimer结合使用,无论速度如何,都会定期更新范围内的图像。建议的另一个解决方案是使用速度来开始下载,当时足够慢。如果Horizo​​ntalListView提示将检查其在ViewPager中的行为,那将是很好的,因为我确信它可以被优化和改进。如果我有更多的时间,这将是我的首选解决方案。但时间稍纵即逝......

1 个答案:

答案 0 :(得分:3)

如果您仍然打算使用HorizontalScrollView,我建议您查看here以查找布局,并here查看项目选择侦听器。我不喜欢这条路线,因为你实际上只是在LinearLayout内部制造了一个巨大的HorizontalScrollView,这可能会导致记忆问题,因为即使在屏幕外,所有图像仍然存在。

我个人建议使用HorizontalListView找到here