如何监听webview的滚动事件

 我来答
ahcc08
2017-04-28 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51941
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部
package com.song.webviewtest;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.webkit.WebView;

public class ScrollWebView extends WebView {
public OnScrollChangeListener listener;
public ScrollWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ScrollWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollWebView(Context context) {
super(context); }
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
float webcontent = getContentHeight() * getScale();// webview的高度
float webnow = getHeight() + getScrollY();// 当前webview的高度
Log.i("TAG1", "webview.getScrollY()====>>" + getScrollY());
if (Math.abs(webcontent - webnow) < 1) {
// 已经处于底端
// Log.i("TAG1", "已经处于底端");
listener.onPageEnd(l, t, oldl, oldt);
} else if (getScrollY() == 0) {
// Log.i("TAG1", "已经处于顶端");
listener.onPageTop(l, t, oldl, oldt);
} else {
listener.onScrollChanged(l, t, oldl, oldt); } }
public void setOnScrollChangeListener(OnScrollChangeListener listener) {
this.listener = listener; }
public interface OnScrollChangeListener {
public void onPageEnd(int l, int t, int oldl, int oldt);
public void onPageTop(int l, int t, int oldl, int oldt);
public void onScrollChanged(int l, int t, int oldl, int oldt); }}

然后,利用这个加强的WebView就可以监听了

package com.song.webviewtest;
import java.util.HashMap;
import java.util.Map;import android.app.Activity;
import android.os.Bundle;import android.os.Handler;
import android.os.Message;
import android.webkit.WebSettings;
import com.song.webviewtest.ScrollWebView.OnScrollChangeListener;
public class WebViewActivity extends Activity {
private String url = "http://192.168.30.199:8080/song/test.html";
//执行动作
public static final int SELECT_IMAGE = 0;
// 打开图库
public static final int OPEN_PAGE = 1;
// 跳转其他特定页面
public static final int CLOSE_OR_BACK = 2;
// 关闭或
private ScrollWebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webviw);
getIntentDatas();
initView();
}
private void getIntentDatas() {
// TODO Auto-generated method stub
url = getIntent().getStringExtra("url");
}
private void initView() {
mWebView = (ScrollWebView) findViewById(R.id.webview);
//或的WebView的Setting
WebSettings settings = mWebView.getSettings();
//设置支持js,看方法名字就知道啥意思
settings.setJavaScriptEnabled(true);
//mWebView.addJavascriptInterface(new JavaScriptInterface(handler), "Android");
mWebView.setOnScrollChangeListener(new OnScrollChangeListener() {
@Override
public void onScrollChanged(int l, int t, int oldl, int oldt) {
//滑动中
}
@Override
public void onPageTop(int l, int t, int oldl, int oldt) {
//滑动到顶部
}
@Override
public void onPageEnd(int l, int t, int oldl, int oldt) {
//滑动到底部
}
});
//加载网页路径
mWebView.loadUrl(url);
} }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式