2012-05-16 10 views
22

私のカスタムビューの次のスクロール位置にスムーズに移動したいと思っています。これを実装する方法は?まず第一に、私はスクロールアニメーションクラス(アルファ、回転、スケール、翻訳のみ)を見ることができません。第2に、アニメーションクラスを持つと、私は反復的なものを見ることができません。絶対的なものだけ(つまり、ある一定の値から別の値にアニメートする)スクロール位置をアニメーション化する方法は?スムーズにスクロールするには?

答えて

35

ScrollViewを使用していると仮定すると、smoothScrollTo(...)は機能しますか?

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

+0

私は 'ScrollView'を使用する必要がありますか? MyClass extends Viewを使用しています。 –

+0

私はあなたが何をしているのかによってScrollViewがうまくいけばそれを使うと思います。 –

+0

私は 'ScrollView'を拡張しようとしましたが、' onScrollChanged() 'はこのケースでは呼び出されませんでした。私はそれの中のいくつかのパラメータを計算するので、私はこのメソッドを呼び出す必要があります。私。 'smoothScroll'は私のためには機能しません。 –

0

アニメーションスクロールを行う方法を確認するためにview_cache_demoサンプルコードを参照してください。これは2Dで動作し、複雑な図をキャッシュし、ジェスチャーを処理しますが、必要に応じてすべてを単純化できます。

1

のアニメーションスクロールを使用しての組み合わせを介して行われスクローラ/ OverScrollerGestureDetectors(時間をあなたのスクロールオフセットの補間値を計算する)とビューのonComputeScroll方法(スクロールオブジェクトを起動します) (これは暗黙のうちにアニメーションループです)。

正式なアンドロイドのドキュメントには、このトピックに関する詳細なチュートリアルがあります。 ObjectAnimatorを使用してhttp://developer.android.com/training/gestures/scroll.html

22

は、これが一番上にスクロールするためのサンプルです:

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(); 
} 
+0

非常に良い、ありがとうございます。 – Karoly

+0

優れた作品! – ventura8

+0

スムーズなアニメーションは魅力のように機能します! –

関連する問題