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看,但我敢肯定,在那里,有一个更好的实现这种效果的方法