AgentWeb , 一个简洁易用的 Android Web 库
来源:互联网 发布:信息群发软件下载 编辑:程序博客网 时间:2024/06/02 05:19
AgentWeb , 一个简洁易用的 Android Web 库
AgentWeb 介绍
AgentWeb 是一个高度封装的 Android WebView ,简单易用 , 带有进度条 、 支持文件上传 、 下载 、 简化 Javascript 通信 ,加强 Web 安全的库 。 App 下载体验
前言
WebView 可谓是每个应用必备的一个控件了 ,但是谈起它的使用 ,让很多人都不是那么喜欢它 ,比如说每个 Web 页面都需要各种一大推的 setting ,好一点的可能封装成一个 BaseWebActivity 和 BaseWebFragment ,但是重复的代码总是让有洁癖的程序员不舒服 ,而且 WebView 本身功能也不是很完善 , AgentWeb 就泥补了这些空缺 。
AgentWeb 功能
- 支持进度条以及自定义进度条
- 支持文件下载
- 支持文件断点续传
- 支持下载通知形式提示进度
- 简化 Javascript 通信
- 支持返回事件处理
- 支持注入 Cookies
- WebView 安全
为什么要使用 AgentWeb ?
七个字 ,简洁易用体验好 。 最重要的是 WebView 很多东西不支持呀 , 坑太多!
简洁易用
为什么说它简洁易用吗 ? 下面京东商城效果图 , 只需一句话 !
mAgentWeb = AgentWeb.with(this)//传入Activity .setAgentWebParent(mLinearLayout, new LinearLayout.LayoutParams(-1, -1))//传入AgentWeb 的父控件 ,如果父控件为 RelativeLayout , 那么第二参数需要传入 RelativeLayout.LayoutParams .useDefaultIndicator()// 使用默认进度条 .defaultProgressBarColor() // 使用默认进度条颜色 .setReceivedTitleCallback(mCallback) //设置 Web 页面的 title 回调 .createAgentWeb()// .ready() .go("http://www.jd.com");
你没看错 ,里面没有一句 Setting , 甚至连 WebChromeClient 都不配置就有进度条 。
Javascript 通信拼接太麻烦 ? 请看 。
//Javascript 方法function callByAndroid(){ console.log("callByAndroid") }
Android 端
mAgentWeb.getJsEntraceAccess().quickCallJs("callByAndroid");
结果
05-27 08:27:04.945 469-469/com.just.library.agentweb:web I/Info: consoleMessage:callByAndroid lineNumber:27
京东商城效果图
到了这里 , 弱弱问一句 , 你还有什么理由不使用 AgentWeb ?
浅谈进度条
为什么要谈一下进度条这个东西呢 ? 因为没有进度条的 WebView 页面体验实在太差了 ,AgentWeb 默认的进度条是一般浏览器的进度条 ,为什么采用这种进度条呢 ? 因为体验好 ,微信和QQ ,支付宝 、 UC 以及 Safari 都采用这种进度条是有他们道理的 , 我还见过应用加载 Web 页面的时候直接弹 Dialog 不可取消 ,这种恶心的做法 ,没有非常必要让用户确定情况都别弹 Dialog ,特别在用户网络不好的情况下 ,加载速度变得突奇的慢 ,那么 Dialog 就一直存在 ,用户耐性不好 ,只能把你进程杀死 。
Agentweb 视图结构
<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:layout_width="match_parent" android:layout_height="match_parent"> </WebView> <!--进度条--> <com.just.library.BaseIndicatorView android:layout_width="match_parent" android:layout_height="2dp" > </com.just.library.BaseIndicatorView> </FrameLayout>
很清晰 AgentWeb 最外层是 FrameLayout , 所以在使用 AgentWeb 的时候还需要给 FrameLayout 指定父控件(下面有使用方式) 。
引入
Gradle
compile 'com.just.agentweb:agentweb:1.2.6'
Maven
<dependency> <groupId>com.just.agentweb</groupId> <artifactId>agentweb</artifactId> <version>1.0.3</version> <type>pom</type> </dependency>
用法
Activity 使用如下
mAgentWeb = AgentWeb.with(this)//传入Activity .setAgentWebParent(mLinearLayout, new LinearLayout.LayoutParams(-1, -1))//传入AgentWeb 的父控件 ,如果父控件为 RelativeLayout , 那么第二参数需要传入 RelativeLayout.LayoutParams .useDefaultIndicator()// 使用默认进度条 .defaultProgressBarColor() // 使用默认进度条颜色 .setReceivedTitleCallback(mCallback) //设置 Web 页面的 title 回调 .createAgentWeb()// .ready() .go("http://www.jd.com");
Fragment 使用如下
@Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mAgentWeb = AgentWeb.with(this.getActivity(), this)//这里需要把 Activity 、 和 Fragment 同时传入 .setAgentWebParent((ViewGroup) view, new LinearLayout.LayoutParams(-1, -1))// 设置 AgentWeb 的父控件 , 这里的view 是 LinearLayout , 那么需要传入 LinearLayout.LayoutParams .useDefaultIndicator()// 使用默认进度条 .setReceivedTitleCallback(mCallback) //标题回调 .setSecurityType(AgentWeb.SecurityType.strict) //注意这里开启 strict 模式 , 设备低于 4.2 情况下回把注入的 Js 全部清空掉 , 这里推荐使用 onJsPrompt 通信 .createAgentWeb()// .ready()// .go(getUrl()); }
混淆
-keep public class * extends android.webkit.WebChromeClient
总结
AgentWeb 是一个把 WebView 完全代理出来 , 脱离 Activity 、 Fragment xml 布局 , Android Web 库 。
转载出处:https://github.com/Justson/AgentWeb
- AgentWeb , 一个简洁易用的 Android Web 库
- AgentWeb , 一个简洁易用的 Android Web 库
- 一个简洁易用的 Android Web 库
- AgentWeb三方android web开源库的理解和认识
- 一个简洁的 JavaScript 库
- 用bootstrap写一个简洁的网页
- 简洁大方,为自己的Android App添加一个ContextMenu
- 【web前端】简洁的VUE
- 一个简洁的管理菜单
- 一个简洁的管理菜单
- 一个程序员的简洁职业生涯规划
- 一个简洁的时钟的jsp(可以直接用)
- 用bootstrap 制作一个简洁美观的页面
- 推荐一个国产简洁易用前段框架
- 推荐一个国产简洁易用前段框架
- AndroidAnnotations一个可以让你的android代码更加简洁的框架
- AndroidAnnotations一个可以让你的android代码更加简洁的框架
- 一个基于MD风格的android对话框,代码兼容性很好,样式也非常简洁
- 判断TextView文本内容是否超出一行
- centos 配置 aliyun yum源
- 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件
- 关于使static目录下的css样式,js或img生效的配置
- 详解阿里云移动云ApsaraMobile,首建云上开发者闭环
- AgentWeb , 一个简洁易用的 Android Web 库
- 程序员资料,附下载地址,持续更新中!
- 倾力总结40条常见的移动端Web页面问题解决方案
- Mysql中group_concat函数的妙用
- 线性表的数组实现方式
- Android--------------mouth题
- hive+hbase
- 算法学习笔记15-哈希算法
- 阿里云的ECS机器部署Nodejs项目