博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中使用WebView, WebChromeClient和WebViewClient加载网页
阅读量:5166 次
发布时间:2019-06-13

本文共 1982 字,大约阅读时间需要 6 分钟。

在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)

转载于:https://www.cnblogs.com/qiaoxu/p/4018311.html

你可能感兴趣的文章
求出斐波那契数组
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
抛弃IIS,利用FastCGI让Asp.net与Nginx在一起
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>