首页 > 代码库 > Android WebView
Android WebView
- 描述
- WebView是Android系统中内置了的一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。
- 用途
- 应用内嵌浏览器,并显示网页内容。
- android 自带的 textview 不支持长按文本复制,webview 自带长按复制文本内容的功能。
- 应用在内容显示上,对动画的丰富性要求较高,可以使用 webview 加载支持javascript的网页显示动画内容。
- 所需应用权限
- AndroidManifest.xml 需要添加 "android.permission.INTERNET"权限。
- AndroidManifest.xml 需要添加 "android.permission.INTERNET"权限。
- 开发相关
- XML文件中显示webview组件。
1 <WebView2 android:id="@+id/webView"3 android:layout_width="match_parent"4 android:layout_height="match_parent"/>
- 加载内容
1 webView.loadUrl(url);2 webView.loadUrl(url, extraHeaders);3 webView.loadData(data, mimeType, encoding);4 webView.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
- 设置属性
1 WebSettings setting = webView.getSettings();2 setting.setSupportZoom(true);//支持缩放3 setting.setTextSize(TextSize);//页面中字体大小 --TextSize.LARGER4 setting.setJavaScriptEnabled(true);//对javascript的支持
- webview显示网页的前进与后退
1 webView.canGoBack(); 2 webView.goBack(); //后退 3 webView.canGoForward(); 4 webView.goForward(); //前进 5 6 //ps:使用webview浏览网页,点击系统“Back”键会finish()activity,因此 7 //需要拦截返回键的监听 8 public boolean onKeyDown(int keyCode, KeyEvent event) { 9 if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 10 webView.goBack(); 11 return true; 12 } 13 return super.onKeyDown(keyCode, event); 14 }
- 当网页中有链接时,如果希望不点击链接继续在当前webview里面显示内容,而不是打开系统浏览器或者第三方浏览器,需要设置WebViewClient属性。
1 webView.setWebViewClient(new WebViewClient(){ 2 public boolean shouldOverrideUrlLoading(WebView view, String url) { 3 view.loadUrl(url); 4 return true; 5 } 6 });
- 监听页面中javascript中的简单事件
1 //demo.html 2 <html> 3 <mce:script language="javascript"><!-- 4 5 function wave() { 6 document.getElementById("droid").src="http://www.mamicode.com/android_waving.png"; 7 } 8 9 </mce:script> 10 <body> 11 <a onClick="window.demo.clickOnAndroid()"> 12 <img id="droid" src="http://www.mamicode.com/android_normal.png" mce_src="http://www.mamicode.com/android_normal.png"/><br> 13 Click me! 14 </a> 15 </body> 16 </html> 17 18 //android代码19 public class WebViewDemo extends Activity { 20 private WebView mWebView; 21 private Handler mHandler = new Handler(); 22 23 public void onCreate(Bundle icicle) { 24 super.onCreate(icicle); 25 setContentView(R.layout.webviewdemo); 26 mWebView = (WebView) findViewById(R.id.webview); 27 WebSettings webSettings = mWebView.getSettings(); 28 webSettings.setJavaScriptEnabled(true); 29 mWebView.addJavascriptInterface(new Object() { 30 public void clickOnAndroid() {//html中的方法 31 mHandler.post(new Runnable() { 32 public void run() { 33 mWebView.loadUrl("javascript:wave()"); 34 } 35 }); 36 } 37 }, "demo"); 38 mWebView.loadUrl("file:///android_asset/demo.html"); 39 } 40 }
1、为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"
2、addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的。 - 对html5视频播放及全屏的支持,需要自定义WebChromeClient,重写onShowCustomView(),和onHideCustomView()方法。
- XML文件中显示webview组件。
Android WebView
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。