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

WebView的简单使用

2015-07-31 15:20 441 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: