您的位置:首页 > 其它

利用viewpager实现页面的滑动切换

2015-09-27 22:55 295 查看
在android中,viewpager常常被用来实现页面的滑动转换,通过加以扩展可以实现很多的效果,在这里仅仅用viewpager实现最基本的页面滑动切换效果。最为简略的效果如下图所示。

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);
	}
}


这里是一个最为简单的实现效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: