package com.sinata.xqmuse.ui.course
|
|
import android.webkit.WebChromeClient
|
import android.webkit.WebSettings
|
import android.webkit.WebViewClient
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.isVideo
|
import cn.sinata.xldutils.utils.showAllowingStateLoss
|
import cn.sinata.xldutils.visible
|
import com.share.utils.ShareUtils
|
import com.sinata.xqmuse.R
|
import com.sinata.xqmuse.dialog.QrcodeDialog
|
import com.sinata.xqmuse.dialog.ShareDialog
|
import com.sinata.xqmuse.network.Apis
|
import com.sinata.xqmuse.network.HttpManager
|
import com.sinata.xqmuse.network.entity.CourseDetail
|
import com.sinata.xqmuse.network.request
|
import com.sinata.xqmuse.ui.TransparentStatusBarActivity
|
import com.sinata.xqmuse.utils.Const
|
import com.sinata.xqmuse.utils.glide.GlideUtil
|
import com.sinata.xqmuse.utils.interfaces.StringCallback
|
import com.umeng.socialize.bean.SHARE_MEDIA
|
import kotlinx.android.synthetic.main.activity_offline_course.*
|
import org.jetbrains.anko.backgroundColor
|
import org.jetbrains.anko.backgroundResource
|
import xyz.doikki.videocontroller.StandardVideoController
|
import xyz.doikki.videoplayer.player.BaseVideoView.*
|
|
|
class OfflineCourseActivity:TransparentStatusBarActivity(), OnStateChangeListener {
|
override fun setContentView() = R.layout.activity_offline_course
|
|
private val data by lazy { intent.getParcelableExtra<CourseDetail>("data") }
|
|
override fun initClick() {
|
iv_back.setOnClickListener { finish() }
|
iv_share.setOnClickListener {
|
val shareDialog = ShareDialog()
|
shareDialog.callback = object :StringCallback{
|
override fun onResult(rst: String) {
|
if (rst == "wx"){
|
ShareUtils.share(this@OfflineCourseActivity,
|
SHARE_MEDIA.WEIXIN,data?.courseTitle, Const.SHARE.SHARE_COURSE_TITLE,
|
Apis.SHARE_OFFLINE.format(data?.id),null,"")
|
}else{
|
ShareUtils.share(this@OfflineCourseActivity,
|
SHARE_MEDIA.WEIXIN_CIRCLE,data?.courseTitle,Const.SHARE.SHARE_COURSE_TITLE,
|
Apis.SHARE_OFFLINE.format(data?.id),null,"")
|
}
|
}
|
}
|
shareDialog.showAllowingStateLoss(supportFragmentManager,"share")
|
}
|
iv_collect.setOnClickListener {
|
HttpManager.collectCourse(data?.id?:"").request(this){_,_->
|
data?.isCollect = if (data?.isCollect == 1) 2 else 1
|
iv_collect.setImageResource(if (data?.isCollect == 1) R.mipmap.collected else R.mipmap.uncollect)
|
}
|
}
|
ivPlay.setOnClickListener {
|
ivPlay.gone()
|
mVideoView.start()
|
}
|
iv_contact.setOnClickListener {
|
QrcodeDialog.show(supportFragmentManager,data?.wxQrCode?:"")
|
}
|
}
|
|
override fun initView() {
|
mVideoView.setOnStateChangeListener(this@OfflineCourseActivity)
|
val settings = webView.settings
|
settings.javaScriptEnabled = true
|
settings.javaScriptCanOpenWindowsAutomatically = true
|
settings.defaultTextEncodingName = "utf-8"
|
settings.domStorageEnabled = true
|
settings.setSupportZoom(true)
|
// settings.textZoom = 200
|
settings.useWideViewPort = true
|
settings.loadWithOverviewMode = true
|
settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
|
webView.webChromeClient = object : WebChromeClient() {}
|
webView.webViewClient = object : WebViewClient() {}
|
webView.backgroundColor = 0
|
webView.background.alpha = 0
|
data?.apply {
|
iv_collect.setImageResource(if (data?.isCollect == 1) R.mipmap.collected else R.mipmap.uncollect)
|
if ((detailUrl?:"").isVideo()){
|
titleBar.gone()
|
val controller = StandardVideoController(this@OfflineCourseActivity)
|
controller.addDefaultControlComponent(courseTitle, false)
|
mVideoView.setVideoController(controller) //设置控制器
|
mVideoView.setUrl(detailUrl) //设置视频地址
|
GlideUtil.load(this@OfflineCourseActivity, coverUrl, iv_cover, 0)
|
}else{
|
cl_title.gone()
|
iv_cover.gone()
|
ivPlay.gone()
|
mVideoView.gone()
|
}
|
tv_name.text = courseTitle
|
tv_teacher.text = "导师 ${tutor}"
|
tv_address.text = address?:""
|
val sHead =
|
"<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>"
|
webView!!.loadDataWithBaseURL(
|
null,
|
sHead + briefIntroduction,
|
"text/html",
|
"utf-8",
|
null
|
)
|
iv_code.setImageURI(wxQrCode)
|
}
|
|
|
}
|
|
override fun onPlayerStateChanged(playerState: Int) {
|
|
}
|
|
override fun onPlayStateChanged(playState: Int) {
|
when(playState){
|
STATE_PLAYING->{
|
iv_cover.gone()
|
ivPlay.gone()
|
}
|
STATE_PLAYBACK_COMPLETED->{
|
iv_cover.visible()
|
ivPlay.visible()
|
}
|
}
|
}
|
|
override fun onPause() {
|
super.onPause()
|
mVideoView.pause()
|
}
|
|
override fun onResume() {
|
super.onResume()
|
mVideoView.resume()
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
mVideoView.release()
|
}
|
|
|
override fun onBackPressed() {
|
if (!mVideoView.onBackPressed()) {
|
super.onBackPressed()
|
}
|
}
|
}
|