Android: WebView知识总结

来源:互联网 发布:定义数组长度的代码 编辑:程序博客网 时间:2024/06/01 10:24

点击打开链接Android App 分为Hybrid App(混合模式应用)、web-app(网页应用)、Native-App(原生应用) 

那么:WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用,也就是Web-app :

webview主要有两个方法:setWebChromeClient 和 setWebClient

setWebClient:主要处理解析,渲染网页等浏览器做的事情

setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 

WebViewClient就是帮助WebView处理各种通知、请求事件的。

 

在AndroidManifest.xml设置访问网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

控件:

<WebView     android:layout_width="match_parent"    android:layout_height="match_parent"    android:id="@+id/webView"    />

 

用途一:加载本地/Web资源(基本用法)

example.html 存放在assets文件夹内

调用WebView的loadUrl()方法,

加载本地资源

webView = (WebView) findViewById(R.id.webView);webView.loadUrl("file:///android_asset/example.html");

加载web资源:

webView = (WebView) findViewById(R.id.webView);webView.loadUrl("http://baidu.com");

用途二:加载Javascript脚本

如果访问的页面中有Javascript,则webview必须设置支持Javascript

//启用支持javascriptWebSettings settings = webView.getSettings();settings.setJavaScriptEnabled(true);

用途三:按返回退出

如果希望浏览的网页后退而不是退出浏览器,需要WebView覆盖URL加载,让它自动生成历史访问记录,那样就可以通过前进或后退访问已访问过的站点。

复制代码
//改写物理按键——返回的逻辑    @Override    publicboolean onKeyDown(int keyCode, KeyEvent event) {        // TODO Auto-generated method stubif(keyCode==KeyEvent.KEYCODE_BACK)        {            if(webView.canGoBack())            {                webView.goBack();//返回上一页面returntrue;            }            else            {                System.exit(0);//退出程序            }        }        returnsuper.onKeyDown(keyCode, event);    }

用途四:缓存的使用

优先使用缓存

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

不使用缓存:

webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

用途五:缩放问题

1、webview支持页面缩放
//缩放开关
webView.getSettings().setSupportZoom(true);
设置此属性,仅支持双击缩放,不支持触摸缩放(android4.0)


// 设置是否可缩放
webView.getSettings().setBuiltInZoomControls(true);
如果设置了此属性,那么webView.getSettings().setSupportZoom(true);也默认设置为true


2、无限缩放
无限缩放,就需要使用大视图模式,如下:
webView.getSettings().setUseWideViewPort(true);设置此属性,可任意比例缩放。
注:1、初始缩放值可这样设置:webView.setInitialScale(initalValue);
      2、缩放后,要使内容适配屏幕,不超出屏幕外显示,实现换行。这方面效果应该由html控制。
   如<p style="word-break:break-all">test</p>实现自动换行


WebView 一些相关属性用法:

setPluginsEnabled(true) ;//支持插件
setUserWideViewPort(false) ;//将图片调整到适合webview的大小
setSupportZoom(true) ;//支持缩放
setLayoutAlgorithm(LayoutAlgrithm.SINGLE_COLUMN) ;//支持内容从新布局
supportMultipleWindows() ;//多窗口
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK) ;//关闭webview中缓存
setAllowFileAccess(true) ;//设置可以访问文件
setNeedInitialFocus(true) ;//当webview调用requestFocus时为webview设置节点
setjavaScriptCanOpenWindowsAutomatically(true) ;//支持通过JS打开新窗口
setLoadsImagesAutomatically(true) ;//支持自动加载图片
setBuiltInZoomControls(true);
//支持缩放
webView.setInitialScale(35);
//设置缩放比例
webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
//设置滚动条隐藏 
webView.getSettings().setGeolocationEnabled(true);
//启用地理定位
webView.getSettings().setRenderPriority(RenderPriority.HIGH);
//设置渲染优先级
String dir = "/sdcard/temp";//设置定位的数据库路径 
webView.getSettings().setGeolocationDatabasePath(dir);
这里是使用webview以及webview的相关设置,课根据实际情况进行设置.
WebViewClient的方法全解
doUpdateVisitedHistory(WebView view, String url ,boolean isReload)
更新历史记录
onFormResubmission(WebView view, Message dontResend, Message resend)
应用程序重新请求页面数据
onLoadResource(WebView view, String url)
好了,Webview 就介绍到这里!

1 0
原创粉丝点击