带有进度条的WebView

本篇继于WebView的使用

效果图

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

package com.kongqw.kbox.view;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.webkit.WebView;
import android.widget.ProgressBar; import com.kongqw.kbox.R;
import com.kongqw.kbox.listener.WebChromeClientListener; /**
* Created by kongqw on 2016/3/7.
* 带有进度条的WebView
*/
public class ProgressWebView extends WebView { private ProgressBar progressbar;
private WebChromeClientListener mWebChromeClientListener; public ProgressWebView(Context context, AttributeSet attrs) {
super(context, attrs);
// 创建一个进度条
progressbar = new ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal);
// 设置进度条参数(位置)
progressbar.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 10, 0, 0));
// 添加一个自定义的样式,系统默认的样式上下有边距
Drawable drawable = context.getResources().getDrawable(R.drawable.progress_bar_states);
progressbar.setProgressDrawable(drawable); // 添加进度条
addView(progressbar); WebChromeClient webChromeClient = new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
// 获取到Title
if (null != mWebChromeClientListener) {
mWebChromeClientListener.onReceivedTitle(title);
}
}
};
// 给WebView添加监听
setWebChromeClient(webChromeClient); //是否可以缩放
getSettings().setSupportZoom(true);
getSettings().setBuiltInZoomControls(true);
} public class WebChromeClient extends android.webkit.WebChromeClient {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// 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);
} public void setWebChromeClientListener(WebChromeClientListener listener) {
mWebChromeClientListener = listener;
}
}

WebChromeClientListener

package com.kongqw.kbox.listener;

/**
* Created by kongqw on 2016/3/7.
*/
public interface WebChromeClientListener {
public void onReceivedTitle(String title);
}

进度条样式(progress_bar_states.xml)

<?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>

布局

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

使用

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

最新文章

  1. iOS----集成ijkplayer视频直播
  2. Mysql中的少用函数
  3. Oracle中Merge into用法总结
  4. Adaptive Backgrounds – jQuery 自适应背景插件
  5. 实战android菜单项之XML加载菜单与动态菜单项[转]
  6. jsonp跨越请求百度搜索api 实现下拉列表提示
  7. OnWndMsg处理功能
  8. MyBatis 的Mapper中有小于号的处理
  9. sql的基本知识
  10. LeetCode 852. Peak Index in a Mountain Array C++ 解题报告
  11. 读书笔记二 How Does the Internet work?
  12. Go学习笔记(只有链接)
  13. 浅谈对象的两个方法:Object.keys() ,Object.assign();
  14. GradleUserGuide中文版 19)Plugins 20)插件规范 21)Java插件
  15. jmeter --- 搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)
  16. 五大问题,详解阿里云PTS铂金版
  17. Swift Optional
  18. ansible之条件语句when
  19. WCF服务发布到IIS中去(VS2013+win7系统)
  20. mysql 数据操作 单表查询 group by 聚合函数 没有group by情况下

热门文章

  1. java中的引用传递问题
  2. [LeetCode] Reverse String II 翻转字符串之二
  3. Java集合详解二
  4. [ZJOI 2010]base 基站选址
  5. [HAOI 2007]理想的正方形
  6. codeforces 868C Qualification Rounds
  7. bzoj4011[HNOI2015]落忆枫音 dp+容斥(?)
  8. BZOJ4574 [Zjoi2016]线段树
  9. Mysql 基于GTID的主从复制(实操)
  10. 关于 Cannot forward after response has been committed的错误