Android progressbar骚操作

作为比较常见的控件,经常需要针对项目对其进行一定程度的定制和修改,当然一些较大程度的定制和修改都是基于自定义View进行绘制的,但是一些改动较小的地方便可以使用Android原生progressbar进行实现。

progressbar分为两种样式,一种为普通的圆形样式,没有具体的进度值,仅仅作为loading提示作用。另一种为水平样式,可以显示出当前的执行进度。可以在xml下通过不同的style进行选择,默认为圆形样式,设置style为xxxx.ProgressBar.Horizontal即为水平样式。

最常见的为progressbar设置想要的颜色,默认情况下progressbar等控件的颜色都是系统主题色colorAccent,如果需要别的颜色便需要自己设置。

 

水平样式中,有一种水平样式的style可以通过直接设置background来改变progressbar的颜色,但是这样有较大的局限性,例如这种方式虽然颜色可以更改但是高度是固定的,也就是无论android:layout_height属性设置多少都会是一个默认高度,所以这里就不再过多叙述,直接说最实用的。progressbar有一个属性progressDrawable,该属性可以看成progressBar可用的background,我们可以设置XML文件来实现改变progressbar外观。

 

<?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 >
            <solid android:color="@color/colorNone" />
        </shape>
    </item>
    <item android:id="@android:id/progress" >
        <clip >
            <shape>
                <solid android:color="@color/colorSSSS" />
            </shape>
        </clip>
    </item>
</layer-list>

不同于一般的XML背景文件,progressBar特殊在它拥有一个progress(进度),也就是进度值是需要改变的,所以需要专门为progress属性进行外观的设置,即item下指定android id =@android:id/progress,与之对应的是普通的android id =@android:id/background,其他的设置方法和一般的写法大同小异。唯一一点需要注意的是在写progress的形状参数时,外层必须加上<clip>标签,大概是代表progress是可变并且为浮层的意思。如果没有该标签progress会全部显示,也就是看上去进度始终是100%的。

 

圆形样式中,除了上面那种方式,android5.0以后还新加了两个属性

            android:indeterminateTint="@color/colorDetailsLine"//设置的颜色
            android:indeterminateTintMode="src_atop"//固定样式

 

 

 

除了修改颜色外,还能通过几个属性来对进度条外观和行为进行修改

 

            android:indeterminateDrawable="" //更改的图片
            android:indeterminateDuration=""  //持续的时间
            android:indeterminateBehavior="repeat"  //行为,循环
            android:indeterminateOnly="true"		

可以设置一张自定义的图片并且自定义动画,为该动画设置时间,行为。可以实现圆形样式的效果。
 

 

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值