package com.dollearn.student.ui.home
|
|
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
|
import com.dollearn.student.network.entity.MemoryBean
|
import com.dollearn.student.ui.TransparentStatusBarActivity
|
import com.dollearn.student.ui.home.adapter.CardAdapter
|
import kotlinx.android.synthetic.main.activity_memory.*
|
|
class MemoryActivity : TransparentStatusBarActivity() {
|
override fun setContentView() = R.layout.activity_memory
|
|
private val data by lazy {
|
intent.getParcelableExtra<MemoryBean>("data")!!
|
}
|
private val list = arrayListOf<Card>()
|
private val adapter = CardAdapter(list)
|
|
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()
|
}
|
|
/**
|
* 翻开卡片
|
*/
|
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 onDestroy() {
|
super.onDestroy()
|
handler?.removeMessages(PLAY_VOICE)
|
handler?.removeMessages(STUDY_TIME)
|
handler = null
|
}
|
}
|