預(yù)覽圖

原理
整個(gè)效果分成兩部分册舞。一部分為弧度動(dòng)畫,一部分為點(diǎn)點(diǎn)動(dòng)畫
弧度動(dòng)畫就是畫弧線障般,動(dòng)畫改變弧度就可以了
點(diǎn)點(diǎn)動(dòng)畫比較復(fù)雜调鲸∈⒔埽總共分為兩步,1.計(jì)算非弧線的地方可以容納的點(diǎn)點(diǎn)個(gè)數(shù)藐石,然后畫出來即供;2.根據(jù)弧度的改變確定點(diǎn)點(diǎn)的寬度
最后讓整個(gè)旋轉(zhuǎn)起來 OK
使用
自定義的屬性
c_progressColor : 進(jìn)度條的顏色
c_strokeWidth : 進(jìn)度條的寬度
c_autoRunning :自動(dòng)開始旋轉(zhuǎn)
c_atOnceEnd :true調(diào)用reset后立刻結(jié)束動(dòng)畫,false會(huì)等到動(dòng)畫執(zhí)行完后結(jié)束
1.作為進(jìn)度加載使用
<com.cyy.progress.loading.LoadingProgress
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginTop="16dp"
app:c_progressColor="@color/colorAccent"
app:c_strokeWidth="5dp" />
2.配合頭像使用
layout文件
<FrameLayout
android:id="@+id/headerLayout"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginTop="16dp"
android:background="#00ff00">
<com.cyy.progress.loading.LoadingProgress xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/loadingProgress"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:c_atOnceEnd="true"
app:c_autoRunning="false"
app:c_progressColor="@color/colorPrimaryDark"
app:c_strokeWidth="3dp" />
<view
class="de.hdodenhof.circleimageview.CircleImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="6dp"
android:src="@mipmap/header" />
</FrameLayout>
activity中代碼中這是點(diǎn)擊時(shí)點(diǎn)用start(), 這里模擬網(wǎng)絡(luò)加載7s后調(diào)用reset
headerLayout.setOnClickListener {
loadingProgress.start()
headerLayout.postDelayed({
loadingProgress.reset()
} , 7000)
}
3.事件回調(diào)
fun onProgressStartListener(progress: LoadingProgress) //開始旋轉(zhuǎn)
fun onProgressRepeatListener(progress: LoadingProgress) //每個(gè)周期結(jié)束的時(shí)候調(diào)用
fun onProgressResetListener(progress: LoadingProgress) //重置的回調(diào)事件
fun onProgressEndListener(progress: LoadingProgress ) //動(dòng)畫結(jié)束回調(diào)