WebView的简单使用
1.首先看下调用系统的自带浏览器或者自己下载的浏览器
<pre name="code" class="java">Uri uri=Uri.parse(url);//url为你要的链接地址
Intent intent =new Intent(Intent.ACTION_VIEW,Uri);
startActivity(intent);
2.若要自己实现一个浏览器,只需要在布局文件中差入WebView即可
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
</WebView>
还必须使用loadUrl();方法
webView=(WebView) findViewById(R.id.webView);
webView.loadUrl("http://baidu.com");
并且在清单文件中加入网络访问权限
<manifest>
<uses-permission android:name="android.permission.INTERNET"/>
...
</manifest>
但是如此的话还是会去默认调用系统自带的浏览器
3.要使WebView自己加载效果则必须加入另一个方法去覆盖原始的WebView调用方法
WebViewClient帮助WebView去处理一些页面控制的请求通知
webView.setWebViewClient(new WebViewClient());
如果以上还不行的话,就重写WebViewClient()中的方法
中使其返回值
使用view.loadUrl(url);
True:控制网页在WebView中去打开
flase:控制第三方或系统自带
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {<span style="white-space:pre"> </span>
// TODO Auto-generated method stub
<span style="white-space:pre"> </span>return true;
}
4.在WebView中使用Javascript
启用JavaScript可以通过WebView中带有的WebSetting来启用它
你可以通过getSettings()来获取WebSettings的值,
然后通过setJavaScriptEnabled()来启用JavaScript
WebView webView=(WebView)findViewById(R.id.webview);
WebSetings webSettings=webView.getSettings();
webSettings.setJavaScriptEnabled(true);
//则可以支持JavaScript的脚本语言
5.后退与前进
当你的WebView覆盖URL加载,他会自动生成历史访问记录,你可以通过goBack()
或goForward()向前或向后访问过的站点,否则一旦按了返回键则就直接退出了应用
给人一种很不好的体验
@Override
public boolean onKeyDown(int keyCode,KeyEvent event)
{
if(keyCode==KeyEvent.KEYCEDE_BACK)
{
if(webView.canGoBack())
{
webView.goBack();
return true;
}
else
{
System.exit(0);//退出程序
}
}
return super.onKeyDown(keyCode,event);
}
7判断页面加载过程
直观显示页面的加载过程
制作进度条给用户以良好的体验效果
private ProgressDialog dialog;
webView.setWebChromeClient(new WebChromeClient()
{
@Override
public void onProgressChanged(WebView view,int newProgress)
{
//newProgress 是1到100的数字,正好从1--100的标识进度条
if(newProgress==100)
{//加载完成
closeProgress();
}
else
{
//加载中,打开ProgressDialog
openProgress(newProgress);
}
}
});
private void closeProgress()
{
if(dialog!=null&&dialog.isShowing())
{
dialog.dismiss();
dialog=null;
}
}
private void openProgress(int newProgress)
{
if(dialog==null)
{
dialog=new ProgressDialog(MainActivity.this);
dialog.setTitle("正在加载");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(newProgress);
dialog.show();
}
else
{
dialog.setProgress(newProgress);
}
}
8.WebView缓存的运用
使用WebSettings settings=webView.getSettings();
优先使用缓存
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
不适用缓存
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
nai_ba: eeennn