From 1f45a54dc8e149548d3a61d1228741627aa4f23e Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期二, 18 六月 2024 23:05:42 +0800
Subject: [PATCH] save

---
 app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt |  226 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 219 insertions(+), 7 deletions(-)

diff --git a/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt
index 7f3423a..d33c5e6 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt
@@ -16,7 +16,7 @@
 import org.jetbrains.anko.imageResource
 
 
-//todo 1.首次播放播放中图标不显示 2.选择正确后不能再选择 3.选择正确后处理语音条位置
+//todo 2.选择正确后不能再选择 3.选择正确后处理语音条位置
 class MatchFragment : BaseFragment(), AudioUtils.OnAudioStatusUpdateListener {
     override fun contentViewId() = R.layout.fragment_match
 
@@ -51,7 +51,7 @@
                     }
                     TO_NEXT->{
                         if (isAdded&&!playing){
-                            (requireActivity() as IncludeActivity).next()
+                            (requireActivity() as MatchActivity).next()
                         }
                     }
                 }
@@ -70,6 +70,10 @@
     }
 
     private fun initClick() {
+        cover_3.setOnClickListener {  }
+        cover_2.setOnClickListener {  }
+        cover_1.setOnClickListener {  }
+        cover_4.setOnClickListener {  }
         voiceViews.forEachIndexed { index, constraintLayout ->
             constraintLayout.clickDelay {
                 if (!playing){
@@ -81,6 +85,7 @@
         }
 
         cl_1.clickDelay {
+            val voiceIndex = voiceIndex
             if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击
                 return@clickDelay
             if (data!!.subjectList[group][0].completed) //已作答不可点击
@@ -111,6 +116,38 @@
                         end = R.id.end_4_1
                     }
                 }
+                voiceViews[voiceIndex].callOnClick()
+                motion.setTransitionListener(object :MotionLayout.TransitionListener{
+                    override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
+
+                    }
+
+                    override fun onTransitionChange(
+                        p0: MotionLayout?,
+                        p1: Int,
+                        p2: Int,
+                        p3: Float
+                    ) {
+                    }
+
+                    override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) {
+                        cl_voice_end_1.visible()
+                        when(voiceIndex){
+                            0->cover_1.visible()
+                            1->cover_2.visible()
+                            2->cover_3.visible()
+                            3->cover_4.visible()
+                        }
+                    }
+
+                    override fun onTransitionTrigger(
+                        p0: MotionLayout?,
+                        p1: Int,
+                        p2: Boolean,
+                        p3: Float
+                    ) {
+                    }
+                })
                 motion.setTransition(start,end)
                 motion.transitionToEnd()
             }else{
@@ -120,6 +157,8 @@
         }
 
         cl_2.clickDelay {
+            val voiceIndex = voiceIndex
+
             if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击
                 return@clickDelay
             if (data!!.subjectList[group][1].completed) //已作答不可点击
@@ -150,6 +189,39 @@
                         end = R.id.end_4_2
                     }
                 }
+                voiceViews[voiceIndex].callOnClick()
+
+                motion.setTransitionListener(object :MotionLayout.TransitionListener{
+                    override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
+
+                    }
+
+                    override fun onTransitionChange(
+                        p0: MotionLayout?,
+                        p1: Int,
+                        p2: Int,
+                        p3: Float
+                    ) {
+                    }
+
+                    override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) {
+                        cl_voice_end_2.visible()
+                        when(voiceIndex){
+                            0->cover_1.visible()
+                            1->cover_2.visible()
+                            2->cover_3.visible()
+                            3->cover_4.visible()
+                        }
+                    }
+
+                    override fun onTransitionTrigger(
+                        p0: MotionLayout?,
+                        p1: Int,
+                        p2: Boolean,
+                        p3: Float
+                    ) {
+                    }
+                })
                 motion.setTransition(start,end)
                 motion.transitionToEnd()
             }else{
@@ -159,6 +231,8 @@
         }
 
         cl_3.clickDelay {
+            val voiceIndex = voiceIndex
+
             if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击
                 return@clickDelay
             if (data!!.subjectList[group][2].completed) //已作答不可点击
@@ -189,6 +263,39 @@
                         end = R.id.end_4_3
                     }
                 }
+                voiceViews[voiceIndex].callOnClick()
+
+                motion.setTransitionListener(object :MotionLayout.TransitionListener{
+                    override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
+
+                    }
+
+                    override fun onTransitionChange(
+                        p0: MotionLayout?,
+                        p1: Int,
+                        p2: Int,
+                        p3: Float
+                    ) {
+                    }
+
+                    override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) {
+                        cl_voice_end_3.visible()
+                        when(voiceIndex){
+                            0->cover_1.visible()
+                            1->cover_2.visible()
+                            2->cover_3.visible()
+                            3->cover_4.visible()
+                        }
+                    }
+
+                    override fun onTransitionTrigger(
+                        p0: MotionLayout?,
+                        p1: Int,
+                        p2: Boolean,
+                        p3: Float
+                    ) {
+                    }
+                })
                 motion.setTransition(start,end)
                 motion.transitionToEnd()
             }else{
@@ -198,6 +305,7 @@
         }
 
         cl_4.clickDelay {
+            val voiceIndex = voiceIndex
             if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击
                 return@clickDelay
             if (data!!.subjectList[group][3].completed) //已作答不可点击
@@ -228,12 +336,65 @@
                         end = R.id.end_4_4
                     }
                 }
+                voiceViews[voiceIndex].callOnClick()
+
+                motion.setTransitionListener(object :MotionLayout.TransitionListener{
+                    override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
+
+                    }
+
+                    override fun onTransitionChange(
+                        p0: MotionLayout?,
+                        p1: Int,
+                        p2: Int,
+                        p3: Float
+                    ) {
+                    }
+
+                    override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) {
+                        cl_voice_end_4.visible()
+                        when(voiceIndex){
+                            0->cover_1.visible()
+                            1->cover_2.visible()
+                            2->cover_3.visible()
+                            3->cover_4.visible()
+                        }
+                    }
+
+                    override fun onTransitionTrigger(
+                        p0: MotionLayout?,
+                        p1: Int,
+                        p2: Boolean,
+                        p3: Float
+                    ) {
+                    }
+                })
                 motion.setTransition(start,end)
                 motion.transitionToEnd()
             }else{
                 result_4.imageResource = R.mipmap.zhifushibai
             }
             showResultAnim(cl_4)
+        }
+
+        cl_voice_end_1.setOnClickListener {
+            voiceIndex = 4
+            player.startPlayMusic(requireContext(),data!!.subjectList[group][0].correct)
+        }
+        cl_voice_end_2.setOnClickListener {
+            voiceIndex = 5
+            player.startPlayMusic(requireContext(),data!!.subjectList[group][1].correct)
+
+        }
+        cl_voice_end_3.setOnClickListener {
+            voiceIndex = 6
+            player.startPlayMusic(requireContext(),data!!.subjectList[group][2].correct)
+
+        }
+        cl_voice_end_4.setOnClickListener {
+            voiceIndex = 7
+            player.startPlayMusic(requireContext(),data!!.subjectList[group][3].correct)
+
         }
     }
 
@@ -265,7 +426,15 @@
             it.completed = false
             it.listend = false
         }
-
+        cover_1.gone()
+        cover_2.gone()
+        cover_3.gone()
+        cover_4.gone()
+        tv_name.text =""
+        cl_voice_end_1.gone()
+        cl_voice_end_2.gone()
+        cl_voice_end_3.gone()
+        cl_voice_end_4.gone()
     }
 
     companion object{
@@ -289,11 +458,13 @@
     override fun onStartPlay() {
         playing = true
         val list = data!!.subjectList[group]
-        tv_name.text = list[list.map { it.correct }.indexOf(voiceList[voiceIndex])].name
+        if (voiceIndex in 0..3)
+            tv_name.text = list[list.map { it.correct }.indexOf(voiceList[voiceIndex])].name
         when(voiceIndex){
             0->{
                 iv1_1.gone()
                 iv2_1.gone()
+                iv_playing_1.visible()
                 iv_playing_1.visible()
             }
             1->{
@@ -313,13 +484,32 @@
                 iv_playing_4.visible()
             }
 
+            4->{
+                iv1_1_end.gone()
+                iv2_1_end.gone()
+                iv_playing_1_end.visible()
+            }
+            5->{
+                iv1_2_end.gone()
+                iv2_2_end.gone()
+                iv_playing_2_end.visible()
+            }
+            6->{
+                iv1_3_end.gone()
+                iv2_3_end.gone()
+                iv_playing_3_end.visible()
+            }
+            7->{
+                iv1_4_end.gone()
+                iv2_4_end.gone()
+                iv_playing_4_end.visible()
+            }
+
         }
     }
 
     override fun onFinishPlay() {
         playing = false
-        val subject = data!!.subjectList[group][voiceIndex]
-        subject.listend = true
         when(voiceIndex){
             0->{
                 iv1_1.visible()
@@ -341,7 +531,29 @@
                 iv2_4.visible()
                 iv_playing_4.gone()
             }
-
+            4->{
+                iv1_1_end.visible()
+                iv2_1_end.visible()
+                iv_playing_1_end.gone()
+            }
+            5->{
+                iv1_2_end.visible()
+                iv2_2_end.visible()
+                iv_playing_2_end.gone()
+            }
+            6->{
+                iv1_3_end.visible()
+                iv2_3_end.visible()
+                iv_playing_3_end.gone()
+            }
+            7->{
+                iv1_4_end.visible()
+                iv2_4_end.visible()
+                iv_playing_4_end.gone()
+            }
+        }
+        if (data!!.subjectList[group].filter { it.completed }.size == 4){ //全部答对
+            handler?.sendEmptyMessage(TO_NEXT)
         }
     }
 }
\ No newline at end of file

--
Gitblit v1.7.1