日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 布局滑动中scrollTo 和 scrollBy 方法使用说明

發(fā)布時間:2024/1/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 布局滑动中scrollTo 和 scrollBy 方法使用说明 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

首先,看源碼:

public void scrollTo(int x, int y) {if (mScrollX != x || mScrollY != y) {int oldX = mScrollX;int oldY = mScrollY;mScrollX = x;mScrollY = y;onScrollChanged(mScrollX, mScrollY, oldX, oldY);if (!awakenScrollBars()) {invalidate();}}} public void scrollBy(int x, int y) {scrollTo(mScrollX + x, mScrollY + y);}

從源碼中可以看到,scrollBy()的內(nèi)部其實(shí)是調(diào)用了scrollTo()。在scrollTo()中,調(diào)用了onScrollChanged()和invalidate()。onScrollChanged()的作用就是告訴系統(tǒng)(可以理解為Android框架),這個View的scrollTo()或scrollBy()曾經(jīng)被調(diào)用過;而invalidate()是告訴系統(tǒng),這個View需要被重新繪制。

mScrollX:表示離視圖起始位置的x水平方向的偏移量 mScrollY:表示離視圖起始位置的y垂直方向的偏移量

分別通過getScrollX() 和getScrollY()方法獲得。 注意:mScrollX和mScrollY指的并不是坐標(biāo),而是偏移量。

scrollTo(int x,int y):

如果偏移位置發(fā)生了改變,就會給mScrollX和mScrollY賦新值,改變當(dāng)前位置。 #####注意:x,y代表的不是坐標(biāo)點(diǎn),而是偏移量。 例如: 我要移動view到坐標(biāo)點(diǎn)(100,100),那么我的偏移量就是:原位置坐標(biāo)-目標(biāo)位置坐標(biāo)=偏移量 (0,,0) - (100,100) = (-100 ,-100) ,我就要執(zhí)行view.scrollTo(-100,-100),達(dá)到這個效果。

scrollBy(int x,int y):

從源碼中看出,它實(shí)際上是調(diào)用了scrollTo(mScrollX + x, mScrollY + y); mScrollX + x和mScrollY + y,即表示在原先偏移的基礎(chǔ)上在發(fā)生偏移,通俗的說就是相對我們當(dāng)前位置偏移。 由于sctrollTo只是移動了內(nèi)容content,所以是父類VIEW里面的所有子控件在移動,而父容器ViewGroup并沒有移動,也就是說位置它還占用著,移動子控件的時候,子控件只能在容器里面移動,如果子控件移動到了超出的地方(父控件的范圍),那么超出的位置就不會顯示了。

轉(zhuǎn)載于:https://my.oschina.net/byronhs/blog/714132

總結(jié)

以上是生活随笔為你收集整理的android 布局滑动中scrollTo 和 scrollBy 方法使用说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。