Android定义圆形ProgressBar

圆形ProgressBar系统样式


<ProgressBar  
    android:id="@+id/progressBar2"  
    style="@android:attr/progressBarStyleLarge"  
    android:layout_gravity="center_vertical"  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content" />  


我们以progressBarStyleLarge为例进行探索,找到这个布局文件,源码如下:

<style name="Widget.ProgressBar.Large">  
  <item name="android:indeterminateDrawable">@android:drawable/progress_large_white</item>  
  <item name="android:minWidth">76dip</item>  
  <item name="android:maxWidth">76dip</item>  
  <item name="android:minHeight">76dip</item>  
  <item name="android:maxHeight">76dip</item>  
</style>  


同样一眼看出indeterminateDrawable便是主角了,继续看一下progress_large_white源码,如下:

<rotate xmlns:android="http://schemas.android.com/apk/res/android"  
    android:drawable="@drawable/spinner_white_76"  
    android:pivotX="50%"  
    android:pivotY="50%"  
    android:fromDegrees="0"  
    android:toDegrees="360" />  


看到这里就透彻了,就是在这里spinner_white_76进行不停的旋转的,我们copy一下这个文件,就可以直接自定义了

自定义圆形ProgressBar


第一步,在drawable文件夹下新建:progressbar_circle.xml,如下:

<?xml version="1.0" encoding="utf-8"?>  
<rotate xmlns:android="http://schemas.android.com/apk/res/android"  
    android:drawable="@drawable/loading" //引入圆形loading图片  
    android:fromDegrees="0"  
    android:pivotX="50%"  
    android:pivotY="50%"  
    android:toDegrees="360" >  
  
</rotate>  

第二步,在Style中定义mProgress_circle,如下:

<style name="mProgress_circle">  
    <item name="android:indeterminateDrawable">@drawable/progressbar_circle_1</item>  
    <item name="android:minWidth">25dp</item>  
    <item name="android:minHeight">25dp</item>  
    <item name="android:maxWidth">60dp</item>  
    <item name="android:maxHeight">60dp</item>  
</style>  


支持大小自己随意定,别失真就好


第三步,组件中引用,如下:


<ProgressBar  
    android:id="@+id/progressBar"  
    style="@style/mProgress_circle"  
    android:layout_gravity="center_vertical"  
    android:layout_width="match_parent"  
    android:indeterminateDuration="1200"  
    android:layout_height="wrap_content" />  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值