소스 검색

送礼动画优化

admin 1 년 전
부모
커밋
caa915ec6f

BIN
baseswago/src/main/res/mipmap-xxhdpi/win_100_prize.webp


BIN
baseswago/src/main/res/mipmap-xxhdpi/win_499_prize.webp


BIN
baseswago/src/main/res/mipmap-xxhdpi/win_500_prize.webp


BIN
room/src/main/assets/win_1001_prize.svga


BIN
room/src/main/assets/win_101_500_prize.svga


BIN
room/src/main/assets/win_501_1000_prize.svga


+ 90 - 12
room/src/main/java/com/swago/room/giftdandao/GiftDanDaoView.kt

@@ -15,12 +15,14 @@ import android.view.animation.DecelerateInterpolator
 import android.widget.FrameLayout
 import android.widget.FrameLayout
 import android.widget.ImageView
 import android.widget.ImageView
 import android.widget.Toast
 import android.widget.Toast
+import androidx.constraintlayout.widget.ConstraintLayout
 import com.bumptech.glide.Glide
 import com.bumptech.glide.Glide
 import com.opensource.svgaplayer.SVGADrawable
 import com.opensource.svgaplayer.SVGADrawable
 import com.opensource.svgaplayer.SVGAParser
 import com.opensource.svgaplayer.SVGAParser
 import com.opensource.svgaplayer.SVGAVideoEntity
 import com.opensource.svgaplayer.SVGAVideoEntity
 import com.swago.baseswago.model.live.gift.IMGiftModel
 import com.swago.baseswago.model.live.gift.IMGiftModel
 import com.swago.baseswago.util.AppContext
 import com.swago.baseswago.util.AppContext
+import com.swago.baseswago.util.DpPxUtil
 import com.swago.baseswago.util.LogUtil
 import com.swago.baseswago.util.LogUtil
 import com.swago.baseswago.util.UserInfo
 import com.swago.baseswago.util.UserInfo
 import com.swago.room.R
 import com.swago.room.R
@@ -36,6 +38,7 @@ class GiftDanDaoView : FrameLayout {
     var isBusy = false
     var isBusy = false
     private var binding: ViewItemGiftBinding? = null
     private var binding: ViewItemGiftBinding? = null
     private var svgParser: SVGAParser? = null
     private var svgParser: SVGAParser? = null
+    private var svgParser2: SVGAParser? = null
 
 
     private var giftCount = 0
     private var giftCount = 0
 
 
@@ -61,6 +64,7 @@ class GiftDanDaoView : FrameLayout {
         vibrator = context.getSystemService(Service.VIBRATOR_SERVICE) as Vibrator
         vibrator = context.getSystemService(Service.VIBRATOR_SERVICE) as Vibrator
         binding = ViewItemGiftBinding.inflate(LayoutInflater.from(context), this, true)
         binding = ViewItemGiftBinding.inflate(LayoutInflater.from(context), this, true)
         svgParser = SVGAParser(context)
         svgParser = SVGAParser(context)
+        svgParser2 = SVGAParser(context)
         for (i in 0..5){
         for (i in 0..5){
             val imageView = ImageView(context)
             val imageView = ImageView(context)
             imageViewData.add(imageView)
             imageViewData.add(imageView)
@@ -164,31 +168,78 @@ class GiftDanDaoView : FrameLayout {
 
 
             clItemGift.removeCallbacks(showRunnable)
             clItemGift.removeCallbacks(showRunnable)
             clItemGift.postDelayed(showRunnable, 3000)
             clItemGift.postDelayed(showRunnable, 3000)
-
+            imGiftModel.multiple = 555
             if (imGiftModel.multiple != 0) {
             if (imGiftModel.multiple != 0) {
                 when (imGiftModel.multiple) {
                 when (imGiftModel.multiple) {
-                    in 1..100 -> {
-                        iv.setImageResource(R.mipmap.win_100_prize)
+                    in 1..50 -> {
+                        iv.visibility = View.VISIBLE
+                        tvWinPrize2.visibility = View.GONE
+                        svgaWinPrize.visibility = View.GONE
+                        val layoutParams = tvWinPrize.layoutParams as ConstraintLayout.LayoutParams
+                        layoutParams.marginStart = DpPxUtil.dip2px(10f)
+                        tvWinPrize.layoutParams = layoutParams
+                        iv.setImageResource(R.mipmap.win_1_50_prize)
+                        clWinPrize.visibility = View.VISIBLE
+                        tvWinPrize.text =
+                            AppContext.getContext().resources.getString(R.string.win_num_prize)
+                                .format(imGiftModel.multiple)
+                    }
+
+                    in 51..100 -> {
+                        iv.visibility = View.VISIBLE
+                        tvWinPrize2.visibility = View.GONE
+                        svgaWinPrize.visibility = View.GONE
+                        val layoutParams = tvWinPrize.layoutParams as ConstraintLayout.LayoutParams
+                        layoutParams.marginStart = DpPxUtil.dip2px(26f)
+                        tvWinPrize.layoutParams = layoutParams
+                        iv.setImageResource(R.mipmap.win_51_100_prize)
+                        clWinPrize.visibility = View.VISIBLE
+                        tvWinPrize.text =
+                            AppContext.getContext().resources.getString(R.string.win_num_prize)
+                                .format(imGiftModel.multiple)
                     }
                     }
 
 
-                    in 100..499 -> {
-                        iv.setImageResource(R.mipmap.win_499_prize)
+                    in 100..500 -> {
+                        iv.visibility = View.GONE
+                        svgaWinPrize.visibility = View.VISIBLE
+                        playSvg2("win_101_500_prize.svga")
+                        clWinPrize.visibility = View.GONE
+                        tvWinPrize2.visibility = View.VISIBLE
+                        tvWinPrize2.text =
+                            AppContext.getContext().resources.getString(R.string.win_num_prize)
+                                .format(imGiftModel.multiple)
                     }
                     }
 
 
-                    in 500..10000 -> {
+                    in 501..1000 -> {
+                        iv.visibility = View.GONE
+                        svgaWinPrize.visibility = View.VISIBLE
                         UserInfo.getUserInfo()?.let {  userInfoModel ->
                         UserInfo.getUserInfo()?.let {  userInfoModel ->
                             if (userInfoModel.id == imGiftModel.senderId){
                             if (userInfoModel.id == imGiftModel.senderId){
                                 vibrator?.vibrate(2500)
                                 vibrator?.vibrate(2500)
                             }
                             }
                         }
                         }
-                        iv.setImageResource(R.mipmap.win_500_prize)
-
+                        playSvg2("win_501_1000_prize.svga")
+                        tvWinPrize2.visibility = View.VISIBLE
+                        tvWinPrize2.text =
+                            AppContext.getContext().resources.getString(R.string.win_num_prize)
+                                .format(imGiftModel.multiple)
+                    }
+                    else -> {
+                        iv.visibility = View.GONE
+                        svgaWinPrize.visibility = View.VISIBLE
+                        UserInfo.getUserInfo()?.let {  userInfoModel ->
+                            if (userInfoModel.id == imGiftModel.senderId){
+                                vibrator?.vibrate(2500)
+                            }
+                        }
+                        playSvg2("win_1001_prize.svga")
+                        tvWinPrize2.visibility = View.VISIBLE
+                        tvWinPrize2.text =
+                            AppContext.getContext().resources.getString(R.string.win_num_prize)
+                                .format(imGiftModel.multiple)
                     }
                     }
                 }
                 }
-                clWinPrize.visibility = View.VISIBLE
-                tvWinPrize.text =
-                    AppContext.getContext().resources.getString(R.string.win_num_prize)
-                        .format(imGiftModel.multiple)
+
                 clWinPrize.removeCallbacks(winPrizeRunnable)
                 clWinPrize.removeCallbacks(winPrizeRunnable)
                 clWinPrize.postDelayed(winPrizeRunnable, 1500)
                 clWinPrize.postDelayed(winPrizeRunnable, 1500)
             }
             }
@@ -355,6 +406,30 @@ class GiftDanDaoView : FrameLayout {
         }
         }
     }
     }
 
 
+    private fun playSvg2(path:String){
+        svgParser2?.let {
+            it.decodeFromAssets(path,object:SVGAParser.ParseCompletion{
+                override fun onComplete(videoItem: SVGAVideoEntity) {
+                    binding?.apply {
+                        val drawable = SVGADrawable(videoItem)
+                        svgaWinPrize.setImageDrawable(drawable)
+                        svgaWinPrize.loops = 99999
+                        svgaWinPrize.startAnimation()
+                    }
+                }
+
+                override fun onError() {
+                    Toast.makeText(AppContext.getContext(), "播放异常", Toast.LENGTH_SHORT).show()
+                }
+            },object:SVGAParser.PlayCallback{
+                override fun onPlay(file: List<File>) {
+                }
+
+            })
+
+        }
+    }
+
 
 
     fun clear() {
     fun clear() {
         vibrator?.cancel()
         vibrator?.cancel()
@@ -365,6 +440,9 @@ class GiftDanDaoView : FrameLayout {
             if (svgaImageView.isAnimating){
             if (svgaImageView.isAnimating){
                 svgaImageView.stopAnimation()
                 svgaImageView.stopAnimation()
             }
             }
+            if (svgaWinPrize.isAnimating){
+                svgaWinPrize.stopAnimation()
+            }
             clWinPrize.visibility = View.INVISIBLE
             clWinPrize.visibility = View.INVISIBLE
             clItemGift.visibility = View.INVISIBLE
             clItemGift.visibility = View.INVISIBLE
             clWinPrize.removeCallbacks(winPrizeRunnable)
             clWinPrize.removeCallbacks(winPrizeRunnable)

+ 3 - 2
room/src/main/res/layout/fragment_base_com.xml

@@ -59,7 +59,7 @@
 
 
     <com.swago.room.hongbao.RedEnvelopeView
     <com.swago.room.hongbao.RedEnvelopeView
         android:id="@+id/ivRedEnvelopeView"
         android:id="@+id/ivRedEnvelopeView"
-        android:layout_marginBottom="120dp"
+        android:layout_marginBottom="80dp"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
@@ -72,7 +72,7 @@
 
 
     <com.swago.room.hongbao.RedEnvelopeBroadcastView
     <com.swago.room.hongbao.RedEnvelopeBroadcastView
         android:id="@+id/ivRedEnvelopeBroadcastView"
         android:id="@+id/ivRedEnvelopeBroadcastView"
-        android:layout_marginBottom="120dp"
+        android:layout_marginBottom="80dp"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
@@ -87,6 +87,7 @@
     <ImageView
     <ImageView
         android:id="@+id/ivBenefit"
         android:id="@+id/ivBenefit"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintTop_toTopOf="parent"
+        android:layout_marginTop="40dp"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         android:layout_marginEnd="10dp"
         android:layout_marginEnd="10dp"

+ 27 - 5
room/src/main/res/layout/view_item_gift.xml

@@ -11,7 +11,8 @@
     <androidx.constraintlayout.widget.ConstraintLayout
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/clContainer"
         android:id="@+id/clContainer"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/clWinPrize"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_marginTop="50dp"
         android:layout_width="wrap_content"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
         android:layout_height="wrap_content">
 
 
@@ -126,7 +127,7 @@
     <androidx.constraintlayout.widget.ConstraintLayout
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/clWinPrize"
         android:id="@+id/clWinPrize"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toTopOf="@+id/clContainer"
         tools:visibility="visible"
         tools:visibility="visible"
         android:visibility="invisible"
         android:visibility="invisible"
         android:layout_width="wrap_content"
         android:layout_width="wrap_content"
@@ -138,7 +139,7 @@
             android:layout_marginTop="5dp"
             android:layout_marginTop="5dp"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             android:layout_marginStart="68dp"
             android:layout_marginStart="68dp"
-            android:src="@mipmap/win_500_prize"
+            android:src="@mipmap/win_1_50_prize"
             android:layout_width="wrap_content"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"/>
             android:layout_height="wrap_content"/>
 
 
@@ -149,8 +150,6 @@
             app:layout_constraintTop_toTopOf="@+id/iv"
             app:layout_constraintTop_toTopOf="@+id/iv"
             app:layout_constraintBottom_toBottomOf="@+id/iv"
             app:layout_constraintBottom_toBottomOf="@+id/iv"
             android:text="Win 500x coins"
             android:text="Win 500x coins"
-            android:layout_marginTop="3dp"
-            android:layout_marginStart="26dp"
             android:textColor="#fff"
             android:textColor="#fff"
             android:textSize="11dp"
             android:textSize="11dp"
             android:layout_width="0dp"
             android:layout_width="0dp"
@@ -159,4 +158,27 @@
 
 
     </androidx.constraintlayout.widget.ConstraintLayout>
     </androidx.constraintlayout.widget.ConstraintLayout>
 
 
+    <com.opensource.svgaplayer.SVGAImageView
+        android:id="@+id/svgaWinPrize"
+        android:visibility="gone"
+        tools:visibility="visible"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_width="220dp"
+        android:layout_height="100dp"/>
+
+    <TextView
+        android:id="@+id/tvWinPrize2"
+        app:layout_constraintStart_toStartOf="@+id/svgaWinPrize"
+        app:layout_constraintTop_toTopOf="@+id/svgaWinPrize"
+        android:layout_marginStart="75dp"
+        android:layout_marginTop="60dp"
+        android:text="Win 500x coins"
+        android:textColor="#fff"
+        android:textSize="11dp"
+        android:layout_width="0dp"
+        android:maxLines="1"
+        android:layout_height="wrap_content"/>
+
 </androidx.constraintlayout.widget.ConstraintLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>

BIN
room/src/main/res/mipmap-xxhdpi/win_1_50_prize.webp


BIN
room/src/main/res/mipmap-xxhdpi/win_51_100_prize.webp