Android-WebView初体验

原创 2015年11月19日 23:19:19

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”);调用

想说的话

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

相关文章推荐

Android初体验

  • 2011年09月26日 17:26
  • 1.31MB
  • 下载

Android初体验

  • 2010年04月15日 18:24
  • 1.39MB
  • 下载

无源码,Robotium测试Android应用初体验

以前有自学过Robotium测试,觉得原理很简单,就是识别控件,调solo API模拟用户操作,写判断是否符合预期就行。但是那都是在有源码的基础上,没有源码只有apk,就会涉及到apk需要重签名,需要...

Android插件化开发之Atlas初体验

  • 2015年08月12日 16:27
  • 11.95MB
  • 下载

Android开发初体验之face++人脸识别加静默拍照

最近由于公司业务方面的需要,简单研究了一下人脸识别方面的问题,在这里分享一下最近使用的心得和一些技术要点,主要分为以下几个方面: 人脸识别的api接口提供商 本文使用api接口 相关文档的使用 静默拍...

Android开发学习之路--RxAndroid之初体验

学了一段时间android,看了部分的项目代码,然后想想老是学基础也够枯燥乏味的,那么就来学习学习新东西吧,相信很多学java的都听说过RxJava,那么android下也有RxAndroid。   ...

Android的编程初体验--布局管理器

抛弃XML布局文件,下面是通过代码控制UI界面的代码import android.R; import android.app.Activity; import android.os.Bundle; i...

Android Studio初体验坎坷路

对android开发感兴趣,那么好的一款IDE是必不可少的啦。 在接触Android Studio之前,在网上看了几篇文章,说Android Studio如何如何惊艳,于是没...
  • qkillq
  • qkillq
  • 2014年11月21日 00:37
  • 604

Android开发相关配置初体验

1 开发环境搭建 1.1 JDK 安装 如果有 java 开发基础,或者 java 开发环境,本小节(1.1)可略过。 在 oracle 官 网 上 下 载 Java Platform, Sta...

android桌面小组件(时钟)--widget初体验

android桌面小组件(时钟)--widget初体验 App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。你可以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android-WebView初体验
举报原因:
原因补充:

(最多只允许输入30个字)