`
XiangdongLee
  • 浏览: 90777 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

【攻克Android (43)】WebView (网络视图)

阅读更多
本文围绕以下两个部分展开:

一、WebView
WebView案例






一、WebView

        1. 概念

        WebView能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。


        2. 实现方法

        (1)在AndroidManifest.xml文件中添加允许此app访问网络的权限,否则出现Web page not available错误。


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


        (2.1)在activity中先声明WebView

private WebView webView;


        然后再在onCreate()方法中加载布局文件。

setContentView(R.layout.activity_web_view);


        (2.2)在activity中先声明WebView

private WebView webView;


        然后再在onCreate()方法中实例化WebView组件:

webView = new WebView(this);


        当(3)完成后,再在onCreate()方法中调用Activity的setContentView( )方法来显示网页视图:

setContentView(webView);



        (3)调用WebView的loadUrl( )方法,设置WebView要显示的网页。


        (4)为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置  WebView视图。


        (5)用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法。如果不做任何处理,点击系统回退键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面。




WebView案例



        1. 在AndroidManifest.xml文件中添加允许此app访问网络的权限。


        2. 用到ButterKnife,因此依然要导包。




        3. strings.xml

<resources>
    <string name="app_name">WebViewTest</string>

    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="title_activity_web_view">WebViewActivity</string>

    <string name="btn_web_view">Web View</string>
</resources>



        4. activity_main.xml。写一个按钮。



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnWebView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_web_view" />

</LinearLayout>



        5. MainActivity。按钮点击事件。

package com.android.webviewtest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ButterKnife.inject(this);
    }

    @OnClick(R.id.btnWebView)
    public void webViewClick() {
        Intent intent = new Intent(this, WebViewActivity.class);
        startActivity(intent);
    }
}



        6. 创建WebViewActivity和activity_web_view.xml。


        7. activity_web_view.xml。写一个WebView控件,并把边距去掉。



<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.android.webviewtest.WebViewActivity">

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

</RelativeLayout>



        8. WebViewActivity。

package com.android.webviewtest;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class WebViewActivity extends Activity {
    // (2)
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);

        // (2)
        webView = (WebView) findViewById(R.id.webView);

        // 设置使页面可以执行JS脚本
        webView.getSettings().setJavaScriptEnabled(true);
        // 设置使页面支持缩放
        webView.getSettings().setBuiltInZoomControls(true);
        // 设置默认的字体大小
        // webView.getSettings().setDefaultFontSize(5);

        // (3)加载给定的Url
        webView.loadUrl("http://192.168.1.124:8090/androidcloud/index.jsp");
        // (4)
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // 使用当前 WebView 处理跳转
                view.loadUrl(url);
                // true 表示此事件在此处被处理,不需要再广播
                return true;
            }

            @Override
            public void onReceivedError(WebView view, int errorCode,
                                        String description, String failingUrl) {
                // 转向错误时处理:
                // 给出一个 Toast提示
                Toast.makeText(getApplicationContext(),
                        "Oh no!" + description, Toast.LENGTH_SHORT).show();
            }
        });
    }

    /**
     * (5)
     * 默认点回退键,会返回到前面的 Activity 。
     * 因此,需监听按钮操作,使回退在 WebView 内发生
     *
     * @param keyCode
     * @param event
     * @return
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            webView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}



        效果如下:










0
1
分享到:
评论

相关推荐

    com.google.android.webview.apk

    webview全称叫做Android System WebView,它是Android生态系统的重要组成部分,也是Chrome浏览器的内核。可以让你的手机变得瞬间畅通,它会及时优化网页相关数据,有着接入式的操作体验数据,各种类型的应用程序可...

    Android System Webview 90.0.4430.82

    这是AOSP Webview, 包名com.android.webview, 不带google的 带google包名的可以下载 google system webview覆盖安装,可以略过 此文件包含 arm和arm64的webview这是AOSP Webview, 包名com.android.webview, 不带...

    com.google.android.webview

    android system webview 适配系统&gt;=5.0

    android的webView的登录实例

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。本实例将详述如何使用Android Studio 3.1.2版本,通过WebView来创建一个简单的登录界面,该界面使用本地HTML页面进行...

    android webview播放网页视频

    在这里,`webViewContainer`是包含Webview的父视图,我们需要在布局文件中设置好它,以便在全屏模式下添加视频视图。 然后,我们需要在Activity的onResume()和onPause()方法中分别调用Webview的resumeTimers()和...

    com.android.webview-95.0.4638.50

    2. 安全性:由于WebView会执行来自网络的代码,所以必须启用安全套接层(SSL)以确保数据传输的安全,并通过`WebViewClient`和`WebChromeClient`监听并处理各种网络事件和用户交互。 3. 性能优化:减少内存占用和提高...

    Android下WebView中调用系统相机拍照范例

    `INTERNET`权限允许WebView加载网络资源,`CAMERA`权限允许应用使用设备的摄像头,而`WRITE_EXTERNAL_STORAGE`权限则是为了在SD卡上保存拍摄的照片。 接下来,我们要创建一个自定义的WebView类,扩展`WebViewClient...

    android 8.0 webview 拍照预览、二维码扫描

    android 8.0 webview 拍照、预览、二维码扫描比较完整的例子,对于权限检查控制,有比较完善的提示写法。可以下载后,直接在android studid上运行,编译版本和target版本均是SDK android 8.0,最低版本设置成了...

    Android实现WebView懒加载

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中嵌入网页内容,实现类似浏览器的功能。然而,对于大型或者资源丰富的网页,WebView的加载性能可能会成为用户体验的一个瓶颈。"Android实现...

    Android通过WEBVIEW调用HTTPS

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。当涉及到安全的网络通信时,HTTPS协议因其数据加密和身份验证特性成为首选。本文将深入探讨如何在Android...

    android webview 版本69.0

    WebView在Android开发中扮演着核心角色,因为它允许混合式应用开发,将本地Android功能与网络内容相结合。 在“android_external_chromium-webview-lineage-15.1”这个压缩包子文件的文件名称中,我们可以解读出...

    Android System Webview 89.0.4389.105

    这是AOSP Webview, 包名com.android.webview, 不带google的 带google包名的可以下载 google system webview覆盖安装,可以略过 此文件包含 arm和arm64的webview

    Android实现WebView图片缓存,替换加载前默认图片的样式

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。然而,对于复杂的网页,特别是那些包含大量图片的页面,优化图片的加载和显示至关重要。本篇将详细介绍如何在Android的...

    Android WebView 去除标题

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。有时候,我们可能希望去除WebView中的标题部分,以实现更自定义化的界面设计。本篇文章将详细探讨如何在Android的...

    Android代码-Android-X5WebView基本封装

    Android-X5WebView基本封装和使用 通过OkHttp拦截器、自定义CookieJar有效完成客户端与H5端的Cookie同步管理 监听WebView的加载进度 滚动条的设置(隐藏或者显示,内侧显示还是外侧显示) 优化X5WebView的预加载问题...

    Android WebView播放视频(包括全屏播放)

    在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现类似浏览器的功能。本文将详细讲解如何在Android的WebView中播放视频,包括全屏播放的实现方法。以下是对该主题的...

    Android使用WebView调用H5完成摄像头扫描二维码

    在Android应用开发中,WebView是一个非常重要的组件,它允许我们加载和显示网页内容。这篇教程将详细介绍如何在Android中利用WebView来调用H5页面,从而实现摄像头扫描二维码的功能。 首先,我们需要理解WebView的...

    android 使用webview控件,注意在android9.0以后必须使用https才能访问网页

    然而,随着网络安全性的不断提升,Android系统对WebView的使用也有了更严格的要求。在Android 9.0(Pie)及更高版本中,如果你的应用试图加载HTTP(非加密)链接,系统将不再支持这种行为,强制要求使用更安全的...

    Android中WebView播放网上视频,横竖屏切换

    以上就是如何在Android的WebView中播放网络视频以及处理横竖屏切换的基本步骤。实际开发中,可能还需要考虑其他因素,如视频加载速度、内存管理、用户交互等。在`webView_test`这个项目中,开发者已经提供了一个示例...

    Android离线webview调试工具,开发H5混合应用必备

    总结来说,"Android离线webview调试工具"是专为解决国内开发者在使用`chrome://inspect`时遇到的网络问题而生的利器。它提供了离线调试、跨机型兼容、实时更新等多种实用功能,让H5混合应用的开发变得更加便捷高效。...

Global site tag (gtag.js) - Google Analytics