package com.dollearn.student.ui.home
|
|
import android.os.Handler
|
import android.os.Looper
|
import android.os.Message
|
import android.util.Log
|
import android.view.View
|
import androidx.core.os.bundleOf
|
import cn.sinata.xldutils.fragment.BaseFragment
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.SPUtils
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.visible
|
import com.dollearn.student.R
|
import com.dollearn.student.utils.AudioUtils
|
import com.dollearn.student.utils.Const
|
import com.dollearn.student.utils.extention.clickDelay
|
import kotlinx.android.synthetic.main.fragmetn_look_img.*
|
|
class LookImgFragment:BaseFragment(), AudioUtils.OnAudioStatusUpdateListener {
|
override fun contentViewId() = R.layout.fragmetn_look_img
|
|
private val TAG = "Choose=======》"
|
|
private var handler:Handler? = null
|
|
private val index by lazy { arguments?.getInt("index")?:0 }
|
private val data by lazy {
|
(requireActivity() as LookImgActivity).data
|
}
|
private val act by lazy { (requireActivity() as LookImgActivity) }
|
private val voiceList = arrayListOf<String>()
|
|
private val PLAY_VOICE = 1
|
private val TO_NEXT = 10
|
|
private val PLAY_ERROR = 3
|
private val PLAY_RIGHT = 4
|
|
private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) }
|
private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) }
|
|
private var rightPlaying = false
|
private var errorPlaying = false
|
|
private val player by lazy { AudioUtils() }
|
|
private var voiceIndex = -1 //点击播放的声音序号 0-2取值
|
private var playing = false //播放中,不能有任何操作
|
|
private var nowVoiceView: View? = null
|
|
override fun onFirstVisibleToUser() {
|
player.setOnAudioStatusUpdateListener(this)
|
player.stopPlayMusic()
|
handler = object : Handler(Looper.getMainLooper()){
|
override fun handleMessage(msg: Message) {
|
super.handleMessage(msg)
|
when(msg.what){
|
PLAY_VOICE->{
|
playing = true
|
if (voiceIndex<voiceList.size)
|
player.startPlayMusic(requireContext(),voiceList[voiceIndex])
|
}
|
TO_NEXT->{
|
if (isAdded&&!playing)
|
(requireActivity() as LookImgActivity).next()
|
}
|
PLAY_RIGHT->{
|
rightPlaying = true
|
player.startPlayMusic(requireContext(),rightVoice)
|
}
|
PLAY_ERROR->{
|
rl_check_1.gone()
|
rl_check_2.gone()
|
rl_check_3.gone()
|
errorPlaying = true
|
player.startPlayMusic(requireContext(),errorVoice)
|
}
|
}
|
}
|
}
|
data?.storyList?.get(index)?.apply {
|
iv_1.setImageURI(img)
|
voiceList.add(correct)
|
voiceList.addAll(error!!.split(","))
|
voiceList.shuffle()
|
}
|
recover()
|
setOnClick()
|
}
|
|
private fun setOnClick() {
|
cl_voice1.clickDelay {
|
if (playing)
|
return@clickDelay
|
voiceIndex = 0
|
handler?.sendEmptyMessage(PLAY_VOICE)
|
}
|
|
cl_voice2.clickDelay {
|
if (playing)
|
return@clickDelay
|
voiceIndex = 1
|
handler?.sendEmptyMessage(PLAY_VOICE)
|
}
|
|
cl_voice3.clickDelay {
|
if (playing)
|
return@clickDelay
|
voiceIndex = 2
|
handler?.sendEmptyMessage(PLAY_VOICE)
|
}
|
|
rl_check_1.clickDelay {
|
if (playing)
|
return@clickDelay
|
if (rl_check_1.visibility == View.VISIBLE&&rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE){
|
dot_1.visible()
|
act.totalCount++
|
if (voiceList[0] == data!!.storyList[index].correct){
|
act.rightCount++
|
motion.transitionToEnd()
|
nowVoiceView = cl_voice1
|
handler?.sendEmptyMessage(PLAY_RIGHT)
|
|
}else{
|
handler?.sendEmptyMessage(PLAY_ERROR)
|
iv_error_1.visible()
|
dot_1.postDelayed({
|
iv_error_1.gone()
|
dot_1.gone()
|
},2000)
|
}
|
}else{
|
myToast("请听完")
|
}
|
|
}
|
|
rl_check_2.clickDelay {
|
if (playing)
|
return@clickDelay
|
if (rl_check_1.visibility == View.VISIBLE&&rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) {
|
dot_2.visible()
|
act.totalCount++
|
if (voiceList[1] == data!!.storyList[index].correct){
|
act.rightCount++
|
motion.transitionToEnd()
|
nowVoiceView = cl_voice2
|
handler?.sendEmptyMessage(PLAY_RIGHT)
|
|
}else{
|
handler?.sendEmptyMessage(PLAY_ERROR)
|
iv_error_2.visible()
|
dot_1.postDelayed({
|
dot_2.gone()
|
iv_error_2.gone()
|
},2000)
|
}
|
}else
|
myToast("请听完")
|
}
|
rl_check_3.clickDelay {
|
if (playing)
|
return@clickDelay
|
if (rl_check_1.visibility == View.VISIBLE&&rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) {
|
dot_3.visible()
|
act.totalCount++
|
if (voiceList[2] == data!!.storyList[index].correct){
|
act.rightCount++
|
motion.transitionToEnd()
|
nowVoiceView = cl_voice3
|
handler?.sendEmptyMessage(PLAY_RIGHT)
|
|
}else{
|
handler?.sendEmptyMessage(PLAY_ERROR)
|
iv_error_3.visible()
|
dot_1.postDelayed({
|
iv_error_3.gone()
|
dot_3.gone()
|
},2000)
|
}
|
}else
|
myToast("请听完")
|
}
|
}
|
|
/**
|
* 重置
|
*/
|
fun recover() {
|
voiceList.shuffle()
|
rl_check_1.gone()
|
rl_check_2.gone()
|
rl_check_3.gone()
|
dot_1.gone()
|
dot_2.gone()
|
dot_3.gone()
|
//设置动画飞行路径 3对1
|
val rightVoiceIndex = voiceList.indexOf(data!!.storyList[index].correct)
|
var start = 0
|
var end = 0
|
when(rightVoiceIndex){
|
0->{
|
start = R.id.start_1
|
end = R.id.end_1
|
}
|
1->{
|
start = R.id.start_2
|
end = R.id.end_2
|
}
|
2->{
|
start = R.id.start_3
|
end = R.id.end_3
|
}
|
}
|
motion.progress = 0f
|
motion.setTransition(start,end)
|
data!!.storyList[index].completed = false
|
}
|
|
companion object{
|
/**
|
* @param index 题组号
|
*/
|
fun getInstance(index:Int):LookImgFragment{
|
val listenFragment = LookImgFragment()
|
listenFragment.arguments = bundleOf("index" to index)
|
return listenFragment
|
}
|
}
|
|
override fun onUpdate(db: Double, time: Long) {
|
}
|
|
override fun onStop(filePath: String?) {
|
}
|
|
override fun onStartPlay() {
|
playing = true
|
if (rightPlaying||errorPlaying)
|
return
|
if (voiceIndex == 0){
|
iv1_1.gone()
|
iv2_1.gone()
|
iv_playing_1.visible()
|
}
|
if (voiceIndex == 1){
|
iv1_2.gone()
|
iv2_2.gone()
|
iv_playing_2.visible()
|
}
|
if (voiceIndex == 2){
|
iv1_3.gone()
|
iv2_3.gone()
|
iv_playing_3.visible()
|
}
|
}
|
|
override fun onFinishPlay() {
|
playing = false
|
if (voiceIndex == 0&&!errorPlaying){
|
rl_check_1.visible()
|
iv1_1.visible()
|
iv2_1.visible()
|
iv_playing_1.gone()
|
}
|
if (voiceIndex == 1&&!errorPlaying){
|
rl_check_2.visible()
|
iv1_2.visible()
|
iv2_2.visible()
|
iv_playing_2.gone()
|
}
|
if (voiceIndex == 2&&!errorPlaying){
|
rl_check_3.visible()
|
iv1_3.visible()
|
iv2_3.visible()
|
iv_playing_3.gone()
|
}
|
if (errorPlaying){
|
errorPlaying = false
|
}
|
if (rightPlaying){
|
rightPlaying = false
|
nowVoiceView?.callOnClick()
|
data!!.storyList[index].completed = true
|
}
|
if (data!!.storyList[index].completed){ //本题已答对
|
Log.e(TAG,"选对答案后的播放结束3秒后进入下一图")
|
handler?.sendEmptyMessageDelayed(TO_NEXT,500) //万俊杰:缩短为0.5秒
|
}
|
}
|
|
override fun onPause() {
|
super.onPause()
|
player.stopPlayMusic()
|
}
|
}
|