簡體   English   中英

如何動畫滾動位置? 如何順利滾動?

[英]How to animate scroll position? How to scroll smoothly?

我希望在我的自定義視圖(按下按鈕或事件)中順利移動到下一個滾動位置。 怎么實現這個? 首先,我看不到滾動動畫類(只有alpha,旋轉,縮放和平移)。 其次,有動畫類,我看不到迭代的(比如滾動100像素權利,無論我們有什么位置)只有絕對的(即從一個常數值動畫到另一個常數值)。

假設您使用的是ScrollView,smoothScrollTo(...)是否適合您?

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

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

動畫滾動是通過使用Scroller / OverScroller (計算滾動偏移的時間插值), GestureDetectors (啟動滾動對象)和View的onComputeScroll方法(隱式地是動畫循環)的組合完成的。

官方的android文檔現在有一個關於這個主題的詳細教程。 http://developer.android.com/training/gestures/scroll.html

請參閱view_cache_demo示例代碼以了解如何進行動畫滾動。 它適用於2D,緩存復雜繪圖並處理拖動手勢,但您可以根據需要簡化所有操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM