Android自带的ProgressBar事实上也算不上丑陋,可是假设全部的App都使用一个模式的ProgressBar,那么预计用户就要崩溃了,打开不论什么一个App。擦,进度条都一模一样。
。有鉴于此。我们今天就来谈谈ProgressBar的美化问题。学会了ProgressBar的美化。那么SeekBar和RatingBar的美化应该就不在话下了,由于SeekBar和RatingBar都是继承自ProgressBar。OK,废话不多说,我们来进入今天的正题。
进度条Style的两种设置方式
正常情况下。我们在布局文件里加入一个进度条是这样的:
显示效果是这样的:
这是系统默认的情况。假设有须要。我们能够改动进度条的样式,仅仅需加入一个属性。例如以下:
这个时候显示效果例如以下:
毫无疑问。进度条变大了。
style属性就是我们用来设置进度条样式的,这样的设置方式有好几种取值。例如以下:
每一种取值都代表一种样式。我就不一一去试了。大家能够自行尝试,依据Google提供给我们的资料,我们知道。给ProgressBar设置style除了这一种方式之外,另一种方式。那就是这样:
大家注意看取值的不同。那么这样的方式的显示效果是什么样的呢?看下图:
都是转圈,可是非常明显第一个看起来更舒服一些,那么这样的设置方式也有好几种取值,例如以下:
每一种取值都代表了一种样式,大家能够自行尝试。
OK,上面是给大家简介了一下Google给我们提供的两种给ProgressBar设置Style的方式,以下我们就要探究怎么样来自己定义Style。
自己定义水平进度条样式
进度条我们能够让它转圈圈。也能够让它水平显示,水平显示我们能够通过以下随意一行代码来让我们的进度条水平显示:
style="@android:style/Widget.ProgressBar.Horizontal"
style="?
android:attr/progressBarStyleHorizontal"
仅仅只是这两行代码显示出来的水平进度条的样式有些许差异罢了。例如以下图:
这是Google给我们提供的两种样式,以下我们就要看看如何来自己定义水平进度条的样式。通过自己定义进度条来让我们的App与众不同。要自己定义水平进度条的样式。我们首先要弄明确系统的这个样式是怎么显示出来的,我们追踪
style="@android:style/Widget.ProgressBar.Horizontal"
这行代码所指向的位置,我们看到了这样一个Style:
在这个Style中,有一个progressDrawable属性,这个属性事实上就是我们的progressBar显示的样式,我们点击去看一下:
xml version="1.0" encoding="utf-8"?>
xml version="1.0" encoding="utf-8"?
>
OK,我仅仅是改动了secondaryProgress的颜色,其它的东西都没有改动。然后我再模仿Google的Style,自己定义一个Style。例如以下:
OK。这里的Style。我改动了当中的三个值,各自是progressDrawable、minHeight、maxHeight。首先将progressDrawable改动为我自己定义的进度条颜色。然后我考虑到这里的进度条过高,因此我把它的高度改为2dp。这个时候的显示效果例如以下:
progress和secondaryProgress的颜色已经被我成功改动为红色和浅红色了。
假设我愿意,我也能够把剩余的灰色改动为其它颜色。事实上。我们能够省略上面一步。直接在布局文件里给progressBar加入progressDrawable属性,例如以下:
这个时候显示效果和上面还是一样的。依据这个特性,我们能够实现以下这样的歌词进度的效果,如图:
代码例如以下:
事实上就是两张图片:
OK,这里就是我们对水平进度条样式的一个简单改动,使它更符合我们的审美。
自己定义圆形进度条样式
当我们不知道我们的耗时操作到底要运行多长时间的时候。我们通常都会採用圆形进度条来显示。安卓自带的圆形进度条如第一幅图所看到的,但很多其它情况下我们见到的圆形进度条都比較好看。比方一个小人在跑等等,那么这里我们先来看一个简单的原型进度条。
和上面一样。要想自己定义一个圆形进度条,我们首先得知道android默认的圆形进度条的样式是怎么显示出来的,我们追踪
style="@android:style/Widget.ProgressBar"
这一行代码的源代码,例如以下:
我们看到这里有一个属性叫做indeterminateDrawable。这个属性事实上决定了圆形进度条的样式,同一时候我们还看到indeterminateBehavior和indeterminateDuration两个属性分别用来设置小圈旋转的模式以及每一圈的旋转时间。那么看到这里我们就明确了该怎么样来改动圆形进度条的样式了吧,我们自己定义一个progressbar_rotate.xml文件,例如以下:
xml version="1.0" encoding="utf-8"?
>
我们让这张图片绕自身的中心点旋转。OK,progressbar_rotate.xml文件写好之后。下一步就是自己定义style了,我们能够模仿Widget.ProgressBar来自己定义style,也能够直接在布局文件里设置indeterminateDrawable属性,我採用另外一种方式。代码例如以下:
效果图例如以下:
我们看到有一个圆圈在不停的转动。就这么简单。我们自己定义了一个圆形进度条样式。
就是这么简单。