0

我在ViewPager中有一堆碎片,帶有如下定義的自定義PageTransformer。帶投影的ViewPager.PageTransformer

mPager.setPageTransformer(true, new ViewPager.PageTransformer() { 
    @Override 
    public void transformPage(View page, float position) { 
     page.setTranslationX(page.getWidth() * -position); 
    } 
}); 

如何爲離開片段繪製陰影? 長話短說,我尋找的東西,如Play圖書,沒有捲曲的效果需要,在堆棧頂部的元素,最好是API 18兼容

謝謝

回答

0

我產生了懷疑的只是陰影約setPageMargin,因爲它只有在傳入視圖具有Alpha透明度時才起作用。我的意思是,它似乎是保證金有一個錯誤的高程和它所代表的傳入視圖下方,但也許我已經找到了一個折中

enter image description here

這是在保證金和自定義該活動的代碼PageTransformer

int margin = getResources().getDisplayMetrics().widthPixels/15; 
    mPager = (ViewPager) findViewById(R.id.pager); 

    mPager.setPageMargin(margin); 
    mPager.setPageMarginDrawable(R.drawable.shadow); 
    mPager.setPageTransformer(true, new StackTransformer()); 

其中可拉伸定義爲

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle" > 
     <gradient 
      android:angle="360" 
      android:endColor="#00000000" 
      android:startColor="#aa000000" 
      android:type="linear" /> 
    </shape> 

最後,在PageTransformer,在那裏我有位置和alpha扮演找到一個可以接受的效果

@Override 
public void transformPage(View view, float position) { 
    int pageWidth = view.getWidth(); 
    if (position < -1) { 
     view.setAlpha(0); 
    } else if (position <= 0) { 
     view.setAlpha(1); 
     view.setTranslationX(0); 
    } else if (position <= 1) { 
     view.setAlpha(1-position/2); // divide by 2 is the trick 
     view.setTranslationX(pageWidth * -position); 
    } else { 
     view.setAlpha(0); 
    } 
} 

產生的影響的方法210是你在上面的GIF看,但我敢肯定,在那裏,有一個更好的實現這種效果的方法