在Android浏览器开发过程中,我们是使用webview控件来开发的。

下面应用一个简单的例子,如下所示:

简单代码如下:

package com.net.connect.app; import java.util.Date; import android.app.Activity; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; public class WebViewActivity1 extends Activity { WebView browser; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.webview); browser = (WebView) findViewById(R.id.c131_webkit); // browser.loadUrl("http://commonsware.com"); // browser.loadData("<html><body><h2>Hello , world!</h2></body></html>", // "text/html", "UTF-8"); // 自定义网页 browser.setWebViewClient(new WebViewClient() { /* * 这个事件,将在用户点击链接时触发。通过判断url,可确定如何操作,如果返回true,表示我们已经处理了这个request,如果返回false * ,表示没有处理,那么浏览器将会根据url获取网页 */ public boolean shouldOverrideUrlLoading(WebView view, String url) { loadTime(); return true; // 表示已经处理了这次URL的请求 } }); loadTime(); } private void loadTime() { String page = "<html><body><a href="/" mce_href="/""clock/">" + new Date().toString() + "</a></body></html>"; /* * 这里我们使用了loadDataWithBaseUrl的方式。浏览器可以通过"file:///android_asset/"来获得映用中asset * /的资源。但是如果我们没有设置baseUrl,或者为空,这无法获取,想获取这些资源,baseUrl不能设置为http(s)/ftp(s) * /about/javascript这些已有专属的定义。在例子中,我们baseUrl设置为"wei://base". * 对于上面的那个链接地址为wei://base/clock */ browser.loadDataWithBaseURL("wei://base/clock", page, "text/html", "UTF-8", null); }

界面如下:

Android中WebView控件的使用_第1张图片

第二个例子,代码如下所示:

package com.net.connect.app; import android.app.Activity; import android.os.Bundle; import android.view.Window; import android.webkit.WebChromeClient; import android.webkit.WebView; /** * 进度条同webview整合 * @author mingg * */ public class WebViewActivity extends Activity { WebView browser; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Activity activity = this; // 因为方法是以final的方式,所以设置final。 // 设置activity的进度条,下面一句必须在setContentView之前,否则会报错。 // 下面的语句也可以用activity.requestWindowFeature(Window.FEATURE_PROGRESS);来替代 getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.webview); browser = (WebView) findViewById(R.id.c131_webkit); browser.getSettings().setJavaScriptEnabled(true); // 设置支持javascript的例子 // 通过WebChromeClient可以处理JS对话框,titles, 进度,等 ,这个例子,我们处理 // ,我们将websit下载的进度同步到acitity的进度条上。 browser.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int newProgress) { // activity的进度是0 to 10000 (both inclusive),所以要*100 activity.setProgress(newProgress * 100); } }); browser.loadUrl("http://www.baidu.com"); } }

可以显示进度条。而且显示的就是这个Web,如下所示:

Android中WebView控件的使用_第2张图片

如果要用个简单点的web浏览器的话。我们可以创建下面这个类:

package com.yarin.android.Examples_08_06; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.URLUtil; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class Activity01 extends Activity { private final String DEBUG_TAG = "Activity01"; private Button mButton; private EditText mEditText; private WebView mWebView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); mButton = (Button) findViewById(R.id.Button01); mEditText = (EditText) findViewById(R.id.EditText01); mEditText.setText("http://www.baidu.com"); mWebView = (WebView) findViewById(R.id.WebView01); //设置支持JavaScript脚本 WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); //设置可以访问文件 webSettings.setAllowFileAccess(true); //设置支持缩放 webSettings.setBuiltInZoomControls(true); //设置WebViewClient mWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } }); //设置WebChromeClient mWebView.setWebChromeClient(new WebChromeClient(){ @Override //处理javascript中的alert public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { //构建一个Builder来显示网页中的对话框 Builder builder = new Builder(Activity01.this); builder.setTitle("提示对话框"); builder.setMessage(message); builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //点击确定按钮之后,继续执行网页中的操作 result.confirm(); } }); builder.setCancelable(false); builder.create(); builder.show(); return true; }; @Override //处理javascript中的confirm public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { Builder builder = new Builder(Activity01.this); builder.setTitle("带选择的对话框"); builder.setMessage(message); builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { result.confirm(); } }); builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { result.cancel(); } }); builder.setCancelable(false); builder.create(); builder.show(); return true; }; @Override //处理javascript中的prompt //message为网页中对话框的提示内容 //defaultValue在没有输入时,默认显示的内容 public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) { //自定义一个带输入的对话框由TextView和EditText构成 final LayoutInflater factory = LayoutInflater.from(Activity01.this); final View dialogview = factory.inflate(R.layout.prom_dialog, null); //设置TextView对应网页中的提示信息 ((TextView) dialogview.findViewById(R.id.TextView_PROM)).setText(message); //设置EditText对应网页中的输入框 ((EditText) dialogview.findViewById(R.id.EditText_PROM)).setText(defaultValue); Builder builder = new Builder(Activity01.this); builder.setTitle("带输入的对话框"); builder.setView(dialogview); builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //点击确定之后,取得输入的值,传给网页处理 String value = ((EditText) dialogview.findViewById(R.id.EditText_PROM)).getText().toString(); result.confirm(value); } }); builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { result.cancel(); } }); builder.setOnCancelListener(new DialogInterface.OnCancelListener() { public void onCancel(DialogInterface dialog) { result.cancel(); } }); builder.show(); return true; }; @Override //设置网页加载的进度条 public void onProgressChanged(WebView view, int newProgress) { Activity01.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress * 100); super.onProgressChanged(view, newProgress); } @Override //设置应用程序的标题title public void onReceivedTitle(WebView view, String title) { Activity01.this.setTitle(title); super.onReceivedTitle(view, title); } }); //连接按钮事件监听 mButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { try { //取得编辑框中我们输入的内容 String url = mEditText.getText().toString(); //判断输入的内容是不是网址 if ( URLUtil.isNetworkUrl(url) ) { //装载网址 mWebView.loadUrl(url); } else { mEditText.setText("输入网址错误,请重新输入"); } } catch (Exception e) { Log.e(DEBUG_TAG, e.toString()); } } }); } public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { //返回前一个页面 mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); } }

当然要访问web的话,不要忘了在AndroidManifest.xml文件中加入Web权限申请

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

运行后的效果如下所示:

Android中WebView控件的使用_第3张图片

更多相关文章

  1. Android Studio 新建编辑条 点击按钮显示控件中的内容
  2. android 关于listview scrollview 底部 控件无法显示的两个解决
  3. android TextView控件属性列表
  4. Android之PopupWindow弹出对话框 Android之PopupWindow弹出对话
  5. android 常用控件一览(从底层分析,为自定义控件做下小铺垫)
  6. Android中日期和时间控件的使用
  7. Android 常用控件讲解
  8. Android给控件添加默认点击效果
  9. android控件常用属性区别

随机推荐

  1. android中json的序列化与反序列化
  2. Android之Service设置android:process作
  3. android 程序调试出现source not found的
  4. Android(安卓)画三角形shape
  5. 老罗的Android之旅
  6. Android测试之Monkey
  7. Android(安卓)Stuio 下载链接(0.1.1)
  8. (android 实战总结)android对html支持接
  9. Android输入法遮挡了输入框,使用android:f
  10. Android 中不弹出软键盘的方法