码迷,mamicode.com
首页 > Web开发 > 详细

WebView使用大全

时间:2015-11-13 11:45:23      阅读:305      评论:0      收藏:0      [点我收藏+]

标签:android   webview   控件   使用详解   

转载请注明转自:noyet12的博客
博客原址:http://blog.csdn.net/u012975705/article/details/49814587

简单介绍

WebView是Android中能加载显示网页的控件,可以将其视为一个浏览器。在使用WebView之前必须在AndroidManifest.xml文件中添加权限:

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

否则会出现Web page not available错误。

WebView的实现方式

在Android中WebView有两种实现方式:一是在要Activity中实例化WebView组件

WebView webView = new WebView(this);

二是在布局文件中声明WebView,然后在Activity中实例化WebView

<WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"/>
webview = (WebView) findViewById(R.id.webview);  

WebView基本设置的方法

    /** 支持javascript */
    webview.getSettings().setJavaScriptEnabled(true);
    /** 设置可以支持缩放 */
    webview.getSettings().setSupportZoom(true);
    /** 设置出现缩放工具 */
    webview.getSettings().setBuiltInZoomControls(true);
    /** 扩大比例的缩放 */
    webview.getSettings().setUseWideViewPort(true);
    /** 清除浏览器缓存 */
    webview.clearCache(true);
    /** 自适应屏幕 */
    webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
    /** 优先使用缓存 *、
    webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    /** 不使用缓存: */
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

WebView数据加载方法详解

(1)loadUrl()
直接加载网页。
使用方式:

    //WebView加载web资源
    webView.loadUrl("http://baidu.com");
    //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
    webView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            /** 返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器 */
            view.loadUrl(url);
            return true;
        }
    });
    /** 判断页面加载过程 */
    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            if (newProgress == 100) {
                /** 网页加载完成 */
            } else {
                /** 加载中 */
            }
        }
    });

(2)loadData
用来装载URI格式的数据,但不能加载网络内容。
使用方式:

webview.loadData(content, "text/html", "utf-8")

在使用loadData方法加载数据的时候,有可能会出现乱码,这时候可以使用loadDataWithBaseURL方法来加载数据,能过避免中文乱码

(3)loadDataWithBaseURL

loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)

在使用loadDataWithBaseURL时,需要注意的就是 baseUr:虽然API上写的是要传一个Url,但我在用时,发现传一个Url并不可以,我发现这个就是一个标志位,用来标志当前页面的Key值的,而historyUrl就是一个value值,在加载时,它会把baseUrl和historyUrl传到List列表中,当作历史记录来使用,当前进和后退时,它会通过baseUrl来寻找historyUrl的路径来加载historyUrl路径来加载历史界面,需要注意的就是history所指向的必须是一个页面,并且页面存在于SD卡中或程序中(assets),loadDataWithBaseURL,它本身并不会向历史记录中存储数据,要想实现历史记录,需要我们自己来实现。
一般使用方式:

    webview.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);

版权声明:本文为博主原创文章,转载请注明出处。博客首页:http://blog.csdn.net/u012975705。订阅:http://blog.csdn.net/rss.html?type=column&column=noyet12

WebView使用大全

标签:android   webview   控件   使用详解   

原文地址:http://blog.csdn.net/u012975705/article/details/49814587

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!