webview学习

webview是android加载网页的控件,同时可以支持与js的相互调用。

在创建webview时,系统有一些默认设置,我们可以通过webview.getSettings()  方法来改变一些默认的设置。

WebSettings  webSettings = webview.getSettings();

1. 编码格式

webSettings.setDefaultTextEncodingName("utf-8");

2.支持js交互

webSettings.setJavaScriptEnabled(true);

mWebView.addJavascriptInterface(object,"");

3.自适应屏幕

webSettings.setUseWideViewPort(true);

webSettings.setLoadWithOverviewMode(true);

4.支持缩放

webSettings.setSupportZoom(true);

5.关闭缓存

webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);

6.支持通过js打开新窗口

webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

7.支持自动加载图片

webSettings.setLoadsImagesAutomatically(true);


二  WebClient 帮助WebView处理各种通知、请求事件的

webView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边
                view.loadUrl(url);
                return true;
            }


            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
            }
        });


三WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等

webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
                builder.setTitle("对话框")
                        .setMessage(message)
                        .setPositiveButton("确定", null);
                // 不需要绑定按键事件
                // 屏蔽keycode等于84之类的按键
                builder.setOnKeyListener(new DialogInterface.OnKeyListener() {
                    @Override
                    public boolean onKey(DialogInterface dialogInterface, int keyCode, KeyEvent event) {
                        return true;
                    }
                });
                // 禁止响应按back键的事件
                builder.setCancelable(false);
                AlertDialog dialog = builder.create();
                dialog.show();
                result.confirm();// 因为没有绑定事件,需要强行confirm,否则页面会变黑显示不了内容。
                return true;
            }
        });




注意: 当js调用java的方法时,此方法需要加上@JavascriptInterface 注解 (api >17)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值