天天看點

[Android自定義控件] Android Scroller工具類和GestureDetector的簡單用法

Android裡Scroller類是為了實作View平滑滾動的一個Helper類。通常在自定義的View時使用,在View中定義一個私有成員mScroller = new Scroller(context)。設定mScroller滾動的位置時,并不會導緻View的滾動,通常是用mScroller記錄/計算View滾動的位置,再重寫View的computeScroll(),完成實際的滾動。 

GestureDetector是手勢識别工具類,需要在View的ontochEvent中預設傳回GetureDetector的onTochEvent來管理所有的手勢識别。

最重要的也就是onTouch中的distanX和diantanY,也就是水準方向的有效的移動距離和垂直方向上的有效移動距離。結合scroller變能實作諸如下拉重新整理,自定義ViewPager類似功能的View控件。

1

2

3

4

5

6

7

8

9

10

11

12

<code>mScroller.getCurrX() </code><code>//擷取mScroller目前水準滾動的位置</code>

<code>mScroller.getCurrY() </code><code>//擷取mScroller目前豎直滾動的位置</code>

<code>mScroller.getFinalX() </code><code>//擷取mScroller最終停止的水準位置</code>

<code>mScroller.getFinalY() </code><code>//擷取mScroller最終停止的豎直位置</code>

<code>mScroller.setFinalX(</code><code>int</code> <code>newX) </code><code>//設定mScroller最終停留的水準位置,沒有動畫效果,直接跳到目标位置</code>

<code>mScroller.setFinalY(</code><code>int</code> <code>newY) </code><code>//設定mScroller最終停留的豎直位置,沒有動畫效果,直接跳到目标位置</code>

<code>//滾動,startX, startY為開始滾動的位置,dx,dy為滾動的偏移量, duration為完成滾動的時間</code>

<code>mScroller.startScroll(</code><code>int</code> <code>startX, </code><code>int</code> <code>startY, </code><code>int</code> <code>dx, </code><code>int</code> <code>dy) </code><code>//使用預設完成時間250ms</code>

<code>mScroller.startScroll(</code><code>int</code> <code>startX, </code><code>int</code> <code>startY, </code><code>int</code> <code>dx, </code><code>int</code> <code>dy, </code><code>int</code> <code>duration)</code>

<code>mScroller.computeScrollOffset() </code><code>//傳回值為boolean,true說明滾動尚未完成,false說明滾動已經完成。這是一個很重要的方法,通常放在View.computeScroll()中,用來判斷是否滾動是否結束。</code>

  舉例說明,自定義一個CustomView,使用Scroller實作滾動: 

[Android自定義控件] Android Scroller工具類和GestureDetector的簡單用法
[Android自定義控件] Android Scroller工具類和GestureDetector的簡單用法

下載下傳次數: 1517

本文轉自demoblog部落格園部落格,原文連結http://www.cnblogs.com/0616--ataozhijia/p/3987206.html如需轉載請自行聯系原作者

demoblog

繼續閱讀