From 47f5c051c970c509b412bf466c18d8e57ecea60d Mon Sep 17 00:00:00 2001 From: zhangmengxiong Date: Tue, 15 Nov 2022 16:47:49 +0800 Subject: [PATCH] 1.6.0 --- LibDialog/build.gradle | 2 +- .../com/mx/dialog/progress/MXLoadingDialog.kt | 42 +++++++++++++------ .../main/java/com/mx/dialog/utils/MXUtils.kt | 12 ++++++ .../drawable/mx_dialog_progress_loading.xml | 7 ---- .../main/res/layout/mx_content_loading.xml | 10 ++--- app/build.gradle | 10 ++--- build.gradle | 8 ++-- 7 files changed, 55 insertions(+), 36 deletions(-) delete mode 100644 LibDialog/src/main/res/drawable/mx_dialog_progress_loading.xml diff --git a/LibDialog/build.gradle b/LibDialog/build.gradle index 054c9d8..329f2ab 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 db5bb15..e7bc942 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 8c2a99f..e31d516 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 8e341ac..0000000 --- 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 e80d714..aed21f0 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" />