利用viewpager实现页面的滑动切换
2015-09-27 22:55
295 查看
在android中,viewpager常常被用来实现页面的滑动转换,通过加以扩展可以实现很多的效果,在这里仅仅用viewpager实现最基本的页面滑动切换效果。最为简略的效果如下图所示。
1.首先,需要在xml中添加viewpager控件。至于具体的布局,可根据具体情况调整。
2.在程序中将视图添加到viewlist中
3.将viewlist添加到数据适配器中,而后由viewpager设置滑动监听函数,即可完成页面滑动的切换。具体代码如下
需要特别注意的几点如下
1.viewlist必须添加xml文件,而不是某个xml文件下的控件,这个需要注意
2.此处的适配器需要继承自PagerAdapter并加以实现。而当你需要实现自定义的pagerAdapter时,至少需要实现· instantiateItem(ViewGroup,
int)--实例化条目· destroyItem(ViewGroup,
int, Object)--销毁条目 .· getCount()--获取条目数量· isViewFromObject(View,
Object)这四个接口。一下为我实现的适配器,代码如下所示。
这里是一个最为简单的实现效果。
1.首先,需要在xml中添加viewpager控件。至于具体的布局,可根据具体情况调整。
2.在程序中将视图添加到viewlist中
3.将viewlist添加到数据适配器中,而后由viewpager设置滑动监听函数,即可完成页面滑动的切换。具体代码如下
// 实例化资源 viewPager = (ViewPager)getView().findViewById(R.id.view_pager); // 实例化空间 textView1 = (TextView)getView().findViewById(R.id.textView1); textView2 = (TextView)getView().findViewById(R.id.textView2); textView3 = (TextView)getView().findViewById(R.id.textView3); viewLists.add(getLayoutInflater(savedInstanceState).inflate(R.layout.test1, null)); viewLists.add(getLayoutInflater(savedInstanceState).inflate(R.layout.test2, null)); viewLists.add(getLayoutInflater(savedInstanceState).inflate(R.layout.test3, null)); adapter = new ViewPageAdapter(viewLists); viewPager.setAdapter(adapter); // 设置数据适配器来源 viewPager.setCurrentItem(0); // 设置滑动监听函数 viewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub switch (arg0) { case 0: break; case 1: break; case 2: break; default: break; } currentItem = arg0; // 添加光标滑动效果 } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } });
需要特别注意的几点如下
1.viewlist必须添加xml文件,而不是某个xml文件下的控件,这个需要注意
2.此处的适配器需要继承自PagerAdapter并加以实现。而当你需要实现自定义的pagerAdapter时,至少需要实现· instantiateItem(ViewGroup,
int)--实例化条目· destroyItem(ViewGroup,
int, Object)--销毁条目 .· getCount()--获取条目数量· isViewFromObject(View,
Object)这四个接口。一下为我实现的适配器,代码如下所示。
// 自定义扩展的视图适配器 class ViewPageAdapter extends PagerAdapter{ public List<View> m_viewLists; LayoutInflater mInflater; public ViewPageAdapter(List<View> lists) { m_viewLists = lists; } @Override public int getCount() { // TODO Auto-generated method stub return m_viewLists.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView(m_viewLists.get(position)); } @Override public Object instantiateItem(View container, int position) { ((ViewPager) container).addView(m_viewLists.get(position), 0); return m_viewLists.get(position); } }
这里是一个最为简单的实现效果。
相关文章推荐
- guava总结
- 电脑稳定性检测软件
- 最新一键修改手机MAC地址和路由器wifi物理地址
- leetcode #89 Gray Code
- java synchronized详解
- Fleury算法求欧拉回路(一)
- TF-IDF与余弦相似性的应用(三):自动摘要
- 约瑟夫问题
- 月圆之夜
- lucene optimize用法
- Android android:gravity和android:layout_gravity的区别
- emacs怎么编写C语言
- 测试
- 创建地图格网、地图格网标注
- 利用XmlDocument操作XML文件
- XHTML
- opencv的FileStorage 类
- 如何汉化EasyUI、ExtJS等富客户端框架
- [C#基础] 继承
- C#调用带返回值的存储过程