Android WebView 加载横向进度条
2016-06-03 18:22
453 查看
第一步:在drawble目录下,创建 progressbar_mini.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 设置背景#F5F5F5 #BEBEBE-->
<item android:id="@android:id/background">
<shape>
<gradient
android:angle="270"
android:centerY="0.5"
android:endColor="#FFFFFF"
android:startColor="#FFFFFF" />
</shape>
</item>
<!-- 加载中的样式#165CBC #85B0E9-->
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<gradient
android:angle="270"
android:centerY="0.5"
android:endColor="#A8A8A8"
android:startColor="#CCCCCC" />
</shape>
</clip>
</item>
<!-- 加载进度的样式 start是上部,end是下半部分 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<gradient
android:angle="270"
android:centerY="0.5"
android:endColor="#A8A8A8"
android:startColor="#CCCCCC" />
</shape>
</clip>
</item>
</layer-list>
第二步:在style文件里,引用并且继承webview的横向的progressbar <!-- 自定义进度条 -->
<style name="ProgressBar_Mini" parent="@android:style/Widget.ProgressBar.Horizontal">
<item name="android:maxHeight">5dip</item>
<item name="android:minHeight">5dip</item>
<item name="android:indeterminateOnly">false</item>
<item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
<item name="android:progressDrawable">@drawable/progressbar_mini</item>
</style>
第三步:在布局中引用<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include layout="@layout/view_title" />
<ProgressBar
android:id="@+id/actAgreementPb"
android:layout_width="match_parent"
android:layout_height="5dp"
style="@style/ProgressBar_Mini"
/>
<WebView
android:id="@+id/wv_agreement"
android:layout_height="0dip"
android:layout_width="match_parent"
android:layout_weight="1"
/>
</LinearLayout>
第四步:代码中通过监听webview的加载进度方式
//显示进去条
webview.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if (newProgress >= 100) {
pb.setVisibility(View.GONE);
}else {
if (pb.getVisibility() == View.GONE) {
pb.setVisibility(View.GONE);
}else
{
pb.setVisibility(View.VISIBLE);
}
pb.setProgress(newProgress);
}
}
});
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 设置背景#F5F5F5 #BEBEBE-->
<item android:id="@android:id/background">
<shape>
<gradient
android:angle="270"
android:centerY="0.5"
android:endColor="#FFFFFF"
android:startColor="#FFFFFF" />
</shape>
</item>
<!-- 加载中的样式#165CBC #85B0E9-->
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<gradient
android:angle="270"
android:centerY="0.5"
android:endColor="#A8A8A8"
android:startColor="#CCCCCC" />
</shape>
</clip>
</item>
<!-- 加载进度的样式 start是上部,end是下半部分 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<gradient
android:angle="270"
android:centerY="0.5"
android:endColor="#A8A8A8"
android:startColor="#CCCCCC" />
</shape>
</clip>
</item>
</layer-list>
第二步:在style文件里,引用并且继承webview的横向的progressbar <!-- 自定义进度条 -->
<style name="ProgressBar_Mini" parent="@android:style/Widget.ProgressBar.Horizontal">
<item name="android:maxHeight">5dip</item>
<item name="android:minHeight">5dip</item>
<item name="android:indeterminateOnly">false</item>
<item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
<item name="android:progressDrawable">@drawable/progressbar_mini</item>
</style>
第三步:在布局中引用<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include layout="@layout/view_title" />
<ProgressBar
android:id="@+id/actAgreementPb"
android:layout_width="match_parent"
android:layout_height="5dp"
style="@style/ProgressBar_Mini"
/>
<WebView
android:id="@+id/wv_agreement"
android:layout_height="0dip"
android:layout_width="match_parent"
android:layout_weight="1"
/>
</LinearLayout>
第四步:代码中通过监听webview的加载进度方式
//显示进去条
webview.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if (newProgress >= 100) {
pb.setVisibility(View.GONE);
}else {
if (pb.getVisibility() == View.GONE) {
pb.setVisibility(View.GONE);
}else
{
pb.setVisibility(View.VISIBLE);
}
pb.setProgress(newProgress);
}
}
});
相关文章推荐
- CAShapeLayer的简单实用(2)
- Android高级图片滚动控件,编写3D版的图片轮播器
- iOS实践:天气App
- make my android ps command on NDK
- System.exit(0)和 System.exit(1)的区别
- Android EditText 文本长度限制(按照一个汉字占俩长度 类似字节)
- 第三方Jar不打进Apk
- 关于 timeIntervalSince1970 计算出错的问题(4s)
- Cordova之Android环境搭建
- Android 5.0状态栏通知图标的实现
- android getwidth 为0的情况解决
- 关于广播接受者的问题
- Pod管理的iOS项目修改工程名
- android webview H5开发若干问题之问题三:android和js交互问题
- NSUserDefaults.standardUserDefaults().boolForKey
- Android安全机制(2) Android Permission权限控制机制
- 移动端1像素边框问题的解决方案
- android下数据库的增删改查
- 开发一流的 Android SDK: Fabric SDK 的创建经验
- android下数据库的创建