android 手机上浏览网页

来源:互联网 发布:淘宝上如何找牙签弩 编辑:程序博客网 时间:2024/05/06 14:25

    有时候经常要在手机上浏览网页,今天就写一个在手机上简单地浏览指定网页,当加载网页时以进度条的形式来提示,网页加载完进度条自动取消。

 

   效果图如下:

 

 

egomarker.xml 的源码如下:

在这个布局文件里,我只定义了一个WebView组件

 

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><WebView android:id="@+id/myWebView"android:layout_width="fill_parent"android:layout_height="fill_parent" /></LinearLayout>


接下来是主Activity的源代码:

    当加载网页完毕时,取消进度提示框是自定义一个继承自 WebViewClient 这个类,并重写它的 onPageFinished()方法,顾名思义就是网页加载完毕后要执行的动作,这里是直接取消进度提示框。如果访问的页面中有Javascript,则WebView必须设置支持 Javascript,即:webview.getSettings().setJavaScriptEnabled(true); 如果触摸焦点起作用,则要设置 requestFocus(); 假如没设置,则在点击网页文本输入框时,不会弹出软键盘及不响应其他的一些事件。

 

package com.android.geo;import android.app.Activity;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.DialogInterface;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.KeyEvent;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;public class EgoMarket extends Activity {private final static int FIRST = 1; private WebView myWebView; // WebView组件private ProgressDialog p_dialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stub super.onCreate(savedInstanceState);this.setContentView(R.layout.geomarket);// 调用属性方法findViews();setWeb();};// 加载完毕取消进度条private class myWebViewClient extends WebViewClient {@Overridepublic void onPageFinished(WebView view, String url) {// TODO Auto-generated method stubp_dialog.dismiss();super.onPageFinished(view, url);}}// 取得属性的方法private void findViews() {myWebView = (WebView) findViewById(R.id.myWebView);}// 当用户在首Activity点击返回键时,提示用户是否退出@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0){new AlertDialog.Builder(EgoMarket.this).setTitle("退出").setMessage("您确认要退出吗?").setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubfinish();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubdialog.dismiss();}}).show();}return super.onKeyDown(keyCode, event);}public void setWeb() {new Thread(new Runnable() {public void run() {Message message = new Message();message.what = FIRST;handler.sendMessage(message);}}).start();}Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case FIRST:// 创建一个进度条p_dialog = new ProgressDialog(EgoMarket.this);// 设置进度条风格,圆形,旋转的p_dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置 ProgressDialog 标题p_dialog.setTitle("提示");// 设置 ProgressDialog 图标p_dialog.setIcon(R.drawable.icon);// 设置 ProgressDialog 提示信息p_dialog.setMessage("正在加载中....");// 设置 ProgressDialog 的进度是否不明确p_dialog.setIndeterminate(false);// 设置 ProgressDialog 是否可以按退回按键取消p_dialog.setCancelable(true);p_dialog.setButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 点击确定,取消对话框dialog.cancel();finish();}});// 让ProgressDialog显示p_dialog.show();String strUrl = "http://www.chinaego.com.cn/cn/index.asp";// myWebView.loadUrl(strUrl);WebSettings settings = myWebView.getSettings();// 设置支持javaScript脚本语言settings.setJavaScriptEnabled(true);settings.setSupportZoom(true);settings.setBuiltInZoomControls(true);// 这里是支持flash的相关设置settings.setPluginState(WebSettings.PluginState.ON);myWebView.loadUrl(strUrl);myWebView.setWebViewClient(new myWebViewClient());break;default: break;}super.handleMessage(msg);}};}


最后记得要在 AndroidManifest.xml 添加权限 :

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

 

否则会出Web page not available错误

这样就可要正确访问你所指定的网页了