Bro*_*own 6 android android-animation android-viewpager
所以我想要实现的是用户将打开视图寻呼机的第一页,并且视图寻呼机将反弹到第二页的一半并反弹回第一页,表示有更多页面要滚动到.我想知道如何实现这个?
Yur*_*raj 15
您可以使用fakeDragBy方法来实现此效果:
viewPager.beginFakeDrag();
viewPager.fakeDragBy(offset); //offset in pixels.
viewPager.endFakeDrag();
Run Code Online (Sandbox Code Playgroud)
编辑:
我为此制定了方法:
private int animFactor;
private ValueAnimator animator = new ValueAnimator();
private void animateViewPager(final ViewPager pager, final int offset, final int delay) {
if (!animator.isRunning()) {
animator.removeAllUpdateListeners();
animator.removeAllListeners();
//Set animation
animator.setIntValues(0, -offset);
animator.setDuration(delay);
animator.setRepeatCount(1);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
Integer value = animFactor * (Integer) animation.getAnimatedValue();
if (!pager.isFakeDragging()) {
pager.beginFakeDrag();
}
pager.fakeDragBy(value);
}
});
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
animFactor = 1;
}
@Override
public void onAnimationEnd(Animator animation) {
pager.endFakeDrag();
}
@Override
public void onAnimationRepeat(Animator animation) {
animFactor = -1;
}
});
animator.start();
}
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
animateViewPager(pager, 10, 1000);
Run Code Online (Sandbox Code Playgroud)
Edit2: ValueAnimator是Api级别11的类.还在调用此方法之前设置寻呼机适配器.
| 归档时间: |
|
| 查看次数: |
2957 次 |
| 最近记录: |