1. 程式人生 > >scrollTo、scrollBy、getScrollX、getScrollY這4個方法的含義android檢視、座標原理

scrollTo、scrollBy、getScrollX、getScrollY這4個方法的含義android檢視、座標原理

結合程式和圖作出說明:

1、關於自定義檢視繼承ViewGroup中的onMeasure和onLayout是怎麼實現我就不多說了,此博文主要是說明scrollTo、scrollBy、getScrollX、getScrollY這4個方法的含義。

2、整個座標系是以手機螢幕左上角為原點,子檢視的高度應該和手機螢幕高度一樣高,但是為了畫圖顯示突出,所以手機螢幕稍微高了一些。

3、MultiViewGroup繼承ViewGroup,初始化時包含了3個子檢視(子檢視1、子檢視2、子檢視3),並且每個子檢視的寬、高都和手機螢幕一樣大。MultiViewGroup容器經過onMeasure和onLayout設定後,它的檢視座標應該是3個顏色區域的總大小,這個區域遠比我們得手機螢幕大,這點要注意。開始時應該顯示的是子檢視1(紅色區域)。

4、public voidscrollTo(int x, int y)說明:

它表示移動到檢視的那個座標點。哪個檢視呼叫這個方法,那麼這個檢視的(x,y)點就與手機螢幕的左上角對齊(也可以理解為,手機螢幕的左上角就移動到(x,y)座標)。

public voidscrollBy(int dx, int dy) 說明:

它表示在檢視的X、Y方向上各移動dx、dy距離

dx>0表示檢視(View或ViewGroup)的內容從右向左滑動;反之,從左向右滑動

dy>0表示檢視(View或ViewGroup)的內容從下向上滑動;反之,從上向下滑動

getScrollX()說明:

=手機螢幕顯示區域左上角x座標減去MultiViewGroup檢視左上角x座標=320

getScrollY()說明:

=手機螢幕顯示區域左上角y座標減去MultiViewGroup檢視左上角y座標=0(因為子檢視的高度和手機螢幕高度一樣)

5、當我們點選Next按鈕時,執行:

mulTiViewGroup.scrollTo(curscreen* screenWidth, 0);那麼程式就移動到了黃色區域

6、點選Prev按鈕,執行

mulTiViewGroup.scrollBy(10,200);出現如下圖所示

x=10,表示檢視從右向左移動了10個單位

y=200,表示檢視從下到上移動了200個單位

同時可以除錯看看getScrollX()和getScrollY()的值是多少