你好,这个也可以有几个实现方式,最简单的就是,设置Fragment的切换动画,代码示例: mViewPager.setAdapter(adapter); mViewPager.setPageTransformer(true, new DepthPageTransformer()); 然后看看动画实现类(这是层叠效果,其他效果你自己参照这个思路自己实现): public class DepthPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.75f; public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha(1); view.setTranslationX(0); view.setScaleX(1); view.setScaleY(1); } else if (position <= 1) { // (0,1] // Fade the page out. view.setAlpha(1 - position); // Counteract the default slide transition view.setTranslationX(pageWidth * -position); // Scale the page down (between MIN_SCALE and 1) float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position)); view.setScaleX(scaleFactor); view.setScaleY(scaleFactor); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(0); } } } 不懂再问我哈
mViewPager.setAdapter(adapter);
mViewPager.setPageTransformer(true, new DepthPageTransformer());
然后看看动画实现类(这是层叠效果,其他效果你自己参照这个思路自己实现):
public class DepthPageTransformer implements ViewPager.PageTransformer
{
private static final float MIN_SCALE = 0.75f; public void transformPage(View view, float position)
{
int pageWidth = view.getWidth(); if (position < -1)
{ // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0); }
else if (position <= 0)
{ // [-1,0]
// Use the default slide transition when moving to the left page
view.setAlpha(1);
view.setTranslationX(0);
view.setScaleX(1);
view.setScaleY(1); }
else if (position <= 1)
{ // (0,1]
// Fade the page out.
view.setAlpha(1 - position); // Counteract the default slide transition
view.setTranslationX(pageWidth * -position); // Scale the page down (between MIN_SCALE and 1)
float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor); }
else
{ // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(0);
}
}
}
不懂再问我哈
再问下,如果滑动的时候,当前页和下一页都变暗呢???
再问下,如果滑动的时候,当前页和下一页都变暗呢???
同理,这里是对位置的算法你可以自己实现对视图透明度的算法
再问下,如果滑动的时候,当前页和下一页都变暗呢???
同理,这里是对位置的算法你可以自己实现对视图透明度的算法谢谢。