在android应用中,有时要加载一个网页,如果能配上一个进度条就更好了,而android

中提供了其很好的支持,下面是一个例子程序,先帖:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <WebViewxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/webView"android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"/>

主程序:

[java] view plain copy
  1. publicclassWebPageLoaderextendsActivity
  2. {
  3. finalActivityactivity=this;
  4. @Override
  5. publicvoidonCreate(BundlesavedInstanceState)
  6. {
  7. super.onCreate(savedInstanceState);
  8. this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
  9. setContentView(R.layout.main);
  10. WebViewwebView=(WebView)findViewById(R.id.webView);
  11. webView.getSettings().setJavaScriptEnabled(true);
  12. webView.getSettings().setSupportZoom(true);
  13. webView.setWebChromeClient(newWebChromeClient()
  14. {
  15. publicvoidonProgressChanged(WebViewview,intprogress)
  16. {
  17. activity.setTitle("Loading...");
  18. activity.setProgress(progress*100);
  19. if(progress==100)
  20. activity.setTitle(R.string.app_name);
  21. }
  22. }
  23. );
  24. webView.setWebViewClient(newWebViewClient(){
  25. publicvoidonReceivedError(WebViewview,interrorCode,Stringdescription,StringfailingUrl)
  26. {//Handletheerror
  27. }
  28. publicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl)
  29. {
  30. view.loadUrl(url);
  31. returntrue;
  32. }
  33. });
  34. webView.loadUrl("http://www.sohu.com");
  35. }
  36. }

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

[java] view plain copy
  1. webView.getSettings().setJavaScriptEnabled(true);
  2. webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
  3. webView.setHorizontalScrollBarEnabled(false);
  4. webView.getSettings().setSupportZoom(true);
  5. webView.getSettings().setBuiltInZoomControls(true);
  6. webView.setInitialScale(70);
  7. webView.setHorizontalScrollbarOverlay(true);

等等,具体参考API
而进度条的使用是在new出一个setWebChromeClient后,可以在内部类中写
onProgressChanged事件

在WebView的设计中,不是什么事都要WebView类干的,有些杂事是分给其他人的,这样WebView专心干好自己的解析、渲染工作就行了。WebViewClient就是帮助WebView处理各种通知、请求事件的,具体来说包括:

[java] view plain copy
  1. onLoadResource
  2. onPageStart
  3. onPageFinish
  4. onReceiveError
  5. onReceivedHttpAuthRequest

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

[java] view plain copy
  1. onCloseWindow(关闭WebView)
  2. onCreateWindow()
  3. onJsAlert(WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出)
  4. onJsPrompt
  5. onJsConfirm
  6. onProgressChanged
  7. onReceivedIcon
  8. onReceivedTitle

更多的时候,你可以这样

[java] view plain copy
  1. WebViewwebView;
  2. webView=(WebView)findViewById(R.id.webview);
  3. webView.setWebChromeClient(newWebChromeClient());
  4. webView.setWebViewClient(newWebViewClient());
  5. webView.getSettings().
  6. setJavaScriptEnabled(true);
  7. webView.loadUrl(url);

更多相关文章

  1. Android事件分发机制的探索与发现之View篇
  2. Android通话默认打开扬声器
  3. android 学习四 加载图片
  4. android WebView(三)WebViewClient
  5. Android(安卓)xml 解析
  6. android post数据到服务器端工具类(包括postjson字符串、键值对)
  7. Android(安卓)传感器(Sensor)API教程 (二) 传感器事件
  8. CheckBox in ListView
  9. Android中WebViewClient与WebChromClient两个类的区别

随机推荐

  1. 拍照(连续拍照 焦距 压缩图像)
  2. 开源库
  3. android checkbox 扩大点击区域
  4. Android(安卓)之gson字符串转java bean
  5. 基站定位获取位置坐标
  6. 自定义ListView,解决嵌套item显示不全问
  7. ReleaseNotes 3.1 & 3.2
  8. android 文字转化为语音TextToSpeech
  9. Android(安卓)listView 中响应Button点击
  10. 用Android(安卓)写休闲拼图游戏(二)