您的位置:首页 > 移动开发

Android-WebView初体验

2015-11-19 23:19 399 查看

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”);调用

想说的话

博客坚持写,不管怎样,今后学习了新的东西就在这里记录一下,以便今后回顾,也希望小小笔记能帮助你们

如果内容有什么地方不对,望吐槽,希望大家能一起学习和成长

来一句:可以批判代码,但不能进行人生攻击,有好的对待每一个程序员,但指出问题要犀利、一针见血。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: