home动画,金币progress动画
This commit is contained in:
parent
58e3bde0c4
commit
adc0a451b7
|
|
@ -58,6 +58,10 @@ class TaskManager private constructor() {
|
||||||
initialized = true
|
initialized = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getHomeWatchDurationRewardNum(): Int {
|
||||||
|
return 28; // TODO - mTaskConfigBean.xxxx
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,16 @@
|
||||||
package com.gamedog.vididin.widget
|
package com.gamedog.vididin.widget
|
||||||
|
|
||||||
|
|
||||||
|
import android.animation.Animator
|
||||||
|
import android.animation.AnimatorSet
|
||||||
|
import android.animation.ObjectAnimator
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import com.gamedog.vididin.databinding.LayoutDragIconViewBinding
|
import com.gamedog.vididin.databinding.LayoutDragIconViewBinding
|
||||||
import kotlin.run
|
import com.gamedog.vididin.manager.TaskManager
|
||||||
|
|
||||||
class HomeDragIconView @JvmOverloads constructor(
|
class HomeDragIconView @JvmOverloads constructor(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
|
@ -14,14 +18,76 @@ class HomeDragIconView @JvmOverloads constructor(
|
||||||
defStyleAttr: Int = 0
|
defStyleAttr: Int = 0
|
||||||
) : LinearLayout(context, attrs, defStyleAttr) {
|
) : LinearLayout(context, attrs, defStyleAttr) {
|
||||||
|
|
||||||
private var mBinding: LayoutDragIconViewBinding? = null
|
private var mBinding: LayoutDragIconViewBinding
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
mBinding = LayoutDragIconViewBinding.inflate(LayoutInflater.from(context), this, true)
|
mBinding = LayoutDragIconViewBinding.inflate(LayoutInflater.from(context), this, true)
|
||||||
mBinding?.run {
|
mBinding.run {
|
||||||
|
progressBar.setProgressListener { progress->
|
||||||
|
if (progress >= 100) {
|
||||||
|
tvGoldNum.text = buildString {
|
||||||
|
append("+")
|
||||||
|
append(TaskManager.instance().getHomeWatchDurationRewardNum())
|
||||||
|
}
|
||||||
|
|
||||||
|
executeGoldNumAnim()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun executeGoldNumAnim() {
|
||||||
|
val animView = mBinding.llGoldRoot
|
||||||
|
|
||||||
|
val alphaAnimator = ObjectAnimator.ofFloat(
|
||||||
|
animView,
|
||||||
|
"alpha",
|
||||||
|
0.5f, 1.0f, 0.5f
|
||||||
|
).apply {
|
||||||
|
duration = 500
|
||||||
|
}
|
||||||
|
|
||||||
|
val scaleXAnimator = ObjectAnimator.ofFloat(
|
||||||
|
animView,
|
||||||
|
"scaleX",
|
||||||
|
0.5f, 1.0f, 0.5f
|
||||||
|
).apply {
|
||||||
|
duration = 500
|
||||||
|
}
|
||||||
|
|
||||||
|
val scaleYAnimator = ObjectAnimator.ofFloat(
|
||||||
|
animView,
|
||||||
|
"scaleY",
|
||||||
|
0.5f, 1.0f, 0.5f
|
||||||
|
).apply {
|
||||||
|
duration = 500
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
val animatorSet = AnimatorSet()
|
||||||
|
animatorSet.playTogether(alphaAnimator, scaleXAnimator, scaleYAnimator)
|
||||||
|
animatorSet.addListener(object : Animator.AnimatorListener {
|
||||||
|
override fun onAnimationCancel(animation: Animator) {
|
||||||
|
animView.isVisible = false
|
||||||
|
mBinding.progressBar.setProgress(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onAnimationEnd(animation: Animator) {
|
||||||
|
animView.isVisible = false
|
||||||
|
mBinding.progressBar.setProgress(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onAnimationRepeat(animation: Animator) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onAnimationStart(animation: Animator) {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
animatorSet.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,14 +15,15 @@
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/ll_menu_container"
|
android:id="@+id/ll_gold_root"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
|
android:visibility="gone"
|
||||||
>
|
>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@mipmap/home_gold"
|
android:src="@mipmap/home_gold"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
|
@ -30,6 +31,7 @@
|
||||||
android:layout_marginTop="2dp"
|
android:layout_marginTop="2dp"
|
||||||
/>
|
/>
|
||||||
<TextView
|
<TextView
|
||||||
|
android:id="@+id/tv_gold_num"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
|
|
@ -40,23 +42,6 @@
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<!--<FrameLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
<ProgressBar
|
|
||||||
android:id="@+id/progress_bar"
|
|
||||||
android:layout_width="75dp"
|
|
||||||
android:layout_height="75dp"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
/>
|
|
||||||
<ImageView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:src="@mipmap/home_envelope"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:paddingVertical="7dp"
|
|
||||||
/>
|
|
||||||
</FrameLayout>-->
|
|
||||||
<com.ama.core.architecture.widget.CircleProgressBar
|
<com.ama.core.architecture.widget.CircleProgressBar
|
||||||
android:id="@+id/progress_bar"
|
android:id="@+id/progress_bar"
|
||||||
android:layout_width="50dp"
|
android:layout_width="50dp"
|
||||||
|
|
|
||||||
|
|
@ -155,10 +155,17 @@ class CircleProgressBar @JvmOverloads constructor(
|
||||||
canvas.drawBitmap(icon, null, dstRect, null)
|
canvas.drawBitmap(icon, null, dstRect, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var progressListener: ((progress: Int) -> Unit)? = null
|
||||||
|
|
||||||
|
fun setProgressListener(progressListener: (progress: Int) -> Unit) {
|
||||||
|
this.progressListener = progressListener
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fun setProgress(progress: Int) {
|
fun setProgress(progress: Int) {
|
||||||
this.currentProgress = progress.coerceIn(0, maxProgress)
|
this.currentProgress = progress.coerceIn(0, maxProgress)
|
||||||
invalidate()
|
invalidate()
|
||||||
|
progressListener?.invoke(currentProgress)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setCenterIcon(@DrawableRes iconRes: Int) {
|
fun setCenterIcon(@DrawableRes iconRes: Int) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue