viewpage的使用

定义

 

ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view。

        

         1)ViewPager类直接继承了ViewGroup类,所以它是一个容器类,可以在其中添加其他的view类。

         2)ViewPager类需要一个PagerAdapter适配器类给它提供数据。(和ListView的Adapter差不多)

3)ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。

 

 

ViewPager的行动机制

                  

 

默认情况下ViewPager最多缓存三个页面,当前屏幕看到的和左边一个,右边一个,三个页面。

                         当页面进入到这个范围时,调用instantiateItem方法创建页面,当离开这个范围时,调用destroyItem方法,销毁页面

 

 

PagerAdapter适配器 

                            至少实现如下的4个方法,如果需要更好的扩展也可以实现更多的方法。

 

                                     //1-- 告诉viewPager 有多少个页面

                                               public int getCount() {

                                          return Position;

                                   };

                                    

                                     /**

                                      *2-- 实例化条目,页面           该方法有二件事要干

                                      *             a-根据position 获得一个view 并添加至 container

                                      *             b-返回一个和view 有关系的对象

                                      * @param container 其实就是viewPager自己

                                      * @param position 要创建的页面的下标

                                      */

                                               public Object instantiateItem(ViewGroup container, int position) {

                           

                                          return position;

                                   };

                                    

                                     /**

                                      *3-- 判断view object 之间的关系

                                      *             view instantiateItem方法中添加至container 中的view

                                      *             object instantiateItem方法中的返回的对象

                                      */

                                               public boolean isViewFromObject(View view, Object object) {

                           

                                          return view==object;

                                   };

                                    

                                     /**

                                      *4-- 当需要销毁某个条目时,调用此方法

                                      *              container 其实就是ViewPager 自己

                                      *           position 要销毁的条目的下标

                                      *           object instantiateItem 方法的返回值

                                      */

                                               public void destroyItem(ViewGroup container, int position, Object object) {

                                    

                                                        // 下面这句必须删除,否则会崩,原因,你懂的。

                                                        //super.destroyItem(container, position, object);

                                                       

                                                        // 我们的任务,就是根据position object 找到view 然后,从container 删除

                                                      container.removeView((View)object);

                                         

                                   }

 

 

 

 

设置页面改变时的监听

                                    

viewPager.setOnPageChangeListener(new OnPageChangeListener() {

                                              

                                                        /**

                                                         *  当页面选择发生改变时,调用此方法

                                                         * @param position 新选择的页面的下标

                                                         */

                                                        public void onPageSelected(int position) {

                                                

                                          }

                                                       

                                                        // 当页面滑动时,不断调用此方法

                                                        public void onPageScrolled(int position, float positionOffset,

                                                        int positionOffsetPixels) {

                                          }

                                                       

                                                        // 当页面的滑动状态发生改变时

                                                      public void onPageScrollStateChanged(int state) {

                                          }

                                   });

 

                  

viewPager与fragment 结合使用的步骤

                            为什么要和fragment一起使用:子界面比较简单,我们可以直接使用控件填充,

                                                                                             如果子界面比较复杂,我们可以采用Fragment填充。另外还可以使用自定义Pager

                                     1- 将类改变继承自FragmentActivity

                                    

                                     2-创建adapter 继承自FragmentPagerAdapter,实现其中的二个方法 和一个构造方法

                                               getCount();                      --  告诉viewPager 页面的个数

                                               getItem(intposition)      --     根据位置获得对应的fragment

                                              

                                     3-将adapter 设置给viewPager 即可

 

        

         FragmentPagerAdapter与FragmentStatePagerAdapter的异同:

                           

                                     ***相同之处,使用方法 ,功能,完全一样

                                    

                                     ***不同之处:

                                               **FragmentPagerAdapter 会对fragment进行缓存

                                                        *适用于,页面比较多,但每个页面都不大的场合

                                               **与FragmentStatePagerAdapter不会对fragment 进行缓存

                                                        *适用于,页面个数不多,但每个页面都比较大的场合

viewPager常用的方法

                            //viewPager切换到指定的页面

                                     viewPager.setCurrentItem(position);

 

                            //屏蔽ViewPager的预加载功能

                                     LazyViewPager(懒的ViewPager)

                                     功能:屏蔽ViewPager的预加载功能(ViewPager内部显示的每一个界面比较复杂,如果预加载,可能内存溢出)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值