WebView控件的使用记录
1、在布局中添加WebView控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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="match_parent" />
</LinearLayout>
2、添加权限
<uses-permission android:name="android.permission.INTERNET"/>
3、在Activity中设置控件
①加载HTML的字符串
- Activity代码
public class WebActivity extends Activity
{
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_layout);
//获取控件
webView = (WebView) findViewById(R.id.webView1);
//加载html的字符串
webView.loadData("<html><body>You scored <b>192</b> points.</body></html>", "text/html", null);
}
}
- 效果图
②通过地址加载网页
- Activity代码
public class WebActivity extends Activity
{
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_layout);
webView = (WebView) findViewById(R.id.webView1);
//加载的资源
webView.loadUrl("http://www.baidu.com");
//设置网页和Webview一样宽
WebSettings settings = webView.getSettings();
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
//启用支持javascript
settings.setJavaScriptEnabled(true);
//为让网页在WebView中打开,覆盖WebView默认使用第三方或系统默认浏览器打开网页
webView.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//true:控制在webview中打开
//false:调用浏览器打开
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);
}
});
}
}
③当点击物理返回键,不是退出程序而是返回上一页面时。需要覆写onKeyDown
- 代码如下
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_BACK)
{
//判断能否返回上一个页面
if (webView.canGoBack())
{
webView.goBack();//返回上一页面
return true;
}
else
{
finish();
}
}
return super.onKeyDown(keyCode, event);
}
⑤判断网页的加载过程
webView.setWebChromeClient(new WebChromeClient()
{
@Override
public void onProgressChanged(WebView view, int newProgress) {
Log.i("myout", "newProgress = " + newProgress);
}
});
- 加载页面过程中log的打印情况(每次打开完成后最后都会打印出100,拿着个弄个进度条还不错)
11-19 14:52:55.696: I/myout(1904): newProgress = 10
11-19 14:52:55.832: I/myout(1904): newProgress = 14
11-19 14:52:55.836: I/myout(1904): newProgress = 18
11-19 14:52:55.836: I/myout(1904): newProgress = 20
11-19 14:52:55.836: I/myout(1904): newProgress = 28
11-19 14:52:55.844: I/myout(1904): newProgress = 34
11-19 14:52:55.844: I/myout(1904): newProgress = 40
11-19 14:52:55.844: I/myout(1904): newProgress = 44
11-19 14:52:55.844: I/myout(1904): newProgress = 46
11-19 14:52:55.928: I/myout(1904): newProgress = 81
11-19 14:52:56.024: I/myout(1904): newProgress = 89
11-19 14:52:56.120: I/myout(1904): newProgress = 100
我的感受
- 居然又搞忘加权限了~~o(>_<)o ~~
- 可以直接填入html的标签语言挺方便的
- 可以放入离线的网页,放在项目asset文件夹中。例如我放了个baidu.html离线文件在asset根目录,然后就可以通过webView.loadUrl(“file:///android_asset/baidu.html”);调用
想说的话
- 博客坚持写,不管怎样,今后学习了新的东西就在这里记录一下,以便今后回顾,也希望小小笔记能帮助你们
- 如果内容有什么地方不对,望吐槽,希望大家能一起学习和成长
- 来一句:可以批判代码,但不能进行人生攻击,有好的对待每一个程序员,但指出问题要犀利、一针见血。