首页

文章

android中webview 怎么实现网页加载时显示加载进度

发布网友 发布时间:2022-04-19 19:13

我来回答

2个回答

懂视网 时间:2022-05-12 05:02

这篇文章主要为大家详细介绍了Android仿微信加载H5页面进度条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

Android中WebView打卡前端页面时受到网路环境,页面内容大小的影响有时候会让用户等待很久。显示一个加载进度条可以提升很大的体验。微信内访问H5页面加载效果不错,效仿着写了一个。

1.实现

1-1.自定义类继承WebView类

class ProgressWebView(context: Context, attr: AttributeSet) : WebView(context, attr) {

 /**
 *xml布局中使用,所以用两个构造参数的构造函数
 */

 private var progressBar: ProgressBar? = null

 /**
 *初始化属性操作
 */
 init {

 /**
 *设置ProgressBar是横向
 */
 progressBar = ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal)

 /**
 *设置进度条属性
 */
 progressBar!!.progressDrawable = context.resources.getDrawable(R.drawable.webview_hori_progress)

 /**
 *设置ProgressBar的布局参数
 */
 val layoutParams = FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, 10, 0)

 /**
 *绑定参数
 */
 progressBar!!.layoutParams = layoutParams

 /**
 *将ProgressBar添加到WebView上 默认头部
 */
 addView(progressBar)

 /**
 *设置WebView辅助类WebChromeClient,获取实时加载进度
 */
 setWebChromeClient(object : WebChromeClient() {
 override fun onProgressChanged(webview: WebView?, progress: Int) {
 super.onProgressChanged(webview, progress)

 Log.d("progressView", progress.toString())
 if (progress == 100)
 progressBar!!.visibility = View.GONE
 else {
 progressBar!!.visibility = View.VISIBLE

 /**
 *设置进度参数
 */
 progressBar!!.progress = progress

 }
 }

 })

 }
}

看下设置的加载进度条的属性,webview_hori_progress.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

 <!--最下层item属性-->
 <item>
 <shape>
 <!--无圆角-->
 <corners android:radius="0dp" />
 <!--线条颜色-->
 <gradient
 android:endColor="#FFE4E3E3"
 android:startColor="#FFE4E3E3" />
 </shape>
 </item>

 <!--上层item属性-->
 <item>
 <clip>
 <shape>
 <!--无圆角-->
 <corners android:radius="0dip" />
 <!--线条颜色 渐变,由深到浅-->
 <gradient
 android:centerColor="#96EF1627"
 android:endColor="#50F53D4B"
 android:startColor="#FFEF1627" />
 </shape>
 </clip>
 </item>
</layer-list>

1-2.xml 布局中引用

 <com.ypl.csdndemo.ProgressWebView
 android:id="@+id/wvProgress"
 android:layout_width="match_parent"
 android:layout_height="match_parent"/>

1-3.代码实现

 /**
 *android kotlin 的拓展,导入此包 使用到的组件不用findViewById
 */
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

 override fun onCreate(savedInstanceState: Bundle?) {
 super.onCreate(savedInstanceState)

 setContentView(R.layout.activity_main)

 /**
 *WebView设置属性
 */
 val setting = wvProgress.settings

 /**
 *本地缓存无则网络
 */
 setting.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK

 /**
 *设置识别javascript代码
 */
 setting.javaScriptEnabled = true

 /**
 *纵向scrollbar去除
 */
 wvProgress.isVerticalScrollBarEnabled =false

 /**
 *加载页面
 */
 wvProgress.loadUrl("

热心网友 时间:2022-05-12 02:10

android中只需要给webView注册一个事件即可实现加载进度。
以下是具体实现代码:
1.从webView中获取设置
WebSettings sws = webView.getSettings();
sws.setSupportZoom(true);
sws.setBuiltInZoomControls(true);
webView.setInitialScale(25);
webView.getSettings().setUseWideViewPort(true);

2.注册setWebChromeClient事件
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activity和Webview根据加载程度决定进度条的进度大小
// 当加载到100%的时候 进度条自动消失
//WebViewProgressActivity.this.setTitle("Loading...");
//WebViewProgressActivity.this.setProgress(progress * 100);
if (progress == 100) {
progressBar.setVisibility(View.GONE);
//WebViewProgressActivity.this.setTitle("完成");
}
}
});

3.注意在onProgressChanged中处理进度,progress就是进度值。
年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 在小度上已扫码开通腾讯视频VIP,为什么还是不能看VIP视频?_问一问 安卓编程webview怎样加载一个网页并修改后再显示出来 android webview加载网页很慢,而浏览器很快 为什么Web View加载不出网页 如何使用webview加载网页 香菇炖鸡汤有点坏了,还能喝吗 新鲜香菇放几天还能吃吗 香菇鸡汤放冰箱几天不能喝 隔夜的香菇汤可以吃吗 香菇炖鸡汤隔了一夜有白色泡沫还能吃吗? 香菇炖鸡第二天表面有泡沫还能吃吗? 冰箱里放一天的香菇炖鸡还能吃吗 干香菇炖鸡汤煮熟之后再放一天会产生毒素吗? 蘑菇鸡汤可以隔夜喝吗 香菇炖鸡过夜能吃吗 隔夜的鸡肉和蘑菇还可以吃吗 没放冰箱昨天的天气,香菇炖鸡第二天还能吃吗? 香菇炖鸡放炖锅炖到隔天可以吃吗? 香菇炖鸡第二天还能吃吗 隔夜的香菇炖鸡有毒吗 如何获得WebView网页加载完成这个事件 求助,webview加载网页白屏 怎么获取webview真正加载网页完成的回调 怎么用WebView加载本地html android中WebView为什么载入不全的网页 用webview来加载的网页,有办法修改网页的背景色什... 如何使用webView打开一个网址 Android 使用webview加载网页是 希望使用的浏览器... ios webview 加载本地html文件为什么显示不出来 android webview载入网页 网页中文本框输入的问题 android webview 加载网页。当修改样式之后,无法更新 关于Android中WebView在加载网页的时候,怎样应用... webview加载网页 怎样将网页数据传递给android 如果炒股,本金是一万,如果赔了,要赔多少钱? 购买的股票最多赔到什么程度 炒股本金赔完还会再赔吗? 炒股最多赔多少钱?? 炒股票能有多大风险,能赚到钱吗 炒股真的会赔得血本无归吗?请看问题补充 炒股会赔多少钱?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com