Android webview使用详解
2016-10-31 17:01
375 查看
1.概览:
Android WebView在Android平台上是一个特殊的View, 他能用来显示网页,这个类可以被用来在你的app中仅仅显示一张在线的网页,还可以用来开发浏览器。WebView内部实现是采用渲染引擎来展示view的内容,提供网页前进后退,网页放大,缩小,搜索,前端开发者可以使用web inspector(Android 4.4系统支持,4.4一下可以采用http://developer.android.com/guide/webapps/debugging.html)调试HTML,CSS,JavaScript等等功能。在Android 4.3系统及其一下WebView内部采用Webkit渲染引擎,在Android 4.4采用chromium 渲染引擎来渲染View的内容。
2.WebView基本使用方法使用方法
(1).首先对Webview实例化:
(2)在xml中配置WebView
(3)你需要在需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
(4)加上你需要访问的链接 :
3.WebView常用属性
4.JS交互的方法
5.缓存五种方式
好了,今天就说这么多。如有不明白的地方或者有好的建议 欢迎加QQ;2585760090
Android WebView在Android平台上是一个特殊的View, 他能用来显示网页,这个类可以被用来在你的app中仅仅显示一张在线的网页,还可以用来开发浏览器。WebView内部实现是采用渲染引擎来展示view的内容,提供网页前进后退,网页放大,缩小,搜索,前端开发者可以使用web inspector(Android 4.4系统支持,4.4一下可以采用http://developer.android.com/guide/webapps/debugging.html)调试HTML,CSS,JavaScript等等功能。在Android 4.3系统及其一下WebView内部采用Webkit渲染引擎,在Android 4.4采用chromium 渲染引擎来渲染View的内容。
2.WebView基本使用方法使用方法
(1).首先对Webview实例化:
WebView webview = new WebView(this); 4000 setContentView(webview);
(2)在xml中配置WebView
<WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"> </WebView>
(3)你需要在需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET" />
(4)加上你需要访问的链接 :
webview.loadUrl("http://www.baidu.com/");
3.WebView常用属性
public void initview(){ webView = (WebView) findViewById(R.id.webview); if(Build.VERSION.SDK_INT >= 19) { webView.getSettings().setLoadsImagesAutomatically(true); } else { webView.getSettings().setLoadsImagesAutomatically(false); } webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); // 启用支持javascript webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDatabaseEnabled(true); webView.getSettings().setAppCacheEnabled(true); //支持缩放 webView.getSettings().setSupportZoom(true); //启用数据库 webView.getSettings().setDatabaseEnabled(true); //设置定位的数据库路径 String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath(); webView.getSettings().setGeolocationDatabasePath(dir); //启用地理定位 webView.getSettings().setGeolocationEnabled(true); //编码格式 webView.getSettings().setDefaultTextEncodingName("utf-8"); // 开启 DOM storage API 功能 webView.getSettings().setDomStorageEnabled(true); //调用引用js交互方法 webView.addJavascriptInterface(new javascriptobject(), "myObj"); webView.setWebViewClient(new WebViewClient() { // 点击超链接的时候重新在原来进程上加载URL @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } // webview加载完成 @Override public void onPageFinished(WebView view, String url) { progressBar.setVisibility(View.GONE); // progressBar.setVisibility(View.VISIBLE); } //得到正在加载的页面的title: @Override public void onReceivedTitle(WebView view, String title) { titleview.setText(title);//a textview } //错误页面加载的方法 @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { webView.loadUrl("file:///android_asset/unnetwork.html"); super.onReceivedError(view, errorCode, description, failingUrl); } }); //定位权限 webView.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedIcon(WebView view, Bitmap icon) { super.onReceivedIcon(view, icon); } @Override public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) { callback.invoke(origin, true, false); super.onGeolocationPermissionsShowPrompt(origin, callback); } }); webView.loadUrl(url); ) //设置回退 //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); //goBack()表示返回WebView的上一页面 return true; } return false; }
4.JS交互的方法
/* * js交互方法� * */ public class javascriptobject { @JavascriptInterface public void fun1FromAndroid(String s) { mhandler.sendEmptyMessage(0); } }
5.缓存五种方式
LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据 LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。 LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式 LOAD_NO_CACHE: 不使用缓存,只从网络获取数据. LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。 如:www.taobao.com的cache-control为no-cache,在模式LOAD_DEFAULT下,无论如何都会从网络上取数据,如果没有网络,就会出现错误页面;在LOAD_CACHE_ELSE_NETWORK模式下,无论是否有网络,只要本地有缓存,都使用缓存。本地没有缓存时才从网络上获取。 www.360.com.cn的cache-control为max-age=60,在两种模式下都使用本地缓存数据。
好了,今天就说这么多。如有不明白的地方或者有好的建议 欢迎加QQ;2585760090
相关文章推荐
- Android——WebView组件的使用详解
- Android学习 - WebView组件的使用详解
- Android webview使用详解
- Android webview使用详解
- Android开发_WebView组件使用详解_LoadUrl直接显示网页内容
- Android——WebView组件的使用详解
- Android开发之WebView组件的使用详解
- Android webview使用详解
- Android webview使用详解
- Android WebView属性使用详解
- Android webview使用详解
- Android webview使用详解
- Android webview使用详解
- Android开发之WebView组件的使用详解
- Android webview使用详解
- Android之PullToRefresh(ListView 、GridView 、WebView)使用详解和总结
- Android学习指南之二十九:WebView使用详解
- Android webview使用详解
- 基于Android中Webview使用自定义的javascript进行回调的问题详解
- 把网页加载进安卓显示,及其android系统webview控件使用详解