android中WebView小结

http://www.android100.org/html/201306/26/3290.html

webview有两个方法:setWebChromeClient和setWebClient

1.setWebChromeClient

主要处理解析,渲染网页等浏览器做的事情

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

例:

onCloseWindow(关闭WebView) 

onCreateWindow() 

onJsAlert (WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出) 

onJsPrompt 

onJsConfirm 

onProgressChanged //加载进度条

onReceivedIcon 

onReceivedTitle

例如进度条:webview1.setWebChromeClient(new WebChromeClient()
        {         
            public void onProgressChanged(WebView view, int progress)  
            {  
                setProgress(progress * 100);    
                if(progress == 100){    
                    imageView1.setVisibility(View.GONE);
                    tv1.setVisibility(View.GONE);
                    pb1.setVisibility(View.GONE);
                    fy1.setVisibility(View.GONE);
                }
            }
        }
        );   

2.WebViewClient

就是帮助WebView处理各种通知、请求事件的,具体来说包括: 

onLoadResource 

onPageStart 

onPageFinish 

onReceiveError 

onReceivedHttpAuthRequest 

webview1.setWebViewClient(new WebViewClient() {   
                    
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)

{ // Handle the error  

Toast.makeText(getApplicationContext(), "网络连接失败 ,请连接网络。", Toast.LENGTH_SHORT).show();

} public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); //设置字符集编码   

webview1.getSettings().setDefaultTextEncodingName("UTF-8");
webview1.loadUrl(http://www.android100.org/);

例如:

package com.android.webview.activity;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

@SuppressLint("SetJavaScriptEnabled")
public class MainActivity extends Activity {

 private WebView webviewBasic;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_PROGRESS);
  setContentView(R.layout.weblayout);
  //加载web资源
  WebView webviewBasic=(WebView)findViewById(R.id.webview);
  webviewBasic.setWebChromeClient(new WebChromeClient(){
   public void onProgressChanged(WebView view,int progress){
    MainActivity.this.setProgress(progress*100);
   }
  });
  
//  webviewBasic.loadUrl("http://www.baidu.com");
  webviewBasic.loadUrl("http://wap.sht.yxtyw.com/");
  WebSettings setting=webviewBasic.getSettings();
  setting.setJavaScriptEnabled(true);
  
//  init();
  
 }

 //在程序内打开网页
// private void init(){
//  webviewBasic=(WebView)findViewById(R.id.webview);
//  //webview加载web资源
//  webviewBasic.loadUrl("http://www.baidu.com");
//  //覆盖webview默认使用第三方或系统默认浏览器打开网页的行为,使网页webView打开
//  webviewBasic.setWebViewClient(new WebViewClient(){
//   @Override
//   public boolean shouldOverrideUrlLoading(WebView view,String url){
//    view.loadUrl(url);
//    //返回值是true的时候控制区webview打开,
//    //返回值是false的时候调用系统浏览器或者第三方浏览器
//    return true;
//   }
//  });
//  
// }
 
 //加载JavaScript页面
// private void init(){
//  
//  webviewBasic=(WebView)findViewById(R.id.webview);
//  webviewBasic.loadUrl("http://wap.sht.yxtyw.com/");
//  webviewBasic.setWebViewClient(new WebViewClient(){
//   @Override
//   public boolean shouldOverrideUrlLoading(WebView view,String url){
//    view.loadUrl(url);
//    return true;
//   }
//  });
//  //启用支持JavaScript
//  WebSettings settings=webviewBasic.getSettings();
//  settings.setJavaScriptEnabled(true);
  
  //判断页面加载过程
//  webviewBasic.setWebChromeClient(new WebChromeClient(){
//   @Override
//   public void onProgressChanged(WebView view,int newProgress){
    if(newProgress==100){
     Toast.makeText(getApplicationContext(), "加载完成", Toast.LENGTH_LONG).show();
    }
    else{
     Toast.makeText(getApplicationContext(), "正在加载", Toast.LENGTH_LONG).show();
    }
//    
//    MainActivity.this.setProgress(newProgress*100);
//    
//   }
//  });
//  
// }
 
 //如果希望浏览的网页后退而不是退出浏览器,需要WebView覆盖URL加载,让它自动生成访问记录,那样就可以通过前进或者后退访问已访问过的站点
 
 //改写物理按键-----返回的逻辑
 @Override
 public boolean onKeyDown(int keyCode,KeyEvent event){
  if(keyCode==KeyEvent.KEYCODE_BACK){
   webviewBasic.goBack();//返回上一页
   return true;
  }
  else{
   System.exit(0);//退出程序
  }
  
  return super.onKeyDown(keyCode, event);
  
 }

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/whzhen1452/blog/806953

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值