您的位置:首页 > 移动开发

使用WebView显示网页

2015-09-11 20:38 309 查看

使用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);
    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: