本文主要讲解WebView的一些常用使用方法

代码如下:

xml文件:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<WebView

android:id="@+id/webView1"

android:layout_width="match_parent"

android:layout_height="0dip"

android:layout_weight="1" />

<ProgressBar

android:id="@+id/progressBar1"

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
</LinearLayout>

1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。

2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);

3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。

webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});

4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。


public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {

webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}

5.android中webview支持javascript自定义对象

a.设置webview支持javascript. webSettings.setJavaScriptEnabled(true);

b.绑定android对象到javascript对象. addJavascriptInterface(Object obj,String interfaceName);

c.页面中调用javascript对象. javascript:window.demo.方法名称();

在w3c标准中js有 window,history,document等标准对象,同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以 为所欲为了。


public class WebViewDemo extends Activity {

private WebView mWebView;

private Handler mHandler = new Handler();

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.webviewdemo);

mWebView = (WebView) findViewById(R.id.webview);

WebSettings webSettings = mWebView.getSettings();

webSettings.setJavaScriptEnabled(true);

mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");
}
});
}
}, "demo");
mWebView.loadUrl("file:///android_asset/demo.html");
}
}
6.WebView控制进度

webView.setWebChromeClient(new WebChromeClient() {

public void onProgressChanged(WebView view, int progress) {

setTitle("页面加载中,请稍候..." + progress + "%");

setProgress(progress * 100);

if (progress == 100) {

setTitle(R.string.app_name);

progressBar.setVisibility(4);

}

}

});

最后把MainActivity的代码贴上
package com.example.webviewdemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

public class MainActivity extends Activity {
WebView webView;
ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView) findViewById(R.id.webView1);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://m.empireblue.com/mobile/providerfinder/home");
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});

webView.setWebChromeClient(new WebChromeClient() {

public void onProgressChanged(WebView view, int progress) {

setTitle("页面加载中,请稍候..." + progress + "%");

setProgress(progress * 100);

if (progress == 100) {

setTitle(R.string.app_name);
progressBar.setVisibility(4);

}

}

});

}

public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}
}

更多相关文章

  1. 初学Android,五大布局对象(六)
  2. Android中TextView中加图片,超链接,一部分字或者背景变色。不断补
  3. Android成长(二)——两个页面交互
  4. android官方下载链接最新版 (Windows版本)
  5. Android中intent传递对象和Bundle的用法
  6. Android TextView实现复制和超链接跳转
  7. [Android] Activity页面切换效果
  8. android锁屏页面的实现

随机推荐

  1. Android简单登入注册界面的实现
  2. android initlogo.rle 在32位LCD上显示
  3. XUI 一个简洁而优雅的Android原生UI框架,
  4. android 【点击输入框调出输入法前的】输
  5. audio_route 分析
  6. Android(安卓)audio_policy_configuratio
  7. Android(安卓)MediaPlayer指定文件位置播
  8. Mac环境下对android app抓包
  9. Android(安卓)AOP之AspectJ入门
  10. [Android] JNI 中传递字符串参数(String)的