关闭

Android-WebView初体验

标签: androidwebview
282人阅读 评论(0) 收藏 举报
分类:

WebView控件的使用记录

1、在布局中添加WebView控件

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

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

</LinearLayout>

2、添加权限

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

3、在Activity中设置控件

①加载HTML的字符串
- Activity代码

public class WebActivity extends Activity
{
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.web_layout);
        //获取控件
        webView = (WebView) findViewById(R.id.webView1);
        //加载html的字符串
        webView.loadData("<html><body>You scored <b>192</b> points.</body></html>", "text/html", null);
    }
}
  • 效果图
    加载HTML的字符串

②通过地址加载网页
- Activity代码

public class WebActivity extends Activity
{
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.web_layout);
        webView = (WebView) findViewById(R.id.webView1);
        //加载的资源
        webView.loadUrl("http://www.baidu.com");
        //设置网页和Webview一样宽
        WebSettings settings = webView.getSettings();
        settings.setLoadWithOverviewMode(true);
        settings.setUseWideViewPort(true);
        //启用支持javascript
        settings.setJavaScriptEnabled(true);
        //为让网页在WebView中打开,覆盖WebView默认使用第三方或系统默认浏览器打开网页
        webView.setWebViewClient(new WebViewClient()
        {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //true:控制在webview中打开
                //false:调用浏览器打开
                view.loadUrl(url);
                return true;
            }
            //当网页加载结束的时候调用
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);

            }
            //当网页加载开始的时候调用
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);

            }
        });
    }
}

③当点击物理返回键,不是退出程序而是返回上一页面时。需要覆写onKeyDown
- 代码如下

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if(keyCode == KeyEvent.KEYCODE_BACK)
        {
            //判断能否返回上一个页面
            if (webView.canGoBack())
            {
                webView.goBack();//返回上一页面
                return true;
            }
            else
            {
                finish();
            }
        }
        return super.onKeyDown(keyCode, event);
    }

⑤判断网页的加载过程

        webView.setWebChromeClient(new WebChromeClient()
        {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                Log.i("myout", "newProgress = " + newProgress);
            }
        });
  • 加载页面过程中log的打印情况(每次打开完成后最后都会打印出100,拿着个弄个进度条还不错)
11-19 14:52:55.696: I/myout(1904): newProgress = 10
11-19 14:52:55.832: I/myout(1904): newProgress = 14
11-19 14:52:55.836: I/myout(1904): newProgress = 18
11-19 14:52:55.836: I/myout(1904): newProgress = 20
11-19 14:52:55.836: I/myout(1904): newProgress = 28
11-19 14:52:55.844: I/myout(1904): newProgress = 34
11-19 14:52:55.844: I/myout(1904): newProgress = 40
11-19 14:52:55.844: I/myout(1904): newProgress = 44
11-19 14:52:55.844: I/myout(1904): newProgress = 46
11-19 14:52:55.928: I/myout(1904): newProgress = 81
11-19 14:52:56.024: I/myout(1904): newProgress = 89
11-19 14:52:56.120: I/myout(1904): newProgress = 100

我的感受

  • 居然又搞忘加权限了~~o(>_<)o ~~
  • 可以直接填入html的标签语言挺方便的
  • 可以放入离线的网页,放在项目asset文件夹中。例如我放了个baidu.html离线文件在asset根目录,然后就可以通过webView.loadUrl(“file:///android_asset/baidu.html”);调用

想说的话

  • 博客坚持写,不管怎样,今后学习了新的东西就在这里记录一下,以便今后回顾,也希望小小笔记能帮助你们
  • 如果内容有什么地方不对,望吐槽,希望大家能一起学习和成长
  • 来一句:可以批判代码,但不能进行人生攻击,有好的对待每一个程序员,但指出问题要犀利、一针见血。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13253次
    • 积分:403
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:0篇
    • 译文:0篇
    • 评论:7条
    文章分类
    文章存档
    最新评论