Android 自定義ViewPager的滑動切換頁面效果
先借用網上圖片效果
自定義效果最重要的一個方法就是
viewPager.setPageTransformer(boolean,PageTransformer)
這個方法就是設定viewpager的滑動效果的方法,裡面需要傳遞兩個引數:第一個引數傳true就行了
第二個引數就是重點了我們需要建立一個效果類,繼承PageTransformer這個類然後來實現我們的自定義效果
繼承類裡面就一個方法 解釋一下,transformPage這個方法裡面傳來了兩個值,一個是view,一個是positionclass DepthPageTransformer implements ViewPager.PageTransformer { @Override public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight = view.getHeight(); if (position < -1) { } else if (position <= 0) { view.setPivotX(pageWidth / 2); view.setPivotY(pageHeight); view.setRotation(15 * position); } else if (position <= 1) { view.setPivotX(pageWidth / 2); view.setPivotY(pageHeight); view.setRotation(15 * position); } else { } } // //去除預設橫向滑動 // view.setTranslationX(pageWidth * -position); }
這個view就是我們需要進行操作(旋轉,放大,縮小等效果)的view,直接就可以用view.setRotation(),setTranslation()等
這些方法進行操作
而這個Position就重要了,Position就是兩個頁面滑動之間的係數,表示滑動了多少,viewpager載入三個頁面,
當前顯示的和左右兩個頁面
左邊的頁id為-1 當前顯示的頁id為0 右邊的頁id為1
如果Position從-1慢慢變大變成了0就說明id=-1的頁面在向id=0的頁面移動,就是向右滑動,反之也是一樣向左滑動
這樣我們就能很好理解Position的變化值的意思了
所以我們只要判斷 -1<position<=0 的時候就說明id=-1的頁面在左右滑動
當 0>position<=1 的時候就說明id=0的頁面在左右滑動
所以我們通常看到 Position一會是負數,一會又是正數,因為每次滑動都是相鄰兩個頁面一起動的
以上都是我自己的理解,記錄下來。我覺得這樣解釋起來會更容易理解,有什麼錯誤麻煩指出