Android实现带进度条的WebView
程序员文章站
2023-12-24 08:19:15
在加载h5页面的时候,可能由于网络、页面内容复杂度等原因,导致加载过程出现空白,加上进度条可以有效提高用户体验
一、自定义progresswebview类
public c...
在加载h5页面的时候,可能由于网络、页面内容复杂度等原因,导致加载过程出现空白,加上进度条可以有效提高用户体验
一、自定义progresswebview类
public class progresswebview extends webview { private progressbar progressbar; public progresswebview(context context, attributeset attrs) { super(context, attrs); progressbar = new progressbar(context, null, android.r.attr.progressbarstylehorizontal); progressbar.setlayoutparams(new layoutparams(layoutparams.fill_parent, 5, 0, 0)); drawable drawable = context.getresources().getdrawable(r.drawable.progress_bar_states); progressbar.setprogressdrawable(drawable); addview(progressbar); // setwebviewclient(new webviewclient(){}); setwebchromeclient(new webchromeclient()); //是否可以缩放 getsettings().setsupportzoom(true); getsettings().setbuiltinzoomcontrols(true); } public class webchromeclient extends android.webkit.webchromeclient { @override public void onprogresschanged(webview view, int newprogress) { if (newprogress == 100) { progressbar.setvisibility(gone); } else { if (progressbar.getvisibility() == gone) progressbar.setvisibility(visible); progressbar.setprogress(newprogress); } super.onprogresschanged(view, newprogress); } } @override protected void onscrollchanged(int l, int t, int oldl, int oldt) { layoutparams lp = (layoutparams) progressbar.getlayoutparams(); lp.x = l; lp.y = t; progressbar.setlayoutparams(lp); super.onscrollchanged(l, t, oldl, oldt); } }
二、布局文件标签写成自定义的类,使用和一般webview一致
最后贴一下drawable下的progress_bar_states
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@android:id/background"> <shape> <corners android:radius="2dp" /> <gradient android:angle="270" android:centercolor="#e3e3e3" android:endcolor="#e6e6e6" android:startcolor="#c8c8c8" /> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="2dp" /> <gradient android:centercolor="#4aea2f" android:endcolor="#31ce15" android:startcolor="#5fec46" /> </shape> </clip> </item> </layer-list>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。