2011-03-15 89 views
4

任何人都知道如何使自己的滾動功能,如fling()或smoothScrollTo()? 我有一類就是滾動型擴展,但我不能找出如何使這個......滾動視圖的自定義滾動效果?

我希望它像一扔工作,但倒退,與我的意思是從給定的速度放慢,而不是我想要的從相同速率從0加速,因爲它在放棄時放慢速度,然後停止在給定位置滾動...

效果我的目標是像WP7鎖屏,你把它從屏幕上方向上拋出,如果你的scrollview沒有一直滾動到最後我希望它「倒下」,因爲我希望它從速度0開始並增加,直到它再次達到開始位置。

任何人都可以幫助我,或只是指向正確的方向?

+0

我編輯了我的答案。 – bigstones 2011-03-17 17:02:57

回答

1

ScrollView使用Scroller來確定如何扔動畫。我認爲你可以寫一個自定義的Scroller並改變決定運動的功能。

Here an example使用Scrollerhere Scroller's source code

可悲的是,我不知道有ScrollView使用比獲得ScrollView的來源,並與你的更換標準ScrollerScroller其他簡單的方法。另一種方法是創建一個更簡單的自定義滾動視圖。

編輯

好像Android的通知欄的效果。如果你不需要它來跟隨手指,但只回應揮動手勢,使用動畫和GestureDetector應該不會太難。例如:

觸摸或緩慢一扔 - >反彈動畫;

足夠快 - >向上滑動動畫;如果你想讓它跟隨你的手指(像Android的通知欄),你將不得不使用View的滾動框架,我認爲它會更復雜(但你可以去看看如何他們做到了)。

+0

它是我現在製作的方式,但是在那種方式下,當我按住scrollview並保持動畫效果時,我無法停止中間的動畫.... – Alioooop 2011-03-19 18:47:09

+0

@Alioooop然後您可以嘗試第二種方法。好吧,祝你好運! – bigstones 2011-03-19 19:01:51

3

您可能能夠通過在滾動條上設置不同的Interpolator來獲得所需的效果。

例如,您可以嘗試使用AccelerateInterpolator。

Scroller myScroller = new Scroller(context, new AccelerateInterpolator()); 

編輯: 務必閱讀bigstones回答雖然,因爲我的建議並沒有幫助,除非你願意創建自己的滾動型(這是不是所有的困難的,因爲你有來源)。

+1

+1用於指出構造函數中的插補器。我不記得了! – bigstones 2011-03-16 14:49:45

+0

我試着用自己的源代碼滾動視圖,但它仍然有一些變量和其他東西,我不能使用從我的應用程序... – Alioooop 2011-03-16 21:34:19

+0

我的目標是像WP7鎖屏,你把它從屏幕上向上拋出,如果你的滾動視圖沒有滾動到最後我希望它「摔倒」,因爲我希望它從速度0開始並增加,直到它再次到達開始位置:) – Alioooop 2011-03-16 21:52:10