ViewPager的使用<二>
来源:互联网 发布:易语言源码怎么用 编辑:程序博客网 时间:2024/05/20 01:13
布局
<android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager>
此案例中ViewPager每一页的布局就是一个ImageView
代码
// 初始化 init(); // 设置适配器 mViewPager.setAdapter(mMyPagerAdapter);
private void init() { mViewPager = (ViewPager) findViewById(R.id.viewPager); inflater = getLayoutInflater(); mViews = new ArrayList<>(); for (int i = 0; i < imgResIds.length; i++) { View inflate = inflater.inflate(R.layout.item, null); ImageView imageView = (ImageView) inflate.findViewById(R.id.item_img); imageView.setBackgroundResource(imgResIds[i]); mViews.add(inflate); } mMyPagerAdapter = new MyPagerAdapter(mViews); }
适配器
/** * 创建类继承PagerAdapter,只给我们重写了两个方法getCount(),isViewFromObject() * ViewPager要使用的话至少要重写四个方法 instantiateItem(),destroyItem() */ class MyPagerAdapter extends PagerAdapter{ List<View> mList; public MyPagerAdapter(List<View> list) { mList = list; } @Override public int getCount() { return mList.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; // 官方推荐写法 } /** * @param container 其实就是ViewPager * @return 实际返回的就是子页面的View视图 */ @Override public Object instantiateItem(ViewGroup container, int position) { View view = mList.get(position); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mList.get(position)); } }
进阶1-实现无限滚动
适配器需要修改
@Override public Object instantiateItem(ViewGroup container, int position) { position %= mList.size(); View view = mList.get(position); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // getCount设置为一个无限大的数,导致必须对position进行取余 // 保证不会超过item的个数,防止下标越界 position %= mList.size(); container.removeView(mList.get(position)); } // 实现无限滚动 给数据源个数设置为一个比较大的数值即可 @Override public int getCount() { return Integer.MAX_VALUE; }
进阶2-实现自动滚动
private void AutoScroll() { mHandler.postDelayed(new Runnable() { @Override public void run() { // 先获取到当前滚动到的position int currentItem = mViewPager.getCurrentItem(); mViewPager.setCurrentItem(++currentItem); mHandler.postDelayed(this,2000); } }, 2000);
源码下载
0 0
- ViewPager的使用<二>
- ViewPager 的简单使用(二)
- viewPager使用二
- ViewPager中ViewPager的使用
- android的ViewPager和Animation的一些使用(二)
- ViewPager使用示例(二)deprecated
- Android-ViewPager使用示例(二)
- 二.tablayout结合viewPager使用
- 使用ViewPager+GridView实现横向滑动的效果(二)
- 使用ViewPager+GridView实现横向滑动的效果(二)
- ViewPager组合其他View的简单使用(二)
- ViewPager的简单应用(二)
- ViewPager 的使用
- viewpager的使用
- ViewPager的使用
- ViewPager的使用
- ViewPager的简单使用
- viewpager的简单使用
- C/C++学习建议
- Mysql基本语句复习
- clock程序
- 围圈报数
- tianchai 12012 解密QQ号 (数组实现队列)
- ViewPager的使用<二>
- Jquery(第二操作html元素)
- 九头蛇 Hydra 在线密码破解(ftp,ssh,各种)
- Revit API 二次开发插件之快速管综插件帮助文档
- Struts2自学入门(六)——OGNL数据标签和控制标签
- 1.1 Python 笔记 之正则表达式
- 我的TW梦
- java基础:继承
- Java设计模式——门面(外观)模式(Facade Pattern)