WebView使用,简易浏览器

来源:互联网 发布:如何用js判断是否闰年 编辑:程序博客网 时间:2024/04/30 06:34

今天突然来的兴趣,想看看WebView,学习就像滚雪球,滚着滚着滚大了。本来就是加个链接,现在变成了一个简易的浏览器。

源代码:http://download.csdn.net/detail/hello_12413/8741775

编码方式:UTF-8

如图:



主页面代码如下:

package cn.com.avatar.browser;import cn.com.avatar.browser.utils.WebViewTools;import android.app.Activity;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebView;import android.widget.Button;import android.widget.EditText;import android.widget.ProgressBar;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {private EditText address;private ProgressBar pb;private WebView webView;private WebViewTools tools;private Button button;private final String url = "http://www.baidu.com";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);address = (EditText) findViewById(R.id.addres);pb = (ProgressBar) findViewById(R.id.pb);webView = (WebView) findViewById(R.id.wb);button = (Button) findViewById(R.id.go);button.setOnClickListener(this);tools = new WebViewTools(this, webView, pb);tools.setView(address);webView.loadUrl(url);}@Overrideprotected void onDestroy() {super.onDestroy();if (tools != null)tools.canelWebView();}private long exitTime = 0;@Overridepublic void onBackPressed() {//返回键监听,有历史记录则返回,没有退出if (tools != null && tools.isCanBack()) {tools.goBack();} else {long times = System.currentTimeMillis();if ((times - exitTime) > 2000) {Toast.makeText(getApplicationContext(), getString(R.string.exit), Toast.LENGTH_SHORT).show();exitTime = System.currentTimeMillis();} else {super.onBackPressed();finish();System.exit(0);}}}@Overridepublic void onClick(View v) {if (address != null) {if (!TextUtils.isEmpty(address.getText().toString().trim())) {String uri = address.getText().toString().trim();webView.loadUrl(uri);} else {Toast.makeText(this, getString(R.string.tip_null), Toast.LENGTH_SHORT).show();}}}}

主功能代码如下:


package cn.com.avatar.browser.utils;import android.annotation.SuppressLint;import android.app.AlertDialog;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.view.View;import android.webkit.DownloadListener;import android.webkit.JsPromptResult;import android.webkit.WebChromeClient;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.ProgressBar;import android.widget.TextView;/** * @project WebViewDemo * @ClassName RegularUtil.java * @Description WebView工具类 * @author xugang * @date 2015-5-20 下午2:32:51      */@SuppressLint("SetJavaScriptEnabled")public class WebViewTools {private WebView mWebView;private ProgressBar mBar;private Context mContext;private View view;public WebViewTools(Context mContext, WebView mWebView, ProgressBar mBar) {super();this.mWebView = mWebView;this.mBar = mBar;this.mContext = mContext;initmWebView();}private void initmWebView() {mWebView.getSettings().setUseWideViewPort(true);mWebView.getSettings().setLoadWithOverviewMode(true);mWebView.getSettings().setJavaScriptEnabled(true);mWebView.getSettings().setSupportZoom(true);mWebView.getSettings().setBuiltInZoomControls(true);mWebView.getSettings().setAppCacheEnabled(true);mWebView.requestFocus();mWebView.setWebChromeClient(wcc);mWebView.setDownloadListener(dl);mWebView.setWebViewClient(wvc);}public WebView getWebView(){return mWebView;}public void setView(View view) {this.view = view;}public boolean isCanBack() {if (mWebView != null) {return mWebView.canGoBack();}return false;}public void goBack() {if (mWebView != null) {mWebView.goBack();}}private WebViewClient wvc = new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView wb, String urlPath) {//if (view != null) {//if (view instanceof TextView) {//((TextView) view).setText(urlPath);//}//}return super.shouldOverrideUrlLoading(wb, urlPath);}public void onPageStarted(WebView wb, String url, android.graphics.Bitmap favicon) {if (view != null) {if (view instanceof TextView) {((TextView) view).setText(url);}}};@SuppressWarnings("deprecation")public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {mWebView.clearView();// webView.setVisibility(View.GONE);};public void onReceivedSslError(WebView view, android.webkit.SslErrorHandler handler, android.net.http.SslError error) {// handler.cancel(); // Android默认的处理方式handler.proceed(); // 接受所有网站的证书// handleMessage(Message msg); // 进行其他处理};public void onPageFinished(WebView view, String url) {};};private WebChromeClient wcc = new WebChromeClient() {public void onProgressChanged(WebView view, int newProgress) {System.out.println("-------------"+newProgress);if (newProgress < 100) {mBar.setVisibility(View.VISIBLE);mBar.setProgress(newProgress);} else {mBar.setVisibility(View.GONE);}};public boolean onJsAlert(WebView view, String url, String message, android.webkit.JsResult result) {new AlertDialog.Builder(mContext).setMessage(message).create().show();result.confirm();return true;};public boolean onJsPrompt(WebView view, String url, final String message, String defaultValue, JsPromptResult result) {// webView.stopLoading();// webView.reload();// result.confirm(); //如果自己处理js 则最后必须result.confirmreturn false;};};private DownloadListener dl = new DownloadListener() {@Overridepublic void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {// 调用系统 下载mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));}};public void canelWebView() {mWebView.clearCache(true);mWebView.destroy();}}


其实WebView使用起来很简单,设置些属性,就能和浏览器一样。

代码没有怎么优化,欢迎吐槽。


0 0
原创粉丝点击