Android scrollview監聽滑動狀態

2021-10-01 17:29:21 字數 2116 閱讀 9070

首先說一下 nestedscrollview 的滑動事件的監聽,

如果使用 

nestedscrollview.setonscrollchangelistener(new view.onscrollchangelistener() 

});

這個方法在 api >= 23  時才可以使用,怎麼解決呢 。我們可以自己定義乙個scrollview

public class myscrollview extends nestedscrollview 

public myscrollview(context context, attributeset attributeset)

public myscrollview(context context, attributeset attrs, int defstyleattr)

@override

protected void onscrollchanged(int l, int t, int oldl, int oldt)

}public void setonscrollchanged(onscrollchanged onscrollchanged)

public inte***ce onscrollchanged

}

這樣我們就可以通過實現 onscrollchanged() 監聽滑動事件了 ,其中可以監測到滑動距離,這樣就可以做好多事情了;

但是現在有乙個需求就是【滑動的時候隱藏 乙個靠邊的懸浮框,不滑動是懸浮框顯示出來】,這樣的話就需要監測滑動狀態了。scrollview 不像recyclerview一樣可以監測滑動狀態。

以下是我的乙個實現方案,通過countdowntimer 來實現

在剛才的onscrollchanged  介面中增加方法

public inte***ce onscrollchanged
然後重寫ontouchevent方法

@override

public boolean ontouchevent(motionevent ev)

break;

case motionevent.action_down:

case motionevent.action_move:

if (monscrollchanged != null)

break;

}return super.ontouchevent(ev);

}

這裡的isdown=true代表是按下或者滑動的狀態,對應action_down和action_move,fale代表action_up和action_cancel

下面使用這個自定義的scrollerview

//靜止狀態

private final static int scroll_state_idle = 1;

//拖動或者慣性滑動狀態

private final static int scroll_state_scroll = 2;

//判斷是否是拖動狀態

boolean isdragstate = false;

int currentstate = scroll_state_idle;

//這裡採用100ms來判斷是否已經是靜止狀態,100ms結束後證明是靜止狀態

private countdowntimer scrollcounttimer = new countdowntimer(100, 1)

@override

public void onfinish()

};private void initscrollview()

//滑動時先取消倒計時,設定滑動狀態

scrollcounttimer.cancel();

if(currentstate != scroll_state_scroll)

scrollcounttimer.start();

}@override

public void ontouch(boolean isdown) else

}});//最後記得頁面銷毀時,cancel掉timer

android 滑動監聽

1,讓 activity實現 ontouchlistener介面 2.privategesturedetector gesturedetector 在activity中實現以下監聽 gesturedetector newgesturedetector 你的activity,ongesturelist...

監聽ScrollView滑動方向

其實android的view類裡面有乙個方法 protected void onscrollchanged int l,intt,int oldl,int oldt 通過查詢資料發現可以重寫這個方法來監聽列表的滑動方向。下面我給出我針對scrollview實現的監聽類。可以監聽scrollview的...

scrollview監聽滑動位置

android監聽scrollview滑動到頂端和底部 packagecn.testscrollview importandroid.os.bundle importandroid.view.motionevent importandroid.view.view importandroid.view...