Android定义圆形ProgressBar

xiaoxiao2021-02-28  116

圆形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" />

转载请注明原文地址: https://www.6miu.com/read-63624.html

最新回复(0)