Android中使用WebView, WebChromeClient和WebViewClient加載網頁 (能夠執行js)


Android中使用WebView, WebChromeClient和WebViewClient加載網頁

 

在android應用中,有時要加載一個網頁,如果能配上一個進度條就更好了,而android 
中提供了其很好的支持,下面是一個例子程序,先帖: 

 

1
2
3
4
<?xml version= "1.0"  encoding= "utf-8" ?>
<WebView xmlns:android= "http://schemas.android.com/apk/res/android"
android:id= "@+id/webView"  android:layout_width= "fill_parent"
android:layout_height= "fill_parent"  />

 

主程序: 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public  class  WebPageLoader  extends  Activity
   {   
       final  Activity activity =  this ;  
       @Override  
       public  void  onCreate(Bundle savedInstanceState)  
       {   
           super .onCreate(savedInstanceState);   
           this .getWindow().requestFeature(Window.FEATURE_PROGRESS);  
           setContentView(R.layout.main); 
           WebView webView = (WebView) findViewById(R.id.webView);  
           webView.getSettings().setJavaScriptEnabled( true );
       webView.getSettings().setSupportZoom( true );
           webView.setWebChromeClient( new  WebChromeClient()
           {         
               public  void  onProgressChanged(WebView view,  int  progress)  
               {           
                   activity.setTitle( "Loading..." );      
                   activity.setProgress(progress *  100 );    
                   if (progress ==  100 )           
                       activity.setTitle(R.string.app_name);      
                   }     
               }
           );     
           webView.setWebViewClient( new  WebViewClient() {  
                      
               public  void  onReceivedError(WebView view,  int  errorCode, String description, String failingUrl)  
               {                  // Handle the error      
                   
               }            
                     
               public  boolean  shouldOverrideUrlLoading(WebView view, String url)
               {             
                   view.loadUrl(url);  
                   return  true ;      
                   }     
               }); 
           webView.loadUrl( "http://www.sohu.com" ); 
           }
       }

 

 要注意的是,其中的webView的一系列用法,比如 webView.getSettings().setJavaScriptEnabled(true);設置可以使用javscript; 

webView.getSettings().setJavaScriptEnabled( true );  
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);  
webView.setHorizontalScrollBarEnabled( false );  
webView.getSettings().setSupportZoom( true );  
webView.getSettings().setBuiltInZoomControls( true );  
webView.setInitialScale( 70 );  
webView.setHorizontalScrollbarOverlay( true ); 


等等,具體參考API 
而進度條的使用是在new出一個setWebChromeClient后,可以在內部類中寫 
onProgressChanged事件 

在WebView的設計中,不是什么事都要WebView類干的,有些雜事是分給其他人的,這樣WebView專心干好自己的解析、渲染工作就行了。WebViewClient就是幫助WebView處理各種通知、請求事件的,具體來說包括: 

復制代碼
onLoadResource 

onPageStart 

onPageFinish 

onReceiveError 

onReceivedHttpAuthRequest 



WebChromeClient是輔助WebView處理Javascript的對話框,網站圖標,網站title,加載進度等 



onCloseWindow(關閉WebView) 

onCreateWindow() 

onJsAlert (WebView上alert是彈不出來東西的,需要定制你的WebChromeClient處理彈出) 

onJsPrompt 

onJsConfirm 

onProgressChanged 

onReceivedIcon 

onReceivedTitle
復制代碼
 
 
 
http://www.cnblogs.com/lm3515/archive/2011/03/14/1984091.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM