当前位置: 移动技术网 > IT编程>移动开发>Android > Android实现带进度条的WebView

Android实现带进度条的WebView

2020年03月09日  | 移动技术网IT编程  | 我要评论

2012nba总决赛第五场录像,天残拾芳录txt,所嫁非农

在加载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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网