Android监听WebView滑动到底部

http://www.open-open.com/lib/view/open1379383341959.html

MainActivity如下:

01 package cn.testwebview;
02 import android.app.Activity;
03 import android.graphics.Bitmap;
04 import android.os.Bundle;
05 import android.webkit.WebSettings;
06 import android.webkit.WebView;
07 import android.webkit.WebViewClient;
08 import cn.testwebview.TestWebView.ScrollInterface;
09 /**
10  * Demo描述:
11  * 监听WebView滑动到底部
12  *
13  * 参考资料:
14  * 1 http://blog.csdn.net/conant1989/article/details/8124582
15  *   Thank you very much
16  */
17 public class MainActivity extends Activity {
18     private TestWebView mTestWebView;
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.main);
23         initWebView();
24     }
25      
26      
27      
28     //设置WebView
29     private void initWebView() {
30         mTestWebView = (TestWebView) findViewById(R.id.webView);
31         mTestWebView.setVerticalScrollBarEnabled(true);
32         mTestWebView.setHorizontalScrollBarEnabled(false);
33         mTestWebView.getSettings().setSupportZoom(true);
34         mTestWebView.getSettings().setBuiltInZoomControls(true);
35         mTestWebView.getSettings().setJavaScriptEnabled(true);
36          
37         mTestWebView.getSettings().setDomStorageEnabled(true);
38         mTestWebView.getSettings().setPluginsEnabled(true);
39         mTestWebView.requestFocus();
40          
41         mTestWebView.getSettings().setUseWideViewPort(true);
42         mTestWebView.getSettings().setLoadWithOverviewMode(true);
43         mTestWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
44          
45         mTestWebView.loadUrl("http://www.ifeng.com");
46         mTestWebView.setWebViewClient(new TestWebViewClient());
47         webViewScroolChangeListener();
48          
49     }
50      
51     //核心代码
52     private void webViewScroolChangeListener() {
53         mTestWebView.setOnCustomScroolChangeListener(new ScrollInterface() {
54             @Override
55             public void onSChanged(int l, int t, int oldl, int oldt) {
56                 //WebView的总高度
57                 float webViewContentHeight=mTestWebView.getContentHeight() * mTestWebView.getScale();
58                 //WebView的现高度
59                 float webViewCurrentHeight=(mTestWebView.getHeight() + mTestWebView.getScrollY());
60                 System.out.println("webViewContentHeight="+webViewContentHeight);
61                 System.out.println("webViewCurrentHeight="+webViewCurrentHeight);
62                 if ((webViewContentHeight-webViewCurrentHeight) == 0) {
63                     System.out.println("WebView滑动到了底端");
64                 }
65             }
66         });
67     }
68      
69  
70     private class TestWebViewClient extends WebViewClient{
71         @Override
72         public void onPageStarted(WebView view, String url, Bitmap favicon) {
73             super.onPageStarted(view, url, favicon);
74         }
75         @Override
76         public boolean shouldOverrideUrlLoading(WebView view, String url) {
77             view.loadUrl(url);
78             return true;
79         }
80         @Override
81         public void onPageFinished(WebView view, String url) {
82             super.onPageFinished(view, url);
83              
84         }
85         @Override
86         public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) {
87             super.onReceivedError(view, errorCode, description, failingUrl);
88         }
89     }
90     
91 }


TestWebView如下:

01 package cn.testwebview;
02  
03 import android.content.Context;
04 import android.util.AttributeSet;
05 import android.webkit.WebView;
06  
07 public class TestWebView extends WebView {
08     public ScrollInterface mScrollInterface;
09  
10     public TestWebView(Context context) {
11         super(context);
12     }
13  
14     public TestWebView(Context context, AttributeSet attrs, int defStyle) {
15         super(context, attrs, defStyle);
16     }
17  
18     public TestWebView(Context context, AttributeSet attrs) {
19         super(context, attrs);
20     }
21  
22     @Override
23     protected void onScrollChanged(int l, int t, int oldl, int oldt) {
24  
25         super.onScrollChanged(l, t, oldl, oldt);
26  
27         mScrollInterface.onSChanged(l, t, oldl, oldt);
28  
29     }
30  
31     public void setOnCustomScroolChangeListener(ScrollInterface scrollInterface) {
32  
33         this.mScrollInterface = scrollInterface;
34  
35     }
36  
37     public interface ScrollInterface {
38  
39         public void onSChanged(int l, int t, int oldl, int oldt);
40  
41     }
42  
43 }


 

main.xml如下:

01 <RelativeLayout
02     xmlns:android="http://schemas.android.com/apk/res/android"
03     xmlns:tools="http://schemas.android.com/tools"
04     android:layout_width="match_parent"
05     android:layout_height="match_parent"
06   >
07  
08     <cn.testwebview.TestWebView
09         android:id="@+id/webView"
10         android:layout_width="fill_parent"
11         android:layout_height="fill_parent"
12         android:text="@string/hello_world"
13         android:layout_centerInParent="true"
14     />
15  
16 </RelativeLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值