使用WebView显示网页

本文介绍了如何使用WebView在Android应用中显示网页,包括加载URL、网页缩放、进度条显示、自定义无网络状态页面以及处理返回键行为,帮助开发者实现内置浏览器功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用WebView显示网页

WebView本身就是一个浏览器实现,其内核是基于Webkit 引擎,,如若甲乙美化可以开发自己的浏览器

常用方法

void goBack()后退
void goForward()前进
void loadUrl(String url)加载指定url对应网页
boolean zoomIn()放大网页
boolean zoomOut()缩小网页

获取网络状态
    //loadUrl(String url)方法:加载指定URL对应的网页
        webView.loadUrl("http://www.baidu.com");

    }

    /**
     * @param v
     */

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button:
                NetworkInfo info = connectivityManager.getActiveNetworkInfo();
                if (info != null && info.isConnected()) {
                    textViewDetail.setText("连接方式为:" + info.getTypeName());
                } else {
                    textViewDetail.setText("无网络连接");
                }
                break;
            default:
                break;
        }
    }

设置网页缩放等功能

  //设置WebView的一些缩放功能点
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

        webView.getSettings().setSupportZoom(true);
        //设置WebView可触摸放大缩小
        webView.getSettings().setBuiltInZoomControls(true);
        webView.setInitialScale(70);
        webView.setHorizontalScrollbarOverlay(true);
        //WebView双击变大,再双击后变小,当手动放大后,双击可以恢复到原始大小
        webView.getSettings().setUseWideViewPort(true);
        //提高渲染的优先级
        //webView.getSettings().setRenderPriority(RenderPriority.HIGH);
        //允许JS执行
        webView.getSettings().setJavaScriptEnabled(true);
设置进度条显示网页加载速度

首先在XML文件中设置为不可见

 <ProgressBar
        android:id="@+id/progressbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
        android:visibility="invisible"/>

然后在代码中实现两个方法

 webView.setWebViewClient(new WebViewClient() {
            //设置开始进度条显示
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);

                progressBar.setVisibility(View.VISIBLE);
            }

            //设置结束后进度条不可见
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                progressBar.setVisibility(View.INVISIBLE);
            }


自定义没网状态的页面

首先看一下默认界面
这里写图片描述

 //自定义没网状态的页面
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                super.onReceivedError(view, errorCode, description, failingUrl);
                webView.setVisibility(View.GONE);

                textViewDetail.setText("加载失败");
                textViewDetail.setVisibility(View.VISIBLE);


            }
        });

设置后可以通过textView 显示文字提示信息
解决页面覆盖问题,通过返回键回到上一界面
 /**
     * @param keyCode KEYCODE_BACK
     * @param event KEYCODE_BACK
     * @return
     */
    @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);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值