Chinaunix首页 | 论坛 | 博客
  • 博客访问: 42050
  • 博文数量: 71
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 726
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-24 08:29
文章分类

全部博文(71)

文章存档

2015年(71)

我的朋友

分类: Android平台

2015-02-21 00:28:01



  1. package com.example.webview;

  2. import android.annotation.SuppressLint;
  3. import android.app.Activity;
  4. import android.app.ProgressDialog;
  5. import android.os.Bundle;
  6. import android.view.KeyEvent;
  7. import android.webkit.WebChromeClient;
  8. import android.webkit.WebSettings;
  9. import android.webkit.WebView;
  10. import android.webkit.WebViewClient;

  11. public class MainActivity extends Activity {

  12.     private String url = "";
  13.     private WebView webView;
  14.     private ProgressDialog dialog;

  15.     @Override
  16.     protected void onCreate(Bundle savedInstanceState) {
  17.         super.onCreate(savedInstanceState);
  18.         setContentView(R.layout.web);
  19.         init();
  20.     }

  21.     @SuppressLint("SetJavaScriptEnabled")
  22.     private void init() {
  23.         webView = (WebView) findViewById(R.id.id_webView);
  24.         webView.loadUrl(url);
  25.         // 使网页可以在webView中直接打开
  26.         webView.setWebViewClient(new WebViewClient() {
  27.             @Override
  28.             public boolean shouldOverrideUrlLoading(WebView view, String url) {
  29.                 // 返回值是true的时候控制网页在webView中去打开,如果
  30.                 // 为false就调用系统 浏览器
  31.                 view.loadUrl(url);
  32.                 return true;
  33.             }
  34.             // WebViewClient帮助WebView去处理一些页面控制和请求通知

  35.         });
  36.         // 启用支持javaScript
  37.         WebSettings settings = webView.getSettings();
  38.         settings.setJavaScriptEnabled(true);
  39.         // WebView加载页面优先使用缓存加载
  40.         settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
  41.         webView.setWebChromeClient(new WebChromeClient() {
  42.             @Override
  43.             public void onProgressChanged(WebView view, int newProgress) {

  44.                 // newProgress 1-100之间的整数
  45.                 if (newProgress == 100) {
  46.                     // 网页加载完毕
  47.                     closeDialog();
  48.                 } else {
  49.                     // 网页正在加载,打开ProgressDialog
  50.                     openDialog(newProgress);
  51.                 }
  52.                 super.onProgressChanged(view, newProgress);
  53.             }

  54.             private void closeDialog() {
  55.                 if (dialog != null && dialog.isShowing()) {
  56.                     dialog.dismiss();
  57.                     dialog = null;
  58.                 }
  59.             }

  60.             private void openDialog(int newProgress) {
  61.                 if (dialog == null) {
  62.                     dialog = new ProgressDialog(MainActivity.this);
  63.                     dialog.setTitle("正在加载...");
  64.                     dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
  65.                     dialog.setProgress(newProgress);
  66.                     dialog.show();
  67.                 } else {
  68.                     dialog.setProgress(newProgress);
  69.                 }
  70.             }
  71.         });
  72.     }

  73.     // 改写物理按键返回的逻辑
  74.     @Override
  75.     public boolean onKeyDown(int keyCode, KeyEvent event) {

  76.         if (keyCode == KeyEvent.KEYCODE_BACK) {
  77.             // Toast.makeText(this, webView.getUrl(),
  78.             // Toast.LENGTH_SHORT).show();

  79.             if (webView.canGoBack()) {
  80.                 // 返回上一页面
  81.                 webView.goBack();
  82.                 return true;
  83.             } else {
  84.                 System.exit(0);
  85.             }
  86.         }
  87.         return super.onKeyDown(keyCode, event);
  88.     }
  89. }

阅读(137) | 评论(0) | 转发(0) |
0

上一篇:使用WebView显示网页(三)

下一篇:Fragment

给主人留下些什么吧!~~