Commit b4d45d29 by 王佳洋

代码合规

parent eeba7f1c
...@@ -5,6 +5,8 @@ import android.content.Intent ...@@ -5,6 +5,8 @@ import android.content.Intent
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.text.TextUtils import android.text.TextUtils
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.facade.annotation.Route
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
...@@ -21,8 +23,6 @@ import com.ydl.webview.NewH5Activity ...@@ -21,8 +23,6 @@ import com.ydl.webview.NewH5Activity
import com.ydl.ydlcommon.base.BaseMvpActivity import com.ydl.ydlcommon.base.BaseMvpActivity
import com.ydl.ydlcommon.bean.ShareData import com.ydl.ydlcommon.bean.ShareData
import com.ydl.ydlcommon.data.PlatformDataManager import com.ydl.ydlcommon.data.PlatformDataManager
import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.router.YdlUserInfo
import com.ydl.ydlcommon.utils.statusBar.StatusBarUtil import com.ydl.ydlcommon.utils.statusBar.StatusBarUtil
import com.ydl.ydlcommon.view.dialog.CommonDialog import com.ydl.ydlcommon.view.dialog.CommonDialog
import com.ydl.ydlcommon.view.dialog.YDLShareDialog import com.ydl.ydlcommon.view.dialog.YDLShareDialog
...@@ -35,12 +35,12 @@ import com.yidianling.course.bean.CourseExtraBean ...@@ -35,12 +35,12 @@ import com.yidianling.course.bean.CourseExtraBean
import com.yidianling.course.coursePlay.presenter.AudioPlayPresenter import com.yidianling.course.coursePlay.presenter.AudioPlayPresenter
import com.yidianling.course.coursePlay.presenter.IAudioPlayContract import com.yidianling.course.coursePlay.presenter.IAudioPlayContract
import com.yidianling.course.router.CourseIn import com.yidianling.course.router.CourseIn
import com.yidianling.course.widget.AudioPlayView
import com.yidianling.course.widget.CourseListDialog import com.yidianling.course.widget.CourseListDialog
import com.yidianling.course.widget.CourseSpeedDialog import com.yidianling.course.widget.CourseSpeedDialog
import com.yidianling.user.api.bean.UserResponseBean
import com.yidianling.ydl_pay.common.CommonPayDialog import com.yidianling.ydl_pay.common.CommonPayDialog
import jp.wasabeef.glide.transformations.BlurTransformation import jp.wasabeef.glide.transformations.BlurTransformation
import kotlinx.android.synthetic.main.activity_audio_play.*
import java.util.*
/** /**
...@@ -53,6 +53,21 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -53,6 +53,21 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
private var mCourseSpeedDialog: CourseSpeedDialog? = null private var mCourseSpeedDialog: CourseSpeedDialog? = null
private var mCourseListDialog: CourseListDialog? = null private var mCourseListDialog: CourseListDialog? = null
private lateinit var iv_back: ImageView
private lateinit var iv_share: ImageView
private lateinit var iv_pic: ImageView
private lateinit var iv_icon: ImageView
private lateinit var iv_detail: ImageView
private lateinit var iv_speed: ImageView
private lateinit var iv_list: ImageView
private lateinit var audio_play: AudioPlayView
private lateinit var tv_title: TextView
private lateinit var tv_name: TextView
private lateinit var tv_detail: TextView
private lateinit var tv_speed: TextView
private lateinit var tv_list: TextView
private lateinit var cl_bg: ConstraintLayout
override fun turnOnImmersiveStatusBar(): Boolean = true override fun turnOnImmersiveStatusBar(): Boolean = true
override fun createPresenter(): IAudioPlayContract.Presenter = AudioPlayPresenter() override fun createPresenter(): IAudioPlayContract.Presenter = AudioPlayPresenter()
...@@ -76,9 +91,28 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -76,9 +91,28 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
} }
} }
private fun findView() {
iv_back = findViewById(R.id.iv_back)
iv_share = findViewById(R.id.iv_share)
audio_play = findViewById(R.id.audio_play)
tv_title = findViewById(R.id.tv_title)
tv_name = findViewById(R.id.tv_name)
iv_pic = findViewById(R.id.iv_pic)
iv_icon = findViewById(R.id.iv_icon)
cl_bg = findViewById(R.id.cl_bg)
tv_detail = findViewById(R.id.tv_detail)
tv_speed = findViewById(R.id.tv_speed)
tv_list = findViewById(R.id.tv_list)
iv_detail = findViewById(R.id.iv_detail)
iv_speed = findViewById(R.id.iv_speed)
iv_list = findViewById(R.id.iv_list)
}
private fun initView() { private fun initView() {
findView()
iv_back.run { iv_back.run {
(layoutParams as? ViewGroup.MarginLayoutParams)?.topMargin = StatusBarUtil.getStatusBarHeight(this@AudioPlayActivity) (layoutParams as? ViewGroup.MarginLayoutParams)?.topMargin =
StatusBarUtil.getStatusBarHeight(this@AudioPlayActivity)
setOnClickListener { setOnClickListener {
onBackPressed() onBackPressed()
} }
...@@ -100,11 +134,11 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -100,11 +134,11 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
NewH5Activity.start(this, H5Params(url, "")) NewH5Activity.start(this, H5Params(url, ""))
} }
override fun commonPayDialog(userInfo: YdlUserInfo, courseId: String) { override fun commonPayDialog(userInfo: UserResponseBean.UserInfo, courseId: String) {
CommonPayDialog.Build(mContext) CommonPayDialog.Build(mContext)
.setCourseId(courseId) .setCourseId(courseId)
.setToken(userInfo.token) .setToken(userInfo.accessToken.orEmpty())
.setUid(userInfo.userId) .setUid(userInfo.uid)
.setFfrom(PlatformDataManager.getRam().getChannelName()) .setFfrom(PlatformDataManager.getRam().getChannelName())
.setListener(object : CommonPayDialog.OnPayResultListener { .setListener(object : CommonPayDialog.OnPayResultListener {
override fun onSuccesed() { override fun onSuccesed() {
...@@ -156,8 +190,6 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -156,8 +190,6 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
setCallBack(object : YDLShareDialog.ICallBack { setCallBack(object : YDLShareDialog.ICallBack {
override fun callBack(type: Int) { override fun callBack(type: Int) {
if (1 == type) { if (1 == type) {
ModularServiceManager.getPlatformUserService()
if (CourseIn.loginByOneKeyLogin(this@AudioPlayActivity, true)) { if (CourseIn.loginByOneKeyLogin(this@AudioPlayActivity, true)) {
//分享到心事动态 //分享到心事动态
val url = val url =
...@@ -181,36 +213,38 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -181,36 +213,38 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun updateView(bean: CourseExtraBean, from: Int) { override fun updateView(bean: CourseExtraBean, from: Int) {
bean.let { Glide.with(this)
Glide.with(this) .load(bean.pic)
.load(it.pic) .transition(DrawableTransitionOptions.withCrossFade())
.transition(DrawableTransitionOptions.withCrossFade()) .apply(RequestOptions.bitmapTransform(BlurTransformation(5, 20)))
.apply(RequestOptions.bitmapTransform(BlurTransformation(5, 20))) .into(object : ViewTarget<ConstraintLayout, Drawable>(cl_bg) {
.into(object : ViewTarget<ConstraintLayout, Drawable>(cl_bg) { override fun onResourceReady(
override fun onResourceReady(resource: Drawable, transition: Transition<in Drawable>?) { resource: Drawable,
view.background = resource transition: Transition<in Drawable>?
} ) {
}) view.background = resource
Glide.with(this) }
.load(it.pic) })
.transition(DrawableTransitionOptions.withCrossFade()) Glide.with(this)
.apply(RequestOptions.bitmapTransform(RoundedCorners(RxImageTool.dp2px(8f)))) .load(bean.pic)
.into(iv_pic) .transition(DrawableTransitionOptions.withCrossFade())
Glide.with(this).load(it.doctorHead).error(R.drawable.course_head_place_hold_pic) .apply(RequestOptions.bitmapTransform(RoundedCorners(RxImageTool.dp2px(8f))))
.into(iv_icon) .into(iv_pic)
tv_title.text = mPresenter.getPlayList().elementAtOrNull(mPresenter.getPlayPosition())?.title.orEmpty() Glide.with(this).load(bean.doctorHead).error(R.drawable.course_head_place_hold_pic)
tv_name.text = it.doctorName .into(iv_icon)
iv_icon.setOnClickListener { consultantClick() } tv_title.text =
tv_name.setOnClickListener { consultantClick() } mPresenter.getPlayList().elementAtOrNull(mPresenter.getPlayPosition())?.title.orEmpty()
tv_detail.setOnClickListener { _ -> detailClick(it) } tv_name.text = bean.doctorName
iv_detail.setOnClickListener { _ -> detailClick(it) } iv_icon.setOnClickListener { consultantClick() }
tv_speed.setOnClickListener { speedClick() } tv_name.setOnClickListener { consultantClick() }
iv_speed.setOnClickListener { speedClick() } tv_detail.setOnClickListener { _ -> detailClick(bean) }
tv_list.setOnClickListener { _ -> listClick(it) } iv_detail.setOnClickListener { _ -> detailClick(bean) }
iv_list.setOnClickListener { _ -> listClick(it) } tv_speed.setOnClickListener { speedClick() }
tv_speed.text = "${audio_play.getSpeed()}X" iv_speed.setOnClickListener { speedClick() }
audio_play.setData(mPresenter.getPlayPosition(), mPresenter.convertToMusics(), from) tv_list.setOnClickListener { _ -> listClick(bean) }
} iv_list.setOnClickListener { _ -> listClick(bean) }
tv_speed.text = "${audio_play.getSpeed()}X"
audio_play.setData(mPresenter.getPlayPosition(), mPresenter.convertToMusics(), from)
} }
override fun setNonWifiTips(show: Boolean) { override fun setNonWifiTips(show: Boolean) {
......
...@@ -7,6 +7,7 @@ import com.ydl.media.view.PlayTypeEnum ...@@ -7,6 +7,7 @@ import com.ydl.media.view.PlayTypeEnum
import com.ydl.media.view.PlayerFloatHelper import com.ydl.media.view.PlayerFloatHelper
import com.ydl.ydlcommon.data.http.BaseResponse import com.ydl.ydlcommon.data.http.BaseResponse
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.modular.findRouteService
import com.ydl.ydlcommon.mvp.base.BasePresenter import com.ydl.ydlcommon.mvp.base.BasePresenter
import com.ydl.ydlcommon.router.IYDLRouterConstant import com.ydl.ydlcommon.router.IYDLRouterConstant
import com.ydl.ydlcommon.router.YdlCommonRouterManager import com.ydl.ydlcommon.router.YdlCommonRouterManager
...@@ -18,6 +19,7 @@ import com.yidianling.course.bean.CourseConsultant ...@@ -18,6 +19,7 @@ import com.yidianling.course.bean.CourseConsultant
import com.yidianling.course.bean.CourseMediaBean import com.yidianling.course.bean.CourseMediaBean
import com.yidianling.course.bean.CourseMediaDetailBean import com.yidianling.course.bean.CourseMediaDetailBean
import com.yidianling.course.coursePlay.model.AudioPlayModelImpl import com.yidianling.course.coursePlay.model.AudioPlayModelImpl
import com.yidianling.user.api.service.IUserService
import org.json.JSONException import org.json.JSONException
import org.json.JSONObject import org.json.JSONObject
import java.util.* import java.util.*
...@@ -37,29 +39,27 @@ class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayCont ...@@ -37,29 +39,27 @@ class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayCont
override fun createModel(): IAudioPlayContract.Model = AudioPlayModelImpl() override fun createModel(): IAudioPlayContract.Model = AudioPlayModelImpl()
override fun getParams(intent: Intent) { override fun getParams(intent: Intent) {
intent.let { if (intent.hasExtra(ROUTER_PARAMS)) {
if (it.hasExtra(ROUTER_PARAMS)) { //路由传递的入参
//路由传递的入参 val json = intent.getStringExtra(ROUTER_PARAMS)
val json = it.getStringExtra(ROUTER_PARAMS) try {
try { val jsonObject = JSONObject(json)
val jsonObject = JSONObject(json) //课程ID
//课程ID mCourseId = jsonObject.getInt(IYDLRouterConstant.EXTRA_ID)
mCourseId = jsonObject.getInt(IYDLRouterConstant.EXTRA_ID) } catch (e: JSONException) {
} catch (e: JSONException) { e.printStackTrace()
e.printStackTrace()
}
return
}
//正常跳转所传参数
mCourseId = it.getIntExtra("course_id", 0)
mPlayUrl = it.getStringExtra("coursePlayUrl")
val isFromFloatView = it.getBooleanExtra("isFromFloatView", false)
mView.setNonWifiTips(!isFromFloatView)
mFrom = it.getIntExtra("from", 0)
if (mCourseId == 0) {
ToastUtil.toastShort("参数错误")
mView.close()
} }
return
}
//正常跳转所传参数
mCourseId = intent.getIntExtra("course_id", 0)
mPlayUrl = intent.getStringExtra("coursePlayUrl")
val isFromFloatView = intent.getBooleanExtra("isFromFloatView", false)
mView.setNonWifiTips(!isFromFloatView)
mFrom = intent.getIntExtra("from", 0)
if (mCourseId == 0) {
ToastUtil.toastShort("参数错误")
mView.close()
} }
} }
...@@ -173,8 +173,8 @@ class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayCont ...@@ -173,8 +173,8 @@ class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayCont
ToastUtil.toastShort("请退出页面重试") ToastUtil.toastShort("请退出页面重试")
return return
} }
val userInfo = YdlCommonRouterManager.getYdlCommonRoute().getUserInfo() val userInfo = findRouteService(IUserService::class.java).getUserInfo()
if (userInfo == null || TextUtils.isEmpty(userInfo.userId)) { if (userInfo == null || TextUtils.isEmpty(userInfo.uid)) {
mView.loginByOneKeyLogin() mView.loginByOneKeyLogin()
return return
} }
...@@ -214,7 +214,7 @@ class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayCont ...@@ -214,7 +214,7 @@ class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayCont
override fun showFloatView() { override fun showFloatView() {
if (mView.audioIsPlaying() && PlayerFloatHelper.playingType == PlayTypeEnum.PLAY_TYPE_COURSE) { if (mView.audioIsPlaying() && PlayerFloatHelper.playingType == PlayTypeEnum.PLAY_TYPE_COURSE) {
PlayerFloatHelper.playTempData.clear() PlayerFloatHelper.playTempData.clear()
val hashMap = HashMap<String, String>() val hashMap = hashMapOf<String, String>()
hashMap["course_id"] = mCourseId.toString() hashMap["course_id"] = mCourseId.toString()
hashMap["media_type"] = COURSE_AUDIO.toString() hashMap["media_type"] = COURSE_AUDIO.toString()
PlayerFloatHelper.playTempData.putAll(hashMap) PlayerFloatHelper.playTempData.putAll(hashMap)
......
...@@ -12,6 +12,7 @@ import com.yidianling.course.bean.CourseConsultant ...@@ -12,6 +12,7 @@ import com.yidianling.course.bean.CourseConsultant
import com.yidianling.course.bean.CourseExtraBean import com.yidianling.course.bean.CourseExtraBean
import com.yidianling.course.bean.CourseMediaBean import com.yidianling.course.bean.CourseMediaBean
import com.yidianling.course.bean.CourseMediaDetailBean import com.yidianling.course.bean.CourseMediaDetailBean
import com.yidianling.user.api.bean.UserResponseBean
import io.reactivex.Observable import io.reactivex.Observable
import java.util.ArrayList import java.util.ArrayList
...@@ -37,7 +38,7 @@ interface IAudioPlayContract { ...@@ -37,7 +38,7 @@ interface IAudioPlayContract {
fun goToConsultantInfo(url: String) fun goToConsultantInfo(url: String)
fun commonPayDialog(userInfo: YdlUserInfo, courseId: String) fun commonPayDialog(userInfo: UserResponseBean.UserInfo, courseId: String)
fun buyCourseTipDialog() fun buyCourseTipDialog()
......
...@@ -6,7 +6,9 @@ import android.text.TextUtils ...@@ -6,7 +6,9 @@ import android.text.TextUtils
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.SeekBar import android.widget.SeekBar
import android.widget.TextView
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.annotation.Nullable import androidx.annotation.Nullable
import androidx.annotation.RawRes import androidx.annotation.RawRes
...@@ -19,7 +21,6 @@ import com.ydl.media.view.PlayTypeEnum ...@@ -19,7 +21,6 @@ import com.ydl.media.view.PlayTypeEnum
import com.ydl.media.view.PlayerFloatHelper import com.ydl.media.view.PlayerFloatHelper
import com.yidianling.common.tools.RxNetTool import com.yidianling.common.tools.RxNetTool
import com.yidianling.course.R import com.yidianling.course.R
import kotlinx.android.synthetic.main.audio_play_view.view.*
/** /**
* 音频播放UI * 音频播放UI
...@@ -32,9 +33,31 @@ class AudioPlayView(context: Context, attrs: AttributeSet?) : ...@@ -32,9 +33,31 @@ class AudioPlayView(context: Context, attrs: AttributeSet?) :
var mNonWifiTips = true var mNonWifiTips = true
var mListener: ((playPosition: Int) -> Boolean)? = null var mListener: ((playPosition: Int) -> Boolean)? = null
private var iv_bg: ImageView
private var iv_rewind: ImageView
private var iv_fast_forward: ImageView
private var iv_pre: ImageView
private var iv_next: ImageView
private var iv_play_status: ImageView
private var seekbar: SeekBar
private var tv_progress: TextView
private var tv_duration: TextView
init { init {
AudioPlayer.get().addOnPlayEventListener(this) AudioPlayer.get().addOnPlayEventListener(this)
View.inflate(context, R.layout.audio_play_view, this) View.inflate(context, R.layout.audio_play_view, this)
iv_bg = findViewById(R.id.iv_bg)
iv_rewind = findViewById(R.id.iv_rewind)
iv_fast_forward = findViewById(R.id.iv_fast_forward)
iv_pre = findViewById(R.id.iv_pre)
iv_next = findViewById(R.id.iv_next)
seekbar = findViewById(R.id.seekbar)
tv_progress = findViewById(R.id.tv_progress)
tv_duration = findViewById(R.id.tv_duration)
iv_play_status = findViewById(R.id.iv_play_status)
iv_bg.setOnClickListener { iv_bg.setOnClickListener {
if (AudioPlayer.get().isPlaying) if (AudioPlayer.get().isPlaying)
AudioPlayer.get().pausePlayer() AudioPlayer.get().pausePlayer()
...@@ -186,15 +209,9 @@ class AudioPlayView(context: Context, attrs: AttributeSet?) : ...@@ -186,15 +209,9 @@ class AudioPlayView(context: Context, attrs: AttributeSet?) :
val min = time / 60000 val min = time / 60000
val ss = (time - min * 60000) / 1000 val ss = (time - min * 60000) / 1000
var m = "" + min val m = "" + min
var s = "" + ss val s = "" + ss
if (min < 10) { return String.format("%02d:%02d", m, s)
m = "0$m"
}
if (ss < 10) {
s = "0$ss"
}
return "$m:$s"
} }
override fun onDetachedFromWindow() { override fun onDetachedFromWindow() {
......
...@@ -6,17 +6,17 @@ import android.view.Gravity ...@@ -6,17 +6,17 @@ import android.view.Gravity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.ydl.media.audio.utils.PlayProgressUtil import com.ydl.media.audio.utils.PlayProgressUtil
import com.ydl.ydlcommon.base.BaseDialogFragment import com.ydl.ydlcommon.base.BaseDialogFragment
import com.ydl.ydlcommon.utils.extend.gone import com.ydl.ydlcommon.utils.extend.gone
import com.ydl.ydlcommon.utils.extend.invisible
import com.ydl.ydlcommon.utils.extend.visible import com.ydl.ydlcommon.utils.extend.visible
import com.yidianling.common.view.ui.VoicePlayingIcon
import com.yidianling.course.R import com.yidianling.course.R
import com.yidianling.course.bean.CourseMediaBean import com.yidianling.course.bean.CourseMediaBean
import com.yidianling.course.coursePlay.presenter.IAudioPlayContract import com.yidianling.course.coursePlay.presenter.IAudioPlayContract
import kotlinx.android.synthetic.main.dialog_course_list.*
import kotlinx.android.synthetic.main.item_course_playlist.view.*
/** /**
* 课程目录弹窗 * 课程目录弹窗
...@@ -29,12 +29,14 @@ class CourseListDialog : BaseDialogFragment() { ...@@ -29,12 +29,14 @@ class CourseListDialog : BaseDialogFragment() {
private var mAdapter: CourseListDialog.CourseListAdapter? = null private var mAdapter: CourseListDialog.CourseListAdapter? = null
private val mCourseList = mutableListOf<CourseMediaBean>() private val mCourseList = mutableListOf<CourseMediaBean>()
private var mIsBuy = false private var mIsBuy = false
private lateinit var recycler_list: RecyclerView
override fun getLayoutResourceId(): Int = R.layout.dialog_course_list override fun getLayoutResourceId(): Int = R.layout.dialog_course_list
override fun getGravity(): Int = Gravity.BOTTOM override fun getGravity(): Int = Gravity.BOTTOM
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
context?.let { ctx -> context?.let { ctx ->
recycler_list = view.findViewById(R.id.recycler_list)
recycler_list.adapter = mAdapter ?: CourseListAdapter(ctx).also { mAdapter = it } recycler_list.adapter = mAdapter ?: CourseListAdapter(ctx).also { mAdapter = it }
} }
} }
...@@ -57,14 +59,26 @@ class CourseListDialog : BaseDialogFragment() { ...@@ -57,14 +59,26 @@ class CourseListDialog : BaseDialogFragment() {
private val inflater: LayoutInflater = LayoutInflater.from(context) private val inflater: LayoutInflater = LayoutInflater.from(context)
) : RecyclerView.Adapter<CourseListAdapter.CourseListVH>() { ) : RecyclerView.Adapter<CourseListAdapter.CourseListVH>() {
inner class CourseListVH(view: View) : RecyclerView.ViewHolder(view) inner class CourseListVH(view: View) : RecyclerView.ViewHolder(view) {
var voice_play: VoicePlayingIcon
var iv_play: ImageView
var iv_audition: ImageView
var tv_title: TextView
init {
voice_play = view.findViewById(R.id.voice_play)
iv_play = view.findViewById(R.id.iv_play)
iv_audition = view.findViewById(R.id.iv_audition)
tv_title = view.findViewById(R.id.tv_title)
}
}
override fun onCreateViewHolder(p0: ViewGroup, itemType: Int): CourseListVH = override fun onCreateViewHolder(p0: ViewGroup, itemType: Int): CourseListVH =
CourseListVH(inflater.inflate(R.layout.item_course_playlist, p0, false)) CourseListVH(inflater.inflate(R.layout.item_course_playlist, p0, false))
override fun onBindViewHolder(vh: CourseListVH, position: Int) { override fun onBindViewHolder(vh: CourseListVH, position: Int) {
mCourseList.elementAtOrNull(position)?.let { bean -> mCourseList.elementAtOrNull(position)?.let { bean ->
vh.itemView.run { vh.run {
if (mCurrentPosition == position) { if (mCurrentPosition == position) {
voice_play.visible() voice_play.visible()
voice_play.start() voice_play.start()
...@@ -86,7 +100,7 @@ class CourseListDialog : BaseDialogFragment() { ...@@ -86,7 +100,7 @@ class CourseListDialog : BaseDialogFragment() {
iv_audition.visibility = if (bean.isDemo) View.VISIBLE else View.GONE // 试听标签 iv_audition.visibility = if (bean.isDemo) View.VISIBLE else View.GONE // 试听标签
tv_title.text = bean.title tv_title.text = bean.title
setOnClickListener { itemView.setOnClickListener {
if (mCurrentPosition == position) { if (mCurrentPosition == position) {
dismissAllowingStateLoss() dismissAllowingStateLoss()
return@setOnClickListener return@setOnClickListener
......
...@@ -6,12 +6,10 @@ import android.view.Gravity ...@@ -6,12 +6,10 @@ import android.view.Gravity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.DialogFragment import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.ydl.ydlcommon.base.BaseDialogFragment import com.ydl.ydlcommon.base.BaseDialogFragment
import com.yidianling.course.R import com.yidianling.course.R
import kotlinx.android.synthetic.main.dialog_course_speed.*
import kotlinx.android.synthetic.main.item_course_speed.view.*
/** /**
* 课程倍速dialog * 课程倍速dialog
...@@ -24,11 +22,16 @@ class CourseSpeedDialog : BaseDialogFragment() { ...@@ -24,11 +22,16 @@ class CourseSpeedDialog : BaseDialogFragment() {
private var mOldPosition = -1 private var mOldPosition = -1
private var mCurrentPosition = 2 private var mCurrentPosition = 2
private lateinit var recycler_list: RecyclerView
private lateinit var tv_cancel: TextView
override fun getLayoutResourceId(): Int = R.layout.dialog_course_speed override fun getLayoutResourceId(): Int = R.layout.dialog_course_speed
override fun getGravity(): Int = Gravity.BOTTOM override fun getGravity(): Int = Gravity.BOTTOM
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
context?.let { context?.let {
recycler_list = view.findViewById(R.id.recycler_list)
tv_cancel = view.findViewById(R.id.tv_cancel)
if (null == mAdapter) mAdapter = CourseSpeedAdapter(it) if (null == mAdapter) mAdapter = CourseSpeedAdapter(it)
recycler_list.adapter = mAdapter recycler_list.adapter = mAdapter
tv_cancel.setOnClickListener { tv_cancel.setOnClickListener {
...@@ -46,13 +49,18 @@ class CourseSpeedDialog : BaseDialogFragment() { ...@@ -46,13 +49,18 @@ class CourseSpeedDialog : BaseDialogFragment() {
private val inflater: LayoutInflater = LayoutInflater.from(context) private val inflater: LayoutInflater = LayoutInflater.from(context)
) : RecyclerView.Adapter<CourseSpeedAdapter.CourseSpeedVH>() { ) : RecyclerView.Adapter<CourseSpeedAdapter.CourseSpeedVH>() {
inner class CourseSpeedVH(view: View) : RecyclerView.ViewHolder(view) inner class CourseSpeedVH(view: View) : RecyclerView.ViewHolder(view) {
var tv_speed: TextView
init {
tv_speed = view.findViewById(R.id.tv_speed)
}
}
override fun onCreateViewHolder(viewGroup: ViewGroup, itemType: Int): CourseSpeedVH = override fun onCreateViewHolder(viewGroup: ViewGroup, itemType: Int): CourseSpeedVH =
CourseSpeedVH(inflater.inflate(R.layout.item_course_speed, viewGroup, false)) CourseSpeedVH(inflater.inflate(R.layout.item_course_speed, viewGroup, false))
override fun onBindViewHolder(vh: CourseSpeedVH, position: Int) { override fun onBindViewHolder(vh: CourseSpeedVH, position: Int) {
vh.itemView.let { vh.let {
mSpeedList.elementAtOrNull(position)?.let { speed -> mSpeedList.elementAtOrNull(position)?.let { speed ->
it.tv_speed.run { it.tv_speed.run {
setTextColor(resources.getColor(if (position == mCurrentPosition) R.color.color_1DA1F2 else R.color.color_1C1F28)) setTextColor(resources.getColor(if (position == mCurrentPosition) R.color.color_1DA1F2 else R.color.color_1C1F28))
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:background="#9F998F"> tools:background="#9F998F">
<ImageView <ImageView
android:id="@+id/iv_rewind" android:id="@+id/iv_rewind"
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
app:layout_constraintTop_toTopOf="parent" android:src="@drawable/course_rewind_15"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
android:src="@drawable/course_rewind_15"/> app:layout_constraintTop_toTopOf="parent" />
<ImageView <ImageView
android:id="@+id/iv_fast_forward" android:id="@+id/iv_fast_forward"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
android:src="@drawable/course_fast_forward_15"/> android:src="@drawable/course_fast_forward_15"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<SeekBar <SeekBar
android:id="@+id/seekbar" android:id="@+id/seekbar"
android:layout_width="0dp" android:layout_width="0dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintStart_toEndOf="@id/iv_rewind"
app:layout_constraintEnd_toStartOf="@id/iv_fast_forward"
app:layout_constraintTop_toTopOf="@id/iv_rewind"
app:layout_constraintBottom_toBottomOf="@id/iv_rewind"
android:maxHeight="3dp" android:maxHeight="3dp"
android:minHeight="3dp" android:minHeight="3dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:progress="0"
android:progressDrawable="@drawable/course_seekbar" android:progressDrawable="@drawable/course_seekbar"
android:thumb="@drawable/course_seekbar_dot" android:thumb="@drawable/course_seekbar_dot"
android:progress="0" /> app:layout_constraintBottom_toBottomOf="@id/iv_rewind"
app:layout_constraintEnd_toStartOf="@id/iv_fast_forward"
app:layout_constraintStart_toEndOf="@id/iv_rewind"
app:layout_constraintTop_toTopOf="@id/iv_rewind" />
<TextView <TextView
android:id="@+id/tv_progress" android:id="@+id/tv_progress"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:text="00:00" android:textColor="@android:color/white"
android:textSize="12sp" android:textSize="12sp"
app:layout_constraintStart_toStartOf="@id/seekbar" app:layout_constraintStart_toStartOf="@id/seekbar"
app:layout_constraintTop_toBottomOf="@id/seekbar" app:layout_constraintTop_toBottomOf="@id/seekbar"
android:textColor="@android:color/white"/> tools:text="00:00" />
<TextView <TextView
android:id="@+id/tv_duration" android:id="@+id/tv_duration"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:text="00:00" android:textColor="@android:color/white"
android:textSize="12sp" android:textSize="12sp"
app:layout_constraintEnd_toEndOf="@id/seekbar" app:layout_constraintEnd_toEndOf="@id/seekbar"
app:layout_constraintTop_toBottomOf="@id/seekbar" app:layout_constraintTop_toBottomOf="@id/seekbar"
android:textColor="@android:color/white"/> tools:text="00:00" />
<androidx.constraintlayout.utils.widget.ImageFilterView <androidx.constraintlayout.utils.widget.ImageFilterView
android:id="@+id/iv_bg" android:id="@+id/iv_bg"
android:layout_width="66dp" android:layout_width="66dp"
android:layout_height="66dp" android:layout_height="66dp"
app:roundPercent="1"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
app:layout_constraintTop_toBottomOf="@id/tv_progress" android:background="@android:color/white"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:background="@android:color/white"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_progress"
app:roundPercent="1" />
<ImageView <ImageView
android:id="@+id/iv_play_status" android:id="@+id/iv_play_status"
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
app:layout_constraintTop_toTopOf="@id/iv_bg"
app:layout_constraintBottom_toBottomOf="@id/iv_bg" app:layout_constraintBottom_toBottomOf="@id/iv_bg"
app:layout_constraintStart_toStartOf="@id/iv_bg"
app:layout_constraintEnd_toEndOf="@id/iv_bg" app:layout_constraintEnd_toEndOf="@id/iv_bg"
tools:src="@drawable/course_play"/> app:layout_constraintStart_toStartOf="@id/iv_bg"
app:layout_constraintTop_toTopOf="@id/iv_bg"
tools:src="@drawable/course_play" />
<ImageView <ImageView
android:id="@+id/iv_pre" android:id="@+id/iv_pre"
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:padding="12dp"
android:layout_marginEnd="36dp" android:layout_marginEnd="36dp"
app:layout_constraintTop_toTopOf="@id/iv_bg" android:padding="12dp"
android:src="@drawable/course_pre"
app:layout_constraintBottom_toBottomOf="@id/iv_bg" app:layout_constraintBottom_toBottomOf="@id/iv_bg"
app:layout_constraintEnd_toStartOf="@id/iv_bg" app:layout_constraintEnd_toStartOf="@id/iv_bg"
android:src="@drawable/course_pre"/> app:layout_constraintTop_toTopOf="@id/iv_bg" />
<ImageView <ImageView
android:id="@+id/iv_next" android:id="@+id/iv_next"
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:padding="12dp"
android:layout_marginStart="36dp" android:layout_marginStart="36dp"
app:layout_constraintStart_toEndOf="@id/iv_bg" android:padding="12dp"
app:layout_constraintTop_toTopOf="@id/iv_bg" android:src="@drawable/course_next"
app:layout_constraintBottom_toBottomOf="@id/iv_bg" app:layout_constraintBottom_toBottomOf="@id/iv_bg"
android:src="@drawable/course_next"/> app:layout_constraintStart_toEndOf="@id/iv_bg"
app:layout_constraintTop_toTopOf="@id/iv_bg" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
<TextView xmlns:android="http://schemas.android.com/apk/res/android" <TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tv_speed" android:id="@+id/tv_speed"
android:textColor="@color/color_1C1F28"
tools:text="2.0"
android:gravity="center"
android:textSize="16sp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingBottom="16dp" /> android:paddingBottom="16dp"
\ No newline at end of file android:textColor="@color/color_1C1F28"
android:textSize="16sp"
tools:text="2.0" />
\ No newline at end of file
...@@ -4,7 +4,6 @@ import android.app.Activity ...@@ -4,7 +4,6 @@ import android.app.Activity
import android.content.res.Resources import android.content.res.Resources
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.os.Handler
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -224,9 +223,6 @@ abstract class BaseActivity : AppCompatActivity(), IActivityLifecycleable { ...@@ -224,9 +223,6 @@ abstract class BaseActivity : AppCompatActivity(), IActivityLifecycleable {
transaction.add(it, tag) transaction.add(it, tag)
} }
transaction.commitAllowingStateLoss() transaction.commitAllowingStateLoss()
Handler().postDelayed({
supportFragmentManager.findFragmentByTag(tag)
}, 5000)
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment