WebView本质,还是一个View, 和Button ImageView等组件类似,不过是可以通过其访问网页,访问网页有两种形式1:通过本地浏览器打开网页,2:直接通过webView访问
package com.phone.day22_webview;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
/**
* WebView 加载网页
*
*
*
* @author Mr.Zhao
*
*/
public class MainActivity extends Activity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView1);
// 一定要将url 写全了 加上 http
/**
* Uri 统一资源标识符: 格式: schema:// host:port/path 约束://主机名:端口号/路径 tel://
* sms:// sendsms:// Url http://
*
*/
//注意通过此方法,已经跳转出了原应用,是通过手机的浏览器访问网页
webView.loadUrl("http://www.baidu.com");
// 可以加载本地html 文件 ,本地文件存放在:assets 文件中
//本地文件用:webView.loadUrl("file:///android_asset/XX.html");
WebSettings settings = webView.getSettings();
// 支持js语言
settings.setJavaScriptEnabled(true);
// 设置支持页面缩放
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);
// 自动将网页设置为一个合理的比例 显示出来
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
// 在当前webView中 打开 网页(此时是通过应用本身访问网页)
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
// 返回值为true 则调用当前的WebView 显示 为false 则 调用系统默认浏览器 显示
return true;
}
});
// 代表着加载的进度
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
super.onProgressChanged(view, newProgress);
if (newProgress == 100) {
// 加载完成
} else {
// 加载中
}
}
});
}
/**
*
* 监听按键
*
* -- 物理按键与软键盘
* 用WebView点链接看了很多页以后为了让WebView支持回退功能,
* 需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,
* 点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面(记忆功能)
*
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
// 判断按下的是返回键 并且 webView 是可以返回上一级的时候
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
//返回上一级
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}