Android webview的使用

WebViewd的基本使用

在布局文件中写入WebView:xml部分如下代码

<?xml version="1.0" encoding="utf-8"?>
<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"
    >
    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webview"
        />
</LinearLayout>

加载网页使用loadUrl()

webView = (WebView) findViewById(R.id.webview);
webView.loadUrl("http://my.oschina.net/nmxsu");
//此处网页可以为任意 例如:webView.loadUrl("www.baidu.com");

获取网络权限

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

WebView显示网页

本地   webView.loadUrl(“file:///android_asset/XX.html“);  
网络   webView.loadUrl("www.baidu.com")

在WebView中使用JavaScript

 如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript。一旦使能之后,你也可以自己创建接口在你的应用和JavaScript代码间进行交互。
//启用支持JavaScript
 WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);

定义WebView打开特定的网页

//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
                view.loadUrl(url);
                return true;
            }
            //webviewClient 帮助webview去处理一些页面控制和请求通知
        });

浏览网页历史回退 当你的WebView覆写了URL载入的行为,它会自动地对访问过的网页积累一个历史,你可以利用 goBack() 和 goForward()方法在这个历史中前进或后退。

//改写物理按键--返回的逻辑
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Toast.makeText(this, webView.getUrl(), Toast.LENGTH_LONG).show();

            if (webView.canGoBack()) {
                webView.goBack();//返回上一页面
                return true;
            } else {
                System.exit(0);//退出程序
            }
        }
        return super.onKeyDown(keyCode, event);
    }

WebView加载页面使用缓存加载

 //webview加载页面优先使用缓存加载
        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                //newPrograss 1~100之间的整数
                if (newProgress == 100) {
                    //网页加载完毕关闭ProgressDialog
                    closDialog();
                } else {
                    //网页正在加载 打开ProgressDialog
                    openDialog(newProgress);
                }
            }

            private void closDialog() {
                if (dialog != null && dialog.isShowing()) {
                    dialog.dismiss();
                    dialog = null;
                }

            }

            private void openDialog(int newProgress) {
                if (dialog == null) {
                    dialog = new ProgressDialog(MainWebview.this);
                    dialog.setTitle("正在加载");
                    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                    dialog.setProgress(newProgress);
                    dialog.show();
                } else {
                    dialog.setProgress(newProgress);
                }
            }
        });

转载于:https://my.oschina.net/nmxsu/blog/727220

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值