【Android 开发教程】WebView

系统 1565 0

本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。

原书购买地址 http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/


WebView能够让你在activity中去内嵌一个web浏览器。如果你的应用需要内嵌一些web内容的话,这是非常有用的。

下面展示如何在activity中通过编码的方式去加载网页中的内容。

1. 新建一个工程,WebView。

2. main.xml中的代码。

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

	<WebView android:id="@+id/webview1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content" />

</LinearLayout>
  
3. WebViewActivity.java中的代码。

    public class WebViewActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        WebView wv = (WebView) findViewById(R.id.webview1);
                
        WebSettings webSettings = wv.getSettings();
        webSettings.setBuiltInZoomControls(true);
        
        wv.loadUrl(
            "http://chart.apis.google.com/chart" +
            "?chs=300x225" +
            "&cht=v" +
            "&chco=FF6342,ADDE63,63C6DE" +
            "&chd=t:100,80,60,30,30,30,10" +
            "&chdl=A|B|C");

}
  
4. 在AndroidManifest.xml中添加访问网络的权限。

    <uses-permission android:name="android.permission.INTERNET"/>
  
5. 按F11在模拟器上面调试。

【Android 开发教程】WebView


想要使用WebView去加载一个网页的话,就需要使用loadUrl()方法,并传入URL参数,就象这样:

    wv.loadUrl(
            "http://chart.apis.google.com/chart" +
            "?chs=300x225" +
            "&cht=v" +
            "&chco=FF6342,ADDE63,63C6DE" +
            "&chd=t:100,80,60,30,30,30,10" +
            "&chdl=A|B|C");
  
如果想要显示内置的放大或缩小控件,你需要从WebView中获取WebSettings属性对象,然后调用setBuildInZoomControls()方法:

            WebSettings webSettings = wv.getSettings();
        webSettings.setBuiltInZoomControls(true);
  
【Android 开发教程】WebView


有的时候当你加载一个网页,这个网页会指向www.google.com,WebView将会去调用设备的Browser浏览器去加载所指向的网址。注意下图中,屏幕上方的URL条,此时已经调用了本地的Browser浏览器应用。

【Android 开发教程】WebView

如果想阻止调用系统本身的浏览器,需要去实现WebViewClient类,然后重写shouldOverrideUrlLoading()方法。下面是例子:

    public class WebViewActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        WebView wv = (WebView) findViewById(R.id.webview1);
                
        WebSettings webSettings = wv.getSettings();
        webSettings.setBuiltInZoomControls(true);

        wv.setWebViewClient(new Callback());
        wv.loadUrl("http://www.wrox.com");

    }
    
    private class Callback extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return(false);
        }
    }

}
  
【Android 开发教程】WebView

这一次,就直接在WebView中加载指定的网址了。


另外,也可以动态地去实现一个HTML字符串,然后把它载入到WebView中,这要使用loadDataWithBaseURL()方法:

    		WebView wv = (WebView) findViewById(R.id.webview1);
        final String mimeType = "text/html";
        final String encoding = "UTF-8";
        String html = "<H1>A simple HTML page</H1><body>" +
            "<p>The quick brown fox jumps over the lazy dog</p></body>";
        wv.loadDataWithBaseURL("", html, mimeType, encoding, "");
  
【Android 开发教程】WebView


同样的,如果在assets文件夹下面有一个HTML文件,也可以使用loadUrl()方法去把它加载到WebView中:

            WebView wv = (WebView) findViewById(R.id.webview1);
        wv.loadUrl("file:///android_asset/Index.html");
  
【Android 开发教程】WebView

加载html文件后的WebView:

【Android 开发教程】WebView





【Android 开发教程】WebView


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论