Android webview加载页面

本文详细介绍了WebView的初始化配置过程,包括支持JavaScript、自适应屏幕、缓存模式、缩放控制、H5缓存管理、文件访问权限、DOM Storage机制等关键设置,以及如何处理不同Android版本的兼容性问题。

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

    private WebView webView;


    public void init() {
        webView = (WebView) findViewById(R.id.webview);
       //支持js
        webView.getSettings().setJavaScriptEnabled(true);
        WebSettings webSettings= webView.getSettings();
       //缓存模式
        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        //自适应页面
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
       // 缩放至屏幕的大小
       webView.getSettings().setLoadWithOverviewMode(true);
         //支持缩放
        webView.getSettings().setSupportZoom(true);
    
         //关闭缩放按钮
        webView.getSettings().setBuiltInZoomControls(false);

        //隐藏原生的缩放控件 
        webView.getSettings().setDisplayZoomControls(false); 
        //启用h5缓存 (webview存在两种缓存:网页数据缓存(存储打开过的页面及资源)、H5缓存(即appcache))
        webSettings.setAppCacheEnabled(true)
        //h5缓存大小
        webSettings.setAppCacheMaxSize(size);
        String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
       //h5缓存路径
        webSettings.setAppCachePath(appCachePath);
       //​设置可以访问文件 
        webSettings.setAllowFileAccess(true);

       //设置开启Dom Storage机制
        webSettings.setDomStorageEnabled(true);
       
        //WebView的渲染程度高 
        webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
        webView=getIntent().getStringExtra("webView");
       //不阻塞网络图片下载(图片加载不出来的时候,设置有效)
        webSettings.setBlockNetworkImage(false);;

        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP ) {
          //系统默认禁止了mixed content和第三方cookie(当图片不显示的时候,开启MixedContentMode)
            webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }
       //不跳转系统自带的浏览器
        webView.setWebViewClient(new LoadWebView());
        webView.loadUrl(weburl);



    }
//自适应
WebSettings.LayoutAlgorithm.NARROW_COLUMNS :适应内容大小
WebSettings.LayoutAlgorithm.NARROW_COLUMNS :适应屏幕,内容将自动缩放

//缓存模式
1,LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据 
2,LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。
3,LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式 
4,LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
5,LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。 

//常用缩放meta
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
1、width : 控制viewport的大小)
2、height :指定高度 
3、initial-scale : 初始缩放比例,页面第一次加载时的缩放比例 
4、maximum-scale : 允许用户缩放到的最大比例
5、minimum-scale : 允许用户缩放到的最小比例
6、user-scalable : 用户是否可以手动缩放

//Dom Storage机制
dom Storage机制与cookie类似,但是有更大的存储空间 DOM Storage 分为 sessionStorage和 localStorage。localStorage 对象和 sessionStorage 对象使用方法基本相同,它们的区别在于作用的范围不sessionStorage 用来存储与页面相关的数据,它在页面关闭后无法使用。而 localStorage 则持久存在,在页面关闭后也可以使用。

    class LoadWebView extends WebViewClient {
        //加载完毕时
       @Override
        public void onPageFinished(WebView view, String url) {
     
        }
      //在webview加载URL的时候可以截获这个动作
       @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                webView.loadUrl(weburl);
            return true;
        }
         //加载开始时
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {

            super.onPageStarted(view, url, favicon);
       
        }
       @Override  
        public void onReceivedSslError(WebView view,
                                       SslErrorHandler handler, SslError error) {
            //   handler.proceed();// 接受所有网站的证书
            //  webView.loadUrl(weburl);
        }
    }


}
 
  

  
 
        
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值