如何动画滚动位置?如何顺利滚动?

时间:2012-05-16 15:10:18

标签: android animation scroll drawing

我希望在我的自定义视图中按顺序移动到下一个滚动位置(按下按钮或事件)。怎么实现这个?首先,我看不到滚动动画类(只有alpha,旋转,缩放和平移)。其次,有了动画类,我看不到迭代的一个(比如用我们所拥有的任何位置滚动100像素的权利)只有绝对的(即从一个常数值到另一个常量值的动画)。

4 个答案:

答案 0 :(得分:40)

假设您使用的是ScrollView,smoothScrollTo(...)是否适合您?

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

答案 1 :(得分:33)

使用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();
}

答案 2 :(得分:1)

动画滚动是通过使用 Scroller / OverScroller (计算滚动偏移的时间插值), GestureDetectors (启动滚动对象)的组合完成的和View的 onComputeScroll 方法(隐含地是你的动画循环)。

官方的Android文档现在有一个关于这个主题的详细教程。 http://developer.android.com/training/gestures/scroll.html

答案 3 :(得分:0)

请参阅view_cache_demo示例代码,了解如何进行动画滚动。它适用于2D,缓存复杂绘图并处理拖动手势,但您可以根据需要简化所有操作。