国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android中ScrollView實(shí)現(xiàn)滑動(dòng)距離監(jiān)聽器的方法

2019-12-12 05:06:28
字體:
供稿:網(wǎng)友

前言

眾所周知ScrollView是我們經(jīng)常使用的一個(gè)UI控件,也許你在使用ScrollView的過程中會(huì)發(fā)現(xiàn),當(dāng)你想監(jiān)聽ScrollView滑動(dòng)的距離時(shí)卻沒有合適的監(jiān)聽器!當(dāng)然在API 23中有setOnScrollChangeListener(View.OnScrollChangeListener l)可以使用,但是并不兼容低版本的API。那怎么辦呢?只好重寫ScrollView來實(shí)現(xiàn)對(duì)滑動(dòng)距離的監(jiān)聽了。

話不多說,直接上代碼:

public class MyScrollView extends ScrollView { private OnScrollListener listener; /** * 設(shè)置滑動(dòng)距離監(jiān)聽器 */ public void setOnScrollListener(OnScrollListener listener) {  this.listener = listener; } public MyScrollView(Context context) {  super(context); } public MyScrollView(Context context, AttributeSet attrs) {  super(context, attrs); } public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {  super(context, attrs, defStyleAttr); } // 滑動(dòng)距離監(jiān)聽器 public interface OnScrollListener{ /** * 在滑動(dòng)的時(shí)候調(diào)用,scrollY為已滑動(dòng)的距離 */  void onScroll(int scrollY); } @Override public void computeScroll() {  super.computeScroll();  if(listener!=null){   listener.onScroll(getScrollY());  } }}

上面重寫的MyScrollView是在computeScroll()實(shí)現(xiàn)監(jiān)聽,因?yàn)镾crollView內(nèi)部是通過Scroller來實(shí)現(xiàn)的,當(dāng)滑動(dòng)的時(shí)候會(huì)去調(diào)用computeScroll()方法,從而達(dá)到監(jiān)聽的效果。

當(dāng)然還有另一種方法,就是在onScrollChanged(int l, int t, int oldl, int oldt)去監(jiān)聽,最后的效果是一樣的:

public class MyScrollView extends ScrollView { private OnScrollListener listener; public void setOnScrollListener(OnScrollListener listener) {  this.listener = listener; } public MyScrollView(Context context) {  super(context); } public MyScrollView(Context context, AttributeSet attrs) {  super(context, attrs); } public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {  super(context, attrs, defStyleAttr); } public interface OnScrollListener{  void onScroll(int scrollY); }  @Override  protected void onScrollChanged(int l, int t, int oldl, int oldt) {   super.onScrollChanged(l, t, oldl, oldt);   if(listener != null){    listener.onScroll(t);   }  } }

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望能對(duì)各位Android開發(fā)者們有所幫助,如果有疑問大家可以留言交流。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 禄丰县| 商丘市| 永州市| 卢龙县| 博乐市| 师宗县| 蒙阴县| 榆林市| 张北县| 宜阳县| 东丽区| 灵川县| 东明县| 金山区| 永济市| 乐安县| 延津县| 桓仁| 开阳县| 获嘉县| 茶陵县| 九江市| 晋州市| 江门市| 肥乡县| 清水河县| 博客| 湘潭县| 姚安县| 涿州市| 兴隆县| 陕西省| 阿图什市| 秀山| 桃园市| 老河口市| 新绛县| 灵璧县| 海口市| 全州县| 平南县|