Просмотр исходного кода

1.点击控件添加动画效果

王鹏鹏 2 лет назад
Родитель
Сommit
3a379d9b44

+ 30 - 16
mmse/src/main/java/com/yingyangfly/mmse/fragment/CountFragment.kt

@@ -446,23 +446,9 @@ class CountFragment : BaseFragment<FragmentCountBinding>(), View.OnTouchListener
             MotionEvent.ACTION_UP -> {
                 v.startAnimation(getEndAnimation())
                 if (v.id == R.id.btnPrevious) {
-                    val bundle = Bundle()
-                    bundle.putInt("questionId", 11)
-                    bundle.putString("choiceItems", choiceItems)
-                    val controller = Navigation.findNavController(v)
-                    controller.navigate(
-                        R.id.action_countFragment_to_multipleChoiceFragment,
-                        bundle
-                    )
+                    pageUp(v)
                 } else if (v.id == R.id.btnNext) {
-                    if (judge()) {
-                        val bundle = bundleOf("questionId" to 22)
-                        val controller = Navigation.findNavController(v)
-                        controller.navigate(
-                            R.id.action_countFragment_to_recognitionImageFragment,
-                            bundle
-                        )
-                    }
+                    pageNext(v)
                 }
             }
             MotionEvent.ACTION_CANCEL -> {
@@ -473,4 +459,32 @@ class CountFragment : BaseFragment<FragmentCountBinding>(), View.OnTouchListener
         }
         return true
     }
+
+    /**
+     * 上一页
+     */
+    private fun pageUp(v: View) {
+        val bundle = Bundle()
+        bundle.putInt("questionId", 11)
+        bundle.putString("choiceItems", choiceItems)
+        val controller = Navigation.findNavController(v)
+        controller.navigate(
+            R.id.action_countFragment_to_multipleChoiceFragment,
+            bundle
+        )
+    }
+
+    /**
+     * 下一页
+     */
+    private fun pageNext(v: View) {
+        if (judge()) {
+            val bundle = bundleOf("questionId" to 22)
+            val controller = Navigation.findNavController(v)
+            controller.navigate(
+                R.id.action_countFragment_to_recognitionImageFragment,
+                bundle
+            )
+        }
+    }
 }

+ 71 - 27
mmse/src/main/java/com/yingyangfly/mmse/fragment/DrawDesignsFragment.kt

@@ -1,26 +1,29 @@
 package com.yingyangfly.mmse.fragment
 
+import android.annotation.SuppressLint
 import android.graphics.Bitmap
 import android.os.Bundle
+import android.view.MotionEvent
+import android.view.View
 import androidx.core.os.bundleOf
 import androidx.navigation.Navigation
 import com.yingyang.mmse.R
 import com.yingyang.mmse.databinding.FragmentDrawDesignsBinding
 import com.yingyangfly.baselib.base.BaseFragment
 import com.yingyangfly.baselib.db.QuestionsBean
-import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
 
 /**
  * 画图
  */
-class DrawDesignsFragment : BaseFragment<FragmentDrawDesignsBinding>() {
+class DrawDesignsFragment : BaseFragment<FragmentDrawDesignsBinding>(), View.OnTouchListener {
 
     /**
      * 原始问题id
      */
-    var questionId = 0
-
-    var question: QuestionsBean? = null
+    private var questionId = 0
+    private var question: QuestionsBean? = null
 
     override fun onCreate(savedInstanceState: Bundle?) {
         questionId = arguments?.getInt("questionId") ?: 30
@@ -31,30 +34,12 @@ class DrawDesignsFragment : BaseFragment<FragmentDrawDesignsBinding>() {
 
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
         binding {
-            rubberLayout.setOnSingleClickListener {
-                signatureView.clear()
-            }
-            btnPrevious.setOnSingleClickListener {
-                val bundle = bundleOf("questionId" to 29)
-                val controller = Navigation.findNavController(it)
-                controller.navigate(
-                    R.id.action_drawDesignsFragment_to_judgmentFragment,
-                    bundle
-                )
-            }
-            btnNext.setOnSingleClickListener {
-                val bundle = Bundle()
-                bundle.putInt("questionId", 30)
-                val bitmap: Bitmap = signatureView.getCachebBitmaps()
-                bundle.putParcelable("bitmap", bitmap)
-                val controller = Navigation.findNavController(it)
-                controller.navigate(
-                    R.id.action_drawDesignsFragment_to_recognitionImageFragment,
-                    bundle
-                )
-            }
+            rubberLayout.setOnTouchListener(this@DrawDesignsFragment)
+            btnPrevious.setOnTouchListener(this@DrawDesignsFragment)
+            btnNext.setOnTouchListener(this@DrawDesignsFragment)
         }
     }
 
@@ -80,4 +65,63 @@ class DrawDesignsFragment : BaseFragment<FragmentDrawDesignsBinding>() {
             }
         }
     }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext || v.id == R.id.rubberLayout) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                when (v.id) {
+                    R.id.btnPrevious -> {
+                        pageUp(v)
+                    }
+                    R.id.btnNext -> {
+                        pageNext(v)
+                    }
+                    R.id.rubberLayout -> {
+                        binding.signatureView.clear()
+                    }
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext || v.id == R.id.rubberLayout) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
+
+    /**
+     * 上一页
+     */
+    private fun pageUp(v: View) {
+        val bundle = bundleOf("questionId" to 29)
+        val controller = Navigation.findNavController(v)
+        controller.navigate(
+            R.id.action_drawDesignsFragment_to_judgmentFragment,
+            bundle
+        )
+    }
+
+    /**
+     * 下一页
+     */
+    private fun pageNext(v: View) {
+        val bundle = Bundle()
+        bundle.putInt("questionId", 30)
+        val bitmap: Bitmap = binding.signatureView.getCachebBitmaps()
+        bundle.putParcelable("bitmap", bitmap)
+        val controller = Navigation.findNavController(v)
+        controller.navigate(
+            R.id.action_drawDesignsFragment_to_recognitionImageFragment,
+            bundle
+        )
+    }
+
 }

+ 72 - 30
mmse/src/main/java/com/yingyangfly/mmse/fragment/JudgmentRecordFragment.kt

@@ -1,28 +1,31 @@
 package com.yingyangfly.mmse.fragment
 
+import android.annotation.SuppressLint
 import android.os.Bundle
 import android.text.TextUtils
+import android.view.MotionEvent
+import android.view.View
 import androidx.core.os.bundleOf
 import androidx.navigation.Navigation
 import com.yingyang.mmse.R
 import com.yingyang.mmse.databinding.FragmentJudgmentRecordBinding
 import com.yingyangfly.baselib.base.BaseFragment
 import com.yingyangfly.baselib.db.QuestionsBean
-import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.voice.PlayVoice
 
 /**
  * 听录音重复
  */
-class JudgmentRecordFragment : BaseFragment<FragmentJudgmentRecordBinding>() {
+class JudgmentRecordFragment : BaseFragment<FragmentJudgmentRecordBinding>(), View.OnTouchListener {
 
     /**
      * 原始问题id
      */
-    var questionId = 0
-    var question: QuestionsBean? = null
-
+    private var questionId = 0
+    private var question: QuestionsBean? = null
     private var playVoice: PlayVoice? = null
 
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -35,14 +38,10 @@ class JudgmentRecordFragment : BaseFragment<FragmentJudgmentRecordBinding>() {
         playVoice?.setContext(mContext)
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
         binding {
-            soundImage.setOnSingleClickListener {
-                if (question != null) {
-                    playVoice?.speak(question?.reviewItem!!)
-                }
-            }
-            judgeRadio.setOnCheckedChangeListener { group, checkedId ->
+            judgeRadio.setOnCheckedChangeListener { _, checkedId ->
                 question?.reviewId = question?.id!!
                 question?.reviewAnswer = ""
                 if (question != null) {
@@ -58,25 +57,9 @@ class JudgmentRecordFragment : BaseFragment<FragmentJudgmentRecordBinding>() {
                     dao?.update(question!!)
                 }
             }
-            btnPrevious.setOnSingleClickListener {
-                val bundle = bundleOf("questionId" to 22)
-                val controller = Navigation.findNavController(it)
-                controller.navigate(
-                    R.id.action_judgmentRecordFragment_to_recognitionImageFragment,
-                    bundle
-                )
-            }
-
-            btnNext.setOnSingleClickListener {
-                if (question != null) {
-                    if (question?.inputString.isNullOrEmpty()) {
-                        "请判断受试者的回答是否正确".toast()
-                    } else {
-                        val controller = Navigation.findNavController(it)
-                        controller.navigate(R.id.action_judgmentRecordFragment_to_readFragment)
-                    }
-                }
-            }
+            soundImage.setOnTouchListener(this@JudgmentRecordFragment)
+            btnPrevious.setOnTouchListener(this@JudgmentRecordFragment)
+            btnNext.setOnTouchListener(this@JudgmentRecordFragment)
         }
     }
 
@@ -101,4 +84,63 @@ class JudgmentRecordFragment : BaseFragment<FragmentJudgmentRecordBinding>() {
             }
         }
     }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext || v.id == R.id.soundImage) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                when (v.id) {
+                    R.id.btnPrevious -> {
+                        pageUp(v)
+                    }
+                    R.id.btnNext -> {
+                        pageNext(v)
+                    }
+                    R.id.soundImage -> {
+                        if (question != null) {
+                            playVoice?.speak(question?.reviewItem!!)
+                        }
+                    }
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext || v.id == R.id.soundImage) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
+
+    /**
+     * 上一页
+     */
+    private fun pageUp(v: View) {
+        val bundle = bundleOf("questionId" to 22)
+        val controller = Navigation.findNavController(v)
+        controller.navigate(
+            R.id.action_judgmentRecordFragment_to_recognitionImageFragment,
+            bundle
+        )
+    }
+
+    /**
+     * 下一页
+     */
+    private fun pageNext(v: View) {
+        if (question != null) {
+            if (question?.inputString.isNullOrEmpty()) {
+                "请判断受试者的回答是否正确".toast()
+            } else {
+                val controller = Navigation.findNavController(v)
+                controller.navigate(R.id.action_judgmentRecordFragment_to_readFragment)
+            }
+        }
+    }
 }

+ 59 - 19
mmse/src/main/java/com/yingyangfly/mmse/fragment/MemoryWordsFragment.kt

@@ -1,46 +1,86 @@
 package com.yingyangfly.mmse.fragment
 
+import android.annotation.SuppressLint
 import android.os.Bundle
+import android.view.MotionEvent
+import android.view.View
 import androidx.navigation.Navigation
 import com.yingyang.mmse.R
 import com.yingyang.mmse.databinding.FragmentMemoryWordsBinding
 import com.yingyangfly.baselib.base.BaseFragment
-import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
 
 /**
  * 回忆词语
  */
-class MemoryWordsFragment : BaseFragment<FragmentMemoryWordsBinding>() {
+class MemoryWordsFragment : BaseFragment<FragmentMemoryWordsBinding>(), View.OnTouchListener {
 
 
     override fun initViews() {
 
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
         binding {
-            btnPrevious.setOnSingleClickListener {
-                val bundle = Bundle()
-                bundle.putInt("questionId", 30)
-                val controller = Navigation.findNavController(it)
-                controller.navigate(
-                    R.id.action_memoryWordsFragment_to_recognitionImageFragment,
-                    bundle
-                )
+            btnPrevious.setOnTouchListener(this@MemoryWordsFragment)
+            btnNext.setOnTouchListener(this@MemoryWordsFragment)
+        }
+    }
+
+    override fun initData() {
+
+    }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                if (v.id == R.id.btnPrevious) {
+                    pageUp(v)
+                } else if (v.id == R.id.btnNext) {
+                    pageNext(v)
+                }
             }
-            btnNext.setOnSingleClickListener {
-                val bundle = Bundle()
-                bundle.putInt("questionId", 19)
-                val controller = Navigation.findNavController(it)
-                controller.navigate(
-                    R.id.action_memoryWordsFragment_to_multipleChoiceFragment,
-                    bundle
-                )
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext) {
+                    v.startAnimation(getEndAnimation())
+                }
             }
         }
+        return true
     }
 
-    override fun initData() {
+    /**
+     * 上一页
+     */
+    private fun pageUp(v: View) {
+        val bundle = Bundle()
+        bundle.putInt("questionId", 30)
+        val controller = Navigation.findNavController(v)
+        controller.navigate(
+            R.id.action_memoryWordsFragment_to_recognitionImageFragment,
+            bundle
+        )
+    }
 
+    /**
+     * 下一页
+     */
+    private fun pageNext(v: View) {
+        val bundle = Bundle()
+        bundle.putInt("questionId", 19)
+        val controller = Navigation.findNavController(v)
+        controller.navigate(
+            R.id.action_memoryWordsFragment_to_multipleChoiceFragment,
+            bundle
+        )
     }
 }

+ 99 - 59
mmse/src/main/java/com/yingyangfly/mmse/fragment/MultipleChoiceFragment.kt

@@ -1,13 +1,17 @@
 package com.yingyangfly.mmse.fragment
 
+import android.annotation.SuppressLint
 import android.os.Bundle
+import android.view.MotionEvent
+import android.view.View
 import androidx.core.os.bundleOf
 import androidx.navigation.Navigation
 import com.yingyang.mmse.R
 import com.yingyang.mmse.databinding.FragmentMultipleChoiceBinding
 import com.yingyangfly.baselib.base.BaseFragment
 import com.yingyangfly.baselib.db.QuestionsBean
-import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.utils.RxBusCodes
 import com.yingyangfly.mmse.adapter.ChoiceAdapter
@@ -16,7 +20,7 @@ import gorden.rxbus2.RxBus
 /**
  * 多选
  */
-class MultipleChoiceFragment : BaseFragment<FragmentMultipleChoiceBinding>() {
+class MultipleChoiceFragment : BaseFragment<FragmentMultipleChoiceBinding>(), View.OnTouchListener {
 
     /**
      * 问题id
@@ -47,64 +51,11 @@ class MultipleChoiceFragment : BaseFragment<FragmentMultipleChoiceBinding>() {
         }
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
         binding {
-            btnPrevious.setOnSingleClickListener {
-                when (questionId) {
-                    26 -> {
-                        val bundle = bundleOf("questionId" to questionId)
-                        val controller = Navigation.findNavController(it)
-                        controller.navigate(
-                            R.id.action_multipleChoiceFragment_to_recordActionFragment,
-                            bundle
-                        )
-                    }
-                    19 -> {
-                        val bundle = bundleOf("questionId" to 30)
-                        val controller = Navigation.findNavController(it)
-                        controller.navigate(
-                            R.id.action_multipleChoiceFragment_to_recordActionFragment,
-                            bundle
-                        )
-
-                    }
-                    else -> {
-                        val bundle = bundleOf("questionId" to 11)
-                        val controller = Navigation.findNavController(it)
-                        controller.navigate(
-                            R.id.action_multipleChoiceFragment_to_soundRecordFragment,
-                            bundle
-                        )
-                    }
-                }
-            }
-            btnNext.setOnSingleClickListener {
-                if (judge()) {
-                    when (questionId) {
-                        26 -> {
-                            val bundle = Bundle()
-                            bundle.putInt("questionId", 29)
-                            val controller = Navigation.findNavController(it)
-                            controller.navigate(
-                                R.id.action_multipleChoiceFragment_to_judgmentFragment,
-                                bundle
-                            )
-                        }
-                        19 -> {
-                            RxBus.get().send(RxBusCodes.EndMMSEQuestion)
-                        }
-                        else -> {
-                            val bundle = Bundle()
-                            bundle.putInt("questionId", 14)
-                            val controller = Navigation.findNavController(it)
-                            controller.navigate(
-                                R.id.action_multipleChoiceFragment_to_countFragment,
-                                bundle
-                            )
-                        }
-                    }
-                }
-            }
+            btnPrevious.setOnTouchListener(this@MultipleChoiceFragment)
+            btnNext.setOnTouchListener(this@MultipleChoiceFragment)
         }
     }
 
@@ -145,7 +96,7 @@ class MultipleChoiceFragment : BaseFragment<FragmentMultipleChoiceBinding>() {
      * 非空判断
      */
     private fun judge(): Boolean {
-        if (choiceItemList.isNullOrEmpty().not()) {
+        if (choiceItemList.isEmpty().not()) {
             choiceItemList.forEach {
                 if (it.inputString.isNullOrEmpty()) {
                     "请判断答案是否正确".toast()
@@ -155,4 +106,93 @@ class MultipleChoiceFragment : BaseFragment<FragmentMultipleChoiceBinding>() {
         }
         return true
     }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                if (v.id == R.id.btnPrevious) {
+                    pageUp(v)
+                } else if (v.id == R.id.btnNext) {
+                    pageNext(v)
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
+
+    /**
+     * 上一页
+     */
+    private fun pageUp(v: View) {
+        when (questionId) {
+            26 -> {
+                val bundle = bundleOf("questionId" to questionId)
+                val controller = Navigation.findNavController(v)
+                controller.navigate(
+                    R.id.action_multipleChoiceFragment_to_recordActionFragment,
+                    bundle
+                )
+            }
+            19 -> {
+                val bundle = bundleOf("questionId" to 30)
+                val controller = Navigation.findNavController(v)
+                controller.navigate(
+                    R.id.action_multipleChoiceFragment_to_recordActionFragment,
+                    bundle
+                )
+
+            }
+            else -> {
+                val bundle = bundleOf("questionId" to 11)
+                val controller = Navigation.findNavController(v)
+                controller.navigate(
+                    R.id.action_multipleChoiceFragment_to_soundRecordFragment,
+                    bundle
+                )
+            }
+        }
+    }
+
+    /**
+     * 下一页
+     */
+    private fun pageNext(v: View) {
+        if (judge()) {
+            when (questionId) {
+                26 -> {
+                    val bundle = Bundle()
+                    bundle.putInt("questionId", 29)
+                    val controller = Navigation.findNavController(v)
+                    controller.navigate(
+                        R.id.action_multipleChoiceFragment_to_judgmentFragment,
+                        bundle
+                    )
+                }
+                19 -> {
+                    RxBus.get().send(RxBusCodes.EndMMSEQuestion)
+                }
+                else -> {
+                    val bundle = Bundle()
+                    bundle.putInt("questionId", 14)
+                    val controller = Navigation.findNavController(v)
+                    controller.navigate(
+                        R.id.action_multipleChoiceFragment_to_countFragment,
+                        bundle
+                    )
+                }
+            }
+        }
+    }
 }

+ 68 - 27
mmse/src/main/java/com/yingyangfly/mmse/fragment/ReadFragment.kt

@@ -1,27 +1,31 @@
 package com.yingyangfly.mmse.fragment
 
+import android.annotation.SuppressLint
 import android.os.Bundle
 import android.text.TextUtils
+import android.view.MotionEvent
+import android.view.View
 import androidx.core.os.bundleOf
 import androidx.navigation.Navigation
 import com.yingyang.mmse.R
 import com.yingyang.mmse.databinding.FragmentReadBinding
 import com.yingyangfly.baselib.base.BaseFragment
 import com.yingyangfly.baselib.db.QuestionsBean
-import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.mmse.dialog.CloseEyesFragment
 
 /**
  * 看字做动作
  */
-class ReadFragment : BaseFragment<FragmentReadBinding>() {
+class ReadFragment : BaseFragment<FragmentReadBinding>(), View.OnTouchListener {
 
     /**
      * 问题id
      */
-    var questionId = 0
-    var question: QuestionsBean? = null
+    private var questionId = 0
+    private var question: QuestionsBean? = null
 
     override fun onCreate(savedInstanceState: Bundle?) {
         questionId = arguments?.getInt("questionId") ?: 25
@@ -32,31 +36,13 @@ class ReadFragment : BaseFragment<FragmentReadBinding>() {
 
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
         binding {
-            soundImage.setOnSingleClickListener {
-                val closeEyesFragment = CloseEyesFragment()
-                closeEyesFragment.show(childFragmentManager, "closeEyesFragment")
-            }
-
-            btnPrevious.setOnSingleClickListener {
-                val bundle = bundleOf("questionId" to 24)
-                val controller = Navigation.findNavController(it)
-                controller.navigate(R.id.action_readFragment_to_judgmentRecordFragment, bundle)
-            }
-
-            btnNext.setOnSingleClickListener {
-                if (question!!.inputString.isNullOrEmpty()) {
-                    val str = "请判断受试者的回答是否正确"
-                    str.toast()
-                } else {
-                    val bundle = bundleOf("questionId" to 26)
-                    val controller = Navigation.findNavController(it)
-                    controller.navigate(R.id.action_readFragment_to_recordActionFragment, bundle)
-                }
-            }
-
-            judgeRadio.setOnCheckedChangeListener { group, checkedId ->
+            soundImage.setOnTouchListener(this@ReadFragment)
+            btnPrevious.setOnTouchListener(this@ReadFragment)
+            btnNext.setOnTouchListener(this@ReadFragment)
+            judgeRadio.setOnCheckedChangeListener { _, checkedId ->
                 if (question != null && dao != null) {
                     question?.reviewId = question!!.id
                     question?.reviewAnswer = ""
@@ -96,4 +82,59 @@ class ReadFragment : BaseFragment<FragmentReadBinding>() {
             binding.btnCorrect.isChecked = TextUtils.equals("是", question!!.inputString)
         }
     }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext || v.id == R.id.soundImage) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                when (v.id) {
+                    R.id.btnPrevious -> {
+                        pageUp(v)
+                    }
+                    R.id.btnNext -> {
+                        pageNext(v)
+                    }
+                    R.id.soundImage -> {
+                        val closeEyesFragment = CloseEyesFragment()
+                        closeEyesFragment.show(childFragmentManager, "closeEyesFragment")
+                    }
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext || v.id == R.id.soundImage) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
+
+    /**
+     * 上一页
+     */
+    private fun pageUp(v: View) {
+        val bundle = bundleOf("questionId" to 24)
+        val controller = Navigation.findNavController(v)
+        controller.navigate(R.id.action_readFragment_to_judgmentRecordFragment, bundle)
+    }
+
+    /**
+     * 下一页
+     */
+    private fun pageNext(v: View) {
+        if (question!!.inputString.isNullOrEmpty()) {
+            val str = "请判断受试者的回答是否正确"
+            str.toast()
+        } else {
+            val bundle = bundleOf("questionId" to 26)
+            val controller = Navigation.findNavController(v)
+            controller.navigate(R.id.action_readFragment_to_recordActionFragment, bundle)
+        }
+    }
 }

+ 81 - 41
mmse/src/main/java/com/yingyangfly/mmse/fragment/RecognitionImageFragment.kt

@@ -1,16 +1,20 @@
 package com.yingyangfly.mmse.fragment
 
+import android.annotation.SuppressLint
 import android.graphics.Bitmap
 import android.graphics.drawable.BitmapDrawable
 import android.graphics.drawable.Drawable
 import android.os.Bundle
+import android.view.MotionEvent
+import android.view.View
 import androidx.core.os.bundleOf
 import androidx.navigation.Navigation
 import com.yingyang.mmse.R
 import com.yingyang.mmse.databinding.FragmentRecognitionImageBinding
 import com.yingyangfly.baselib.base.BaseFragment
 import com.yingyangfly.baselib.db.QuestionsBean
-import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
 import com.yingyangfly.baselib.utils.ImageUtil
 import com.yingyangfly.mmse.adapter.ChoiceAdapter
 
@@ -18,7 +22,8 @@ import com.yingyangfly.mmse.adapter.ChoiceAdapter
 /**
  * 识图功能
  */
-class RecognitionImageFragment : BaseFragment<FragmentRecognitionImageBinding>() {
+class RecognitionImageFragment : BaseFragment<FragmentRecognitionImageBinding>(),
+    View.OnTouchListener {
 
     /**
      * 问题id
@@ -46,43 +51,11 @@ class RecognitionImageFragment : BaseFragment<FragmentRecognitionImageBinding>()
         }
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
         binding {
-            btnPrevious.setOnSingleClickListener {
-                if (questionId == 30) {
-                    val bundle = bundleOf("questionId" to questionId)
-                    val controller = Navigation.findNavController(it)
-                    controller.navigate(
-                        R.id.action_recognitionImageFragment_to_drawDesignsFragment,
-                        bundle
-                    )
-                } else {
-                    val bundle = bundleOf("questionId" to 21)
-                    val controller = Navigation.findNavController(it)
-                    controller.navigate(
-                        R.id.action_recognitionImageFragment_to_countFragment,
-                        bundle
-                    )
-                }
-            }
-
-            btnNext.setOnSingleClickListener {
-                if (questionId == 30) {
-                    val bundle = bundleOf("questionId" to 19)
-                    val controller = Navigation.findNavController(it)
-                    controller.navigate(
-                        R.id.action_recognitionImageFragment_to_memoryWordsFragment,
-                        bundle
-                    )
-                } else {
-                    val bundle = bundleOf("questionId" to 24)
-                    val controller = Navigation.findNavController(it)
-                    controller.navigate(
-                        R.id.action_recognitionImageFragment_to_judgmentRecordFragment,
-                        bundle
-                    )
-                }
-            }
+            btnPrevious.setOnTouchListener(this@RecognitionImageFragment)
+            btnNext.setOnTouchListener(this@RecognitionImageFragment)
         }
     }
 
@@ -101,10 +74,10 @@ class RecognitionImageFragment : BaseFragment<FragmentRecognitionImageBinding>()
     private fun loadData() {
         choiceItemList.clear()
         if (dao != null) {
-            val firstquestion = dao?.getQuestion(questionId)
-            if (firstquestion != null) {
-                binding.firstData = firstquestion
-                choiceItemList.add(firstquestion)
+            val firstQuestion = dao?.getQuestion(questionId)
+            if (firstQuestion != null) {
+                binding.firstData = firstQuestion
+                choiceItemList.add(firstQuestion)
             }
             val secondQuestionId = questionId + 1
             val secondQuestion = dao?.getQuestion(secondQuestionId)
@@ -122,4 +95,71 @@ class RecognitionImageFragment : BaseFragment<FragmentRecognitionImageBinding>()
         }
         adapter.setData(choiceItemList)
     }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                if (v.id == R.id.btnPrevious) {
+                    pageUp(v)
+                } else if (v.id == R.id.btnNext) {
+                    pageNext(v)
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
+
+    /**
+     * 上一页
+     */
+    private fun pageUp(v: View) {
+        if (questionId == 30) {
+            val bundle = bundleOf("questionId" to questionId)
+            val controller = Navigation.findNavController(v)
+            controller.navigate(
+                R.id.action_recognitionImageFragment_to_drawDesignsFragment,
+                bundle
+            )
+        } else {
+            val bundle = bundleOf("questionId" to 21)
+            val controller = Navigation.findNavController(v)
+            controller.navigate(
+                R.id.action_recognitionImageFragment_to_countFragment,
+                bundle
+            )
+        }
+    }
+
+    /**
+     * 下一页
+     */
+    private fun pageNext(v: View) {
+        if (questionId == 30) {
+            val bundle = bundleOf("questionId" to 19)
+            val controller = Navigation.findNavController(v)
+            controller.navigate(
+                R.id.action_recognitionImageFragment_to_memoryWordsFragment,
+                bundle
+            )
+        } else {
+            val bundle = bundleOf("questionId" to 24)
+            val controller = Navigation.findNavController(v)
+            controller.navigate(
+                R.id.action_recognitionImageFragment_to_judgmentRecordFragment,
+                bundle
+            )
+        }
+    }
 }

+ 62 - 19
mmse/src/main/java/com/yingyangfly/mmse/fragment/RecordActionFragment.kt

@@ -1,18 +1,23 @@
 package com.yingyangfly.mmse.fragment
 
+import android.annotation.SuppressLint
 import android.os.Bundle
+import android.view.MotionEvent
+import android.view.View
 import androidx.core.os.bundleOf
 import androidx.navigation.Navigation
 import com.yingyang.mmse.R
 import com.yingyang.mmse.databinding.FragmentRecordActionBinding
 import com.yingyangfly.baselib.base.BaseFragment
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
 import com.yingyangfly.baselib.voice.PlayVoice
 
 /**
  * 听录音做动作
  */
-class RecordActionFragment : BaseFragment<FragmentRecordActionBinding>() {
+class RecordActionFragment : BaseFragment<FragmentRecordActionBinding>(), View.OnTouchListener {
 
     /**
      * 问题id
@@ -34,26 +39,12 @@ class RecordActionFragment : BaseFragment<FragmentRecordActionBinding>() {
         playVoice?.setContext(mContext)
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
         binding {
-            btnPrevious.setOnSingleClickListener {
-                val bundle = bundleOf("questionId" to 25)
-                val controller = Navigation.findNavController(it)
-                controller.navigate(R.id.action_recordActionFragment_to_readFragment, bundle)
-            }
-
-            btnNext.setOnSingleClickListener {
-                val bundle = bundleOf("questionId" to 26)
-                val controller = Navigation.findNavController(it)
-                controller.navigate(
-                    R.id.action_recordActionFragment_to_multipleChoiceFragment,
-                    bundle
-                )
-            }
-
-            soundImage.setOnSingleClickListener {
-                playVoice?.speakWithParagraph(firstWord, secondWord, thirdWord)
-            }
+            btnPrevious.setOnTouchListener(this@RecordActionFragment)
+            btnNext.setOnTouchListener(this@RecordActionFragment)
+            soundImage.setOnTouchListener(this@RecordActionFragment)
         }
     }
 
@@ -92,4 +83,56 @@ class RecordActionFragment : BaseFragment<FragmentRecordActionBinding>() {
             playVoice?.stop()
         }
     }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext || v.id == R.id.soundImage) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                when (v.id) {
+                    R.id.btnPrevious -> {
+                        pageUp(v)
+                    }
+                    R.id.btnNext -> {
+                        pageNext(v)
+                    }
+                    R.id.soundImage -> {
+                        playVoice?.speakWithParagraph(firstWord, secondWord, thirdWord)
+                    }
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext || v.id == R.id.soundImage) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
+
+    /**
+     * 上一页
+     */
+    private fun pageUp(v: View) {
+        val bundle = bundleOf("questionId" to 25)
+        val controller = Navigation.findNavController(v)
+        controller.navigate(R.id.action_recordActionFragment_to_readFragment, bundle)
+    }
+
+    /**
+     * 下一页
+     */
+    private fun pageNext(v: View) {
+        val bundle = bundleOf("questionId" to 26)
+        val controller = Navigation.findNavController(v)
+        controller.navigate(
+            R.id.action_recordActionFragment_to_multipleChoiceFragment,
+            bundle
+        )
+    }
 }