Android中解决WebView上下滑动监听问题
有些时候我们需要监听webview的滚动事件,但WebView没有直接监听滑动的方法,看WebView的源码则会发现有一个protectedvoidonScrollChanged(intl,intt,intoldl,intoldt)方法。
这个方法。是受到保护的所以我们无法直接使用,所以我们写一个加强的WebView,重写onScrollChanged方法并利用接口回调。
publicclassNewWebViewextendsWebView{
privateOnScrollChangeListenermOnScrollChangeListener;
publicNewWebView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
@Override
protectedvoidonScrollChanged(intl,intt,intoldl,intoldt){
super.onScrollChanged(l,t,oldl,oldt);
//webview的高度
floatwebcontent=getContentHeight()*getScale();
//当前webview的高度
floatwebnow=getHeight()+getScrollY();
if(Math.abs(webcontent-webnow)<1){
//处于底端
mOnScrollChangeListener.onPageEnd(l,t,oldl,oldt);
}elseif(getScrollY()==0){
//处于顶端
mOnScrollChangeListener.onPageTop(l,t,oldl,oldt);
}else{
mOnScrollChangeListener.onScrollChanged(l,t,oldl,oldt);
}
}
publicvoidsetOnScrollChangeListener(OnScrollChangeListenerlistener){
this.mOnScrollChangeListener=listener;
}
publicinterfaceOnScrollChangeListener{
publicvoidonPageEnd(intl,intt,intoldl,intoldt);
publicvoidonPageTop(intl,intt,intoldl,intoldt);
publicvoidonScrollChanged(intl,intt,intoldl,intoldt);
}
}
使用:
publicclassNewsActivityextendsAppCompatActivity{
privateNewsWebViewmWebView;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news);
mWebView=(NewsWebView)findViewById(R.id.web_view);
mWebView.setOnScrollChangeListener(newNewsWebView.OnScrollChangeListener(){
@Override
publicvoidonPageEnd(intl,intt,intoldl,intoldt){
Logs.d("已经到达地端");
}
@Override
publicvoidonPageTop(intl,intt,intoldl,intoldt){
Logs.d("已经到达顶端");
}
@Override
publicvoidonScrollChanged(intl,intt,intoldl,intoldt){
}
});
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
10 小学毕业父母简短祝福语
11 幼儿生日祝福语模板简短
12 新娘妈妈的祝福语简短
13 邻居聚会祝福语大全简短
14 十条祝福语简短
15 给同学祝福语的简短
16 过年祝福语简短祝妈妈
17 祝女儿简短祝福语大全
18 恩师诗词祝福语简短大全