Android应用程序设计 ——ViewPager滑动

第一章  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" >     

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
  1. onPageScrollStateChanged(int arg0)

此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。

arg0 ==1的时辰默示正在滑动,

arg0==2的时辰默示滑动完毕了,

arg0==0的时辰默示什么都没做。

  1. onPageScrolled(int arg0,float arg1,int arg

当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到调用。其中三个参数的含义分别为:

arg0 :当前页面,及你点击滑动的页面

arg1:当前页面偏移的百分比

arg2:当前页面偏移的像素位置  

  1. onPageSelected(int arg0)   

此方法是页面跳转完后得到调用,arg0是你当前选中的页面的Position(veiw索引)

 

 

  • ViewPager+Fragment
    1. 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;
    }

 

 

    1. MVC3层关联


//MVC3层进行关联
viewPager.setAdapter(adapter);

 

  • 点击时页面也切换

底部RadioGroup点击事件中设置ViewPager显示界面:

viewPager.setCurrentItem(0);

猜你喜欢

转载自blog.csdn.net/qq_42595261/article/details/81838369