From 481723ce3c05d74fec53b8567b9c79d77bdcc155 Mon Sep 17 00:00:00 2001 From: 罗明文 <125975490@qq.com> Date: 星期三, 19 六月 2024 02:27:53 +0800 Subject: [PATCH] save --- app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt | 103 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 91 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt index 6ab0321..7fd64c2 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt @@ -1,8 +1,9 @@ package com.dollearn.student.ui.home -import android.os.CountDownTimer +import android.os.Handler import androidx.core.os.bundleOf import androidx.recyclerview.widget.GridLayoutManager +import cn.sinata.xldutils.utils.showAllowingStateLoss import com.dollearn.student.R import com.dollearn.student.dialog.TipDialog import com.dollearn.student.network.entity.Card @@ -19,32 +20,110 @@ } private val list = arrayListOf<Card>() private val adapter = CardAdapter(list) - private val TIME = 600*1000L - private var timer:CountDownTimer? = null + + private var lastTime = 600 //剩余秒 + + private var totalCount = 0 + private var rightCount = 0 + + private var handler: Handler? = null + var time = 0 //学习秒数 + + + private val PLAY_VOICE = 1 + private val STUDY_TIME = 2 + + private val player by lazy { com.dollearn.student.utils.AudioUtils() } + + private var index = 0 + override fun initClick() { - + tv_exit.setOnClickListener { + if (tv_exit.text == "提交"){ + //todo 分数问题 + ResultActivity.startResult(this,0,0,0,7,totalCount,rightCount,100,time,data!!.data.id) + finish() + }else + finish() + } } override fun initView() { + handler = object : Handler(android.os.Looper.getMainLooper()){ + override fun handleMessage(msg: android.os.Message) { + super.handleMessage(msg) + when(msg.what){ + STUDY_TIME->{ + time++ + lastTime -- + tv_timer.text = "${lastTime}S" + if (lastTime == 0){ + val tipDialog = TipDialog() + tipDialog.arguments = bundleOf("msg" to "答题时间已结束,停止作答!","isAlert" to true,"ok" to "查看成绩") + tipDialog.setDismissCallback(object :TipDialog.OnDismiss{ + override fun onDismiss() { + ResultActivity.startResult(this@MemoryActivity,0,0,0,7,totalCount,rightCount + ,100,time,data!!.data.id) + } + }) + tipDialog.showAllowingStateLoss(supportFragmentManager,"finish") + }else + sendEmptyMessageDelayed(STUDY_TIME,1000) + } + PLAY_VOICE->{ + player.startPlayMusic(this@MemoryActivity,list[index].url) + } + } + } + } + + handler?.sendEmptyMessageDelayed(STUDY_TIME,1000) + rv_list.layoutManager = GridLayoutManager(this,5) rv_list.adapter = adapter list.addAll(data.photoList.map { Card(it.id,1,it.photo) }) list.addAll(data.voiceList.map { Card(it.id,2,it.voice) }) list.shuffle() adapter.notifyDataSetChanged() + } - timer = object :CountDownTimer(TIME,1000){ - override fun onTick(millisUntilFinished: Long) { + /** + * 翻开卡片 + */ + fun flyover(position:Int){ + val card = list[position] + if (card.type == 2){ + index = position + handler?.sendEmptyMessage(PLAY_VOICE) + } + if (adapter.position1!=-1&&adapter.position2!=-1){ //已经翻开2张卡片,比较结果是否匹配 + totalCount++ + val card1 = list[adapter.position1] + val card2 = list[adapter.position2] + if (card1.type!=card2.type&&card1.id == card2.id){//匹配成功 + adapter.releaseHolder() + rightCount++ + tv_timer.postDelayed({ + if (list.filter { !it.isBack }.size == list.size){ //全部答对 + tv_exit.text = "提交" + handler?.removeMessages(STUDY_TIME) //停止计时 + } + },500) + }else{ + tv_timer.postDelayed({ + adapter.bothToBack() + },500) } - - override fun onFinish() { - val tipDialog = TipDialog() - tipDialog.arguments = bundleOf("msg" to "答题时间已结束,停止作答!") - } - } } + + override fun onDestroy() { + super.onDestroy() + handler?.removeMessages(PLAY_VOICE) + handler?.removeMessages(STUDY_TIME) + handler = null + } } -- Gitblit v1.7.1