Android WebView详解

来源:互联网 发布:for在c语言中的作用 编辑:程序博客网 时间:2024/05/01 14:32


1.在代码中创建

WebView webView=new WebView(this);

 setContentView(webview);


2.在xml文件中创建

webview=(WebView) findViewById(R.id.webview);


WebView能加载显示网页,可以将其视为一个可以嵌入在Android界面中的浏览器。


//如果页面中使用了JavaScript,不加改代码页面不显示。 

webView.getSettings().setJavaScriptEnabled(true); 


//加载页面时如果不加改代码,页面会跳转到系统自带浏览器显示。webView.setWebViewClient(new WebViewClient(){  public boolean shouldOverrideUrlLoading(WebView view, String url) {  

  view.loadUrl(url);  

return true;//返回值为true时在WebView中打开,为false时调用浏览器打开  

}

});  

webview.loadUrl("http://www.baidu.com");//网络地址http://,本地地址file:///  

 webview.loadUrl("file:///android_asset/www/text.html");//打开assets文件下的网页


    /**
         * 常用属性
         *  1、页面缩放
         *  适应手机屏幕:
         * */
        
//        webview.getSettings().setUseWideViewPort(true);  
//        webview.getSettings().setLoadWithOverviewMode(true);  
        
        /**
         * 放大设置
         *
         * */
//        webview.getSettings().setDisplayZoomControls(true);  
////    无限放大
//        webview.getSettings().setSupportZoom(true);
//        webview.getSettings().setBuiltInZoomControls(true);  
//        比例缩放
//        webview.setInitialScale(50);  
        
        /**
         * 页面缓存
         *
         *     /data/data/package_name/cache/  
         *     /data/data/package_name/database/webview.db  
         *     /data/data/package_name/database/webviewCache.db  
         *
         * */
        
        /**
         * 缓存模式(5种)
         *
         * LOAD_CACHE_ONLY:  不使用网络,只读取本地缓存数据  
         * LOAD_DEFAULT:  根据cache-control决定是否从网络上取数据。
         * LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式  
         * LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.  
         * LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。
         * */
        
        
        /**
         * 优先缓存、
         *
         *         设置获得设置对象
         *     WebSettings webSettings= webView.getSettings();  
         *     设置缓存的模式
         *     webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);  
         *     webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);// 默认不使用缓存!  
         * */
        
//        前进后退
        
        
//        public boolean onKeyDown(int keyCode, KeyEvent event) {  
//            if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {  
//                webView.goBack();  
//                return true;  
//            } else {  
//                //结束当前页  
//                return super.onKeyDown(keyCode, event);  
//            }  
//        }  
        
        /**
         * Table标签显示
         *
         * */
        
//        webview.setWebChromeClient(new WebChromeClient(){  
//            @Override  
//            public void onReceivedTitle(WebView view, String title) {  
//                //可以使用TextView显示title标签  
//                textview.setText(title);
//                super.onReceivedTitle(view, title);  
//                
//                
//            }  
//        });  
        
    
    /**
     * 错误页面设置
     *
     *
     * */
/*     webview.setWebViewClient(new WebViewClient(){
         @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
             view.loadUrl(url);
            
            return true;
        }
        
//         显示错误页面
         @Override
        public void onReceivedError(WebView view, int errorCode,
                String description, String failingUrl) {
            // TODO Auto-generated method stub
             view.loadUrl("file:///android_asset/www/eor.html");  
            super.onReceivedError(view, errorCode, description, failingUrl);
        }
     });
     */
    
    webview.setWebViewClient(new WebViewClient(){
         @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
             if(url.endsWith("?cx")){  
                    Toast.makeText(MainActivity.this, "点击了登录按钮!", Toast.LENGTH_SHORT).show();  
                    return true;  
            }  
                    view.loadUrl(url);  
                    return true;  
        }
             
     });
    
    
/*    *//**
     *
     * web中加载进度条
     *  需要自己定义一个进度条控件
     * 这里已经定义好了progressBar
     * *//*
     webview.setWebChromeClient(new WebChromeClient(){
        
         @Override
        public void onProgressChanged(WebView view, int newProgress) {
            // TODO Auto-generated method stub
             if(newProgress<1000){
                   //更新当前进度  
                    progressBar.setVisibility(View.VISIBLE);  
                    progressBar.setProgress(newProgress);  
             }else{  
                    //加载完成因此进度条  
                    progressBar.setVisibility(View.GONE);  
                }  
            
            super.onProgressChanged(view, newProgress);
        }
        
     });*/
    
     webview.setWebViewClient(new WebViewClient(){
         @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
              Toast.makeText(MainActivity.this, "开始加载!", Toast.LENGTH_SHORT).show();
            super.onPageStarted(view, url, favicon);
        }
         @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
             Toast.makeText(MainActivity.this, "加载结束!", Toast.LENGTH_SHORT).show();
            super.onPageFinished(view, url);
        }
     });



WebSettings常用方法:

  1. setAllowFileAccess 启用或禁止WebView访问文件数据  
  2. setBlockNetworkImage 是否显示网络图像  
  3. setBuiltInZoomControls 设置是否支持缩放  
  4. setCacheMode 设置缓冲的模式  
  5. setDefaultFontSize 设置默认的字体大小  
  6. setDefaultTextEncodingName 设置在解码时使用的默认编码  
  7. setFixedFontFamily 设置固定使用的字体  
  8. setJavaSciptEnabled 设置是否支持Javascript  
  9. setLayoutAlgorithm 设置布局方式  
  10. setLightTouchEnabled 设置用鼠标激活被选项  
  11. setSupportZoom 设置是否支持变焦 

WebViewClient常用方法:

  1. doUpdate VisitedHistory 更新历史记录  
  2. onFormResubmission 应用程序重新请求网页数据  
  3. onLoadResource 加载指定地址提供的资源  
  4. onPageFinished 网页加载完毕  
  5. onPageStarted 网页开始加载  
  6. onReceivedError 报告错误信息  
  7. onScaleChanged WebView发生改变  
  8. shouldOverrideUrlLoading 控制新的连接在当前WebView中打开 

WebChromeClient常用方法:

  1. onCloseWindow 关闭WebView  
  2. onCreateWindow 创建WebView  
  3. onJsAlert 处理Javascript中的Alert对话框  
  4. onJsConfirm处理Javascript中的Confirm对话框  
  5. onJsPrompt处理Javascript中的Prompt对话框  
  6. onProgressChanged 加载进度条改变  
  7. onReceivedlcon 网页图标更改  
  8. onReceivedTitle 网页Title更改  
  9. onRequestFocus WebView显示焦点 


0 0
原创粉丝点击