<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                #### 3.2.1 使用scrollTo/scrollBy 為了實現View的滑動,View提供了專門的方法來實現這個功能,那就是scrollTo和scrollBy,我們先來看看這兩個方法的實現,如下所示。 /** * Set the scrolled position of your view. This will cause a call to * {@link #onScrollChanged(int, int, int, int)} and the view will be * invalidated. * @param x the x position to scroll to * @param y the y position to scroll to */ public void scrollTo(int x, int y) { if (mScrollX ! = x || mScrollY ! = y) { int oldX = mScrollX; int oldY = mScrollY; mScrollX = x; mScrollY = y; invalidateParentCaches(); onScrollChanged(mScrollX, mScrollY, oldX, oldY); if (! awakenScrollBars()) { postInvalidateOnAnimation(); } } } /** * Move the scrolled position of your view. This will cause a call to * {@link #onScrollChanged(int, int, int, int)} and the view will be * invalidated. * @param x the amount of pixels to scroll by horizontally * @param y the amount of pixels to scroll by vertically */ public void scrollBy(int x, int y) { scrollTo(mScrollX + x, mScrollY + y); } 從上面的源碼可以看出,scrollBy實際上也是調用了scrollTo方法,它實現了基于當前位置的相對滑動,而scrollTo則實現了基于所傳遞參數的絕對滑動,這個不難理解。利用scrollTo和scrollBy來實現View的滑動,這不是一件困難的事,但是我們要明白滑動過程中View內部的兩個屬性mScrollX和mScrollY的改變規則,這兩個屬性可以通過getScrollX和getScrollY方法分別得到。這里先簡要概況一下:在滑動過程中,mScrollX的值總是等于View左邊緣和View內容左邊緣在水平方向的距離,而mScrollY的值總是等于View上邊緣和View內容上邊緣在豎直方向的距離。View邊緣是指View的位置,由四個頂點組成,而View內容邊緣是指View中的內容的邊緣,scrollTo和scrollBy只能改變View內容的位置而不能改變View在布局中的位置。mScrollX和mScrollY的單位為像素,并且當View左邊緣在View內容左邊緣的右邊時,mScrollX為正值,反之為負值;當View上邊緣在View內容上邊緣的下邊時,mScrollY為正值,反之為負值。換句話說,如果從左向右滑動,那么mScrollX為負值,反之為正值;如果從上往下滑動,那么mScrollY為負值,反之為正值。 為了更好地理解這個問題,下面舉個例子,如圖3-3所示。在圖中假設水平和豎直方向的滑動距離都為100像素,針對圖中各種滑動情況,都給出了對應的mScrollX和mScrollY的值。根據上面的分析,可以知道,使用scrollTo和scrollBy來實現View的滑動,只能將View的內容進行移動,并不能將View本身進行移動,也就是說,不管怎么滑動,也不可能將當前View滑動到附近View所在的區域,這個需要仔細體會一下。 :-: ![](https://img.kancloud.cn/e5/94/e5943656f98b184a0e4de2e5c2fc84cb_937x607.png) 圖3-3 mScrollX和mScrollY的變換規律示意
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看