玩翻的ViewPager

玩翻的ViewPager


最近看到很多人發的各式的ViewPager,簡直玩翻,今天我就剖析下ViewPager,爲什麼能玩這麼嗨

讓大家也能創造出各式各樣的Viewpager



其實ViewPager的核心玩法是一個方法public void setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer);
關鍵就是第二個參數,這就是PageTransformer,一個接口,咱們需要實現它,這就是我實現的一個類,大家可以用,看看效果

public class My3DTransformer implements ViewPager.PageTransformer {
    @Override
    public void transformPage(View page, float position) {
        if (position < -1) { // [-Infinity,-1)
            // This page is way off-screen to the left.
            page.setAlpha(0);

        } else if (position <= 0) { // [-1,0]
            // Use the default slide transition when moving to the left page
            page.setAlpha(1);
            page.setPivotX( page.getWidth());
            page.setPivotY(page.getHeight()*0.5f);
            page.setRotationY(position*90);

        } else if (position <= 1) { // (0,1]
            page.setAlpha(1);
            page.setPivotX(0f);
            page.setPivotY(page.getHeight()*0.5f);
            page.setRotationY(position*90);

        } else { // (1,+Infinity]
            // This page is way off-screen to the right.
            page.setAlpha(0);
        }

    }
}

其核心就是實現這個transformPage(View page, float position)方法
第一個參數是ViewPager的當前頁面,注意ViewPager每個頁面都會調用這個方法,所以其實page是指當前
頁面(不是你看到的頁面,是調用這個方法的頁面),你的每次滑動,所有沒有銷燬的頁面都會調用這個方法
第二個參數是當前頁面的左上角座標,從-1到1
如圖所示


然後就可以根據屬性動畫做各種動畫啦,發揮各位創造力的時候到了



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