web-dev-qa-db-ja.com

スクロール位置をアニメーション化する方法は?スムーズにスクロールするには?

カスタムビューで(ボタンを押すかイベントで)次のスクロール位置にスムーズに移動したいと思います。これを実装する方法?まず、スクロールアニメーションクラスが表示されません(アルファ、回転、拡大縮小、移動のみ)。次に、アニメーションクラスがあるため、反復的なもの(たとえば、100ピクセルの権利をスクロールする位置)を絶対的なもの(つまり、ある定数値から別の値にアニメーション化するもの)だけを見ることができません。

27
Suzan Cioc

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

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

41
Ian Warwick

ObjectAnimatorを使用すると、これは上にスクロールするためのサンプルです。

public void scrollToTop() {
    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();
}
33
anton46

スクロールのアニメーション化は、Scroller/OverScroller(スクロールオフセットの時間補間値を計算するため)を使用してGestureDetectorsを組み合わせて行われます。 (スクローラーオブジェクトを開始するため)およびビューのonComputeScrollメソッド(暗黙的にアニメーションループです)。

公式のAndroidドキュメントに、このトピックに関する詳細なチュートリアルが追加されました http://developer.Android.com/training/gestures/scroll.html

1
numan salati

view_cache_demo サンプルコードを参照して、アニメーションスクロールの方法を確認してください。 2Dで動作し、複雑な描画をキャッシュし、フリングジェスチャも処理しますが、必要に応じてすべてを簡略化できます。

0