.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也可以滑動了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章