3.1.1 网页控件 WebView 的常用方法大全

本文介绍了Android中的WebView控件,展示了如何通过WebView显示网页、处理重定向问题、设置WebViewClient、WebChromeClient和WebSettings。同时,讲解了WebView滚动事件监听、缩放、自适应屏幕和滚动条的设置,以及Cookie数据的处理。通过示例代码和方法解释,帮助读者掌握WebView的使用技巧。
摘要由CSDN通过智能技术生成

前言:

有时候我们可能会碰到一些比较特殊的需求,比如说要求在应用程序里展示一些网页。相信每个人都知道,加载和显示网页通常都是浏览器的任务,但是需求里又明确指出,不允许打开系统浏览器,而我们当然也不可能自己去编写一个浏览器出来,这时应该怎么办呢?
不用担心, Android 早就已经考虑到了这种需求,它提供了一个 WebView 控件来帮助我们做这件事情。

本节例程下载地址:WillFlowWebView

一、什么是WebView?

Android 内置了 webkit 内核的高性能浏览器(从 Android 4.4 以后是 Chromium),而 WebView 则是在这个基础上进行封装后的一个 控件,WebView直译网页视图,我们可以简单的把它看作一个可以嵌套到界面上的一个浏览器控件!借助它我们就可以在自己的应用程序里嵌入一个浏览器,从而非常轻松地展示各种各样的网页。WebView 的用法也是相当简单,下面我们通过一个例子来学习一下。

(1)新建一个项目并修改 activity_main.xml 中的代码,如下所示:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <WebView
            android:id="@+id/web_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

我们在布局文件中使用到了 WebView,我们一会儿就用这个控件来显示网页,这里的写法很简单,给它设置了一个 id(android:id=”@+id/web_view”),并让它充满整个屏幕。

(2)然后修改 MainActivity 中的代码,如下所示:
public class MainActivity extends Activity {
   
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = (WebView) findViewById(R.id.web_view);
        // 设置WebView属性,运行执行js脚本
        webView.getSettings().setJavaScriptEnabled(true);

        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url); // 根据传入的参数再去加载新的网页
                return true; // 表示当前WebView可以处理打开新网页的请求,不用借助系统浏览器
            }
        });

        wView.setWebChromeClient(new WebChromeClient() {
            // 这里设置获取到的网站title
            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
                txt_title.setText(title);
            }
        });

        webView.loadUrl("http://www.jianshu.com/p/2cf0aca9a57d");
    }

    // 我们需要重写回退按钮的时间,当用户点击回退按钮时:
    // 1.webView.canGoBack()判断网页是否能后退,可以则goback()
    // 2.如果不可以连续点击两次退出App,否则弹出提示Toast
    @Override
    public void onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            if ((System.currentT
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值