1、添加权限:AndroidManifest.xml中必须使用许可”android.permission.INTERNET”,否则会出Web page not available错误。
2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);
3、设置WebView基本信息:
如果访问的页面中有Javascript,则webview必须设置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
触摸焦点起作用
requestFocus();
取消滚动条
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4、设置WevView要显示的网页:
互联网用:webView.loadUrl(“http://www.google.com”);
本地文件用:webView.loadUrl(“file:///android_asset/XX.html”); 本地文件存放在:assets文件中
5、如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。
给WebView添加一个事件监听对象(WebViewClient)
并重写其中的一些方法
shouldOverrideUrlLoading:对网页中超链接按钮的响应。
当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
6、如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。
覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。
1
2
3
4
5
6
7
8
|
public boolean onKeyDown( int keyCoder,KeyEvent event){ if (webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){ webview.goBack(); //goBack()表示返回webView的上一页面 return true ; } return false ; } |
Android监听WebView滑动到底部
MainActivity如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
package cn.testwebview; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import cn.testwebview.TestWebView.ScrollInterface; /** * Demo描述: * 监听WebView滑动到底部 * * 参考资料: * 1 http://blog.csdn.net/conant1989/article/details/8124582 * Thank you very much */ public class MainActivity extends Activity { private TestWebView mTestWebView; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); initWebView(); } //设置WebView private void initWebView() { mTestWebView = (TestWebView) findViewById(R.id.webView); mTestWebView.setVerticalScrollBarEnabled( true ); mTestWebView.setHorizontalScrollBarEnabled( false ); mTestWebView.getSettings().setSupportZoom( true ); mTestWebView.getSettings().setBuiltInZoomControls( true ); mTestWebView.getSettings().setJavaScriptEnabled( true ); mTestWebView.getSettings().setDomStorageEnabled( true ); mTestWebView.getSettings().setPluginsEnabled( true ); mTestWebView.requestFocus(); mTestWebView.getSettings().setUseWideViewPort( true ); mTestWebView.getSettings().setLoadWithOverviewMode( true ); mTestWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); mTestWebView.loadUrl( "http://www.ifeng.com" ); mTestWebView.setWebViewClient( new TestWebViewClient()); webViewScroolChangeListener(); } //核心代码 private void webViewScroolChangeListener() { mTestWebView.setOnCustomScroolChangeListener( new ScrollInterface() { @Override public void onSChanged( int l, int t, int oldl, int oldt) { //WebView的总高度 float webViewContentHeight=mTestWebView.getContentHeight() * mTestWebView.getScale(); //WebView的现高度 float webViewCurrentHeight=(mTestWebView.getHeight() + mTestWebView.getScrollY()); System.out.println( "webViewContentHeight=" +webViewContentHeight); System.out.println( "webViewCurrentHeight=" +webViewCurrentHeight); if ((webViewContentHeight-webViewCurrentHeight) == 0 ) { System.out.println( "WebView滑动到了底端" ); } } }); } private class TestWebViewClient extends WebViewClient{ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super .onPageStarted(view, url, favicon); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true ; } @Override public void onPageFinished(WebView view, String url) { super .onPageFinished(view, url); } @Override public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) { super .onReceivedError(view, errorCode, description, failingUrl); } } } |
TestWebView如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
package cn.testwebview; import android.content.Context; import android.util.AttributeSet; import android.webkit.WebView; public class TestWebView extends WebView { public ScrollInterface mScrollInterface; public TestWebView(Context context) { super (context); } public TestWebView(Context context, AttributeSet attrs, int defStyle) { super (context, attrs, defStyle); } public TestWebView(Context context, AttributeSet attrs) { super (context, attrs); } @Override protected void onScrollChanged( int l, int t, int oldl, int oldt) { super .onScrollChanged(l, t, oldl, oldt); mScrollInterface.onSChanged(l, t, oldl, oldt); } public void setOnCustomScroolChangeListener(ScrollInterface scrollInterface) { this .mScrollInterface = scrollInterface; } public interface ScrollInterface { public void onSChanged( int l, int t, int oldl, int oldt); } } |
main.xml如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent" > < cn.testwebview.TestWebView android:id = "@+id/webView" android:layout_width = "fill_parent" android:layout_height = "fill_parent" android:text = "@string/hello_world" android:layout_centerInParent = "true" /> </ RelativeLayout > |