ViewPager实现无线循环滚动
来源:互联网 发布:迅龙数据恢复软件安卓 编辑:程序博客网 时间:2024/05/22 15:03
- 实现思路,我们普通的ViewPager无法实现无线循环滚动,主要是因为我们在适配器里返回的view数量有限,所以也有就是有限的几页可以滚动,如果将适配器里返回的view数量设置为无穷大,那么可以滚动的页面就无穷多了,可以无穷滚动。
- 实现代码
//这只针对至少包含四个子view的viewpagerpublic class MainActivity extends Activity { private ViewPager vp; private List<View> views = new ArrayList<View>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); for (int i = 0; i < 4; i++) { views.add(createText(i)); } vp = (ViewPager) this.findViewById(R.id.vp); vp.setAdapter(new PagerAdapter() { @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public Object instantiateItem(ViewGroup container, int position) { View view = views.get(position % views.size()); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(views.get(position % views.size())); } }); //确定中间位置的第一页的索引 int middlePosition = Integer.MAX_VALUE / 2; int firstPosition = middlePosition / views.size() * views.size(); vp.setCurrentItem(firstPosition); } private TextView createText(int i) { TextView tv = new TextView(this); tv.setGravity(Gravity.CENTER); tv.setTextSize(40); tv.setText("" + i); tv.setBackgroundColor(getColor()); return tv; } //生成随机色 private int getColor() { Random random = new Random(); return Color.rgb(random.nextInt(255), random.nextInt(255), random.nextInt(255)); }}
//这只针对至少包含三个子view的viewpagerpublic class MainActivity extends Activity { private ViewPager vp; private List<View> views = new ArrayList<View>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp = (ViewPager) this.findViewById(R.id.vp); for (int i = 0; i <8; i++) { views.add(createText(i)); } vp.setAdapter(new PagerAdapter() { @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public Object instantiateItem(ViewGroup container, int position) { View view = views.get(position % views.size()); removeFromParent(view); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { //右滑 if(position > vp.getCurrentItem() && views.size() == 3) { return; } container.removeView(views.get(position % views.size())); } }); //确定中间位置的第一页的索引 int middlePosition = Integer.MAX_VALUE / 2; int firstPosition = middlePosition / views.size() * views.size(); vp.setCurrentItem(firstPosition); } private TextView createText(int i) { TextView tv = new TextView(this); tv.setGravity(Gravity.CENTER); tv.setTextSize(40); tv.setText("" + i); tv.setBackgroundColor(getColor()); return tv; } //生成随机色 private int getColor() { Random random = new Random(); return Color.rgb(random.nextInt(255), random.nextInt(255), random.nextInt(255)); } private void removeFromParent(View v) { ViewGroup parent = (ViewGroup) v.getParent(); if(parent != null) { parent.removeView(v); } }}
0 0
- ViewPager实现无线循环滚动
- ViewPager实现循环滚动
- viewPager+fragment实现循环滚动
- ViewPager实现图片循环滚动
- android ViewPager实现循环滚动效果
- 利用ViewPager实现图片循环滚动
- viewpager实现无限循环滚动幻灯片
- 利用ViewPager实现图片循环滚动
- 【Android】ViewPager实现无限循环滚动
- 利用ViewPager实现图片循环滚动
- android viewpager实现无限循环自动滚动
- Android实现ViewPager无限循环滚动回绕
- ViewPager 循环滚动
- ViewPager 的循环滚动
- 无线循环ViewPager引导页
- Viewpager + Fragment +FragmentPagerAdapter实现定时循环滚动效果
- 利用ViewPager和CirclePageIndicator实现新闻循环滚动
- 使用ViewPager实现循环滚动播放图片广告
- 新手对Bash环境变量解析漏洞的理解 http://www.linuxidc.com/Linux/2014-10/107984.htm
- select(poll)实现代码实现分析(基于kernel 3.10.0)
- KVM源代码分析1:基本工作原理
- Linux 新api eventfd
- 令狐冲的SDL(安全开发周期)引进手记
- ViewPager实现无线循环滚动
- QEMU VCPU线程同步机制之QemuCond(基于QEMU2.0.0)
- ARM SERVER 虚拟机挂载多块磁盘问题的解决方法
- Samba服务器的配置
- 通过KVM_SET_USER_MEMORY_REGION操作虚拟机内存(Kernel 3.10.0 & qemu 2.0.0)
- eclipse 如何将maven target目录排除在搜索结果之外?
- QEMU中VCPU线程间的IPI发送核间中断(基于QEMU2.0.0)
- QEMU的128位算法集合(基于QEMU2.0.0)
- VI VIM 在行首行尾添加文字字符串