Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
b4d45d29
Commit
b4d45d29
authored
Aug 10, 2022
by
王佳洋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码合规
parent
eeba7f1c
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
201 additions
and
130 deletions
+201
-130
AudioPlayActivity.kt
m-course/src/main/java/com/yidianling/course/coursePlay/AudioPlayActivity.kt
+74
-40
AudioPlayPresenter.kt
m-course/src/main/java/com/yidianling/course/coursePlay/presenter/AudioPlayPresenter.kt
+25
-25
IAudioPlayContract.kt
m-course/src/main/java/com/yidianling/course/coursePlay/presenter/IAudioPlayContract.kt
+2
-1
AudioPlayView.kt
m-course/src/main/java/com/yidianling/course/widget/AudioPlayView.kt
+27
-10
CourseListDialog.kt
m-course/src/main/java/com/yidianling/course/widget/CourseListDialog.kt
+20
-6
CourseSpeedDialog.kt
m-course/src/main/java/com/yidianling/course/widget/CourseSpeedDialog.kt
+13
-5
audio_play_view.xml
m-course/src/main/res/layout/audio_play_view.xml
+34
-33
item_course_speed.xml
m-course/src/main/res/layout/item_course_speed.xml
+6
-6
BaseActivity.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/base/BaseActivity.kt
+0
-4
No files found.
m-course/src/main/java/com/yidianling/course/coursePlay/AudioPlayActivity.kt
View file @
b4d45d29
...
...
@@ -5,6 +5,8 @@ import android.content.Intent
import
android.graphics.drawable.Drawable
import
android.text.TextUtils
import
android.view.ViewGroup
import
android.widget.ImageView
import
android.widget.TextView
import
androidx.constraintlayout.widget.ConstraintLayout
import
com.alibaba.android.arouter.facade.annotation.Route
import
com.bumptech.glide.Glide
...
...
@@ -21,8 +23,6 @@ import com.ydl.webview.NewH5Activity
import
com.ydl.ydlcommon.base.BaseMvpActivity
import
com.ydl.ydlcommon.bean.ShareData
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.view.dialog.CommonDialog
import
com.ydl.ydlcommon.view.dialog.YDLShareDialog
...
...
@@ -35,12 +35,12 @@ import com.yidianling.course.bean.CourseExtraBean
import
com.yidianling.course.coursePlay.presenter.AudioPlayPresenter
import
com.yidianling.course.coursePlay.presenter.IAudioPlayContract
import
com.yidianling.course.router.CourseIn
import
com.yidianling.course.widget.AudioPlayView
import
com.yidianling.course.widget.CourseListDialog
import
com.yidianling.course.widget.CourseSpeedDialog
import
com.yidianling.user.api.bean.UserResponseBean
import
com.yidianling.ydl_pay.common.CommonPayDialog
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
private
var
mCourseSpeedDialog
:
CourseSpeedDialog
?
=
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
createPresenter
():
IAudioPlayContract
.
Presenter
=
AudioPlayPresenter
()
...
...
@@ -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
()
{
findView
()
iv_back
.
run
{
(
layoutParams
as
?
ViewGroup
.
MarginLayoutParams
)
?.
topMargin
=
StatusBarUtil
.
getStatusBarHeight
(
this
@AudioPlayActivity
)
(
layoutParams
as
?
ViewGroup
.
MarginLayoutParams
)
?.
topMargin
=
StatusBarUtil
.
getStatusBarHeight
(
this
@AudioPlayActivity
)
setOnClickListener
{
onBackPressed
()
}
...
...
@@ -100,11 +134,11 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
NewH5Activity
.
start
(
this
,
H5Params
(
url
,
""
))
}
override
fun
commonPayDialog
(
userInfo
:
Ydl
UserInfo
,
courseId
:
String
)
{
override
fun
commonPayDialog
(
userInfo
:
UserResponseBean
.
UserInfo
,
courseId
:
String
)
{
CommonPayDialog
.
Build
(
mContext
)
.
setCourseId
(
courseId
)
.
setToken
(
userInfo
.
token
)
.
setUid
(
userInfo
.
u
serI
d
)
.
setToken
(
userInfo
.
accessToken
.
orEmpty
()
)
.
setUid
(
userInfo
.
u
i
d
)
.
setFfrom
(
PlatformDataManager
.
getRam
().
getChannelName
())
.
setListener
(
object
:
CommonPayDialog
.
OnPayResultListener
{
override
fun
onSuccesed
()
{
...
...
@@ -156,8 +190,6 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
setCallBack
(
object
:
YDLShareDialog
.
ICallBack
{
override
fun
callBack
(
type
:
Int
)
{
if
(
1
==
type
)
{
ModularServiceManager
.
getPlatformUserService
()
if
(
CourseIn
.
loginByOneKeyLogin
(
this
@AudioPlayActivity
,
true
))
{
//分享到心事动态
val
url
=
...
...
@@ -181,36 +213,38 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
@SuppressLint
(
"SetTextI18n"
)
override
fun
updateView
(
bean
:
CourseExtraBean
,
from
:
Int
)
{
bean
.
let
{
Glide
.
with
(
this
)
.
load
(
it
.
pic
)
.
transition
(
DrawableTransitionOptions
.
withCrossFade
())
.
apply
(
RequestOptions
.
bitmapTransform
(
BlurTransformation
(
5
,
20
)))
.
into
(
object
:
ViewTarget
<
ConstraintLayout
,
Drawable
>(
cl_bg
)
{
override
fun
onResourceReady
(
resource
:
Drawable
,
transition
:
Transition
<
in
Drawable
>?)
{
view
.
background
=
resource
}
})
Glide
.
with
(
this
)
.
load
(
it
.
pic
)
.
transition
(
DrawableTransitionOptions
.
withCrossFade
())
.
apply
(
RequestOptions
.
bitmapTransform
(
RoundedCorners
(
RxImageTool
.
dp2px
(
8f
))))
.
into
(
iv_pic
)
Glide
.
with
(
this
).
load
(
it
.
doctorHead
).
error
(
R
.
drawable
.
course_head_place_hold_pic
)
.
into
(
iv_icon
)
tv_title
.
text
=
mPresenter
.
getPlayList
().
elementAtOrNull
(
mPresenter
.
getPlayPosition
())
?.
title
.
orEmpty
()
tv_name
.
text
=
it
.
doctorName
iv_icon
.
setOnClickListener
{
consultantClick
()
}
tv_name
.
setOnClickListener
{
consultantClick
()
}
tv_detail
.
setOnClickListener
{
_
->
detailClick
(
it
)
}
iv_detail
.
setOnClickListener
{
_
->
detailClick
(
it
)
}
tv_speed
.
setOnClickListener
{
speedClick
()
}
iv_speed
.
setOnClickListener
{
speedClick
()
}
tv_list
.
setOnClickListener
{
_
->
listClick
(
it
)
}
iv_list
.
setOnClickListener
{
_
->
listClick
(
it
)
}
tv_speed
.
text
=
"${audio_play.getSpeed()}X"
audio_play
.
setData
(
mPresenter
.
getPlayPosition
(),
mPresenter
.
convertToMusics
(),
from
)
}
Glide
.
with
(
this
)
.
load
(
bean
.
pic
)
.
transition
(
DrawableTransitionOptions
.
withCrossFade
())
.
apply
(
RequestOptions
.
bitmapTransform
(
BlurTransformation
(
5
,
20
)))
.
into
(
object
:
ViewTarget
<
ConstraintLayout
,
Drawable
>(
cl_bg
)
{
override
fun
onResourceReady
(
resource
:
Drawable
,
transition
:
Transition
<
in
Drawable
>?
)
{
view
.
background
=
resource
}
})
Glide
.
with
(
this
)
.
load
(
bean
.
pic
)
.
transition
(
DrawableTransitionOptions
.
withCrossFade
())
.
apply
(
RequestOptions
.
bitmapTransform
(
RoundedCorners
(
RxImageTool
.
dp2px
(
8f
))))
.
into
(
iv_pic
)
Glide
.
with
(
this
).
load
(
bean
.
doctorHead
).
error
(
R
.
drawable
.
course_head_place_hold_pic
)
.
into
(
iv_icon
)
tv_title
.
text
=
mPresenter
.
getPlayList
().
elementAtOrNull
(
mPresenter
.
getPlayPosition
())
?.
title
.
orEmpty
()
tv_name
.
text
=
bean
.
doctorName
iv_icon
.
setOnClickListener
{
consultantClick
()
}
tv_name
.
setOnClickListener
{
consultantClick
()
}
tv_detail
.
setOnClickListener
{
_
->
detailClick
(
bean
)
}
iv_detail
.
setOnClickListener
{
_
->
detailClick
(
bean
)
}
tv_speed
.
setOnClickListener
{
speedClick
()
}
iv_speed
.
setOnClickListener
{
speedClick
()
}
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
)
{
...
...
m-course/src/main/java/com/yidianling/course/coursePlay/presenter/AudioPlayPresenter.kt
View file @
b4d45d29
...
...
@@ -7,6 +7,7 @@ import com.ydl.media.view.PlayTypeEnum
import
com.ydl.media.view.PlayerFloatHelper
import
com.ydl.ydlcommon.data.http.BaseResponse
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.modular.findRouteService
import
com.ydl.ydlcommon.mvp.base.BasePresenter
import
com.ydl.ydlcommon.router.IYDLRouterConstant
import
com.ydl.ydlcommon.router.YdlCommonRouterManager
...
...
@@ -18,6 +19,7 @@ import com.yidianling.course.bean.CourseConsultant
import
com.yidianling.course.bean.CourseMediaBean
import
com.yidianling.course.bean.CourseMediaDetailBean
import
com.yidianling.course.coursePlay.model.AudioPlayModelImpl
import
com.yidianling.user.api.service.IUserService
import
org.json.JSONException
import
org.json.JSONObject
import
java.util.*
...
...
@@ -37,29 +39,27 @@ class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayCont
override
fun
createModel
():
IAudioPlayContract
.
Model
=
AudioPlayModelImpl
()
override
fun
getParams
(
intent
:
Intent
)
{
intent
.
let
{
if
(
it
.
hasExtra
(
ROUTER_PARAMS
))
{
//路由传递的入参
val
json
=
it
.
getStringExtra
(
ROUTER_PARAMS
)
try
{
val
jsonObject
=
JSONObject
(
json
)
//课程ID
mCourseId
=
jsonObject
.
getInt
(
IYDLRouterConstant
.
EXTRA_ID
)
}
catch
(
e
:
JSONException
)
{
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
()
if
(
intent
.
hasExtra
(
ROUTER_PARAMS
))
{
//路由传递的入参
val
json
=
intent
.
getStringExtra
(
ROUTER_PARAMS
)
try
{
val
jsonObject
=
JSONObject
(
json
)
//课程ID
mCourseId
=
jsonObject
.
getInt
(
IYDLRouterConstant
.
EXTRA_ID
)
}
catch
(
e
:
JSONException
)
{
e
.
printStackTrace
()
}
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
ToastUtil
.
toastShort
(
"请退出页面重试"
)
return
}
val
userInfo
=
YdlCommonRouterManager
.
getYdlCommonRoute
(
).
getUserInfo
()
if
(
userInfo
==
null
||
TextUtils
.
isEmpty
(
userInfo
.
u
serI
d
))
{
val
userInfo
=
findRouteService
(
IUserService
::
class
.
java
).
getUserInfo
()
if
(
userInfo
==
null
||
TextUtils
.
isEmpty
(
userInfo
.
u
i
d
))
{
mView
.
loginByOneKeyLogin
()
return
}
...
...
@@ -214,7 +214,7 @@ class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayCont
override
fun
showFloatView
()
{
if
(
mView
.
audioIsPlaying
()
&&
PlayerFloatHelper
.
playingType
==
PlayTypeEnum
.
PLAY_TYPE_COURSE
)
{
PlayerFloatHelper
.
playTempData
.
clear
()
val
hashMap
=
HashMap
<
String
,
String
>()
val
hashMap
=
hashMapOf
<
String
,
String
>()
hashMap
[
"course_id"
]
=
mCourseId
.
toString
()
hashMap
[
"media_type"
]
=
COURSE_AUDIO
.
toString
()
PlayerFloatHelper
.
playTempData
.
putAll
(
hashMap
)
...
...
m-course/src/main/java/com/yidianling/course/coursePlay/presenter/IAudioPlayContract.kt
View file @
b4d45d29
...
...
@@ -12,6 +12,7 @@ import com.yidianling.course.bean.CourseConsultant
import
com.yidianling.course.bean.CourseExtraBean
import
com.yidianling.course.bean.CourseMediaBean
import
com.yidianling.course.bean.CourseMediaDetailBean
import
com.yidianling.user.api.bean.UserResponseBean
import
io.reactivex.Observable
import
java.util.ArrayList
...
...
@@ -37,7 +38,7 @@ interface IAudioPlayContract {
fun
goToConsultantInfo
(
url
:
String
)
fun
commonPayDialog
(
userInfo
:
Ydl
UserInfo
,
courseId
:
String
)
fun
commonPayDialog
(
userInfo
:
UserResponseBean
.
UserInfo
,
courseId
:
String
)
fun
buyCourseTipDialog
()
...
...
m-course/src/main/java/com/yidianling/course/widget/AudioPlayView.kt
View file @
b4d45d29
...
...
@@ -6,7 +6,9 @@ import android.text.TextUtils
import
android.util.AttributeSet
import
android.view.View
import
android.widget.FrameLayout
import
android.widget.ImageView
import
android.widget.SeekBar
import
android.widget.TextView
import
androidx.annotation.DrawableRes
import
androidx.annotation.Nullable
import
androidx.annotation.RawRes
...
...
@@ -19,7 +21,6 @@ import com.ydl.media.view.PlayTypeEnum
import
com.ydl.media.view.PlayerFloatHelper
import
com.yidianling.common.tools.RxNetTool
import
com.yidianling.course.R
import
kotlinx.android.synthetic.main.audio_play_view.view.*
/**
* 音频播放UI
...
...
@@ -32,9 +33,31 @@ class AudioPlayView(context: Context, attrs: AttributeSet?) :
var
mNonWifiTips
=
true
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
{
AudioPlayer
.
get
().
addOnPlayEventListener
(
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
{
if
(
AudioPlayer
.
get
().
isPlaying
)
AudioPlayer
.
get
().
pausePlayer
()
...
...
@@ -186,15 +209,9 @@ class AudioPlayView(context: Context, attrs: AttributeSet?) :
val
min
=
time
/
60000
val
ss
=
(
time
-
min
*
60000
)
/
1000
var
m
=
""
+
min
var
s
=
""
+
ss
if
(
min
<
10
)
{
m
=
"0$m"
}
if
(
ss
<
10
)
{
s
=
"0$ss"
}
return
"$m:$s"
val
m
=
""
+
min
val
s
=
""
+
ss
return
String
.
format
(
"%02d:%02d"
,
m
,
s
)
}
override
fun
onDetachedFromWindow
()
{
...
...
m-course/src/main/java/com/yidianling/course/widget/CourseListDialog.kt
View file @
b4d45d29
...
...
@@ -6,17 +6,17 @@ import android.view.Gravity
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.widget.ImageView
import
android.widget.TextView
import
androidx.recyclerview.widget.RecyclerView
import
com.ydl.media.audio.utils.PlayProgressUtil
import
com.ydl.ydlcommon.base.BaseDialogFragment
import
com.ydl.ydlcommon.utils.extend.gone
import
com.ydl.ydlcommon.utils.extend.invisible
import
com.ydl.ydlcommon.utils.extend.visible
import
com.yidianling.common.view.ui.VoicePlayingIcon
import
com.yidianling.course.R
import
com.yidianling.course.bean.CourseMediaBean
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() {
private
var
mAdapter
:
CourseListDialog
.
CourseListAdapter
?
=
null
private
val
mCourseList
=
mutableListOf
<
CourseMediaBean
>()
private
var
mIsBuy
=
false
private
lateinit
var
recycler_list
:
RecyclerView
override
fun
getLayoutResourceId
():
Int
=
R
.
layout
.
dialog_course_list
override
fun
getGravity
():
Int
=
Gravity
.
BOTTOM
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
context
?.
let
{
ctx
->
recycler_list
=
view
.
findViewById
(
R
.
id
.
recycler_list
)
recycler_list
.
adapter
=
mAdapter
?:
CourseListAdapter
(
ctx
).
also
{
mAdapter
=
it
}
}
}
...
...
@@ -57,14 +59,26 @@ class CourseListDialog : BaseDialogFragment() {
private
val
inflater
:
LayoutInflater
=
LayoutInflater
.
from
(
context
)
)
:
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
=
CourseListVH
(
inflater
.
inflate
(
R
.
layout
.
item_course_playlist
,
p0
,
false
))
override
fun
onBindViewHolder
(
vh
:
CourseListVH
,
position
:
Int
)
{
mCourseList
.
elementAtOrNull
(
position
)
?.
let
{
bean
->
vh
.
itemView
.
run
{
vh
.
run
{
if
(
mCurrentPosition
==
position
)
{
voice_play
.
visible
()
voice_play
.
start
()
...
...
@@ -86,7 +100,7 @@ class CourseListDialog : BaseDialogFragment() {
iv_audition
.
visibility
=
if
(
bean
.
isDemo
)
View
.
VISIBLE
else
View
.
GONE
// 试听标签
tv_title
.
text
=
bean
.
title
setOnClickListener
{
itemView
.
setOnClickListener
{
if
(
mCurrentPosition
==
position
)
{
dismissAllowingStateLoss
()
return
@setOnClickListener
...
...
m-course/src/main/java/com/yidianling/course/widget/CourseSpeedDialog.kt
View file @
b4d45d29
...
...
@@ -6,12 +6,10 @@ import android.view.Gravity
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android
x.fragment.app.DialogFragment
import
android
.widget.TextView
import
androidx.recyclerview.widget.RecyclerView
import
com.ydl.ydlcommon.base.BaseDialogFragment
import
com.yidianling.course.R
import
kotlinx.android.synthetic.main.dialog_course_speed.*
import
kotlinx.android.synthetic.main.item_course_speed.view.*
/**
* 课程倍速dialog
...
...
@@ -24,11 +22,16 @@ class CourseSpeedDialog : BaseDialogFragment() {
private
var
mOldPosition
=
-
1
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
getGravity
():
Int
=
Gravity
.
BOTTOM
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
context
?.
let
{
recycler_list
=
view
.
findViewById
(
R
.
id
.
recycler_list
)
tv_cancel
=
view
.
findViewById
(
R
.
id
.
tv_cancel
)
if
(
null
==
mAdapter
)
mAdapter
=
CourseSpeedAdapter
(
it
)
recycler_list
.
adapter
=
mAdapter
tv_cancel
.
setOnClickListener
{
...
...
@@ -46,13 +49,18 @@ class CourseSpeedDialog : BaseDialogFragment() {
private
val
inflater
:
LayoutInflater
=
LayoutInflater
.
from
(
context
)
)
:
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
=
CourseSpeedVH
(
inflater
.
inflate
(
R
.
layout
.
item_course_speed
,
viewGroup
,
false
))
override
fun
onBindViewHolder
(
vh
:
CourseSpeedVH
,
position
:
Int
)
{
vh
.
itemView
.
let
{
vh
.
let
{
mSpeedList
.
elementAtOrNull
(
position
)
?.
let
{
speed
->
it
.
tv_speed
.
run
{
setTextColor
(
resources
.
getColor
(
if
(
position
==
mCurrentPosition
)
R
.
color
.
color_1DA1F2
else
R
.
color
.
color_1C1F28
))
...
...
m-course/src/main/res/layout/audio_play_view.xml
View file @
b4d45d29
<?xml version="1.0" encoding="utf-8"?>
<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_height=
"match_parent"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
tools:background=
"#9F998F"
>
<ImageView
android:id=
"@+id/iv_rewind"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
a
pp:layout_constraintTop_toTopOf=
"parent
"
a
ndroid:src=
"@drawable/course_rewind_15
"
app:layout_constraintStart_toStartOf=
"parent"
a
ndroid:src=
"@drawable/course_rewind_15"
/>
a
pp:layout_constraintTop_toTopOf=
"parent"
/>
<ImageView
android:id=
"@+id/iv_fast_forward"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
android:layout_width=
"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
android:id=
"@+id/seekbar"
android:layout_width=
"0dp"
android:paddingStart=
"10dp"
android:paddingEnd=
"10dp"
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:minHeight=
"3dp"
android:paddingStart=
"10dp"
android:paddingEnd=
"10dp"
android:progress=
"0"
android:progressDrawable=
"@drawable/course_seekbar"
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
android:id=
"@+id/tv_progress"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
tools:text=
"00:00
"
android:textColor=
"@android:color/white
"
android:textSize=
"12sp"
app:layout_constraintStart_toStartOf=
"@id/seekbar"
app:layout_constraintTop_toBottomOf=
"@id/seekbar"
android:textColor=
"@android:color/white"
/>
tools:text=
"00:00"
/>
<TextView
android:id=
"@+id/tv_duration"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
tools:text=
"00:00
"
android:textColor=
"@android:color/white
"
android:textSize=
"12sp"
app:layout_constraintEnd_toEndOf=
"@id/seekbar"
app:layout_constraintTop_toBottomOf=
"@id/seekbar"
android:textColor=
"@android:color/white"
/>
tools:text=
"00:00"
/>
<androidx.constraintlayout.utils.widget.ImageFilterView
android:id=
"@+id/iv_bg"
android:layout_width=
"66dp"
android:layout_height=
"66dp"
app:roundPercent=
"1"
android:layout_marginTop=
"20dp"
app:layout_constraintTop_toBottomOf=
"@id/tv_progress"
app:layout_constraintStart_toStartOf=
"parent"
android:background=
"@android:color/white"
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
android:id=
"@+id/iv_play_status"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
app:layout_constraintTop_toTopOf=
"@id/iv_bg"
app:layout_constraintBottom_toBottomOf=
"@id/iv_bg"
app:layout_constraintStart_toStartOf=
"@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
android:id=
"@+id/iv_pre"
android:layout_width=
"48dp"
android:layout_height=
"48dp"
android:padding=
"12dp"
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_constraintEnd_toStartOf=
"@id/iv_bg"
a
ndroid:src=
"@drawable/course_pre"
/>
a
pp:layout_constraintTop_toTopOf=
"@id/iv_bg"
/>
<ImageView
android:id=
"@+id/iv_next"
android:layout_width=
"48dp"
android:layout_height=
"48dp"
android:padding=
"12dp"
android:layout_marginStart=
"36dp"
a
pp:layout_constraintStart_toEndOf=
"@id/iv_bg
"
a
pp:layout_constraintTop_toTopOf=
"@id/iv_bg
"
a
ndroid:padding=
"12dp
"
a
ndroid:src=
"@drawable/course_next
"
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>
\ No newline at end of file
m-course/src/main/res/layout/item_course_speed.xml
View file @
b4d45d29
...
...
@@ -2,11 +2,11 @@
<TextView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
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_height=
"wrap_content"
android:gravity=
"center"
android:paddingTop=
"16dp"
android:paddingBottom=
"16dp"
/>
\ No newline at end of file
android:paddingBottom=
"16dp"
android:textColor=
"@color/color_1C1F28"
android:textSize=
"16sp"
tools:text=
"2.0"
/>
\ No newline at end of file
ydl-platform/src/main/java/com/ydl/ydlcommon/base/BaseActivity.kt
View file @
b4d45d29
...
...
@@ -4,7 +4,6 @@ import android.app.Activity
import
android.content.res.Resources
import
android.graphics.Color
import
android.os.Bundle
import
android.os.Handler
import
android.util.Log
import
android.view.View
import
android.view.ViewGroup
...
...
@@ -224,9 +223,6 @@ abstract class BaseActivity : AppCompatActivity(), IActivityLifecycleable {
transaction
.
add
(
it
,
tag
)
}
transaction
.
commitAllowingStateLoss
()
Handler
().
postDelayed
({
supportFragmentManager
.
findFragmentByTag
(
tag
)
},
5000
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment