From 718f31c92e2029d05260810435a2c70cef6e6ce5 Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期四, 24 四月 2025 10:45:55 +0800 Subject: [PATCH] save --- app/src/main/java/com/sinata/xqmuse/ui/course/TeacherFragment.kt | 72 ++++++++++++++++++++++++++++++++--- 1 files changed, 65 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/sinata/xqmuse/ui/course/TeacherFragment.kt b/app/src/main/java/com/sinata/xqmuse/ui/course/TeacherFragment.kt index 079c1b9..024fe1e 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/course/TeacherFragment.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/course/TeacherFragment.kt @@ -4,14 +4,23 @@ import android.webkit.WebSettings import android.webkit.WebViewClient import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.LinearLayoutManager import cn.sinata.xldutils.fragment.BaseFragment +import cn.sinata.xldutils.gone +import cn.sinata.xldutils.visible +import com.sinata.xqmuse.MainActivity import com.sinata.xqmuse.R import com.sinata.xqmuse.network.HttpManager import com.sinata.xqmuse.network.entity.CourseBean import com.sinata.xqmuse.network.requestByF import com.sinata.xqmuse.ui.course.adapter.CourseGridAdapter +import com.sinata.xqmuse.utils.Const +import com.sinata.xqmuse.utils.cache.ProxyVideoCacheManager +import com.sinata.xqmuse.utils.event.EmptyEvent import kotlinx.android.synthetic.main.fragment_teacher.* +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.jetbrains.anko.backgroundColor +import xyz.doikki.videocontroller.StandardVideoController class TeacherFragment : BaseFragment() { override fun contentViewId() = R.layout.fragment_teacher @@ -20,6 +29,10 @@ private val adapter = CourseGridAdapter(list) override fun onFirstVisibleToUser() { + val controller = StandardVideoController(requireContext()) + controller.addDefaultControlComponent("", false) + mVideoView.setVideoController(controller) //设置控制器 + val settings = webView.settings settings.javaScriptEnabled = true settings.javaScriptCanOpenWindowsAutomatically = true @@ -32,21 +45,66 @@ settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING webView.webChromeClient = object : WebChromeClient() {} webView.webViewClient = object : WebViewClient() {} - rv_course.layoutManager = GridLayoutManager(requireContext(),2) + webView.backgroundColor = 0 + webView.background.alpha = 0 + rv_course.layoutManager = GridLayoutManager(requireContext(), 2) rv_course.adapter = adapter getData() + adapter.setOnItemClickListener { view, position -> + showDialog() + HttpManager.getPayCourseInfoById(list[position].id).requestByF( + this, + success = { _, data -> + dismissDialog() + data?.goDetail(requireContext()) + }){ _, _-> + dismissDialog() + } + } + iv_play_teacher.setOnClickListener { + iv_cover.gone() + iv_play_teacher.gone() + mVideoView.start() + } + EventBus.getDefault().register(this) } private fun getData(){ - HttpManager.getCoursePageList().requestByF(this){_,data-> - mVideoView.setUrl(data?.videoUrl) - mVideoView.start() + HttpManager.getCoursePageList().requestByF(this){ _, data-> + (requireActivity() as MainActivity).teacherVideoView = mVideoView + val cacheServer = ProxyVideoCacheManager.getProxy(context) + val proxyUrl = cacheServer.getProxyUrl(data?.videoUrl) + mVideoView.setUrl(proxyUrl) + iv_cover.setImageURI(data?.coverUrl) + iv_play_teacher.visible() 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 + data?.tutorIntroduction, "text/html", "utf-8", null) + webView!!.loadDataWithBaseURL( + null, + sHead + data?.tutorIntroduction, + "text/html", + "utf-8", + null + ) list.clear() - list.addAll(data?.list?: arrayListOf()) + list.addAll(data?.list ?: arrayListOf()) adapter.notifyDataSetChanged() } } + + @Subscribe + fun pause(e: EmptyEvent){ + if (e.code == Const.EventCode.PAUSE_TEACHER_VIDEO) + mVideoView.pause() + } + + override fun onPause() { + super.onPause() + mVideoView.pause() + } + + override fun onDestroy() { + super.onDestroy() + EventBus.getDefault().unregister(this) + } } -- Gitblit v1.7.1