[Android基础] WebView

[ Demo下载 ]

资源

  1. Web Apps
  2. WebView
  3. Android4.4 webview实现分析
  4. Android WebView使用深入浅出
  5. 深入讲解WebView(上) - 互调,缓存,异常处理等
  6. 深入讲解WebView(下) - session,cookie等
  7. Android WebView Memory Leak WebView内存泄漏 ==! 这个我用leakcanary没检测出来
  8. PHP、Android、iOS 的恩恩怨怨

从Android 4.4(KitKat)开始,WebView组件是基于开源的Chromium项目.包含V8 js引擎并支持新的web标准,新webView也共享Chrome for Android的渲染引擎,另外,从5.0(Lollipop)开始,WebView被移到独立的apk中,因此它可以进行单独更新,可以从 “settings – Apps – Android System WebView” 中查看其版本;

用途

默认情况下,webView不启用js交互,并会忽略页面错误,适用于展示静态信息;
也可以启用js功能,实现与用户的交互

辅助类

  • WebChromeClient 当可能影响webView UI的操作发生时会调用到该类,比如进度变化或者js提示框…
  • WebViewClient 当可能影响内容渲染的操作发生时会调用到该类,比如错误等…另外,可以通过重写 shouldOverrideUrlLoading() 来中断url的加载;
  • WebSettings 功能设置,比如可否允许js代码;

基本操作

  • 访问网络的话需要添加网络权限
<uses-permission android:name="android.permission.INTERNET" />
  • 启用js功能
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

设置返回键回退功能

mWv.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // 需要添加 mWv.canGoBack(),不然当返回到初始页面时,可能无法继续通过返回键关闭页面
                if (keyCode == KeyEvent.KEYCODE_BACK && mWv.canGoBack()) {
                    mWv.goBack();
                    return true;
                }
                return false;
            }
        });

也可以通过设置所在Activity的onBackPressed()方法来支持webView回退:

@Override
public void onBackPressed() {
    if (mWv.canGoBack()) {
        mWv.goBack();
    } else {
        super.onBackPressed();
    }
}

设置标题

mWv.setWebChromeClient(new WebChromeClient(){
    @Override
    public void onReceivedTitle(WebView view, String title) {
        // title 是获取到的网页title,可以将之设置为webView所在页面的标题
        MainActivity.this.setTitle(title);
    }
)};

设置加载进度

@Override
protected void onCreate(Bundle savedInstanceState) {
    //requestWindowFeature(Window.FEATURE_PROGRESS);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
    ......

    mProgressDlg = new ProgressDialog(this);
    mProgressDlg.setMessage("loading...");

    mWv.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            //更新进度条示数

            //这种方式我没看到效果...
            //MainActivity.this.setProgress(newProgress);

            //使用控件ProgressDialog来显示进度
            //但记得这种方式需要在error发生时也进行取消
            if (newProgress <= 90) {
                mProgressDlg.setProgress(newProgress);
            } else {
                mProgressDlg.dismiss();
            }
        }
    });

    mWv
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android System WebViewAndroid操作系统中的一个组件,它是一个基于Chromium的浏览器引擎,用于在应用程序中显示网页内容。它可以让应用程序内部显示网页,而不需要打开外部浏览器。Android System WebView也是许多应用程序的基础,如社交媒体应用程序、电子邮件应用程序等。它可以提供更好的用户体验和更高的性能。 ### 回答2: Android System WebView(本文简称 ASW)是谷歌推出的用于 Android 系统上展示网页内容的一个组件。ASW 的作用是允许在 Android 应用中内嵌显示网页内容,避免用户需要切换到浏览器应用来查看网页。 ASW 是一个基于 Chromium 内核的轻量级浏览器,它提供了与常见浏览器类似的功能,如加载网页、处理 JavaScript 和 HTML5、显示图片和视频等。与桌面版 Chrome 浏览器相比,ASW 更加轻巧,占用空间更小,且无需单独安装。 开发者可以通过 ASW API 调用 System WebView 来展示网页内容,这使得应用程序的用户界面更加统一,同时保持了与网页互联网的紧密联系。ASW 在 Android 5.0 版本之后成为了 Android 系统的一部分,同时也在 Google Play 商店中提供更新。 ASW 为 Android 应用开发者提供了更丰富的网页展示功能,通过以 WebView 作为 View 控件的形式,可以轻易地将网页内容嵌入应用中,并直接在应用中展示网页内容。这样,应用就可以像桌面版浏览器一样显示网页,并允许用户直接在应用中浏览网页,而无需打开独立的浏览器应用程序。 ASW 也提供了更多的设置选项,如缓存、JavaScript 支持、JavaScript 弹窗屏蔽等。开发者可以根据应用程序的需要来定制 ASW 的参数,以达到更好的用户体验和性能。 综上所述,Android System WebViewAndroid 应用程序提供了便捷、优质的网页展示功能,可帮助开发者提供更好的用户体验,促进应用程序的更好发展。 ### 回答3: Android System WebView是Google Android系统中的一个组件,用于显示网页内容以及与应用程序之间进行数据通信。它是一个单独的浏览器引擎,可以被应用程序直接调用,用于在应用程序中显示和管理网页。 Android System WebView是一个用于在安卓设备上显示网页的核心系统应用程序。与普通的移动浏览器不同的是,它并不能单独使用,而是作为操作系统中的一个组件,用于被其他应用调用。如果你在常用的社交应用或其他的应用中打开网页,那么背后一定是WebView在这个过程中扮演了一个重要的角色。 Android System WebView的作用不仅仅限于在操作系统层的网页呈现。它还有一些其他的特殊作用,比如支持HTML5、CSS3、JS、Canvas、Web Workers、WebSockets、XMLHttpRequest以及Geolocation等Web前端技术,给用户带来更为流畅的网页浏览体验。 目前,在许多老版本的安卓系统中,Android System WebView将会自动更新版本以保持与最新的Chrome浏览器技术保持一致。因此,无论你使用的是哪个浏览器,它的渲染引擎都会依赖于Android System WebView的技术支持。如果你的WebView版本过旧,就很有可能导致一些网页的无法显示以及用户体验的降低。 总的来说,Android System WebView是一个非常重要的安卓系统组件,它在提高用户体验和网页呈现方面起着至关重要的作用。无论是作为开发人员还是普通用户,都应该对它有足够的了解和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值