如何动画滚动位置? 如何顺利地滚动?(How to animate scroll positio

2019-06-24 12:31发布

我想平稳地移动到下一个滚动位置在我的自定义视图(按下按钮或事件)。 如何实现这一点? 首先,我无法看到滚动动画类(仅限α,旋转,缩放和平移)。 其次,有动画类,我看不到一个迭代(说滚动100分像素的权利,我们拥有的任何位置)唯一的绝对的人(即从一个恒定值动画到另一个)。

Answer 1:

假设你使用的是滚动型,并smoothScrollTo(...)为你工作?

http://developer.android.com/reference/android/widget/ScrollView.html#smoothScrollTo%28int,%20int%29



Answer 2:

使用ObjectAnimator,这是滚动到顶部的示例:

public void scroolToTop() {
            int x = 0;
            int y = 0;
    ObjectAnimator xTranslate = ObjectAnimator.ofInt(mScrollView, "scrollX", x);
    ObjectAnimator yTranslate = ObjectAnimator.ofInt(mScrollView, "scrollY", y);

    AnimatorSet animators = new AnimatorSet();
    animators.setDuration(1000L);
    animators.playTogether(xTranslate, yTranslate);
    animators.addListener(new AnimatorListener() {

        @Override
        public void onAnimationStart(Animator arg0) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onAnimationRepeat(Animator arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationEnd(Animator arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationCancel(Animator arg0) {
            // TODO Auto-generated method stub

        }
    });
    animators.start();
}


Answer 3:

动画滚动通过使用滚轮/ OverScroller的组合进行(计算时间的滚动偏移的内插的值),GestureDetectors(启动卷轴对象)和观的onComputeScroll方法(其隐含地是动画循环)。

Android官方文档现在对正是这个话题一个详细的教程。 http://developer.android.com/training/gestures/scroll.html



Answer 4:

见view_cache_demo示例代码,看看如何做动画滚动。 它工作在2D,缓存复杂的图纸还负责一扔手势,但你可以一切必要的简化。



文章来源: How to animate scroll position? How to scroll smoothly?