android:WebView使用

如何创建WebView: 

    1、添加权限:AndroidManifest.xml中必须使用权限:"android.permission.INTERNET",否则会出Web page not available错误。 

    2、创建WebView实例:WebView webView = new WebView(this); 

    3、WebView基本设置: 
          webview.getSettings().setJavaScriptEnabled(true);   //设置支持Javascript 
          webView.getSettings().setBuiltInZoomControls(true);   //页面添加缩放按钮 
          webView.requestFocus();   //触摸焦点起作用.如果不设置,则在点击网页文本输入框时,不能弹出软键盘及不响应其他的一些事件。 
          webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);   //取消滚动条 

    4、设置WevView要显示的网页: 
          互联网用:webView.loadUrl("http://www.google.com"); 
          本地文件用:webView.loadUrl("file:///android_asset/XX.html");  本地文件存放在:assets文件中 

    5、如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。 
          给WebView添加一个事件监听对象(WebViewClient)      
          并重写其中的一些方法 
                shouldOverrideUrlLoading:对网页中超链接按钮的响应。 
                                          当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url 
                onLoadResource   
                onPageStart  
                onPageFinish  
                onReceiveError 
                onReceivedHttpAuthRequest 

    6、如果用webview点链接跳转多页后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。 
       覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。

Java代码   收藏代码
  1. public boolean onKeyDown(int keyCoder,KeyEvent event) {    
  2.     if ( webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK ) {    
  3.         webView.goBack();   //返回webView的上一页面    
  4.         return true;    
  5.     }    
  6.     return false;    
  7. }    



WebView相关问题注意: 

Android的webView很强大,其实就是一个浏览器,你可以把它嵌入到你想要的位置,我这里遇到两个问题,一是怎么知道网页的加载进度,二是加载网页时,点击网页里面的链接还是在当前的webview里跳转,不想跳到浏览器那边。解决办法如下:

Java代码   收藏代码
  1. webView.setWebChromeClient(new WebChromeClient() {    
  2.     public void onProgressChanged(WebView view, int progress) {    
  3.         setTitle("页面加载中 ... " + progress + "%");    
  4.         setProgress(progress * 100);    
  5.         if (progress == 100) {    
  6.             setTitle(R.string.app_name);    
  7.         }    
  8.     }    
  9. });    
  10.   
  11. webView.setWebViewClient(new WebViewClient() {    
  12.     @Override  
  13.     public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  14.         //设置点击网页里面的链接还是在当前的webview里跳转  
  15.         view.loadUrl(url);    
  16.         return true;    
  17.     }    
  18.     @Override  
  19.     public void onReceivedSslError(WebView view,   
  20.             SslErrorHandler handler, android.net.http.SslError error) {   
  21.         //设置webview处理https请求  
  22.         handler.proceed();  
  23.     }  
  24.     public void onReceivedError(WebView view,  
  25.             int errorCode, String description, String failingUrl) {  
  26.         //加载页面报错时的处理  
  27.         Toast.makeText(MainActivity.this,   
  28.                 "Oh no! " + description, Toast.LENGTH_SHORT).show();  
  29.     }  
  30. });    

猜你喜欢

转载自lishuaishuai.iteye.com/blog/2302205