android – 如何有人创建一个水平滚动列表,具有捕捉效果到中心

前端之家收集整理的这篇文章主要介绍了android – 如何有人创建一个水平滚动列表,具有捕捉效果到中心前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好!在过去的几个星期里,我一直在试图做到这一点,似乎找不到一个很好的解决方案,以达到我想要的目的.尝试使用Horizo​​ntalScrollView,Gallery(已弃用).

我现在正在研究RecycleView,因为我来了这个方法.smoothScrollToPosition(),并认为这可能会帮助我.

这是我想要完成的例证:

我也必须能够以编程方式创建相关层

任何人都可以指出这可以如何实现?有什么本地的方法吗?

编辑:进一步了解@CommonsWare关于查看ViewPager和commonsware.com/blog/2012/08/20/ Dave Smith的第三篇文章的建议我认为这是要走的路. Havent模式对我的使用,但它看起来不错.

我正在使用他的Github:https://gist.github.com/devunwired/8cbe094bb7a783e37ad1的Dave Smiths样本

解决方法

不要使用这种方法,它会使用很多内存(如果在某些时候你需要扩展到一个更通用的解决方案),因为你将不得不在内存中保持高数量的ViewPager Pages(Fragment).我有同样的挑战,我已经用 HorizontalListView完成了这个.

所以你需要创建一个适配器,它将添加“stubs”视图,以便获得第一个或最后一个(可以更多地取决于同一时间的所需可见视图),因为这是一个ListView.
对于捕捉效果,您可以使用这样的东西(所有项目需要具有相等的尺寸):

View.OnTouchListener hListViewsOnTouchListener = new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v,MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP && v instanceof HListView) {
                    View c = ((HListView) v).getChildAt(0);
                    int posToGo = Math.abs(c.getX()) < c.getWidth() / 2 ? ((HListView) v).getFirstVisiblePosition() : ((HListView) v).getFirstVisiblePosition() + 1;
                    ((HListView) v).smoothScrollToPositionFromLeft(posToGo,0);
                }
                return false;
            }
        };

这种方法不仅使用较少的内存,而且对于子视图的数量是通用的,它更流畅,所有元素都是可点击的(不仅是中心的)…它是一个ListView

猜你在找的Android相关文章