`
luckldforever
  • 浏览: 6436 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

ViewPager的应用

阅读更多
1.在布局文件里加入
     <android.support.v4.view.ViewPager   
             android:id="@+id/viewpager"  
             android:layout_width="wrap_content"  
             android:layout_height="wrap_content"  
             android:layout_gravity="center" > 
   2.加载要显示的页卡
     LayoutInflater lf = getLayoutInflater().from(this);  
     view1 = lf.inflate(R.layout.layout1, null);  
     view2 = lf.inflate(R.layout.layout2, null);  
     viewList = new ArrayList<View>();
     viewList.add(view1);  
     viewList.add(view2);  
  3.重写PagerAdapter
     public class MyViewPagerAdapter extends PagerAdapter{  
         private List<View> mListViews;  
         public MyViewPagerAdapter(List<View> mListViews){
          this.mListViews = mListViews;  
         }  
         @Override  
         Public void destroyItem(ViewGroup container, int position, Object 
         object)  {     
             container.removeView(mListViews.get(positin);//删除页卡  
         }  
         @Override  
         Public Object instantiateItem(ViewGroupcontainer,  int position) {  
                                                //这个方法用来实例化页卡         
            container.addView(mListViews.get(position), 0); //添加页卡  
            return mListViews.get(position);  
         }  
  
        @Override  
        public int getCount() {           
            return  mListViews.size();//返回页卡的数量  
        } 
        @Override  
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0==arg1;//官方提示这样写  
        }  
     }  
         mViewPager=(ViewPager)this.findViewById(R.id.viewpager);
         mViewPager.setAdapter(MyViewPagerAdapter);
         mTextName01.setOnClickListener(new OnClickListener(){
          @Override
          public void onClick(View v){
              mViewPager.setCurrentItem(LEFT_PAGE);
}
});
mTextName02.setOnClickListener(new View.OnClickListener(){
  @Override
  public void onClick(View v){
       mViewPager.setCurrentItem(RIGHT_PAGE);
  }
});
         mViewPager.setOnPageChangeListener(newOnPageChangeListener(){
         //这个方法会在屏幕滚动过程中不断被调用,有三个参数,第一个arg0和当前页面
     index是一致的;arg1是当前页面的滑动比例,如果页面向右翻动,这个值不断变大,
     最 后在趋近1的情况后突变为0;如果页面向左翻动,这个值不断变小,最后变为0。
     arg2是当前页面滑动像素,变化情况和arg1一致。
         @Override
public void onPageScrolled(int arg0, float arg1, int arg2){}
         //这个方法在手指操作屏幕的时候发生变化,有三个值:0(end),1 ( press ),
     2  ( up )。
@Override
public void onPageScrollStateChanged(int arg0){}
         //这个方法有一个参数arg0,代表那个页面被选中。
@Override
public void onPageSelected(int arg0){
switch (arg0){
case 0:{
mTextName01.setSelected(true);
mTextName02.setSelected(false);
}
break;
case 1:{
mTextName01.setSelected(false);
mTextName02.setSelected(true);
}
break;
default:
break;
}
}
});
        这三个方法的执行顺序为:当用手指拖动翻页时,最先执行一遍  onPageScrollStateChange(1),然后不断执行onPageScrolled,放手指的时候,直接  
立即执行一次onPageScrollStateChanged(2),然后立即执行一次onPageSelected,
然后再不断执行onPageScrollStateChanged,最后执行一次
onPageScrollStateChaged(0)。
        实现左右的页面滑动,往ViewPager中添加一些View视图或者Fragment.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics