今天小编给大家分享一下Android实现自定义圆形进度条的常用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
一、通过帧动画实现
1.首先在res 下新建设 anim 文件夹,在里面新建XML 文件;
定义res/anim/loading.xml如下:
例:loading.xml
<?xml version="1.0" encoding="UTF-8"?> <animation-list android:oneshot="false" xmlns:android="http://schemas.android.com/apk/res/android"> <item android:duration="150" android:drawable="@drawable/pic1" /> <item android:duration="150" android:drawable="@drawable/pic2" /> <item android:duration="150" android:drawable="@drawable/pic3" /> <item android:duration="150" android:drawable="@drawable/pic4" /> <item android:duration="150" android:drawable="@drawable/pic5" /> <item android:duration="150" android:drawable="@drawable/pic6" /> <item android:duration="150" android:drawable="@drawable/pic7" <item android:duration="150" android:drawable="@drawable/pic8"/> </animation-list>
二、通过自定义颜色实现
定义res/drawable/progress_color.xml如下:
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" > <shape android:innerRadiusRatio="3" android:shape="ring" android:thicknessRatio="8" android:useLevel="false" > <gradient android:centerColor="#FFDC35" android:centerY="0.50" android:endColor="#CE0000" android:startColor="#FFFFFF" android:type="sweep" android:useLevel="false" /> </shape> </rotate>
第三种 使用有进度的UI图片:
定义res/drawable/progress_pic.xml如下:
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/progress1" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" />
在Activity 布局中直接使用就可以:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.demo.MainActivity" > <ProgressBar android:id="@+id/loading_process_dialog_progressBar" android:layout_width="150dp" android:layout_height="150dp" android:layout_gravity="center_horizontal" android:indeterminate="false" android:indeterminateDrawable="@anim/loading" /> <ProgressBar android:layout_width="100dp" android:layout_height="100dp" android:layout_marginTop="60dp" android:layout_gravity="center_horizontal" android:layout_centerInParent="true" android:indeterminateDrawable="@drawable/progress_small" /> <ProgressBar android:id="@+id/loading_process_pic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="60dp" android:indeterminate="false" android:indeterminateDrawable="@drawable/progress_pic" /> </LinearLayout>