罗明文
2024-06-19 481723ce3c05d74fec53b8567b9c79d77bdcc155
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package com.dollearn.student.ui.home
 
import android.util.Log
import android.widget.SeekBar
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.visible
import com.dueeeke.videocontroller.StandardVideoController
import com.dueeeke.videocontroller.component.*
import com.dueeeke.videoplayer.player.VideoView
import com.dollearn.student.R
import com.dollearn.student.network.HttpManager
import com.dollearn.student.network.request
import com.dollearn.student.ui.TransparentStatusBarActivity
import com.dollearn.student.utils.Const
import com.dollearn.student.utils.event.EmptyEvent
import com.dollearn.student.utils.extention.loadLongImage
import com.dollearn.student.utils.glide.GlideUtil
import kotlinx.android.synthetic.main.activity_video_detail.*
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.backgroundResource
import org.jetbrains.anko.textColorResource
 
class VideoDetailActivity : TransparentStatusBarActivity(), VideoView.OnStateChangeListener {
    override fun setContentView() = R.layout.activity_video_detail
 
    private val type by lazy { intent.getIntExtra("type", VideoHomeActivity.TYPE_COURSE) }
    private val id by lazy { intent.getStringExtra("id")?:"" }
    private val courseId by lazy { intent.getStringExtra("courseId")?:"" }
    private val scId by lazy { intent.getStringExtra("scId")?:"" }
    private var videoTitle = ""
 
    private val mController by lazy {
        StandardVideoController(this).apply {
            val titleView = object : TitleView(this@VideoDetailActivity){}
            titleView.setTitle(videoTitle)
            val vCV = object : VodControlView(this@VideoDetailActivity) {}
            vCV.findViewById<SeekBar>(R.id.seekBar).setOnTouchListener { v, event ->
                return@setOnTouchListener true
            }
            addControlComponent(object : CompleteView(this@VideoDetailActivity){},
                object : ErrorView(this@VideoDetailActivity){},object : PrepareView(this@VideoDetailActivity){},
                titleView,object : GestureView(this@VideoDetailActivity){}, vCV
            )
        }
    }
 
    override fun initClick() {
        iv_play.setOnClickListener {
            mVideoView.start()
            iv_cover.gone()
            iv_play.gone()
        }
    }
 
    override fun initView() {
        title = if (type == VideoHomeActivity.TYPE_PRACTICE){
            tv_course.visible()
            "课后练习"
        } else if (type == VideoHomeActivity.TYPE_COURSE) "线上课得积分" else "看视频得奖励"
        getData()
    }
 
    private fun getData(){
        if (type == VideoHomeActivity.TYPE_PRACTICE)
            HttpManager.afterSourceDetail(id,courseId,scId).request(this){_,data->
                data?.apply {
                    videoTitle = videoName
                    tv_name.text = data.videoName
                    tv_introduce.text = data.synopsis
                    tv_score.text = "${data.integral}积分"
                    tv_state.text = if (data.studyStatus == 2){
                        tv_state.textColorResource = R.color.colorDeepGreen
                        tv_state.backgroundResource = R.drawable.bg_green_1dp
                        "已学习"
                    }else{
                        tv_state.textColorResource = R.color.colorYellow
                        tv_state.backgroundResource = R.drawable.bg_orange_1dp
                        "未学习"
                    }
                    if (!detailedDiagram.isNullOrEmpty()){
                        detailedDiagram.loadLongImage(this@VideoDetailActivity,iv_detail)
                    }
                    GlideUtil.load(this@VideoDetailActivity,videoURL,iv_cover,0)
                    mVideoView.setUrl(videoURL)
                    tv_course.text ="布置运动营:${packageName}"
                    mVideoView.setVideoController(mController)
                    mVideoView.setOnStateChangeListener(this@VideoDetailActivity)
                }
        } else
            HttpManager.queryBenefitsVideosInfo(id).request(this){_,data->
                data?.apply {
                    videoTitle = name
                    tv_name.text = data.name
                    tv_introduce.text = data.introduce
                    tv_score.text = "${data.integral}积分"
                    tv_state.text = if (data.study == 1){
                        tv_state.textColorResource = R.color.colorDeepGreen
                        tv_state.backgroundResource = R.drawable.bg_green_1dp
                        "已学习"
                    }else{
                        tv_state.textColorResource = R.color.colorYellow
                        tv_state.backgroundResource = R.drawable.bg_orange_1dp
                        "未学习"
                    }
                    if (!introductionDrawing.isNullOrEmpty()){
                        introductionDrawing.loadLongImage(this@VideoDetailActivity,iv_detail)
                    }
                    GlideUtil.load(this@VideoDetailActivity,courseVideo,iv_cover,0)
                    mVideoView.setUrl(courseVideo)
                    mVideoView.setVideoController(mController)
                    mVideoView.setOnStateChangeListener(this@VideoDetailActivity)
            }
        }
    }
 
    override fun onPlayerStateChanged(playerState: Int) {
 
    }
 
    override fun onPlayStateChanged(playState: Int) {
        when(playState){
            VideoView.STATE_PREPARED->{
                Log.e("Video playState","视频准备就绪")
            }
 
            VideoView.STATE_PLAYBACK_COMPLETED->{ //播放结束,领取奖励
                iv_cover.visible()
                iv_play.visible()
                if (tv_state.text == "未学习")
                    if (type == VideoHomeActivity.TYPE_PRACTICE)
                        HttpManager.updateVideoStatus(id,courseId, scId).request(this){_,data->
                            tv_state.textColorResource = R.color.colorDeepGreen
                            tv_state.backgroundResource = R.drawable.bg_green_1dp
                            tv_state.text = "已学习"
                            EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //积分刷新
                        }
                    else
                        HttpManager.receiveAward(id).request(this){_,data->
                            myToast("奖励领取成功")
                            tv_state.textColorResource = R.color.colorDeepGreen
                            tv_state.backgroundResource = R.drawable.bg_green_1dp
                            tv_state.text = "已学习"
                            EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //积分刷新
                        }
            }
        }
    }
 
    override fun onDestroy() {
        super.onDestroy()
        if (mVideoView != null) {
            mVideoView.release()
            mVideoView.removeOnStateChangeListener(this)
        }
    }
}