lmw
2025-04-24 718f31c92e2029d05260810435a2c70cef6e6ce5
app/src/main/java/com/sinata/xqmuse/ui/course/CourseDetailActivity.kt
@@ -1,5 +1,6 @@
package com.sinata.xqmuse.ui.course
import android.content.Intent
import android.os.CountDownTimer
import android.util.TypedValue
import android.webkit.WebChromeClient
@@ -13,9 +14,11 @@
import cn.sinata.xldutils.utils.showAllowingStateLoss
import cn.sinata.xldutils.visible
import com.google.android.material.appbar.AppBarLayout
import com.share.utils.ShareUtils
import com.sinata.xqmuse.R
import com.sinata.xqmuse.dialog.SendConfirmDialog
import com.sinata.xqmuse.dialog.ShareDialog
import com.sinata.xqmuse.network.Apis
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.entity.Chapter
import com.sinata.xqmuse.network.entity.CourseBean
@@ -25,18 +28,14 @@
import com.sinata.xqmuse.ui.course.adapter.ChapterAdapter
import com.sinata.xqmuse.ui.course.adapter.CourseGridAdapter
import com.sinata.xqmuse.utils.AppBarStateChangeListener
import com.sinata.xqmuse.utils.Const
import com.sinata.xqmuse.utils.interfaces.StringCallback
import kotlinx.android.synthetic.main.activity_buy_course.*
import com.umeng.socialize.bean.SHARE_MEDIA
import kotlinx.android.synthetic.main.activity_course_deatil.*
import kotlinx.android.synthetic.main.activity_course_deatil.iv_cover
import kotlinx.android.synthetic.main.activity_course_deatil.tv_1
import kotlinx.android.synthetic.main.activity_course_deatil.tv_action
import kotlinx.android.synthetic.main.activity_course_deatil.tv_count
import kotlinx.android.synthetic.main.activity_course_deatil.tv_name
import kotlinx.android.synthetic.main.activity_course_deatil.tv_teacher
import org.jetbrains.anko.imageResource
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.textColorResource
import kotlinx.android.synthetic.main.activity_course_deatil.iv_back
import kotlinx.android.synthetic.main.activity_course_deatil.webView
import kotlinx.android.synthetic.main.activity_level.*
import org.jetbrains.anko.*
class CourseDetailActivity : TransparentStatusBarActivity() {
    override fun setContentView() = R.layout.activity_course_deatil
@@ -60,19 +59,34 @@
        }
        tv_action.setOnClickListener {
            getData(false)
            if (tv_action.text == "立即学习"){
                if (data?.list?.isNullOrEmpty() == true)
                    toast("该课程暂未添加章节")
                else
                    startActivity<StudyActivity>("id" to data?.list?.firstOrNull()?.id)
            } else
                getData(false)
        }
        iv_collect.setOnClickListener {
            HttpManager.collectCourse(data?.id?:"").request(this){_,_->
                data?.recommend = if (data?.recommend == 1) 2 else 1
                iv_collect.setImageResource(if (data?.recommend == 1) R.mipmap.collected else R.mipmap.uncollect)
                data?.isCollect = if (data?.isCollect == 1) 2 else 1
                iv_collect.setImageResource(if (data?.isCollect == 1) R.mipmap.collected else R.mipmap.uncollect)
                toast(if (data?.isCollect == 1) "收藏成功" else "已取消收藏")
            }
        }
        iv_share.setOnClickListener {
            val shareDialog = ShareDialog()
            shareDialog.callback = object :StringCallback{
                override fun onResult(rst: String) {
                    if (rst == "wx"){
                        ShareUtils.share(this@CourseDetailActivity,
                            SHARE_MEDIA.WEIXIN,data?.courseTitle, Const.SHARE.SHARE_COURSE_TITLE,
                            Apis.SHARE_COURSE.format(data?.id),null,"")
                    }else{
                        ShareUtils.share(this@CourseDetailActivity,
                            SHARE_MEDIA.WEIXIN_CIRCLE,data?.courseTitle,Const.SHARE.SHARE_COURSE_TITLE,
                            Apis.SHARE_COURSE.format(data?.id),null,"")
                    }
                }
            }
            shareDialog.showAllowingStateLoss(supportFragmentManager,"share")
@@ -89,7 +103,7 @@
            scroll2Position(2)
            checkTab(2)
        }
        scrollView.setOnScrollChangeListener { v: NestedScrollView?, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int ->
        scrollView.setOnScrollChangeListener { _: NestedScrollView?, _: Int, scrollY: Int, _: Int, _: Int ->
            if (!scrollByTab)
                when {
                    scrollY>=tv_2.top -> checkTab(2)
@@ -97,8 +111,20 @@
                    else -> checkTab(0)
                }
        }
        chapterAdapter.setOnItemClickListener { view, position ->
            getData(false)
        chapterAdapter.setOnItemClickListener { _, position ->
            if (tv_action.text == "立即学习")
                startActivity<StudyActivity>("id" to data?.list?.get(position)?.id,"index" to position)
            else
                getData(false)
        }
        courseAdapter.setOnItemClickListener { _, position ->
            showDialog()
            HttpManager.getPayCourseInfoById(courseList[position].id?:"").request(this,success = { _, data->
                dismissDialog()
                data?.goDetail(this)
            }){_,_->
                dismissDialog()
            }
        }
    }
@@ -120,7 +146,8 @@
        rv_chapter.adapter = chapterAdapter
        rv_push.layoutManager = GridLayoutManager(this,2)
        rv_push.adapter = courseAdapter
        webView.backgroundColor = 0
        webView.background.alpha = 0
        appbar.addOnOffsetChangedListener(object : AppBarStateChangeListener() {
            override fun onStateChanged(appBarLayout: AppBarLayout?, state: State?, ratio:Double) {
                bg.alpha = if(ratio<0.2) 0f else ((ratio-0.2)/0.8).toFloat()
@@ -128,11 +155,17 @@
                    State.EXPANDED -> {
                        //展开状态
                        iv_back.imageResource = R.mipmap.icon_back_white
                        iv_share.imageResource = R.mipmap.ic_share
                        if (data?.isCollect!=1)
                            iv_collect.imageResource = R.mipmap.uncollect
                        tvTitle.textColorResource = R.color.white
                    }
                    State.COLLAPSED -> {
                        //折叠状态
                        iv_back.imageResource = R.mipmap.back
                        iv_share.imageResource = R.mipmap.ic_share_black
                        if (data?.isCollect!=1)
                            iv_collect.imageResource = R.mipmap.uncollect_b
                        tvTitle.textColorResource = R.color.textColor
                    }
                }
@@ -140,7 +173,7 @@
        })
        data?.apply {
            iv_collect.setImageResource(if (data?.recommend == 1) R.mipmap.collected else R.mipmap.uncollect)
            iv_collect.setImageResource(if (data?.isCollect == 1) R.mipmap.collected else R.mipmap.uncollect)
            iv_cover.setImageURI(detailUrl)
            tv_name.text = courseTitle
            tv_teacher.text = "导师 ${tutor}"
@@ -158,11 +191,12 @@
            chapterAdapter.notifyDataSetChanged()
            courseList.addAll(list2)
            courseAdapter.notifyDataSetChanged()
            if (chargeType == 1||(courseType == 2&&isVip == 1)){
            if (chargeType == 3)
                tv_send.visible()
            if (chargeType == 1||isBuy == 1||(chargeType == 2&&isVip == 1)){
                tv_action.text = "立即学习"
            }else{
                val s = "¥ %s 立即购买".format(generalPrice)
                val s = "¥ %s 立即购买".format(generalPrice!!)
                tv_action.text = SpanBuilder(s).size(0,1,12).size(2,generalPrice.length+2,21).build()
            }
        }
@@ -240,7 +274,15 @@
                    }
                })
            }else
                startActivity<BuyCourseActivity>("isSend" to isSend,"data" to data)
                startActivityForResult<BuyCourseActivity>(1,"isSend" to isSend,"data" to data)
        }
    }
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == RESULT_OK){
            this.data?.isBuy = 1
            tv_action.text = "立即学习"
        }
    }
}