[英]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.