首先說一下 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...