首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一款Android WebView进度条显示控件,使其加载进度平滑过渡。

一款Android WebView进度条显示控件,使其加载进度平滑过渡。

原创
作者头像
Jingbin
修改于 2019-09-24 03:09:06
修改于 2019-09-24 03:09:06
2.6K0
举报
文章被收录于专栏:Android 技术栈Android 技术栈

WebProgress

一款Android WebView进度条显示控件,使其加载进度平滑过渡。

GitHub地址:WebProgress

Gif Preview

演示图
演示图

gif可能有点卡,可下载使用此控件的WebView项目查看:网页浏览器

Use

  • 建议直接将类拷贝到项目中:WebProgress
  • xml文件引入:
代码语言:txt
复制
 <me.jingbin.library.WebProgress
         android:id="@+id/progress"
         android:layout_width="match_parent"
         android:layout_height="2dp" />
  • 显示处理:
代码语言:txt
复制
 mProgress.show(); // 显示
 mProgress.setWebProgress(50);              // 设置进度
 mProgress.setColor("#D81B60");             // 设置颜色
 mProgress.setColor("#00D81B60","#D81B60"); // 设置渐变色
 mProgress.hide(); // 隐藏

in WebView

  • 显示进度条:
代码语言:txt
复制
mWebView.loadUrl(mUrl);
mProgress.show();
  • 处理返回进度:
代码语言:txt
复制
@Override
public void onProgressChanged(WebView view, int newProgress) {
    super.onProgressChanged(view, newProgress);
    mProgress.setWebProgress(newProgress);
}
  • 页面加载结束时:
代码语言:txt
复制
 @Override
 public void onPageFinished(WebView view, String url) {
    // html加载完成之后,无网隐藏进度条
    if (!CheckNetwork.isNetworkConnected(this)) {
        mProgress.hide();
    }
    super.onPageFinished(view, url);
}

Thanks

此类是从项目Justson/AgentWeb-WebIndicator中将处理WebView进度条剥离出来的,在此基础上进行优化后合并为一个类,便于导入到自己的项目中。其中大部分代码出自原作者,感谢作者的开源精神。

优化处:

  • 1.增加能显示进度渐变色
  • 2.修复progress同时返回两次100时进度条出现两次
  • 3.当一条进度没跑完,又点击其他链接开始第二次进度时,第二次进度不出现
  • 4.修改消失动画时长,使其消失时可以看到进度跑完

End

  • 有问题或更好的建议,欢迎提Issues,我会及时处理,谢谢。
  • 最后附一遍GitHub地址😁:WebProgress

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
(清晰易懂版)(multi)map和set--C++
前面我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间一般没有紧密的关联关系,比如交换一下,他依旧是序列式容器。顺序容器中的元素是按他们在容器中的存储位置来顺序保存和访问的。
小志biubiu
2025/02/27
1200
【C++】map和set使用
前面我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间一般没有紧密的关联关系,如交换⼀下,他依旧是序列式容器。顺序容器中的元素是按他们在容器中的存储位置来顺序保存和访问的
用户11290673
2024/10/16
1580
C++ STL 中的 map:高效管理键值对的有序容器
map的声明如下,Key就是map底层关键字的类型,T是map底层value的类型,set默认要求Key支持小于比较,如果不支持或者需要的话可以⾃⾏实现仿函数传给第⼆个模版参数,map底层存储数据的内存是从空间配置器申请的。⼀般情况下,我们都不需要传后两个模版参数。map底层是⽤红⿊树实现,增删查改效率是 O(logN) ,迭代器遍历是⾛的中序,所以是按key有序顺序遍历的。
用户11286421
2024/11/21
2660
C++:set和map的使用
一般来说,像string、vector、list、deque、forward_list等容器,这些容器的底层逻辑机构为线性序列的数据结构,所以这些容器也叫做序列式容器,序列式容器两个位置存储的值之间一般没有紧密的关联关系,如若将其交换,依旧是序列式容器。序列式容器中的元素是按他们在容器中的存储位置保存和访问的。
HZzzzzLu
2024/11/26
2130
C++:set和map的使用
【C++ map和set】数据的吟游诗:Map与Set的双城记
前面我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间一般没有紧密的关联关系,比如交换一下,他依旧是序列式容器。顺序容器中的元素是按他们在容器中的存储位置来顺序保存和访问的。
Undoom
2025/05/29
910
【C++ map和set】数据的吟游诗:Map与Set的双城记
**解锁 C++ std::map 的力量**
        前几天我们探讨了 C++ 中 set 的使用方法,今天咱们就趁热打铁,继续聊聊标准库中另一个非常重要的关联容器——map。
用户11295429
2025/06/10
1220
【C++进阶篇】C++容器完全指南:掌握set和map的使用,提升编码效率
在C++中,容器是存储和操作数据的核心工具。序列式容器(如vector、list)通过线性顺序存储数据,而关联式容器(如set、map)则通过键值对存储数据,允许更高效的查找、插入和删除。set是一个存储唯一元素的容器,内部自动排序,底层通常使用红黑树实现。它支持高效的查找和元素去重。map是存储键值对的容器,每个键都是唯一的,值可以重复,同样基于红黑树实现,提供快速的键值对查找。在需要快速检索、插入或删除元素时,set和map是非常实用的选择。
熬夜学编程的小王
2025/05/19
2170
【C++】map 和 set 在高并发环境下的性能优化秘籍,深入探讨如何利用多线程编程、锁机制优化以及数据预分配等高级技术手段,有效避免数据冲突,提高并发处理能力,实现性能的质的飞跃的专业解决
set默认要求T⽀持⼩于⽐较,如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现仿函数传给第⼆个模 版参数
逆向-落叶
2025/02/02
1530
【C++】map 和 set 在高并发环境下的性能优化秘籍,深入探讨如何利用多线程编程、锁机制优化以及数据预分配等高级技术手段,有效避免数据冲突,提高并发处理能力,实现性能的质的飞跃的专业解决
深入剖析C++ STL中的set:高效管理有序数据的利器
什么是 set? set 是 C++ STL 提供的一个模板类,基于红黑树实现,具有以下核心特性: 元素唯一:set 会自动去重,插入相同的元素时,新元素会被忽略。 自动排序:默认情况下,set 按照升序排列元素,也可以通过自定义比较器实现自定义排序。 高效操作:常见操作如插入、删除、查找的时间复杂度为 𝑂(log𝑛)。
用户11286421
2024/11/21
2290
深入剖析C++ STL中的set:高效管理有序数据的利器
C++ —— set系列的使用
https://legacy.cplusplus.com/reference/set/
迷迭所归处
2024/11/19
1250
C++ —— set系列的使用
【C++深度探索】map与set的基础介绍与实用指南
  我们之前已经接触过STL中的部分容器,比如:vector、list、deque、forward_list(C++11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。   而今天我们学习的map、set、multimap、multiset是关联式容器,关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高。   根据应用场景的不同,STL总共实现了两种不同结构的关联式容器:树型结构与哈希结构。树型结构的关联式容器主要有四种:map、set、multimap、multiset。这四种容器的共同点是:使用平衡搜索树(即红黑树)作为其底层结果,容器中的元素是一个有序的序列。下面依次介绍每一个容器。
大耳朵土土垚
2024/07/25
2050
【C++深度探索】map与set的基础介绍与实用指南
【C++】树型结构关联式容器:map/multimap/set/multisetの使用指南(27)
YY的秘密代码小屋
2024/01/23
2660
【C++】树型结构关联式容器:map/multimap/set/multisetの使用指南(27)
C++(STL):31 ---关联式容器map源码剖析
map的特性 所有元素都会根据元素的键值自动被排序 map中的pair结构 map的所有元素类型都是pair,同时拥有实值(value)和键值(key) pair的第一个元素视为键值,第二个元素视为实值 map不允许两个元素拥有相同的键值 下面是stl_pair.h中pair的定义: //代码摘录与stl_pair.h template <class _T1, class _T2> struct pair { typedef _T1 first_type; typedef _T2 second_type;
用户3479834
2021/02/03
1.8K0
C++(STL):31 ---关联式容器map源码剖析
【C++】map和set的使用
  vector、list、dequeforward_list(C++11)等,这些容器统称为 序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。那什么是关联式容器?它与序列式容器有什么区别?
用户11029129
2024/08/14
1620
【C++】map和set的使用
深度解析C++中的map的使用
map的声明如下,Key就是map底层关键字的类型,T是map底层value的类型,set默认要求Key支持小于比较,如果不支持或者需要的话可以自行实现仿函数传给第二个模版参数,map底层存储数据的内存是从空间配置器申请的。一般情况下,我们都不需要传后两个模版参数。map底层是用红黑树实现,增删查改效率是O(logN),迭代器遍历是走的中序,所以是按key有序顺序遍历的。
Undoom
2025/01/04
2580
【探寻C++之旅】第十章:map和set(STL续)
由于set和map的底层数据结构是二叉搜索树的变形——红黑树,因此我们这里先了解set和map的使用,当我们学习了红黑树之后再去讲一讲如何自己去实现set和map。
code_monnkey_
2025/05/31
1100
【探寻C++之旅】第十章:map和set(STL续)
c++ map和set_STLset和map的区别
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/02
4810
c++ map和set_STLset和map的区别
C++(STL):27 ---关联式容器set源码剖析
一、set set语法使用参阅: set的特性 set所有元素都会根据元素的键值自动被排序 set中的键值就是实值,实值就是键值 默认情况下set不允许两个元素重复 set的迭代器 不能根据set的迭代器改变set元素的值。因为其键值就是实值,实值就是键值,如果改变set元素值,会严重破坏set组织 在后面的源码中会看到,set的迭代器set<T>::iterator被定义为底层RB-tree的const_iterator。因此set的迭代器是一种constant iterators set拥有与lis
用户3479834
2021/02/03
7820
【C++】详解 set && multiset && map && multiset 的使用
​ 我们已经接触过 STL 中的部分容器,比如:vector、list、deque、forward_list 等,这些容器统称为 序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。至于 stack 和 queue,他们其实不能算是容器,而应该是**容器适配器**,是用 deque 封装的。
利刃大大
2025/02/16
1460
【C++】详解 set && multiset && map && multiset 的使用
【C++指南】你真的了解map和set吗?【下】
Key就是map底层关键字的类型,T是map底层value的类型,set默认要求Key⽀持大小⽐较。
egoist祈
2025/03/25
590
【C++指南】你真的了解map和set吗?【下】
推荐阅读
相关推荐
(清晰易懂版)(multi)map和set--C++
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档