当前位置: 首页 > news >正文

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

{

final Activity activity = this;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

this.getWindow().requestFeature(Window.FEATURE_PROGRESS);

setContentView(R.layout.main);

WebView webView = (WebView) findViewById(R.id.webView);


webView.getSettings().setJavaScriptEnabled(true);

webView.getSettings().setSupportZoom(true);
//点击链接在当前browser中响应,而不是新开Android系统browser中响应该链接

webView.setWebChromeClient(new WebChromeClient()

{

public void onProgressChanged(WebView view, int progress)

{

activity.setTitle("Loading...");

activity.setProgress(progress * 100);

if(progress == 100){

activity.setTitle(R.string.app_name);

}

}

);

webView.setWebViewClient(new WebViewClient() {



public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)

{ // Handle the error



}



public boolean shouldOverrideUrlLoading(WebView view, String url)

{

view.loadUrl(url);

return true;

}

});

webView.loadUrl("http://www.sohu.com");

}

}


而进度条的使用是在new出一个setWebChromeClient后,可以在内部类中写 onProgressChanged事件


在WebView的设计中,不是什么事都要WebView类干的,有些杂事是分给其他人的,这样WebView专心干好自己的解析、渲染工作就行了。WebViewClient 就是帮助WebView处理各种通知、请求事件的,具体来说包括:

WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等


判断加载的页面URL地址是否正确:
if(URLUtil.isNetworkUrl(url)==true)

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

相关文章:

  • 多态的好处和弊端以及多态的理解
  • 要乐观对待生活
  • web计算器
  • iptables的配置文件/etc/sysconfig/iptables不存在怎么办
  • MySQL控制(关闭、打开)自动提交功能
  • beego框架之orm模块——sqlite
  • 数据库的连接池
  • JavaWeb学习总结(五十一)——邮件的发送与接收原理
  • xml文件的读取
  • Java 反射机制(一)
  • fail-fast
  • UVA11212 EditingaBook ( IDA*搜索)
  • TreeMap的介绍
  • Treemap的应用
  • 《Effective C++》——条款04:确定对象使用前已先被初始化
  • 【Amaple教程】5. 插件
  • 【刷算法】求1+2+3+...+n
  • leetcode386. Lexicographical Numbers
  • LeetCode算法系列_0891_子序列宽度之和
  • linux学习笔记
  • Mocha测试初探
  • MYSQL 的 IF 函数
  • MySQL-事务管理(基础)
  • Shadow DOM 内部构造及如何构建独立组件
  • tensorflow学习笔记3——MNIST应用篇
  • Vue2 SSR 的优化之旅
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 关于for循环的简单归纳
  • 前端技术周刊 2019-02-11 Serverless
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 删除表内多余的重复数据
  • 线性表及其算法(java实现)
  • 小程序 setData 学问多
  • 移动端解决方案学习记录
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 浅谈sql中的in与not in,exists与not exists的区别
  • "无招胜有招"nbsp;史上最全的互…
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (4)STL算法之比较
  • (java)关于Thread的挂起和恢复
  • (笔试题)分解质因式
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转)四层和七层负载均衡的区别
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递