.android 开发之ViewPager内嵌套ViewPager

这段时间开发"社保通",遇到了很多称之为"蛋疼"的问题,其中一个让我"蛋碎"的问题就是:要实现主页之间动画切换,而其中一张主页面顶部要放图片,当用户滑动图片时,图片之间动画切换。主页面的切换我用Viewpager实现了,图片的切换我也想用ViewPager实现,内嵌的ViewPager不能实现图片之间的滑动(当时以为内嵌的ViewPager实现不了,实际上是可以的,只是没找到方法)。
            后来,我还是用ViewPager内嵌套ViewPager实现了这个功能,过程曲折复杂,简直可以用走遍千山和万水,喜怒哀乐都经历,最后却得来全不费工夫来形容。我把血泪史放在心中,只向您提供正确的方案。
            我先(先讲原理)介绍ViewPager的一个方法,再讲怎么做。
        public boolean   onInterceptTouchEvent(MotionEvent motionEvent){
                                return true或者false;
        }
            这个方法是干什么的呢?这个方法定义:“当前的ViewPager是否屏蔽它的子ViewPager的切换事件”。
            当这个方法返回true,表示屏蔽子ViewPager的切换事件,这样,(拿我的例子讲解)当你滑动主页上的图片时,图片之间不会切换,而是这张主页面切换成了下一张主页面,外面的页面响应了这个滑动事件,而我们希望被滑动的图片却没有响应这个滑动事件。
           当这个方法返回false,表示不屏蔽子ViewPager的切换事件,这是我想要的结果,当你在图片上滑动,图片切换。当你在页面上除了其他(也就是不在图片上滑动)地方滑动,主页面切换。
          
            好,理解原理之后,我们来操作。
            我们定义一个自己的类myViewPager继承ViewPager。在myViewPager里面贴
          下面的这些代码: 
            public myViewPager(Context context,AttributeSet attrs) {
              super(context,attrs);
             }
         上面这个函数是构造函数,如果你不知道什么叫构造函数,那么这篇文章,你还是可以先不要看。
             @Override
             public boolean onInterceptTouchEvent(MotionEvent motion) {
              return false;
             }
        好,上面这个函数就是我们的重要函数了,你看,这个函数返回false;

 

  然后在你的主页面Activity文件里引入myViewPager,然后new myViewPager,然后使用它。
       
      重点来了,在你的xml布局文件里,以前可能是这样引入ViewPager的:
    <android.support.v4.view.ViewPager
             android:id="@+id/adv_pager"
             android:layout_width="fill_parent"
             android:layout_height="160dp">
         </android.support.v4.view.ViewPager> 
上面的布局代码得改。
首先我解释一下这个代码"<android.support.v4.view.ViewPager",它的意思就是:引入包android.support.v4.view下面的ViewPager类。由于你已经重新定义一个myViewPager,并且要使用这个myViewPager,所以我就要引入这个类。假设你把myViewPager放在com.mytest.package下面,那么上面的代码改为:
<com.mytest.package.ViewPager
             android:id="@+id/adv_pager"
             android:layout_width="fill_parent"
             android:layout_height="160dp">
    </com.mytest.package.ViewPager>  

子ViewPager不用改变,依然用ViewPager类。

这样就实现了ViewPager内嵌套ViewPager,并且保证子ViewPager也可以滑动了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值