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
- WebView使用,简易浏览器
- WebView-简易浏览器
- Android-WebView-简易浏览器
- WebView 详解(简易浏览器Demo)
- 用WebView制作简易浏览器
- Android程序:简易浏览器的实现(WebView)
- webView的使用,浏览器
- 使用webview打开浏览器
- Android webview控件(一) 使用webview开发浏览器实例
- 使用WebView不跳转到其它浏览器
- 使用Chrome浏览器远程调试webView
- webView使用内部浏览器加载网页
- Android Webview不使用默认浏览器
- WebView 浏览器
- Webview && 浏览器
- android开发中WebView控件的实例与注意要点——个人主页浏览器简易实现
- android开发中WebView控件的实例与注意要点——个人主页浏览器简易实现
- 抛弃Android自带webview浏览器内核,使用腾讯X5服务webview浏览器
- 转载:OGRE一起学(九)平面
- 诸葛:Growth Hacking为何物?
- vim笔记
- 初学JDBC
- 文本分词方法
- WebView使用,简易浏览器
- hadoop SLF4J错误
- 如果查看某一IP的计算机接在交换机的哪个接口上
- Linux 技巧:让进程在后台可靠运行的几种方法
- poj 1422 Air Raid
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- 碰到斑马打印机下载字体问题
- ScrollView嵌套ViewPager 时候 Pager左右滑动不流畅
- Effective C++ 学习笔记(6)