浙江省大成建设集团有限公司网站,免费seo优化,免费的成品网站,做公司网站利润文章目录 概念介绍使用资源文件实现使用默认设置修改风格使用动画资源 使用代码实现经验总结 各位看官们大家好#xff0c;上一回中咱们说的例子是ProgressBar总结,本章回中介绍的例子是
无进度值ProgressBar。闲话休提#xff0c;言归正转#xf… 文章目录 概念介绍使用资源文件实现使用默认设置修改风格使用动画资源 使用代码实现经验总结 各位看官们大家好上一回中咱们说的例子是ProgressBar总结,本章回中介绍的例子是
无进度值ProgressBar。闲话休提言归正转让我们一起Talk Android吧 概念介绍
我们在这里说的无进度值ProgressBar表示进度条从0开始一直变化到最大值然后反复循环。这种情况用在一些没有具体进度值的过程中比如搜索无线网络。本章回中我们将介绍如何使用无进度值ProgressBar.
使用资源文件实现
使用默认设置
我们在布局中直接使用默认的进度条它会产生一个绿色的圆形进度条示例代码如下
ProgressBarandroid:layout_widthmatch_parentandroid:layout_height60dp
/ProgressBar该代码的运行效果如下
我们也可以把圆形的进度条换成水平的它会产生一个绿色的矩形进度条代码如下
ProgressBarstylestyle/Widget.AppCompat.ProgressBar.Horizontalandroid:indeterminatetrueandroid:layout_widthmatch_parentandroid:layout_height60dp
/ProgressBar注意代码中打开了indeterminate属性这样才能有反复循环的效果。下面是程序运行的效果图
修改风格
默认的进度条颜色为绿色(与App的主题有关)我们可以通过修改indeterminateDrawable的属性值来修改它的颜色示例代码如下
ProgressBarstylestyle/Widget.AppCompat.ProgressBar.Horizontalandroid:indeterminatetrueandroid:indeterminateDrawabledrawable/progress_bar_indeterminateandroid:layout_widthmatch_parentandroid:layout_height60dp
/ProgressBar
!-- progress_bar_indeterminate.xml的内容如下 --
?xml version1.0 encodingutf-8?
layer-list xmlns:androidhttp://schemas.android.com/apk/res/android
!-- 进度条背景色 --
item android:idandroid:id/backgroundshapecorners android:radius6dp /gradientandroid:startColor#33FFFFFFandroid:centerColor#33FFFFFFandroid:centerX0.75android:endColor#33FFFFFFandroid:angle0//shape
/item
!-- 第二进度条 --
item android:idandroid:id/secondaryProgressclipshapecorners android:radius6dp /gradientandroid:startColor#33FFFFFFandroid:centerColorcolor/whiteandroid:centerX0.75android:endColor#33FFFFFFandroid:angle0//shape/clip
/item!-- 前景进度条--
item android:idandroid:id/progressclipshapecorners android:radius6dp /gradientandroid:startColorcolor/whiteandroid:centerColor#F3A32Candroid:centerX0.5android:endColor#ff0000android:angle0//shape/clip
/item
/layer-list代码中的颜色是参考默认配色修改的我们将其修改成了白色-橙色-红色这样的渐变色此外为了突出白色和透明色的进度条背景我们把布局文件的背景修改成了蓝色下面是该程序的运行效果
使用动画资源
ProgressBarstylestyle/Widget.AppCompat.ProgressBar.Horizontalandroid:indeterminatetrueandroid:indeterminateDrawabledrawable/line_animation_listandroid:layout_widthmatch_parentandroid:layout_height60dp
/ProgressBar示例代码和上的一样只是indeterminateDrawable的属性值变成了line_animation_list,这是一个动画文件该动画文件也是参考源代码文件修改的只是使用了自已的配色,详细的内容将在后面的章回中介绍。下面是程序的运行效果图
使用代码实现
在布局文件中给progressBar设置最大进度值为100同时不设置indeterminate和indeterminateDrawable属性在代码中不断地修改它的进度值示例代码如下
private ProgressBar mProgressBar;
private int value 0;private class SubHandler extends Handler {Overridepublic void handleMessage(NonNull Message msg) {super.handleMessage(msg);if(value 100) {value % 100;}mProgressBar.setProgress(value);value;mSubHandler.sendMessage(message);}
}这里的核心思路在于进度条的最大进度值为100每次更新完进度值后把进度值加1当进度值到达100后将其通过取模恢复为0。注意更新进度值需要通过Handler来进行。
经验总结
实现无进度值进度条有两种方法
通过资源文件实现通过代码实现
使用资源文件实现时需要配置indeterminate和indeterminateDrawable属性。前者表示无限循环后者用来设置进度条的风格设置风格有两种一种是layer-list包含的图层文件一种是animation-list包含的动画文件。不过这两种文件都属性drawable文件。
使用代码文件实现时需要配置max属性然后在代码中通过Handler修改进度值。至于进度条的风格可以通过progressDrawable属性来设置。这个属性参考上一回中的内容就可以。
看官们关于无进度值ProgressBar的例子咱们就介绍到这里欲知后面还有什么例子且听下回分解