Android - 自定义 ViewPager 动画
Android - Custom ViewPager animation
这是我必须实现的。我已经有了一个垂直的 viewpager,但我缺乏转换经验,我不知道该怎么做...
下一张要显示的卡片的顶部预览在当前显示的卡片下方。当下一张卡片被触摸并拖动到顶部时,动画开始,下一张卡片向上滑动,同时当前卡片被缩小然后向上滑动一点,以便在过渡后显示它的顶部。
非常感谢你的帮助,因为这是一件时间紧迫的事情
下面的代码符合您的要求吗?
制作你的原创变形金刚:
public class SlideUpTransformer implements ViewPager.PageTransformer {
@Override
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
if (-1 < position && position < 0) {
float scaleFactor = 1 - Math.abs(position) * 0.1f;
float verticalMargin = pageHeight * (1 - scaleFactor) / 2;
float horizontalMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0) {
view.setTranslationX(horizontalMargin - verticalMargin / 2);
} else {
view.setTranslationX(-horizontalMargin + verticalMargin / 2);
}
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
}
view.setTranslationX(view.getWidth() * -position);
if (position > 0) {
float yPosition = position * view.getHeight();
view.setTranslationY(yPosition);
}
}
}
这样使用:
viewPager.setPageTransformer(false, new SlideUpTransformer());
这是这样工作的:
这是我必须实现的。我已经有了一个垂直的 viewpager,但我缺乏转换经验,我不知道该怎么做...
下一张要显示的卡片的顶部预览在当前显示的卡片下方。当下一张卡片被触摸并拖动到顶部时,动画开始,下一张卡片向上滑动,同时当前卡片被缩小然后向上滑动一点,以便在过渡后显示它的顶部。
非常感谢你的帮助,因为这是一件时间紧迫的事情
下面的代码符合您的要求吗?
制作你的原创变形金刚:
public class SlideUpTransformer implements ViewPager.PageTransformer {
@Override
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
if (-1 < position && position < 0) {
float scaleFactor = 1 - Math.abs(position) * 0.1f;
float verticalMargin = pageHeight * (1 - scaleFactor) / 2;
float horizontalMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0) {
view.setTranslationX(horizontalMargin - verticalMargin / 2);
} else {
view.setTranslationX(-horizontalMargin + verticalMargin / 2);
}
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
}
view.setTranslationX(view.getWidth() * -position);
if (position > 0) {
float yPosition = position * view.getHeight();
view.setTranslationY(yPosition);
}
}
}
这样使用:
viewPager.setPageTransformer(false, new SlideUpTransformer());
这是这样工作的: