Android中ScrollView實現(xiàn)滑動距離監(jiān)聽器的方法
前言
眾所周知ScrollView是我們經(jīng)常使用的一個UI控件,也許你在使用ScrollView的過程中會發(fā)現(xiàn),當你想監(jiān)聽ScrollView滑動的距離時卻沒有合適的監(jiān)聽器!當然在API 23中有setOnScrollChangeListener(View.OnScrollChangeListener l)可以使用,但是并不兼容低版本的API。那怎么辦呢?只好重寫ScrollView來實現(xiàn)對滑動距離的監(jiān)聽了。
話不多說,直接上代碼:
public class MyScrollView extends ScrollView {
private OnScrollListener listener;
/**
* 設(shè)置滑動距離監(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);
}
// 滑動距離監(jiān)聽器
public interface OnScrollListener{
/**
* 在滑動的時候調(diào)用,scrollY為已滑動的距離
*/
void onScroll(int scrollY);
}
@Override
public void computeScroll() {
super.computeScroll();
if(listener!=null){
listener.onScroll(getScrollY());
}
}
}
上面重寫的MyScrollView是在computeScroll()實現(xiàn)監(jiān)聽,因為ScrollView內(nèi)部是通過Scroller來實現(xiàn)的,當滑動的時候會去調(diào)用computeScroll()方法,從而達到監(jiān)聽的效果。
當然還有另一種方法,就是在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 Handler,Message,MessageQueue,Loper源碼解析詳解
這篇文章主要介紹了Android Handler,Message,MessageQueue,Loper源碼解析詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-09-09
Android實現(xiàn)圖片在屏幕內(nèi)縮放和移動效果
這篇文章主要為大家詳細介紹了Android控制圖片在屏幕內(nèi)縮放和移動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02
探究Android客戶端網(wǎng)絡預連接優(yōu)化機制
一般情況下,我們都是用一些封裝好的網(wǎng)絡框架去請求網(wǎng)絡,對底層實現(xiàn)不甚關(guān)注,而大部分情況下也不需要特別關(guān)注處理。了解底層的一些實現(xiàn),有益于我們對網(wǎng)絡加載進行優(yōu)化。本文就是關(guān)于根據(jù)http的連接復用機制來優(yōu)化網(wǎng)絡加載速度的原理與細節(jié)2021-06-06
Android開發(fā)實現(xiàn)查詢遠程服務器的工具類QueryUtils完整實例
這篇文章主要介紹了Android開發(fā)實現(xiàn)查詢遠程服務器的工具類QueryUtils,涉及Android服務器請求發(fā)送、接收、數(shù)據(jù)交互等相關(guān)操作技巧,需要的朋友可以參考下2017-11-11

