Android中使用WebView, WebChromeClient和WebViewClient加载网页
在android应用中,有时要加载一个网页,如果能配上一个进度条就更好了,而android 中提供了其很好的支持,
其中webView的一系列用法,比如
webView.getSettings().setJavaScriptEnabled(true); //设置可以使用javascript
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); //设置滚动条风格
webView.setHorizontalScrollBarEnabled(false);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true); //设置可以支持缩放
webView.setInitialScale(25); //为25%,最小缩放等级 ,可以在这里根据需求来设置缩放比例.
webView.setHorizontalScrollbarOverlay(true);
下面是一个例子程序,先帖:
主程序:
public class WebPageLoader extends Activity
02
{
03
final Activity activity = this;
04
@Override
05
public void onCreate(Bundle savedInstanceState)
06
{
07
super.onCreate(savedInstanceState);
08
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
09
setContentView(R.layout.main);
10
WebView webView = (WebView) findViewById(R.id.webView);
11
webView.getSettings().setJavaScriptEnabled(true);
12
webView.getSettings().setSupportZoom(true);
//点击链接在当前browser中响应,而不是新开Android系统browser中响应该链接
13
webView.setWebChromeClient(new WebChromeClient()
14
{
15
public void onProgressChanged(WebView view, int progress)
16
{
17
activity.setTitle("Loading...");
18
activity.setProgress(progress * 100);
19
if(progress == 100){
20
activity.setTitle(R.string.app_name);
21
}
22
}
23
);
24
webView.setWebViewClient(new WebViewClient() {
25
26
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
27
{ // Handle the error
28
29
}
30
31
public boolean shouldOverrideUrlLoading(WebView view, String url)
32
{
33
view.loadUrl(url);
34
return true;
35
}
36
});
37
webView.loadUrl("http://www.sohu.com");
38
}
39
}
而进度条的使用是在new出一个setWebChromeClient后,可以在内部类中写 onProgressChanged事件
在WebView的设计中,不是什么事都要WebView类干的,有些杂事是分给其他人的,这样WebView专心干好自己的解析、渲染工作就行了。WebViewClient 就是帮助WebView处理各种通知、请求事件的,具体来说包括:
WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等
判断加载的页面URL地址是否正确:
if(URLUtil.isNetworkUrl(url)==true)
最新文章
- 将表里的数据批量生成INSERT语句的存储过程 增强版
- Golang 语法学习笔记
- How do I see all foreign keys to a table or column?
- iTerm2 cheatsheet (from github)
- mybatis 基础1(动态代理)
- nodejs系列(二)REPL交互解释 事件循环
- 夺命雷公狗—angularjs—7—多条数据的遍历
- 《Java编程那点事儿》读书笔记(六)——异常处理
- 树莓派学习路程No.1 树莓派系统安装与登录 更换软件源 配置wifi
- ASP.NET MVC基础学习
- Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等
- Java基础---泛型、集合框架工具类:collections和Arrays
- JaveScript基础(2)之数据类型转换和常用字符串的操作方法
- Redis常用数据类型和事物以及并发
- WinForm中使用BackgroundWorker异步加载数据并使用进度条
- easyui webapi
- HIVE点滴:group by和distinct语句的执行顺序
- Exp9 20155218 Web安全基础实践
- redis for windows安装
- Informix存储过程