带有进度条的WebView

本篇继于WebView的使用

效果图

自定义一个带有进度条的WebView

  1. package com.kongqw.kbox.view;
  2. import android.content.Context;
  3. import android.graphics.drawable.Drawable;
  4. import android.util.AttributeSet;
  5. import android.webkit.WebView;
  6. import android.widget.ProgressBar;
  7. import com.kongqw.kbox.R;
  8. import com.kongqw.kbox.listener.WebChromeClientListener;
  9. /**
  10. * Created by kongqw on 2016/3/7.
  11. * 带有进度条的WebView
  12. */
  13. public class ProgressWebView extends WebView {
  14. private ProgressBar progressbar;
  15. private WebChromeClientListener mWebChromeClientListener;
  16. public ProgressWebView(Context context, AttributeSet attrs) {
  17. super(context, attrs);
  18. // 创建一个进度条
  19. progressbar = new ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal);
  20. // 设置进度条参数(位置)
  21. progressbar.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 10, 0, 0));
  22. // 添加一个自定义的样式,系统默认的样式上下有边距
  23. Drawable drawable = context.getResources().getDrawable(R.drawable.progress_bar_states);
  24. progressbar.setProgressDrawable(drawable);
  25. // 添加进度条
  26. addView(progressbar);
  27. WebChromeClient webChromeClient = new WebChromeClient() {
  28. @Override
  29. public void onReceivedTitle(WebView view, String title) {
  30. super.onReceivedTitle(view, title);
  31. // 获取到Title
  32. if (null != mWebChromeClientListener) {
  33. mWebChromeClientListener.onReceivedTitle(title);
  34. }
  35. }
  36. };
  37. // 给WebView添加监听
  38. setWebChromeClient(webChromeClient);
  39. //是否可以缩放
  40. getSettings().setSupportZoom(true);
  41. getSettings().setBuiltInZoomControls(true);
  42. }
  43. public class WebChromeClient extends android.webkit.WebChromeClient {
  44. @Override
  45. public void onProgressChanged(WebView view, int newProgress) {
  46. // newProgress 加载进度
  47. if (newProgress == 100) {
  48. progressbar.setVisibility(GONE);
  49. } else {
  50. if (progressbar.getVisibility() == GONE) {
  51. progressbar.setVisibility(VISIBLE);
  52. }
  53. progressbar.setProgress(newProgress);
  54. }
  55. super.onProgressChanged(view, newProgress);
  56. }
  57. }
  58. @Override
  59. protected void onScrollChanged(int l, int t, int oldl, int oldt) {
  60. LayoutParams lp = (LayoutParams) progressbar.getLayoutParams();
  61. lp.x = l;
  62. lp.y = t;
  63. progressbar.setLayoutParams(lp);
  64. super.onScrollChanged(l, t, oldl, oldt);
  65. }
  66. public void setWebChromeClientListener(WebChromeClientListener listener) {
  67. mWebChromeClientListener = listener;
  68. }
  69. }

WebChromeClientListener

  1. package com.kongqw.kbox.listener;
  2. /**
  3. * Created by kongqw on 2016/3/7.
  4. */
  5. public interface WebChromeClientListener {
  6. public void onReceivedTitle(String title);
  7. }

进度条样式(progress_bar_states.xml)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <!-- 背景 -->
  4. <item android:id="@android:id/background">
  5. <shape>
  6. <corners android:radius="2dp" />
  7. <gradient
  8. android:angle="270"
  9. android:centerColor="#E3E3E3"
  10. android:endColor="#E6E6E6"
  11. android:startColor="#C8C8C8" />
  12. </shape>
  13. </item>
  14. <!-- 进度条 -->
  15. <item android:id="@android:id/progress">
  16. <clip>
  17. <shape>
  18. <corners android:radius="2dp" />
  19. <gradient
  20. android:centerColor="#4AEA2F"
  21. android:endColor="#31CE15"
  22. android:startColor="#5FEC46" />
  23. </shape>
  24. </clip>
  25. </item>
  26. </layer-list>

布局

  1. <包名.view.ProgressWebView
  2. android:id="@+id/webview"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:layout_below="@+id/title" />

使用

使用和WebView一样,参考WebView的使用即可

带有进度条的WebView的更多相关文章

  1. 自定义带进度条的WebView , 增加获取web标题和url 回掉

    1.自定义ProgressWebView package com.app.android05; import android.content.Context; import android.graph ...

  2. 仿微信中加载网页时带线行进度条的WebView的实现

    finddreams:http://blog.csdn.net/finddreams/article/details/44172639 为了仿微信中加载网页时带进度条的WebView的实现,首先我们来 ...

  3. Android 中带有进度条效果的按钮(Button)

    安卓中带有进度条效果的按钮,如下图: 1.布局文件如下activity_main.xml <RelativeLayout xmlns:android="http://schemas.a ...

  4. 一个利用 Parallel.For 并行处理任务,带有进度条(ProgressBar)的 WinForm 实例(下)

    接着上一篇:一个利用 Parallel.For 并行处理任务,带有进度条(ProgressBar)的 WinForm 实例(上) 直接贴代码了: using System; using System. ...

  5. iOS-WKWebview 带有进度条加载的ViewController【KVO监听Webview加载进度】

    前言 为什么要说 WKWebview,在之前做电子书笔记时已经提过 WKWebview 在iOS8之后已完全替代 Webview,原因就不多说了,主要还是内存过大: 封装 封装一个基于 UIViewC ...

  6. 用python语言算π值并且带有进度条

    用python算圆周率π 1.准备第三方库pip 打开cmd 输入代码:pip install requests ,随后就会成功 因为小编已经安装好了,所以就不把图截出来了 2.利用马青公式求π    ...

  7. 应用Response.Write实现带有进度条的多文件上传

    前几天,写过一篇随笔“使用RESPONSE.WRITE实现在页面的生命周期中前后台的交互”.说是交互,实际上也主要是在ASP.NET的页面周期中 从后台利用RESPONSE.WRITE向前台即时的推送 ...

  8. springboot带有进度条的上传

    一.说明 最近要做文件上传,在网上找了很久都没有一个全面的示例,特此记录下来分享给大家. 1.文件上传接口可按照springboot默认实现,也可用commons-fileupload组件,本示例使用 ...

  9. 百度开源上传组件webuploader 可上传多文件并带有进度条

    //上传多文件 function UploadMultiFile() { var uploader = WebUploader.create({ // 选完文件后,是否自动上传. auto: true ...

随机推荐

  1. jacascript document对象

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! Document 类型表示文档,或文档的根节点,这个节点是隐藏的,没有具体的节点标签:而 html 是根标 ...

  2. Protobuf java版本安装步骤

    1,安装mavena.下载apache-maven-3.2.5,链接:http://mirrors.hust.edu.cn/apache//maven/maven-3/3.2.5/binaries/b ...

  3. vue-cli 去掉严格模式:

    vue-cli 去掉严格模式: 在根目录中找到 .eslintignore 文件,添加 严格模式需要监听的目录 src/*

  4. Java网络编程基础(Netty预备知识)

    今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...

  5. Redis管理之持久化

    Redis的一大重要特征就是支持持久化. Redis提供了两种不同的持久化方式:RDB和AOF. RDB持久化可以在指定的时间间隔内生成数据集的快照.由于是定期的生成数据集的快照,所以,如果服务器出现 ...

  6. [测试题]数组(array)

    Description Input Output Sample Input1 3 2 75 4 2 Sample Output1 999999732 Sample Explanation1 Sampl ...

  7. ●HDU 3507 Print Article

    题链: http://acm.hdu.edu.cn/showproblem.php?pid=3507 题解: 斜率优化DP 一个入门题,就不给题解了,网上的好讲解很多的.   这里就只提一个小问题吧( ...

  8. bzoj 2004: [Hnoi2010]Bus 公交线路

    Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距 离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决 ...

  9. bzoj2442[Usaco2011 Open]修剪草坪 单调队列优化dp

    2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1159  Solved: 593[Submit] ...

  10. BZOJ4079 [Wf2014]Pachinko

    完整题面: 设f(i,j)表示路径经过(i,j)这个点的概率,列出方程消元. 但暴力消元的复杂度是$O((nm)^3)$,注意每一次消元只会影响前后m个方程,所以我们可以对于第i行,只存[i-m,i+ ...