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()的值是多少