仿微博點擊頭像加載動畫

預覽圖

原理

整個效果分成兩部分。一部分為弧度動畫,一部分為點點動畫

弧度動畫就是畫弧線,動畫改變弧度就可以了

點點動畫比較復雜??偣卜譃閮刹剑?.計算非弧線的地方可以容納的點點個數(shù),然后畫出來;2.根據(jù)弧度的改變確定點點的寬度

最后讓整個旋轉(zhuǎn)起來 OK

源碼地址

使用

自定義的屬性

c_progressColor : 進度條的顏色
c_strokeWidth : 進度條的寬度
c_autoRunning :自動開始旋轉(zhuǎn)
c_atOnceEnd :true調(diào)用reset后立刻結(jié)束動畫,false會等到動畫執(zhí)行完后結(jié)束

1.作為進度加載使用

    <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中代碼中這是點擊時點用start(), 這里模擬網(wǎng)絡加載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) //每個周期結(jié)束的時候調(diào)用
    fun onProgressResetListener(progress: LoadingProgress) //重置的回調(diào)事件
    fun onProgressEndListener(progress: LoadingProgress ) //動畫結(jié)束回調(diào)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容