0
此外,是否同時在傳入和傳出視圖上調用了transformPage方法?如何爲左側的傳出視圖製作動畫,以及右側傳入視圖的動畫?如何檢測頁面在ViewPager.PageTransformer.transformPage方法中完成滑動?
此外,是否同時在傳入和傳出視圖上調用了transformPage方法?如何爲左側的傳出視圖製作動畫,以及右側傳入視圖的動畫?如何檢測頁面在ViewPager.PageTransformer.transformPage方法中完成滑動?
是的,transformPage方法在兩個視圖上同時被調用。您可以在transformPage方法的第一個參數中獲取當前視圖實例。
public void transformPage(View view, float position) {...}
第二個參數是視圖的位置。如文檔中所述
頁面相對於當前正面和中心的位置 *尋呼機的位置。 0是前面和中心。 1是一個完整的 *頁面位置向右,-1是一個頁面位置向左。
一種簡單FadIn和FadOut轉化可以用下面的代碼
public class MyFadePageTransformer implements ViewPager.PageTransformer {
public void transformPage(View view, float position) {
//You can set Tag to view object and getTag to know current view
//Log.d("Page Transform", "page " + view.getTag().toString());
if (position < -1 || position > 1) {
view.setAlpha(0);
}
else if (position <= 0 || position <= 1) {
// Calculate alpha. Position is decimal in [-1,0] or [0,1]
float alpha = (position <= 0) ? position + 1 : 1 - position;
view.setAlpha(alpha);
}
else if (position == 0) {
view.setAlpha(1);
}
}
}
然後加入PageTransformer到ViewPager
mViewPager.setPageTransformer(false, new MyFadePageTransformer());
被施加