diff --git a/LibDialog/build.gradle b/LibDialog/build.gradle
index 054c9d8c8003637f5e44d72adbf33a2c1f6f32a7..329f2ab271570f16148c78d5eae08e656f928771 100644
--- a/LibDialog/build.gradle
+++ b/LibDialog/build.gradle
@@ -42,5 +42,5 @@ afterEvaluate {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
- compileOnly 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2'
+ compileOnly 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1'
}
\ No newline at end of file
diff --git a/LibDialog/src/main/java/com/mx/dialog/progress/MXLoadingDialog.kt b/LibDialog/src/main/java/com/mx/dialog/progress/MXLoadingDialog.kt
index db5bb15a6638d19a61adc8a19c1f3c0c26ea1bd0..e7bc942cbbe200d9b8c7adf48d9b33341ffaba5f 100644
--- a/LibDialog/src/main/java/com/mx/dialog/progress/MXLoadingDialog.kt
+++ b/LibDialog/src/main/java/com/mx/dialog/progress/MXLoadingDialog.kt
@@ -1,22 +1,27 @@
package com.mx.dialog.progress
+import android.animation.ObjectAnimator
import android.content.Context
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.view.ViewGroup
import android.widget.FrameLayout
-import android.widget.ProgressBar
+import android.widget.ImageView
import android.widget.TextView
import com.mx.dialog.R
import com.mx.dialog.base.MXBaseCardDialog
+import com.mx.dialog.utils.MXUtils
open class MXLoadingDialog(context: Context) : MXBaseCardDialog(context) {
private var loadingMessage: CharSequence? = null
private var indeterminateDrawable: Drawable? = null
- private var progressBar: ProgressBar? = null
+ private var loadingImg: ImageView? = null
private var loadingTxv: TextView? = null
+ private var loadingAnimator: ObjectAnimator? = null
+ private var userSetAnimator: ObjectAnimator? = null
+
override fun getContentLayoutId(): Int {
return R.layout.mx_content_loading
}
@@ -35,20 +40,23 @@ open class MXLoadingDialog(context: Context) : MXBaseCardDialog(context) {
}
private fun initView() {
- progressBar = findViewById(R.id.mxProgressBar)
+ loadingImg = findViewById(R.id.mxLoadingImg)
loadingTxv = findViewById(R.id.mxLoadingTxv)
+
+ loadingImg?.let { loadingAnimator = MXUtils.rotationAnimation(it, 1000) }
}
private fun initData() {
loadingTxv?.text = loadingMessage ?: "正在加载中..."
-
- kotlin.run { // Icon设置
- val width =
- context.resources.getDimensionPixelOffset(R.dimen.mx_dialog_size_progress_img)
+ loadingImg?.let { progressBar -> // Icon设置
val drawable = indeterminateDrawable
- ?: context.resources.getDrawable(R.drawable.mx_dialog_progress_loading)
- drawable.setBounds(0, 0, width, width)
- progressBar?.indeterminateDrawable = drawable
+ if (drawable != null) {
+ progressBar.setImageDrawable(drawable)
+ userSetAnimator?.start()
+ } else {
+ progressBar.setImageResource(R.drawable.mx_dialog_icon_loading)
+ loadingAnimator?.start()
+ }
}
}
@@ -59,12 +67,22 @@ open class MXLoadingDialog(context: Context) : MXBaseCardDialog(context) {
}
override fun onDismissTicket(maxSecond: Int, remindSecond: Int) {
-
}
- fun setIndeterminateDrawable(drawable: Drawable) {
+ fun setIndeterminateDrawable(drawable: Drawable, animator: ObjectAnimator? = null) {
indeterminateDrawable = drawable
+ if (animator != null) {
+ this.loadingAnimator?.end()
+ this.userSetAnimator?.end()
+ this.userSetAnimator = animator
+ }
initData()
}
+
+ override fun dismiss() {
+ loadingAnimator?.cancel()
+ loadingAnimator = null
+ super.dismiss()
+ }
}
\ No newline at end of file
diff --git a/LibDialog/src/main/java/com/mx/dialog/utils/MXUtils.kt b/LibDialog/src/main/java/com/mx/dialog/utils/MXUtils.kt
index 8c2a99f61e2ae6fea4fa9d61bdb1736bdbb089c4..e31d51602b31acb465efd39194b59924ccd7172c 100644
--- a/LibDialog/src/main/java/com/mx/dialog/utils/MXUtils.kt
+++ b/LibDialog/src/main/java/com/mx/dialog/utils/MXUtils.kt
@@ -1,6 +1,9 @@
package com.mx.dialog.utils
+import android.animation.ObjectAnimator
+import android.animation.ValueAnimator
import android.content.Context
+import android.view.View
import com.mx.dialog.BuildConfig
import java.text.DecimalFormat
import kotlin.math.max
@@ -64,6 +67,15 @@ internal object MXUtils {
return DecimalFormat("#0.00").format(this)
}
+ fun rotationAnimation(view: View, duration: Long): ObjectAnimator {
+ val animator = ObjectAnimator.ofFloat(view, "rotation", view.rotation, view.rotation + 360f)
+ animator.duration = duration
+ animator.interpolator = null
+ animator.repeatMode = ValueAnimator.RESTART
+ animator.repeatCount = -1
+ return animator
+ }
+
fun getScreenWidthDP(appContext: Context): Int =
(getScreenWidth(appContext) / getScreenDensity(appContext)).roundToInt()
diff --git a/LibDialog/src/main/res/drawable/mx_dialog_progress_loading.xml b/LibDialog/src/main/res/drawable/mx_dialog_progress_loading.xml
deleted file mode 100644
index 8e341ac140e6c152866debf28540ce36ff3a53cf..0000000000000000000000000000000000000000
--- a/LibDialog/src/main/res/drawable/mx_dialog_progress_loading.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
diff --git a/LibDialog/src/main/res/layout/mx_content_loading.xml b/LibDialog/src/main/res/layout/mx_content_loading.xml
index e80d7145c91b93fdfc2e61274ad1f1875bd0a76f..aed21f023b8cf2298243f97f26686501bd2f59ee 100644
--- a/LibDialog/src/main/res/layout/mx_content_loading.xml
+++ b/LibDialog/src/main/res/layout/mx_content_loading.xml
@@ -7,14 +7,12 @@
android:paddingHorizontal="30dp"
android:paddingVertical="20dp">
-
+ android:scaleType="centerInside"
+ android:src="@drawable/mx_dialog_icon_loading" />