带有进度条的WebView
来源:互联网 发布:知乎的折叠 编辑:程序博客网 时间:2024/04/30 00:19
带有进度条的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的使用即可
0 0
- 带有进度条的WebView
- 带有进度条的WebView
- 带有进度条的调用系统的WebView
- 带有进度条的Button
- 带有数字的进度条
- WebView:带进度条的WebView
- android的WebView进度条
- 带进度条的WebView
- 带进度条的webview
- 带进度条的WebView
- 带进度条的webview
- 带进度条的WebView
- 带进度条的WebView
- 带进度条的WebView
- 带进度条的WebView
- 【Android】带进度条的WebView
- 【Android】带进度条的WebView
- 【Android】带进度条的WebView
- DarunGrim3安装使用说明
- Java异常处理和设计
- 图片大集合
- 秒杀场景下MySQL的低效
- 斯坦福大学机器学习——因子分析(Factor analysis)
- 带有进度条的WebView
- lua 绑定c++
- Python基础——拾遗(二)
- Python -- 写Excel文件
- 通过ant来批量执行jmeter脚本,并生成报告(附: 生成报告时报“Content is not allowed in prolog”这个错误的解决方案)
- MySQL开发中常用的查询语句总结
- 高仿Android studio颜色选择器 Color Selector
- Android Service完全解析,关于服务你所需知道的一切(下)
- 运维人,你应该了解的三张武功心法图