Android中ScrollView實(shí)現(xiàn)滑動(dòng)距離監(jiān)聽器的方法
前言
眾所周知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)對滑動(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é)
以上就是這篇文章的全部內(nèi)容了,希望能對各位Android開發(fā)者們有所幫助,如果有疑問大家可以留言交流。
相關(guān)文章
android 跳轉(zhuǎn)進(jìn)市場的實(shí)現(xiàn)代碼
本篇文章是對android中跳轉(zhuǎn)進(jìn)市場的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Kotlin文件讀寫與SharedPreferences存儲(chǔ)功能實(shí)現(xiàn)方法
SharedPreferences是安卓平臺(tái)上一個(gè)輕量級(jí)的存儲(chǔ)類,用來保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時(shí),將此activity的狀態(tài)保存到SharedPereferences中;當(dāng)Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時(shí),再從SharedPreferences中將值取出2022-12-12
android選擇視頻文件上傳到后臺(tái)服務(wù)器
這篇文章主要介紹了android選擇視頻文件上傳到后臺(tái)服務(wù)器的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Android 中ViewPager中使用WebView的注意事項(xiàng)
這篇文章主要介紹了Android 中ViewPager中使用WebView的注意事項(xiàng)的相關(guān)資料,希望通過本文大家在使用過程中遇到這樣的問題解決,需要的朋友可以參考下2017-09-09
Android調(diào)用google地圖生成路線圖實(shí)現(xiàn)代碼
Android程序調(diào)用本機(jī)google地圖并且傳遞起始和終點(diǎn)位置生成路線圖,有需要的朋有可以參考下,或許本文對你有所幫助,好了話不多說,看代碼2013-02-02

