前言

  WebView在Android中的使用频率还挺高的,经常用来加载一个html网页,使用webview来和js互动可以大大的增加开发我们的效率。不过这个控件在使用的过程还需要注意一些问题,以下是本鸟的使用经历,哪里有说的不对,请路过的大佬不吝赐教。菜鸟在此先行谢过了。

权限

  加载网络中的链接肯定得需要联网权限咯,在你的AndroidManifest中添加下面的权限:

定义

  我使用webview的时候,直接就在布局文件中定义了,只是简单的定义了一个没有滚动条铺满整个空间的webview

    

java代码中使用

  要想使用布局中定义的控件,findViewById是少不了的,然后就是webview的一些常用配置:

webView = findViewById(R.id.common_webview);WebSettings settings = webView.getSettings();        settings.setJavaScriptEnabled(true);//支持js交互,可以点击网页中按钮链接        settings.setJavaScriptCanOpenWindowsAutomatically(true);//支持js可以打开新的页面        settings.setSupportZoom(true);//是否可以缩放,默认true        settings.setBuiltInZoomControls(true);//是否显示缩放按钮,默认false        settings.setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式        settings.setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题        settings.setAppCacheEnabled(false);//是否使用缓存        settings.setDomStorageEnabled(true);//DOM Storage

写了这么多的配置重点中的重点!!!!loadUrl这个方法一定别忘记调用了[笑哭],因为这让你的webview显示的内容。这应该就正常加载你的网页了,不过这样默认打开你手机自带的浏览器。不过这种用户体验感极差,所以我们用以下方法来解决这个问题

webView.setWebViewClient(new WebViewClient() {            //覆盖shouldOverrideUrlLoading 方法            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                //默认是打开系统自带的浏览器,重写这个方法之后就不会打开系统的浏览器了                view.loadUrl(url);                return true;            }                        @Override            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {                handler.proceed();//解决webview 加载https 出现没内容            }        });

重写第一个方法之后,就不会打开系统的浏览器了,这时你会看见重写第二个方法,因为webview加载的链接可能是http或者是https,这两个的区别就是后者有点严重坑爹。。。,之前一直是加载的http,没有啥问题,昨天没注意后台给的html,加载就是出现白板没内容,搞了半天才看到是https。。。,网搜了一圈,大致是因为默认会查看证书的安全,重写那个方法之后就会忽略这个问题了。

后退问题

  你的界面可会是上面标题栏,标题栏左侧还会有一个返回键,下面是一个webview,如果你点击html里面的链接内容,加载出新的页面,你点击返回键就直接finish掉这个fragment或者activity,这个时候你会突然想到,安卓还带一个back键呢!!!天空飘来五个字,这都不是事,上代码解决问题

ivBack.setOnClickListener(new View.OnClickListener() {//标题栏返回键            @Override            public void onClick(View view) {                if (webView.canGoBack()){                    webView.goBack();                }else {                    finish();                }            }        });@Override    public void onBackPressed() {//手机物理返回键        if (weekView.canGoBack()){            weekView.goBack();        }else {            finish();        }    }

结束语

  这就是一些常用的webview设置,本鸟经历的webview不多,后续会更新这篇文章,如果哪里有什么不对的地方还请大家指教,互相学习嘛,嘿嘿嘿。。。


更多相关文章

  1. Android中使用SurfaceView的方法
  2. Android加载图片防止OOM
  3. Android新的网络请求框架volley源码解释及示例
  4. Android设计模式系列--模板方法模式
  5. android ndk生成第三方库的so方法(ndk-build,Application.mk,Andro
  6. Android中WebView加载本地Html,与JavaScript与Android方法相互传
  7. Android的JNI总结
  8. Android中Fragment碎片解析
  9. Android(安卓)AndroidProgressLayout:加载页面遮挡耗时操作任务页

随机推荐

  1. Android(安卓)隐藏系统状态栏和标题栏
  2. android GPS 获取位置
  3. IDEA Android(安卓)studio toString() 生
  4. android:largestWidthLimitDp
  5. SDK/ADT历史版本
  6. android 禁止横竖版切换
  7. android 通过资源文件名称获取资源文件id
  8. Android(安卓)改变AlertDialog的大小
  9. Android(安卓)Gradle 基础认识
  10. android ndk 入门实践