由于最近项目部分需求要访问网页查阅信息,如:学历查询,学位查询,英语四六级查询等。

在这里总结下完成的方式,难度也不算大。

自定义带进度条的WebView控件:

package app.ui.widget;import android.content.Context;import android.util.AttributeSet;import android.webkit.WebView;import android.widget.ProgressBar;/** * 自定义WebView带进度条 * @author gaochun * */@SuppressWarnings("deprecation")public class ProgressWebView extends WebView {       private ProgressBar progressbar; /** 进度条 */    public ProgressWebView(Context context, AttributeSet attrs) {        super(context, attrs);        // 初始化进度条        progressbar = new ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal);        // 设置进度条风格        progressbar.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 5, 0, 0));        addView(progressbar);        setWebChromeClient(new WebChromeClient());    }    public class WebChromeClient extends android.webkit.WebChromeClient {        @Override        public void onProgressChanged(WebView view, int newProgress) {            if (newProgress == 100) {                progressbar.setVisibility(GONE);    // 加载完成隐藏进度条            } else {                if (progressbar.getVisibility() == GONE)                    progressbar.setVisibility(VISIBLE);                progressbar.setProgress(newProgress);            }            super.onProgressChanged(view, newProgress);        }    }    @Override    protected void onScrollChanged(int l, int t, int oldl, int oldt) {        LayoutParams lp = (LayoutParams) progressbar.getLayoutParams();        lp.x = l;        lp.y = t;        progressbar.setLayoutParams(lp);        super.onScrollChanged(l, t, oldl, oldt);    }}


在xml中使用:

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="@dimen/content_padding" >    <app.ui.widget.ProgressWebView        android:id="@+id/webview"        android:layout_width="match_parent"        android:layout_height="match_parent" />    <TextView        android:id="@+id/tv_error"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:gravity="center|center_vertical"        android:text="查询失败"        android:visibility="gone" /></FrameLayout>

在Activity中使用:

/******************************************************************************* * * Copyright (c) Weaver Info Tech Co. Ltd * * SelectActivity * * app.ui.activity.service.SelectActivity.java * TODO: File description or class description. * * @author: Administrator * @since:  2014-5-16 * @version: 1.0.0 * * @changeLogs: *     1.0.0: First created this class. * ******************************************************************************/package app.ui.activity.service;import mobi.kuaidian.qunakao.R;import android.content.Intent;import android.os.Bundle;import android.view.KeyEvent;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import app.ui.widget.ProgressWebView;/** * @author Administrator * */public class ResultActivity extends Activity{public static final String SELECT_XUELI = "http://www.chsi.com.cn/xlcx/lscx.jsp";   //学历查询地址    private ProgressWebView mWebView;    private WebSettings mWebSettings;    /* (non-Javadoc)     * @see app.ui.TitleActivity#onCreate(android.os.Bundle)     */    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setUpViews();    }    private void setUpViews()    {        setContentView(R.layout.activity_result);        showBackwardView(R.string.button_backward, true);        mWebView = (ProgressWebView)findViewById(R.id.webview);mWebView.loadUrl(BaseActivity.SELECT_XUELI);        mWebSettings = mWebView.getSettings();        mWebSettings.setJavaScriptEnabled(true);    //允许加载javascript        mWebSettings.setSupportZoom(true);          //允许缩放        mWebSettings.setBuiltInZoomControls(true);  //原网页基础上缩放        mWebSettings.setUseWideViewPort(true);      //任意比例缩放/***************************************************************** * 在点击请求的是链接时才会调用,重写此方法返回true表明点击网页里 * 面的链接还是在当前的WebView里跳转,不会跳到浏览器上运行。 *****************************************************************/        mWebView.setWebViewClient(new WebViewClient(){            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                view.loadUrl(url);                return super.shouldOverrideUrlLoading(view, url);            }        });    }    /***********************************************************     * 监听返回键 * 注:这里的返回键是指在加载的网页中进入了另一个连接,点击返回     ***********************************************************/    public boolean onKeyDown(int keyCode, KeyEvent event) {        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {            mWebView.goBack();            return true;        }        return super.onKeyDown(keyCode, event);    }}

AndroidManifest.xml添加权限:

<uses-permission android:name="android.permission.INTERNET" />



效果图显示:



更多相关文章

  1. Android的Menu键监听
  2. android手写签名遇见bitmap黑屏和本地html插入签名图片
  3. Android(安卓)版本兼容 — Android(安卓)4.4 后根据系统 Uri 查
  4. File
  5. Android(安卓)GestureDetector ScaleGestureDetector
  6. Android加载通话记录流程分析
  7. android 通过Intent打开相册并获取选择的图片
  8. android点击事件
  9. android中google“定位查询”编辑

随机推荐

  1. Android防止内存泄漏以及MAT的使用
  2. 圆角android
  3. Android读书笔记-2 序列化
  4. Android(安卓)Service 测试
  5. Glossary of Android
  6. Android:ADT 22.6..0
  7. Download Provider
  8. FrameLayout.xml
  9. Android(安卓)Activity 测试
  10. 【转】Android(安卓)JNI实例