第一章 ViewPager(视图分页)
版权声明:
本文为博主学习整理原创文章,如有不正之处请多多指教。
未经博主允许不得转载。
https://mp.csdn.net/postedit/81838369
- ViewPager是android扩展包support v4包中的类,这个类可以让用户左右切换当前的view。 XML中声明Viewpager
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
- </android.support.v4.view.ViewPager> 常用属性设置
1)android:id //设置id Activity中常用的方法
1)setAdapter //设置ViewPager对象的适配器
2)setOnpageChangListener //设置ViewPager对象的监听事件
3)setCurrentView //设置当前显示view的索引
4)getCurrentView //获取当前显示view的索引 Activity中的实现
1)xml中声明(参考6.12)
2)添加显示的View和Titil
//加载显示的布局
inflater = LayoutInflater.from(MainActivity.this);
View view1 = inflater.inflate(R.layout.p1, null);
View view2 = inflater.inflate(R.layout.p2, null);
View view3 = inflater.inflate(R.layout.p3, null);
View view4 = inflater.inflate(R.layout.p4, null);
View view5 = inflater.inflate(R.layout.p5, null);
//加入List<View>
views = new ArrayList<View>();
views.add(view1);
views.add(view2);
views.add(view3);
views.add(view4);
views.add(view5);
ew> data = new ArrayList<>();
3) 实例化PageAdapter,
public class MyPagerAdapter extends PagerAdapter {
private List<View> data;
public MyPagerAdapter(List<View> data){
this.data=data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
//撤销显示view
public void destroyItem (ViewGroup container, int position, Object object){
//container.removeViewAt(position); //这个方法容易出错
container.removeView(data.get(position)); //
}
//显示view,类似于BaseAdapter中的getView()方法
public Object instantiateItem(ViewGroup container, int position) {
View viewpage = data.get(position);
container.addView(viewpage);
return viewpage;
}
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//MVC三者关联
viewpager.setAdapter(new MyPagerAdagter(generateData()));
}
//绑定控件id
viewPager = (ViewPager) findViewById(R.id.view_pager);
//设置ViewPager对象加载的PagerAdapter
viewPager.setAdapter(pagerAdapter); ViewPager添加监听事件OnpageChangListener
ViewPager在处理滑动事件的时候要用到OnPageChangeListener,需要实现三个方法:
- onPageScrollStateChanged
- onPageScrolled
- onPageSelected
- onPageScrollStateChanged(int arg0)
此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。
arg0 ==1的时辰默示正在滑动,
arg0==2的时辰默示滑动完毕了,
arg0==0的时辰默示什么都没做。
- onPageScrolled(int arg0,float arg1,int arg
当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到调用。其中三个参数的含义分别为:
arg0 :当前页面,及你点击滑动的页面
arg1:当前页面偏移的百分比
arg2:当前页面偏移的像素位置
- onPageSelected(int arg0) :
此方法是页面跳转完后得到调用,arg0是你当前选中的页面的Position(veiw索引)
- ViewPager+Fragment
- V层:<ViewPager/>及ViewPager对象
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
//页面滑动MVC架构中的V层
viewPager= (ViewPager) homeActivity.this.findViewById(R.id.vp);
-
M层:List<Fragment>
//页面滑动MVC架构中的M层
list=new ArrayList<>();
list.add(homeFragment);
list.add(naviFragment);
list.add(myFragment);
- C层:自定义类继承自FragmentPagerAdapter
关键方法:
public MyViewpagerAdapter(FragmentManager fm,List<Fragment> data){
super(fm);
this.data=data;
}
-
- MVC3层关联
//MVC3层进行关联
viewPager.setAdapter(adapter);
- 点击时页面也切换
底部RadioGroup点击事件中设置ViewPager显示界面:
viewPager.setCurrentItem(0);