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
1e8f36a5
Commit
1e8f36a5
authored
Nov 05, 2019
by
严久程
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
课程模块
parent
e4369ba4
Show whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
1159 additions
and
73 deletions
+1159
-73
build.gradle
m-course/build.gradle
+8
-0
CourseListFragment.java
m-course/src/main/java/com/yidianling/course/CourseListFragment.java
+1
-1
PostersShareBean.kt
m-course/src/main/java/com/yidianling/course/bean/PostersShareBean.kt
+1
-1
CourseListContainerActivity.kt
m-course/src/main/java/com/yidianling/course/courseNew/courseList/CourseListContainerActivity.kt
+1
-1
CoursePlayActivity.kt
m-course/src/main/java/com/yidianling/course/coursePlay/CoursePlayActivity.kt
+13
-6
CoursePlayItemViewAudio.kt
m-course/src/main/java/com/yidianling/course/coursePlay/CoursePlayItemViewAudio.kt
+1
-0
CoursePlayItemViewVideo.kt
m-course/src/main/java/com/yidianling/course/coursePlay/CoursePlayItemViewVideo.kt
+10
-6
CourseSearchActicity.kt
m-course/src/main/java/com/yidianling/course/courseSearch/CourseSearchActicity.kt
+13
-11
CourseSearchApiUtils.kt
m-course/src/main/java/com/yidianling/course/courseSearch/http/CourseSearchApiUtils.kt
+4
-5
CourseSearchListApi.kt
m-course/src/main/java/com/yidianling/course/courseSearch/http/CourseSearchListApi.kt
+1
-1
ICourseSearchListHttp.kt
m-course/src/main/java/com/yidianling/course/courseSearch/http/ICourseSearchListHttp.kt
+1
-2
CourseSpecialListPresenterImpl.kt
m-course/src/main/java/com/yidianling/course/course_special_list/presenter/CourseSpecialListPresenterImpl.kt
+5
-14
HPlayView.kt
m-course/src/main/java/com/yidianling/course/widget/HPlayView.kt
+286
-0
blank.png
m-course/src/main/res/drawable-xhdpi/blank.png
+0
-0
course_default_img.png
m-course/src/main/res/drawable-xhdpi/course_default_img.png
+0
-0
course_ico_course_play.png
m-course/src/main/res/drawable-xhdpi/course_ico_course_play.png
+0
-0
course_ico_img_zixun_empty.png
m-course/src/main/res/drawable-xhdpi/course_ico_img_zixun_empty.png
+0
-0
course_ico_play_float_full.png
m-course/src/main/res/drawable-xhdpi/course_ico_play_float_full.png
+0
-0
course_audio_play.gif
m-course/src/main/res/drawable/course_audio_play.gif
+0
-0
course_dot_seekbar.xml
m-course/src/main/res/drawable/course_dot_seekbar.xml
+11
-0
course_layer_progress.xml
m-course/src/main/res/drawable/course_layer_progress.xml
+27
-0
course_video_bottom_background.xml
m-course/src/main/res/drawable/course_video_bottom_background.xml
+11
-0
activity_course.xml
m-course/src/main/res/layout/activity_course.xml
+2
-2
activity_course_commeny.xml
m-course/src/main/res/layout/activity_course_commeny.xml
+1
-1
activity_course_poster.xml
m-course/src/main/res/layout/activity_course_poster.xml
+1
-1
activity_course_search.xml
m-course/src/main/res/layout/activity_course_search.xml
+76
-0
course_play_music_view.xml
m-course/src/main/res/layout/course_play_music_view.xml
+134
-0
course_videoplay_view.xml
m-course/src/main/res/layout/course_videoplay_view.xml
+403
-0
course_view_course_play_item.xml
m-course/src/main/res/layout/course_view_course_play_item.xml
+13
-0
fragment_course_list.xml
m-course/src/main/res/layout/fragment_course_list.xml
+1
-1
layout_title_bar.xml
m-course/src/main/res/layout/layout_title_bar.xml
+1
-1
colors.xml
m-course/src/main/res/values/colors.xml
+3
-0
course_toolbar_back.png
m-course/src/xlzx/res/drawable-xhdpi/course_toolbar_back.png
+0
-0
course_toolbar_back.png
m-course/src/ydl/res/drawable-xhdpi/course_toolbar_back.png
+0
-0
BIConstants.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/actionutil/BIConstants.kt
+130
-19
No files found.
m-course/build.gradle
View file @
1e8f36a5
...
...
@@ -60,6 +60,14 @@ dependencies {
androidTestImplementation
'com.android.support.test.espresso:espresso-core:3.0.2'
kapt
'com.alibaba:arouter-compiler:1.2.2'
implementation
'com.jakewharton:butterknife:8.8.1'
api
'com.dou361.ijkplayer-armv5:jjdxm-ijkplayer-armv5:1.0.0'
api
'com.dou361.ijkplayer-arm64:jjdxm-ijkplayer-arm64:1.0.0'
api
'com.dou361.ijkplayer-x86:jjdxm-ijkplayer-x86:1.0.0'
api
'com.dou361.ijkplayer-x86_64:jjdxm-ijkplayer-x86_64:1.0.0'
api
(
'com.dou361.ijkplayer:jjdxm-ijkplayer:1.0.6'
)
{
exclude
group:
'com.android.support'
,
module:
'appcompat-v7'
}
api
rootProject
.
ext
.
dependencies
[
"ydl-user-router"
]
if
(
rootProject
.
ext
.
dev_mode
){
//开发时使用
...
...
m-course/src/main/java/com/yidianling/course/CourseListFragment.java
View file @
1e8f36a5
...
...
@@ -238,7 +238,7 @@ public class CourseListFragment extends BaseFragment implements PtrHandler, Load
emptyTv
.
setVisibility
(
View
.
VISIBLE
);
ivEmptyView
.
setVisibility
(
View
.
VISIBLE
);
lvContent
.
setVisibility
(
View
.
GONE
);
ivEmptyView
.
setImageResource
(
R
.
drawable
.
blank
);
ivEmptyView
.
setImageResource
(
R
.
drawable
.
course_
blank
);
emptyTv
.
setText
(
"还没有相应的课程哦~"
);
}
else
{
lvContent
.
setVisibility
(
View
.
VISIBLE
);
...
...
m-course/src/main/java/com/yidianling/course/bean/PostersShareBean.kt
View file @
1e8f36a5
package
com.yidianling.course.bean
import
com.y
idianling.ydlcommon.data
.ShareData
import
com.y
dl.ydlcommon.bean
.ShareData
/**
* @author jiucheng
...
...
m-course/src/main/java/com/yidianling/course/courseNew/courseList/CourseListContainerActivity.kt
View file @
1e8f36a5
...
...
@@ -495,7 +495,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
lv_content
.
visibility
=
View
.
GONE
tv_course_list_empty_prompt
.
visibility
=
View
.
VISIBLE
iv_course_list_empty_view
.
visibility
=
View
.
VISIBLE
iv_course_list_empty_view
.
setImageResource
(
R
.
drawable
.
blank
)
iv_course_list_empty_view
.
setImageResource
(
R
.
drawable
.
course_
blank
)
tv_course_list_empty_prompt
.
text
=
"还没有相应的课程哦~"
v_loading
.
visibility
=
View
.
GONE
}
...
...
m-course/src/main/java/com/yidianling/course/coursePlay/CoursePlayActivity.kt
View file @
1e8f36a5
...
...
@@ -17,7 +17,8 @@ import android.widget.LinearLayout
import
android.widget.TextView
import
com.alibaba.android.arouter.facade.annotation.Route
import
com.bumptech.glide.Glide
import
com.google.android.exoplayer2.ui.PlayerView
import
com.dou361.ijkplayer.widget.PlayStateParams
import
com.dou361.ijkplayer.widget.PlayerView
import
com.ydl.media.audio.AudioPlayer
import
com.ydl.media.audio.utils.PlayProgressUtil
import
com.ydl.media.view.PlayTypeEnum
...
...
@@ -31,7 +32,6 @@ import com.ydl.ydlcommon.router.IYDLRouterConstant
import
com.ydl.ydlcommon.router.YdlCommonRouterManager
import
com.ydl.ydlcommon.utils.ScreenUtil
import
com.ydl.ydlcommon.utils.StatusBarUtils
import
com.ydl.ydlcommon.utils.UMEventUtils
import
com.ydl.ydlcommon.utils.Utils
import
com.ydl.ydlcommon.view.BaseViewHolder
import
com.ydl.ydlcommon.view.dialog.CommonDialog
...
...
@@ -579,7 +579,7 @@ class CoursePlayActivity : BaseActivity() {
videoView
?.
onConfigurationChanged
(
newConfig
)
handler
.
postDelayed
({
if
(
newConfig
.
screenHeightDp
>
newConfig
.
screenWidthDp
)
{
videoView
?.
fullScreenView
!!
.
setImageResource
(
R
.
drawable
.
ico_play_float_full
)
videoView
?.
fullScreenView
!!
.
setImageResource
(
R
.
drawable
.
course_
ico_play_float_full
)
}
else
{
videoView
?.
fullScreenView
!!
.
setImageResource
(
R
.
drawable
.
ico_play_minify
)
}
...
...
@@ -595,10 +595,17 @@ class CoursePlayActivity : BaseActivity() {
fun
showVideoFloatView
():
Boolean
{
if
(
play_type
==
0
)
{
if
(
YDLMusicHelper
.
isCoursePlaying
())
{
YDLMusicHelper
.
cover
=
courPlayBean
?.
courseExtra
?.
pic
YDLMusicHelper
.
name
=
courPlayBean
?.
courseExtra
?.
doctorName
// if (YDLMusicHelper.isCoursePlaying()) {
// YDLMusicHelper.cover = courPlayBean?.courseExtra?.pic
// YDLMusicHelper.name = courPlayBean?.courseExtra?.doctorName
// }
if
(
AudioPlayer
.
get
().
isPlaying
&&
PlayerFloatHelper
.
playingType
==
PlayTypeEnum
.
PLAY_TYPE_COURSE
)
{
AudioPlayer
.
get
().
playMusic
?.
coverPath
=
courPlayBean
?.
courseExtra
?.
pic
AudioPlayer
.
get
().
playMusic
?.
artist
=
courPlayBean
?.
courseExtra
?.
doctorName
}
}
else
{
if
(
videoView
?.
onBackPressed
()
==
true
)
{
return
false
...
...
m-course/src/main/java/com/yidianling/course/coursePlay/CoursePlayItemViewAudio.kt
View file @
1e8f36a5
...
...
@@ -8,6 +8,7 @@ import com.yidianling.common.tools.RxDeviceTool
import
com.yidianling.common.tools.RxNetTool
import
com.yidianling.course.bean.CourseExtraBean
import
com.yidianling.course.bean.CourseMediaBean
import
com.yidianling.course.widget.HPlayView
import
com.yidianling.ydlcommon.bean.CourseExtraBean
import
com.yidianling.ydlcommon.bean.CourseMediaBean
import
com.yidianling.ydlcommon.dialog.CommonDialog
...
...
m-course/src/main/java/com/yidianling/course/coursePlay/CoursePlayItemViewVideo.kt
View file @
1e8f36a5
...
...
@@ -8,6 +8,9 @@ import android.view.View
import
android.widget.RelativeLayout
import
com.dou361.ijkplayer.widget.PlayStateParams
import
com.dou361.ijkplayer.widget.PlayerView
import
com.ydl.media.audio.utils.PlayProgressUtil
import
com.ydl.media.view.PlayTypeEnum
import
com.ydl.media.view.PlayerFloatHelper
import
com.ydl.ydl_image.module.GlideApp
import
com.ydl.ydlcommon.view.dialog.CommonDialog
import
com.yidianling.course.R
...
...
@@ -52,7 +55,7 @@ class CoursePlayItemViewVideo : RelativeLayout, PlayViewInterface {
@SuppressLint
(
"InvalidWakeLockTag"
)
private
constructor
(
context
:
CoursePlayActivity
,
playMoudle
:
Int
)
:
super
(
context
)
{
this
.
playMoudle
=
playMoudle
View
.
inflate
(
context
,
R
.
layout
.
view_course_play_item
,
this
)
View
.
inflate
(
context
,
R
.
layout
.
course_
view_course_play_item
,
this
)
activity
=
context
initView
()
...
...
@@ -77,7 +80,7 @@ class CoursePlayItemViewVideo : RelativeLayout, PlayViewInterface {
if
(
isVideoPlaying
)
{
var
time
=
activity
?.
videoView
?.
currentPosition
?:
0
if
(
time
<
3000
)
return
UtilH
.
saveProgress
(
context
,
videoUrl
,
time
)
PlayProgressUtil
.
saveProgress
(
context
,
videoUrl
,
time
)
}
}
},
1000
,
1000
)
...
...
@@ -104,7 +107,7 @@ class CoursePlayItemViewVideo : RelativeLayout, PlayViewInterface {
wakeLock
!!
.
acquire
()
}
activity
?.
videoView
?.
onResume
()
var
hisTime1
=
UtilH
.
getProgress
(
context
,
videoUrl
)
var
hisTime1
=
PlayProgressUtil
.
getProgress
(
context
,
videoUrl
)
activity
?.
videoView
?.
seekTo
(
hisTime1
)
}
...
...
@@ -149,14 +152,15 @@ class CoursePlayItemViewVideo : RelativeLayout, PlayViewInterface {
}
}
if
(
canPlay
)
{
YDLMusicHelper
.
playingType
=
YDLMusicHelper
.
PLAY_TYPE_COURSE
PlayerFloatHelper
.
playingType
=
PlayTypeEnum
.
PLAY_TYPE_COURSE
var
url
=
playList
[
index
].
url
url
=
url
.
replace
(
"https"
,
"http"
)
videoUrl
=
url
var
hisTime
=
UtilH
.
getProgress
(
context
,
url
)
var
hisTime
=
PlayProgressUtil
.
getProgress
(
context
,
url
)
try
{
activity
?.
videoView
=
PlayerView
(
activity
)
.
setScaleType
(
PlayStateParams
.
fitparent
)
...
...
@@ -194,7 +198,7 @@ class CoursePlayItemViewVideo : RelativeLayout, PlayViewInterface {
if
(
what
==
PlayStateParams
.
STATE_COMPLETED
)
{
isVideoPlaying
=
false
UtilH
.
saveProgress
(
this
@CoursePlayItemViewVideo
.
activity
,
videoUrl
,
0
)
PlayProgressUtil
.
saveProgress
(
this
@CoursePlayItemViewVideo
.
activity
,
videoUrl
,
0
)
if
(
playList
.
size
-
1
>
this
@CoursePlayItemViewVideo
.
index
)
{
//播放下一曲
play
(
this
@CoursePlayItemViewVideo
.
index
+
1
)
...
...
m-course/src/main/java/com/yidianling/course/courseSearch/CourseSearchActicity.kt
View file @
1e8f36a5
package
com.yidianling.course.courseSearch
import
android.annotation.SuppressLint
import
android.support.v7.widget.LinearLayoutManager
import
android.text.TextUtils
import
android.util.Log
...
...
@@ -7,22 +8,22 @@ import android.view.View
import
android.view.WindowManager
import
android.widget.ImageView
import
com.alibaba.android.arouter.facade.annotation.Route
import
com.ydl.base_module.ui.searchbarview.SearchBarView
import
com.ydl.webview.H5Params
import
com.ydl.webview.NewH5Activity
import
com.ydl.ydl_image.config.SimpleImageOpConfiger
import
com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener
import
com.ydl.ydl_image.manager.YDLImageCacheManager
import
com.ydl.ydlcommon.base.BaseActivity
import
com.ydl.ydlcommon.bean.ShareData
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
import
com.ydl.ydlcommon.router.IYDLRouterConstant
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.course.CourseConstants
import
com.yidianling.course.R
import
com.yidianling.course.coursePlay.moudle.Course
import
com.yidianling.course.courseSearch.http.CourseSearchApiUtils
import
com.yidianling.course.courseSearch.view.ICourseSearchView
import
com.yidianling.ydlcommon.base.BaseActivity
import
com.yidianling.ydlcommon.data.ShareData
import
com.yidianling.ydlcommon.h5.H5Params
import
com.yidianling.ydlcommon.h5.NewH5Activity
import
com.yidianling.ydlcommon.http.ThrowableConsumer
import
com.yidianling.ydlcommon.router.IYDLRouterConstant
import
com.yidianling.course.widget.SearchBarView
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.functions.Consumer
import
io.reactivex.schedulers.Schedulers
...
...
@@ -153,7 +154,7 @@ class CourseSearchActivity : BaseActivity(), CourseSearchAdapter.OnItemClick, IC
override
fun
onItemClickEvent
(
position
:
Int
)
{
var
courseItem
=
courseList
[
position
]
if
(
null
!=
courseItem
)
{
val
h5Params
=
H5Params
(
CourseConstants
.
COURSE_DETAIL_H5
+
courseItem
.
id
,
this
.
getString
(
R
.
string
.
course_detail
)
)
val
h5Params
=
H5Params
(
CourseConstants
.
COURSE_DETAIL_H5
+
courseItem
.
id
,
"课程详情"
)
if
(
null
!=
courseItem
.
share
&&
!
TextUtils
.
isEmpty
(
courseItem
.
share
.
share_url
))
{
val
shareData
=
ShareData
(
courseItem
.
share
.
share_url
,
courseItem
.
share
.
title
,
courseItem
.
share
.
cover
,
courseItem
.
share
.
desc
)
h5Params
.
shareData
=
shareData
...
...
@@ -170,8 +171,8 @@ class CourseSearchActivity : BaseActivity(), CourseSearchAdapter.OnItemClick, IC
val
sp
=
SimpleImageOpConfiger
()
sp
.
heigt
=
height
sp
.
width
=
width
sp
.
errorPic
=
R
.
drawable
.
default_img
sp
.
loadingPic
=
R
.
drawable
.
default_img
sp
.
errorPic
=
R
.
drawable
.
course_
default_img
sp
.
loadingPic
=
R
.
drawable
.
course_
default_img
YDLImageCacheManager
.
showImage
(
CourseSearchActicity
@
this
,
url
,
imageView
,
sp
)
}
...
...
@@ -179,6 +180,7 @@ class CourseSearchActivity : BaseActivity(), CourseSearchAdapter.OnItemClick, IC
* 根据输入搜索专家课程
* type true代表首次加载,false代表加载下一页
*/
@SuppressLint
(
"CheckResult"
)
fun
loadCourseList
(
type
:
Boolean
)
{
if
(
TextUtils
.
isEmpty
(
inputString
))
{
activity_course_search_swipe_refresh_layout
.
isRefreshing
=
false
...
...
@@ -234,7 +236,7 @@ class CourseSearchActivity : BaseActivity(), CourseSearchAdapter.OnItemClick, IC
if
(!
TextUtils
.
isEmpty
(
desc
))
activity_course_search_unusual_layout_desc
.
text
=
desc
activity_course_search_unusual_layout
.
visibility
=
View
.
VISIBLE
activity_course_search_recycler
.
visibility
=
View
.
GONE
iv_empty
.
setImageResource
(
if
(
isEmpty
)
R
.
drawable
.
ico_img_zixun_empty
else
R
.
drawable
.
blank
)
iv_empty
.
setImageResource
(
if
(
isEmpty
)
R
.
drawable
.
course_ico_img_zixun_empty
else
R
.
drawable
.
course_
blank
)
}
/**
...
...
m-course/src/main/java/com/yidianling/course/courseSearch/http/CourseSearchApiUtils.kt
View file @
1e8f36a5
package
com.yidianling.course.courseSearch.http
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.ydl.ydlnet.YDLHttpUtils
import
com.yidianling.course.coursePlay.common.net.NetApiStore
import
com.yidianling.course.courseSearch.CourseSearchBean
import
com.yidianling.ydlcommon.http.BaseAPIResponse
import
com.yidianling.ydlcommon.http.BaseResponse
import
com.yidianling.ydlcommon.http.YdlRetrofitUtils
import
io.reactivex.Observable
/**
...
...
@@ -20,8 +20,7 @@ class CourseSearchApiUtils {
* 专家课程搜索列表
*/
fun
courseSearchList
(
page
:
Int
,
keyWord
:
String
)
:
Observable
<
BaseAPIResponse
<
CourseSearchBean
>>
{
return
YdlRetrofitUtils
.
getRxRetrofit
().
newBuilder
().
baseUrl
(
YdlRetrofitUtils
.
SERVER_API_JAVA_URL
).
build
()
.
create
(
CourseSearchListApi
::
class
.
java
).
courseSearchList
(
page
,
keyWord
)
return
YDLHttpUtils
.
obtainApi
(
CourseSearchListApi
::
class
.
java
).
courseSearchList
(
page
,
keyWord
)
}
}
...
...
m-course/src/main/java/com/yidianling/course/courseSearch/http/CourseSearchListApi.kt
View file @
1e8f36a5
package
com.yidianling.course.courseSearch.http
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.yidianling.course.courseSearch.CourseSearchBean
import
com.yidianling.ydlcommon.http.BaseAPIResponse
import
io.reactivex.Observable
import
retrofit2.http.*
...
...
m-course/src/main/java/com/yidianling/course/courseSearch/http/ICourseSearchListHttp.kt
View file @
1e8f36a5
package
com.yidianling.course.courseSearch.http
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.yidianling.course.courseSearch.CourseSearchBean
import
com.yidianling.ydlcommon.http.BaseAPIResponse
import
com.yidianling.ydlcommon.http.BaseResponse
import
io.reactivex.Observable
/**
...
...
m-course/src/main/java/com/yidianling/course/course_special_list/presenter/CourseSpecialListPresenterImpl.kt
View file @
1e8f36a5
...
...
@@ -3,13 +3,12 @@ package com.yidianling.course.course_special_list.presenter
import
com.google.gson.Gson
import
com.google.gson.reflect.TypeToken
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
import
com.ydl.ydlcommon.mvp.base.BasePresenter
import
com.yidianling.common.tools.RxNetTool
import
com.yidianling.course.course_special_list.bean.CourseSpecialItemBean
import
com.yidianling.course.course_special_list.contract.ICourseSpecialListContract
import
com.yidianling.course.course_special_list.http.CourseSpecialListParam
import
com.yidianling.course.course_special_list.model.CourseSpecialListModelImpl
import
com.yidianling.ydlcommon.http.ThrowableConsumer
import
com.yidianling.ydlcommon.mvp.RxPresenter
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.functions.Consumer
import
io.reactivex.schedulers.Schedulers
...
...
@@ -22,17 +21,9 @@ import io.reactivex.schedulers.Schedulers
* @date 2018/9/18
*/
class
CourseSpecialListPresenterImpl
(
var
view
:
ICourseSpecialListContract
.
View
)
:
ICourseSpecialListContract
.
Presenter
{
override
fun
attachView
(
view
:
ICourseSpecialListContract
.
View
)
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
fun
detachView
()
{
TODO
(
"not implemented"
)
//To change body of crea ted functions use File | Settings | File Templates.
}
override
fun
destroy
()
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
BasePresenter
<
ICourseSpecialListContract
.
View
,
ICourseSpecialListContract
.
Model
>(),
ICourseSpecialListContract
.
Presenter
{
override
fun
createModel
():
ICourseSpecialListContract
.
Model
{
return
CourseSpecialListModelImpl
()
}
/**
...
...
@@ -77,7 +68,7 @@ class CourseSpecialListPresenterImpl (var view: ICourseSpecialListContract.View)
* @param loadMore 是否为上拉加载更多
*/
private
fun
requestList
(
page
:
Int
,
loadMore
:
Boolean
){
val
disposable
=
model
.
specialListRequest
(
CourseSpecialListParam
(
page
,
0
))
val
disposable
=
m
M
odel
.
specialListRequest
(
CourseSpecialListParam
(
page
,
0
))
.
subscribeOn
(
Schedulers
.
io
())
.
map
{
it
}
.
filter
{
it
!=
null
}
...
...
m-course/src/main/java/com/yidianling/course/widget/HPlayView.kt
0 → 100644
View file @
1e8f36a5
package
com.yidianling.course.widget
import
android.app.Activity
import
android.os.Handler
import
android.view.View
import
android.widget.RelativeLayout
import
android.widget.SeekBar
import
com.bumptech.glide.Glide
import
com.yidianling.course.R
import
kotlinx.android.synthetic.main.course_play_music_view.view.*
/**
* Created by hgw on 2018/4/28.
*/
class
HPlayView
:
RelativeLayout
,
YDLMusicPlayer
.
MusicControlTaker
{
var
control
:
HMusicPlayService
.
MusicController
?
=
null
var
listener
:
HPlayStatusListener
?
=
null
var
mHandler
:
Handler
?
=
null
//seekBar 按下标记
var
seekBarIsDown
=
false
var
progress
=
0
var
mContext
:
Activity
?
=
null
constructor
(
context1
:
Activity
?)
:
super
(
context1
)
{
this
.
mContext
=
context1
mHandler
=
Handler
()
init
()
}
fun
init
()
{
if
(
mContext
==
null
)
return
YDLMusicPlayer
.
getInstance
().
setMusicControlTaker
(
this
)
View
.
inflate
(
context
,
R
.
layout
.
course_play_music_view
,
this
)
play_icon
.
setOnClickListener
{
if
(
control
?.
isPlaying
()
==
true
)
{
control
?.
pause
()
}
else
{
control
?.
start
()
}
}
img_gif
.
setOnClickListener
{
if
(
control
?.
isPlaying
()
==
false
)
{
control
?.
start
()
}
}
pro_progress
.
setOnSeekBarChangeListener
(
object
:
SeekBar
.
OnSeekBarChangeListener
{
override
fun
onProgressChanged
(
p0
:
SeekBar
?,
p1
:
Int
,
p2
:
Boolean
)
{
if
(
p2
)
{
text_start_time
.
text
=
getStringTime
(
p1
)
progress
=
p1
}
}
override
fun
onStartTrackingTouch
(
p0
:
SeekBar
?)
{
seekBarIsDown
=
true
}
override
fun
onStopTrackingTouch
(
p0
:
SeekBar
?)
{
seekBarIsDown
=
false
//拖动seekbar时不进行以下操作
if
(!
seekBarIsDown
)
{
control
?.
seekTo
(
progress
)
}
}
})
}
fun
showNetNotice
(
event
:
()
->
Unit
)
{
ll_net_notice
.
visibility
=
View
.
VISIBLE
img_gif
.
visibility
=
View
.
GONE
iv_net_notice
.
setOnClickListener
{
hideNetNotice
()
event
()
}
}
fun
hideNetNotice
()
{
ll_net_notice
.
visibility
=
View
.
GONE
img_gif
.
visibility
=
View
.
VISIBLE
}
fun
setData
(
urlLi
:
ArrayList
<
MusicInfoBean
>):
HPlayView
{
control
?.
setData
(
urlLi
)
return
this
}
/**
* 后台进入前台view
*/
fun
updateView
(
index
:
Int
)
{
if
(
control
?.
isPlaying
()
!!
)
{
mHandler
?.
postDelayed
({
pro_progress
.
max
=
control
?.
getDuration
()
?:
0
text_end_time
.
text
=
getStringTime
(
pro_progress
.
max
)
listener
?.
onPrepared
(
control
?.
getCurrentData
(),
index
)
},
0
)
updateButton
()
}
}
/**
* 获取当前播放下标
*/
fun
getCurrentIndex
():
Int
{
return
control
?.
getCurrentIndex
()
?:
0
}
/**
* 获取当前播放url
*/
fun
getCurrentUrl
():
String
{
return
control
?.
getCurrentUrl
()
?:
""
}
fun
play
(
index
:
Int
)
{
updateButton
()
YDLMusicHelper
.
playingType
=
YDLMusicHelper
.
PLAY_TYPE_COURSE
YDLMusicHelper
.
directPlay
(
index
,
true
)
}
fun
setImageBackground
(
url
:
String
?)
{
Glide
.
with
(
mContext
).
load
(
url
).
into
(
img_bg
)
}
/**
* 获取播放控制器
*/
fun
getPlayControl
():
HMusicPlayService
.
MusicController
?
{
return
control
}
/**
* 设置自动播放下一曲
*/
fun
setAutoNext
(
auto
:
Boolean
)
{
control
?.
setAutoPlayNext
(
auto
)
}
override
fun
onReceiveControl
(
control
:
HMusicPlayService
.
MusicController
)
{
this
.
control
=
control
setControl1
(
control
)
}
var
playStatusListener
:
PlayStatusListener
?
=
null
private
fun
setControl1
(
control
:
HMusicPlayService
.
MusicController
?)
{
control
?.
setOpenNotifyCation
(
true
)
if
(
playStatusListener
==
null
)
{
playStatusListener
=
object
:
PlayStatusListener
{
override
fun
beforeStart
(
index
:
Int
)
{
showBufferLoading
(
true
)
}
override
fun
onCompletionListener
()
{
// LogH.d("onCompletionListener")
updateButton
()
}
override
fun
loading
()
{
// LogH.d("loading")
showBufferLoading
(
true
)
}
override
fun
onPrepared
()
{
// LogH.d("onPrepared")
mHandler
?.
postDelayed
({
pro_progress
.
max
=
control
?.
getDuration
()
?:
0
text_end_time
.
text
=
getStringTime
(
pro_progress
.
max
)
listener
?.
onPrepared
(
control
?.
getCurrentData
(),
control
?.
getCurrentIndex
()
?:
0
)
},
0
)
}
override
fun
start
()
{
// LogH.d("start")
setGifVisibity
(
true
)
}
override
fun
pause
()
{
// LogH.d("pause")
setGifVisibity
(
false
)
}
override
fun
onProgressUpdate
(
progress
:
Int
)
{
mHandler
?.
postDelayed
({
//拖动seekbar时不进行以下操作
if
(!
seekBarIsDown
)
{
pro_progress
.
progress
=
progress
text_start_time
.
text
=
getStringTime
(
progress
)
}
},
0
)
}
override
fun
OnErrorListener
(
p1
:
Int
,
p2
:
String
)
{
// LogH.d("OnErrorListener:$p1 $p2")
setGifVisibity
(
false
)
}
override
fun
OnBufferingUpdateListener
(
p1
:
Int
)
{
// LogH.d("OnBufferingUpdateListener:$p1")
mHandler
?.
postDelayed
({
pro_progress
.
secondaryProgress
=
p1
*
pro_progress
.
max
/
100
},
0
)
}
}
YDLMusicPlayer
.
getInstance
().
addListener
(
playStatusListener
!!
)
}
}
fun
showBufferLoading
(
show
:
Boolean
)
{
mHandler
?.
postDelayed
({
if
(
show
)
{
if
(
mContext
!=
null
)
{
Glide
.
with
(
mContext
).
asGif
().
load
(
R
.
mipmap
.
loading5
).
into
(
img_gif
)
}
play_icon
.
setImageResource
(
R
.
drawable
.
ico_course_play
)
}
else
{
if
(
mContext
!=
null
)
{
Glide
.
with
(
mContext
).
asGif
().
load
(
R
.
mipmap
.
audio_play
).
into
(
img_gif
)
}
play_icon
.
setImageResource
(
R
.
drawable
.
ico_course_pause
)
}
},
0
)
}
//显示或隐藏播放动画
fun
setGifVisibity
(
show
:
Boolean
)
{
if
(
context
==
null
)
return
mHandler
?.
postDelayed
({
if
(
show
)
{
if
(
mContext
!=
null
)
{
Glide
.
with
(
mContext
).
asGif
().
load
(
R
.
mipmap
.
audio_play
).
into
(
img_gif
)
}
play_icon
.
setImageResource
(
R
.
drawable
.
ico_course_pause
)
}
else
{
if
(
mContext
!=
null
)
{
Glide
.
with
(
mContext
).
asBitmap
().
load
(
R
.
drawable
.
ico_course_bg_pause
).
into
(
img_gif
)
}
play_icon
.
setImageResource
(
R
.
drawable
.
ico_course_play
)
}
},
0
)
}
//跟新上下音频按钮状态
fun
updateButton
()
{
mHandler
?.
postDelayed
({
if
(
control
?.
isPlaying
()
==
true
)
{
setGifVisibity
(
true
)
}
},
0
)
}
fun
getStringTime
(
time
:
Int
):
String
{
if
(
time
<=
0
)
return
"00:00"
var
min
=
time
/
60000
var
ss
=
(
time
-
min
*
60000
)
/
1000
var
mm
=
""
+
min
var
SS
=
""
+
ss
if
(
min
<
10
)
{
mm
=
"0$mm"
}
if
(
ss
<
10
)
{
SS
=
"0$ss"
}
return
"$mm:$SS"
}
fun
onDestroy
()
{
mContext
=
null
mHandler
=
null
playStatusListener
?.
let
{
YDLMusicPlayer
.
getInstance
().
removeListener
(
it
)
}
}
}
\ No newline at end of file
m-course/src/main/res/drawable-xhdpi/blank.png
deleted
100644 → 0
View file @
e4369ba4
5.43 KB
m-course/src/main/res/drawable-xhdpi/course_default_img.png
0 → 100644
View file @
1e8f36a5
102 Bytes
m-course/src/main/res/drawable-xhdpi/course_ico_course_play.png
0 → 100644
View file @
1e8f36a5
580 Bytes
m-course/src/main/res/drawable-xhdpi/course_ico_img_zixun_empty.png
0 → 100644
View file @
1e8f36a5
31 KB
m-course/src/main/res/drawable-xhdpi/course_ico_play_float_full.png
0 → 100644
View file @
1e8f36a5
509 Bytes
m-course/src/main/res/drawable/course_audio_play.gif
0 → 100644
View file @
1e8f36a5
25 KB
m-course/src/main/res/drawable/course_dot_seekbar.xml
0 → 100644
View file @
1e8f36a5
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"oval"
>
<size
android:width=
"17dp"
android:height=
"17dp"
/>
<stroke
android:color=
"@color/white"
android:width=
"6dp"
/>
<solid
android:color=
"@color/color_FFDB26"
/>
</shape>
\ No newline at end of file
m-course/src/main/res/drawable/course_layer_progress.xml
0 → 100644
View file @
1e8f36a5
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:id=
"@android:id/background"
>
<shape>
<corners
android:radius=
"3dp"
/>
<solid
android:color=
"#C6CACE"
/>
</shape>
</item>
<item
android:id=
"@android:id/secondaryProgress"
>
<clip>
<shape>
<corners
android:radius=
"3dp"
/>
<solid
android:color=
"#ECF0F1"
/>
</shape>
</clip>
</item>
<item
android:id=
"@android:id/progress"
>
<clip>
<shape>
<corners
android:radius=
"3dp"
/>
<solid
android:color=
"@color/color_FFDB26"
/>
</shape>
</clip>
</item>
</layer-list>
\ No newline at end of file
m-course/src/main/res/drawable/course_video_bottom_background.xml
0 → 100644
View file @
1e8f36a5
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<gradient
android:angle=
"270"
android:endColor=
"#99000000"
android:startColor=
"#00000000"
/>
</shape>
\ No newline at end of file
m-course/src/main/res/layout/activity_course.xml
View file @
1e8f36a5
...
...
@@ -24,7 +24,7 @@
android:layout_centerVertical=
"true"
android:paddingLeft=
"15dp"
android:paddingRight=
"10dp"
android:src=
"@drawable/toolbar_back"
/>
android:src=
"@drawable/
course_
toolbar_back"
/>
<TextView
android:id=
"@+id/tv_title"
...
...
@@ -43,7 +43,7 @@
android:layout_alignParentRight=
"true"
android:layout_centerVertical=
"true"
android:layout_marginRight=
"15dp"
android:src=
"@drawable/toolbar_back"
android:src=
"@drawable/
course_
toolbar_back"
android:text=
"我的课程"
android:textColor=
"@color/right_text_color"
/>
</RelativeLayout>
...
...
m-course/src/main/res/layout/activity_course_commeny.xml
View file @
1e8f36a5
...
...
@@ -13,7 +13,7 @@
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"19dp"
android:src=
"@drawable/toolbar_back"
android:src=
"@drawable/
course_
toolbar_back"
app:layout_constraintBottom_toBottomOf=
"@+id/tv_title"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"@+id/tv_title"
/>
...
...
m-course/src/main/res/layout/activity_course_poster.xml
View file @
1e8f36a5
...
...
@@ -12,7 +12,7 @@
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:paddingLeft=
"15dp"
android:src=
"@drawable/toolbar_back"
android:src=
"@drawable/
course_
toolbar_back"
app:layout_constraintBottom_toBottomOf=
"@+id/tv_title"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"@+id/tv_title"
/>
...
...
m-course/src/main/res/layout/activity_course_search.xml
0 → 100644
View file @
1e8f36a5
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<!--<include-->
<!--layout="@layout/base_module_title_bar"/>-->
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"44dp"
android:background=
"@color/color_FFFFFF"
android:gravity=
"center"
android:orientation=
"horizontal"
android:paddingLeft=
"15dp"
>
<ImageView
android:id=
"@+id/activity_course_back_btn"
android:layout_width=
"13dp"
android:layout_height=
"22dp"
android:src=
"@drawable/course_toolbar_back"
android:visibility=
"gone"
/>
<com.yidianling.course.widget.SearchBarView
android:id=
"@+id/activity_course_search_search_bar_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<LinearLayout
android:id=
"@+id/activity_course_search_unusual_layout"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/color_FFFFFF"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
android:visibility=
"invisible"
>
<ImageView
android:id=
"@+id/iv_empty"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"51dp"
android:src=
"@drawable/course_blank"
/>
<TextView
android:id=
"@+id/activity_course_search_unusual_layout_desc"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"18dp"
android:textColor=
"@color/color_ACACAC"
/>
</LinearLayout>
<android.support.v4.widget.SwipeRefreshLayout
android:id=
"@+id/activity_course_search_swipe_refresh_layout"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/activity_course_search_recycler"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:visibility=
"invisible"
/>
</android.support.v4.widget.SwipeRefreshLayout>
</FrameLayout>
</LinearLayout>
\ No newline at end of file
m-course/src/main/res/layout/course_play_music_view.xml
0 → 100644
View file @
1e8f36a5
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"211dp"
android:orientation=
"vertical"
>
<RelativeLayout
android:id=
"@+id/rela_play"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<ImageView
android:id=
"@+id/img_bg"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:scaleType=
"centerCrop"
tools:background=
"@color/main_theme"
/>
<ImageView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:alpha=
"0.5"
android:background=
"@color/black"
android:scaleType=
"fitXY"
/>
<ImageView
android:id=
"@+id/img_gif"
android:layout_width=
"80dp"
android:layout_height=
"40dp"
android:layout_centerInParent=
"true"
android:src=
"@drawable/course_audio_play"
/>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"40dp"
android:layout_alignParentBottom=
"true"
android:layout_marginBottom=
"15dp"
>
<ImageView
android:id=
"@+id/play_icon"
android:layout_width=
"40dp"
android:layout_height=
"40dp"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"3dp"
android:padding=
"14dp"
android:scaleType=
"centerCrop"
android:src=
"@drawable/course_ico_course_play"
/>
<SeekBar
android:id=
"@+id/pro_progress"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"-3dp"
android:layout_toLeftOf=
"@+id/text_start_time"
android:layout_toRightOf=
"@+id/play_icon"
android:maxHeight=
"2dp"
android:minHeight=
"2dp"
android:progressDrawable=
"@drawable/course_layer_progress"
android:thumb=
"@drawable/course_dot_seekbar"
tools:progress=
"0"
/>
<TextView
android:id=
"@+id/text_start_time"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_centerVertical=
"true"
android:layout_toLeftOf=
"@+id/tv_line"
android:gravity=
"center"
android:text=
"00:00"
android:textColor=
"@color/white"
android:textSize=
"11sp"
/>
<TextView
android:id=
"@+id/tv_line"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_centerVertical=
"true"
android:layout_toLeftOf=
"@+id/text_end_time"
android:gravity=
"center"
android:paddingLeft=
"2dp"
android:paddingRight=
"2dp"
android:text=
"/"
android:textColor=
"@color/white"
android:textSize=
"11sp"
/>
<TextView
android:id=
"@+id/text_end_time"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_alignParentRight=
"true"
android:layout_marginRight=
"15dp"
android:gravity=
"center"
android:text=
"00:00"
android:textColor=
"@color/white"
android:textSize=
"11sp"
/>
</RelativeLayout>
<!-- 网络提示-->
<LinearLayout
android:id=
"@+id/ll_net_notice"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#33000000"
android:clickable=
"true"
android:gravity=
"center"
android:orientation=
"vertical"
android:visibility=
"gone"
tools:visibility=
"visible"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:gravity=
"center"
android:paddingLeft=
"8dp"
android:paddingRight=
"8dp"
android:text=
"正在使用非Wi-Fi网络,播放将产生流量费用"
android:textColor=
"@android:color/white"
android:textSize=
"14sp"
/>
<ImageView
android:id=
"@+id/iv_net_notice"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:src=
"@drawable/ico_spfc_play"
/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
\ No newline at end of file
m-course/src/main/res/layout/course_videoplay_view.xml
0 → 100644
View file @
1e8f36a5
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/app_video_box"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@android:color/black"
android:orientation=
"vertical"
>
<com.dou361.ijkplayer.widget.IjkVideoView
android:id=
"@+id/video_view"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
<LinearLayout
android:id=
"@+id/ll_bg"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@android:color/black"
android:orientation=
"vertical"
>
<!-- 封面显示-->
<ImageView
android:id=
"@+id/iv_trumb"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:scaleType=
"fitXY"
android:visibility=
"visible"
/>
</LinearLayout>
<!--重新播放-->
<LinearLayout
android:id=
"@+id/app_video_replay"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#33000000"
android:gravity=
"center"
android:orientation=
"vertical"
android:visibility=
"gone"
>
<!-- 播放状态-->
<TextView
android:id=
"@+id/app_video_status_text"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/small_problem"
android:textColor=
"@android:color/white"
android:textSize=
"14dp"
/>
<ImageView
android:id=
"@+id/app_video_replay_icon"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerHorizontal=
"true"
android:layout_marginTop=
"8dp"
android:src=
"@drawable/simple_player_circle_outline_white_36dp"
/>
</LinearLayout>
<!-- 网络提示-->
<LinearLayout
android:id=
"@+id/app_video_netTie"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#33000000"
android:gravity=
"center"
android:orientation=
"vertical"
android:visibility=
"gone"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:gravity=
"center"
android:paddingLeft=
"8dp"
android:paddingRight=
"8dp"
android:text=
"正在使用非Wi-Fi网络,播放将产生流量费用"
android:textColor=
"@android:color/white"
android:textSize=
"14sp"
/>
<ImageView
android:id=
"@+id/app_video_netTie_icon"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:src=
"@drawable/ico_spfc_play"
/>
</LinearLayout>
<!--加载中-->
<LinearLayout
android:id=
"@+id/app_video_loading"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:gravity=
"center"
android:orientation=
"vertical"
android:visibility=
"gone"
>
<ProgressBar
android:layout_width=
"50dp"
android:layout_height=
"50dp"
android:indeterminateBehavior=
"repeat"
android:indeterminateOnly=
"true"
/>
<TextView
android:id=
"@+id/app_video_speed"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"4dp"
android:gravity=
"center"
android:text=
"188Kb/s"
android:textColor=
"@android:color/white"
android:visibility=
"gone"
/>
</LinearLayout>
<!-- 中间触摸提示-->
<include
layout=
"@layout/simple_player_touch_gestures"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerInParent=
"true"
/>
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
>
<!-- 顶部栏-->
<include
layout=
"@layout/simple_player_topbar"
/>
</FrameLayout>
<!-- 底部栏-->
<LinearLayout
android:id=
"@+id/ll_bottom_bar"
android:layout_width=
"match_parent"
android:layout_height=
"64dp"
android:layout_alignParentBottom=
"true"
android:background=
"@drawable/course_video_bottom_background"
android:gravity=
"center_vertical"
android:minHeight=
"35dp"
android:paddingTop=
"30dp"
>
<ImageView
android:id=
"@+id/app_video_play"
android:layout_width=
"40dp"
android:layout_height=
"40dp"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"3dp"
android:padding=
"1dp"
android:scaleType=
"centerCrop"
android:src=
"@drawable/course_ico_course_play"
/>
<LinearLayout
android:id=
"@+id/app_video_process_panl"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginLeft=
"-4dp"
android:layout_weight=
"1"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<RelativeLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
>
<TextView
android:id=
"@+id/app_video_stream"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:clickable=
"true"
android:focusable=
"true"
android:gravity=
"center_vertical"
android:padding=
"5dp"
android:text=
"标清"
android:textColor=
"@android:color/white"
android:textSize=
"12dp"
android:visibility=
"gone"
/>
<TextView
android:id=
"@+id/app_video_currentTime_full"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:text=
"06:21"
android:textColor=
"@android:color/white"
android:textSize=
"12dp"
android:visibility=
"gone"
/>
<LinearLayout
android:id=
"@+id/app_video_lift"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginLeft=
"2dp"
android:layout_marginRight=
"2dp"
android:orientation=
"horizontal"
android:visibility=
"gone"
>
<TextView
android:id=
"@+id/app_video_currentTime_left"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"06:21"
android:textColor=
"@android:color/white"
android:textSize=
"12dp"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"/"
android:textColor=
"@android:color/white"
android:textSize=
"12dp"
/>
<TextView
android:id=
"@+id/app_video_endTime_left"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"10:10"
android:textColor=
"@android:color/white"
android:textSize=
"12dp"
/>
</LinearLayout>
<TextView
android:id=
"@+id/app_video_endTime_full"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:text=
"10:10"
android:textColor=
"@android:color/white"
android:textSize=
"12dp"
android:visibility=
"gone"
/>
<ImageView
android:id=
"@+id/ijk_iv_rotation"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:padding=
"5dp"
android:src=
"@drawable/simple_player_iv_rotation"
android:visibility=
"gone"
/>
</RelativeLayout>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_weight=
"1"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<SeekBar
android:id=
"@+id/app_video_seekBar"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:maxHeight=
"2dp"
android:minHeight=
"2dp"
android:progressDrawable=
"@drawable/course_layer_progress"
android:thumb=
"@drawable/course_dot_seekbar"
/>
<LinearLayout
android:id=
"@+id/app_video_center"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"2dp"
android:layout_marginRight=
"2dp"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/app_video_currentTime"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center_vertical"
android:text=
"06:21"
android:textColor=
"@android:color/white"
android:textSize=
"12dp"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center_vertical"
android:text=
"/"
android:textColor=
"@android:color/white"
android:textSize=
"12dp"
/>
<TextView
android:id=
"@+id/app_video_endTime"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center_vertical"
android:text=
"10:10"
android:textColor=
"@android:color/white"
android:textSize=
"12dp"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<ImageView
android:id=
"@+id/app_video_fullscreen"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:padding=
"8dp"
android:src=
"@drawable/course_ico_play_float_full"
/>
</LinearLayout>
<!--声音亮度控制-->
<LinearLayout
android:id=
"@+id/simple_player_settings_container"
android:layout_width=
"250dp"
android:layout_height=
"match_parent"
android:layout_alignParentLeft=
"true"
android:background=
"#80000000"
android:gravity=
"center_vertical"
android:orientation=
"vertical"
android:visibility=
"visible"
>
<LinearLayout
android:id=
"@+id/simple_player_volume_controller_container"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:src=
"@drawable/qcloud_player_icon_audio_vol_mute"
/>
<SeekBar
android:id=
"@+id/simple_player_volume_controller"
style=
"?android:attr/progressBarStyleHorizontal"
android:layout_width=
"150dp"
android:layout_height=
"wrap_content"
/>
<ImageView
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:src=
"@drawable/qcloud_player_icon_audio_vol"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/simple_player_brightness_controller_container"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
android:gravity=
"center"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:padding=
"5dp"
android:src=
"@drawable/qcloud_player_icon_brightness"
/>
<SeekBar
android:id=
"@+id/simple_player_brightness_controller"
style=
"?android:attr/progressBarStyleHorizontal"
android:layout_width=
"150dp"
android:layout_height=
"wrap_content"
/>
<ImageView
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:src=
"@drawable/qcloud_player_icon_brightness"
/>
</LinearLayout>
</LinearLayout>
<!--分辨率选择-->
<LinearLayout
android:id=
"@+id/simple_player_select_stream_container"
android:layout_width=
"150dp"
android:layout_height=
"match_parent"
android:layout_alignParentRight=
"true"
android:background=
"#80000000"
android:gravity=
"center_vertical"
android:visibility=
"gone"
>
<ListView
android:id=
"@+id/simple_player_select_streams_list"
android:layout_width=
"150dp"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
<RelativeLayout
android:id=
"@+id/rl_play_pause_layout"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerInParent=
"true"
android:visibility=
"gone"
>
<ImageView
android:id=
"@+id/play_icon"
android:layout_width=
"40dp"
android:layout_height=
"40dp"
android:src=
"@drawable/simple_player_center_play"
/>
</RelativeLayout>
</RelativeLayout>
\ No newline at end of file
m-course/src/main/res/layout/course_view_course_play_item.xml
0 → 100644
View file @
1e8f36a5
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<include
layout=
"@layout/course_videoplay_view"
android:layout_width=
"match_parent"
android:layout_height=
"211dp"
/>
</LinearLayout>
\ No newline at end of file
m-course/src/main/res/layout/fragment_course_list.xml
View file @
1e8f36a5
...
...
@@ -25,7 +25,7 @@
android:id=
"@+id/iv_course_list_empty_view"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@drawable/blank"
android:src=
"@drawable/
course_
blank"
android:visibility=
"gone"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"50dp"
/>
...
...
m-course/src/main/res/layout/layout_title_bar.xml
View file @
1e8f36a5
...
...
@@ -12,7 +12,7 @@
android:layout_centerVertical=
"true"
android:paddingLeft=
"15dp"
android:paddingRight=
"10dp"
android:src=
"@drawable/toolbar_back"
/>
android:src=
"@drawable/
course_
toolbar_back"
/>
<TextView
android:id=
"@+id/tv_title"
...
...
m-course/src/main/res/values/colors.xml
View file @
1e8f36a5
...
...
@@ -128,4 +128,6 @@
<color
name=
"color_99000000"
>
#99000000
</color>
<color
name=
"color_30FFFFFF"
>
#4DFFFFFF
</color>
<color
name=
"color_66000000"
>
#66000000
</color>
<color
name=
"color_FFFFFF"
>
#FFFFFF
</color>
<color
name=
"color_ACACAC"
>
#ACACAC
</color>
</resources>
\ No newline at end of file
m-course/src/xlzx/res/drawable-xhdpi/toolbar_back.png
→
m-course/src/xlzx/res/drawable-xhdpi/
course_
toolbar_back.png
View file @
1e8f36a5
File moved
m-course/src/ydl/res/drawable-xhdpi/toolbar_back.png
→
m-course/src/ydl/res/drawable-xhdpi/
course_
toolbar_back.png
View file @
1e8f36a5
File moved
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/actionutil/BIConstants.kt
View file @
1e8f36a5
...
...
@@ -8,29 +8,11 @@ import com.ydl.ydlcommon.base.config.YDLConstants
* Created by xj on 2019/7/1.
*/
class
BIConstants
{
companion
object
{
/**
* 消息端来源
* ydl:ydl-app-android-user
* xlzx:ydl-app-android-xlzx
*/
var
APP_ID
:
String
=
""
get
()
{
return
"ydl-app-android-"
+
(
if
(
BaseApp
.
instance
.
getGlobalConfig
().
appFrom
==
YDLConstants
.
FROM_XLZX
)
"xlzx"
else
"user"
)
}
var
APP_NAME
:
String
=
""
get
()
{
return
if
(
BaseApp
.
instance
.
getGlobalConfig
().
appFrom
==
YDLConstants
.
FROM_XLZX
)
"心理咨询"
else
"壹点灵心理咨询"
}
var
PACKAGE_NAME
:
String
=
""
get
()
{
return
if
(
BaseApp
.
instance
.
getGlobalConfig
().
appFrom
==
YDLConstants
.
FROM_XLZX
)
"com.cxzapp.xinlizixun"
else
"com.cxzapp.yidianling"
}
const
val
APP_ID
=
"ydl-app-android-user"
//这是用户端主包的
/**
* 操作系统
...
...
@@ -47,5 +29,133 @@ class BIConstants{
const
val
WELCOME_PAGE
=
"welcome_page"
//百度监测 用户注册行为
const
val
APP_REGISTER_PAGE
=
"app_register_page"
/**
* position
* 点击类型
*/
const
val
POSITION_LOGIN_CLICK
=
"login_click"
//登录点击
const
val
POSITION_LOGIN_SUCCESS_CLICK
=
"login_success_click"
//登录成功点击
//咨询筛选页
const
val
POSITION_CONSULT_TYPE_CLICK
=
"consult_type_click"
//咨询方式
const
val
POSITION_AVERAGE_SERVICE_INPUT
=
"average_service_input"
//服务均价
const
val
POSITION_AGE_CHOICE_CLICK
=
"age_choice_click"
//年龄选择
const
val
POSITION_QUALIFICATION_CHOICE_CLICK
=
"qualification_choice_click"
//资质选择
const
val
POSITION_OTHER_CHOICE_CLICK
=
"other_choice_click"
//其他选择
const
val
POSITION_CONSULT_FILTER_RESET_CLICK
=
"consult_filter_reset_click"
//重置
const
val
POSITION_CONSULT_FILTER_CHECKOUT_CLICK
=
"consult_filter_checkoutallconsultants_click"
//查看XXX位咨询师
//百度监测 应用启动
const
val
POSITION_APP_START_UP_CLICK
=
"app_start_up_click"
//应用启动
//百度监测 用户注册
const
val
POSITION_WX_REGISTER_CLICK
=
"wx_register_click"
//微信第一次登录
const
val
POSITION_QQ_REGISTER_CLICK
=
"qq_register_click"
//QQ第一次登录
const
val
POSITION_PHONE_REGISTER_CLICK
=
"phone_register_click"
//手机号密码第一次登录
const
val
POSITION_ALIYUN_REGISTER_CLICK
=
"aliyun_register_click"
//阿里云第一次一键登录
const
val
POSITION_CODE_REGISTER_CLICK
=
"code_register_click"
//短信第一次登录
//随便逛逛点击
const
val
POSITION_LOOK_AROUND_CLICK
=
"look_around_click"
//登录主页浏览事件(包含随便逛逛)
const
val
POSITION_LOGIN_ONE_PAGE_VISIT
=
"login_main_one_page_visit"
//登录主页浏览事件(不包含随便逛逛)
const
val
POSITION_LOGIN_TWO_PAGE_VISIT
=
"login_main_two_page_visit"
/**
* action type
* 行为数据埋点,sign1字段 是对同一key下多种不同行为的描述
*/
const
val
ACTION_TYPE_CODE_LOGIN
:
String
=
"code_login"
//验证码登录
const
val
ACTION_TYPE_RESET_PWD
:
String
=
"reset_pwd"
//重置密码登录
const
val
ACTION_TYPE_PWD_LOGIN
:
String
=
"pwd_login"
//手机号密码登录
const
val
ACTION_TYPE_DIRECT_LOGIN
:
String
=
"direct_login"
//一键登录
const
val
ACTION_TYPE_QQ_THIRD_LOGIN
:
String
=
"qq_login"
//QQ登录
const
val
ACTION_TYPE_WX_THIRD_LOGIN
:
String
=
"wx_login"
//WX登录
}
//====================壹点灵用户版首页(ydl_user_main_page)====================
class
UserMainEvent
{
companion
object
{
private
const
val
YDL_USER_MAIN_PAGE
:
String
=
"ydl_user_main_page|"
//壹点灵用户版首页 partId
const
val
YDL_USER_SEARCH_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_search_click"
//搜索栏
const
val
YDL_USER_TELEPHONE_CUSTOMER_SERVICE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_telephone_customer_service_click"
//电话客服
const
val
YDL_USER_BANNER_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_banner_click"
//banner
const
val
YDL_USER_NOTICE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_notice_click"
//公告
const
val
YDL_USER_CONSULT_CLASSIFICATION_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_consult_classification_click"
//首页咨询分类
const
val
YDL_USER_CONSULT_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_consult_click"
//四个大按钮 心理咨询点击人数
const
val
YDL_USER_TALK_IN_TIME_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_talk_in_time_click"
//四个大按钮 即时倾诉点击人数
const
val
YDL_USER_PSYCHOLOGICAL_CLASSROOM_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_psychological_classroom_click"
//四个大按钮 心理课堂点击人数
const
val
YDL_USER_PSYCHOLOGICAL_TEST_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_psychological_test_click"
//四个大按钮 心理测试点击人数
const
val
YDL_USER_CONSULT_MORE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_consult_more_click"
//咨询解惑更多
const
val
YDL_USER_CONSULT_TYPE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_consult_type_click"
//咨询解惑分类标签
const
val
YDL_USER_EXPERT_INTRODUCTION_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_expert_introduction_click"
//咨询师介绍模块
const
val
YDL_USER_PRIVATE_CHAT_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_private_chat_click"
//咨询师私聊按钮
const
val
YDL_USER_LISTEN_MORE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_listen_more_click"
//倾诉排解更多
const
val
YDL_USER_LISTEN_TYPE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_listen_type_click"
//倾诉排解分类标签
const
val
YDL_USER_LISTENER_INTRODUCTION_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_listener_introduction_click "
//倾诉师介绍模块
const
val
YDL_USER_COURSE_MORE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_course_more_click"
//课程成长更多
const
val
YDL_USER_COURSE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_course_click"
//课程标题图区域
const
val
YDL_USER_ASK_MORE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_ask_more_click"
//解忧问答更多
const
val
YDL_USER_ASK_COMMENT_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_ask_comment_click"
//问答评论区域
const
val
YDL_USER_HEART_RADIO_MORE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_heart_radio_more_click"
//心灵电台更多
const
val
YDL_USER_RADIO_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_radio_click "
//区域内四个标题
const
val
YDL_USER_RADIO_PLAY_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_radio_play_click"
//心灵电台play按钮点击
const
val
YDL_USER_ARTICLE_MORE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_article_more_click"
//文章阅读更多
const
val
YDL_USER_ARTICLE_CLICK
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_article_click"
//文章标题图区域
const
val
YDL_USER_MAIN_PAGE_VISIT
:
String
=
YDL_USER_MAIN_PAGE
+
"ydl_user_main_page_visit "
//首页浏览事件
}
}
//====================APP咨询列表页(app_consult_list_page)====================
class
ConsultEvent
{
companion
object
{
private
const
val
APP_CONSULT_LIST_PAGE
:
String
=
"app_consult_list_page|"
//APP咨询列表页 partId
const
val
APP_CONSULT_LIST_PAGE_VISIT
:
String
=
APP_CONSULT_LIST_PAGE
+
"app_consult_list_page_visit"
//列表页浏览事件
const
val
APP_CONSULT_LIST_CONSULT_GUIDE_CLICK
:
String
=
APP_CONSULT_LIST_PAGE
+
"app_consult_list_consult_guide_click "
//咨询指南
const
val
APP_CONSULT_LIST_ONLINE_CUSTOMER_CLICK
:
String
=
APP_CONSULT_LIST_PAGE
+
"app_consult_list_online_customer_click"
//在线客服
const
val
APP_CONSULT_LIST_THEME_CLICK
:
String
=
APP_CONSULT_LIST_PAGE
+
"app_consult_list_theme_click "
//主题全部
const
val
APP_CONSULT_LIST_AREA_CLICK
:
String
=
APP_CONSULT_LIST_PAGE
+
"app_consult_list_area_click"
//地区各个地区
const
val
APP_CONSULT_LIST_SORT_CLICK
:
String
=
APP_CONSULT_LIST_PAGE
+
"app_consult_list_sort_click"
//排序综合排序
const
val
APP_CONSULT_LIST_DOCTOR_CLICK
:
String
=
APP_CONSULT_LIST_PAGE
+
"app_consult_list_doctor_click"
//每个咨询师页面点击
const
val
APP_CONSULT_LIST_CHAT_CLICK
:
String
=
APP_CONSULT_LIST_PAGE
+
"app_consult_list_chat_click"
//每个咨询师私聊
}
}
//====================课程列表页(course_list_page)====================
class
CourseListEvent
{
companion
object
{
private
const
val
COURSE_LIST_PAGE
:
String
=
"course_list_page|"
//课程列表页 partId
const
val
POSITION_COURSE_LIST_RETURN_CLICK
=
COURSE_LIST_PAGE
+
"course_list_return_click"
//返回点击
const
val
POSITION_COURSE_LIST_SORT_CLICK
=
COURSE_LIST_PAGE
+
"course_list_sort_click"
//综合排序点击
const
val
POSITION_COURSE_LIST_FILTER_CLICK
=
COURSE_LIST_PAGE
+
"course_list_filter_click"
//筛选点击
const
val
POSITION_COURSE_LIST_CLASSIFICATION_CLICK
=
COURSE_LIST_PAGE
+
"course_list_classification_click"
//分类点击
const
val
POSITION_COURSE_LIST_AUDITION_CLICK
=
COURSE_LIST_PAGE
+
"course_list_audition_click"
//试听点击
const
val
POSITION_COURSE_LIST_PAGE_VISIT
=
COURSE_LIST_PAGE
+
"course_list_page_visit"
//课程列表页浏览点击
const
val
POSITION_COURSE_LIST_XXX_CLICK
=
COURSE_LIST_PAGE
+
"course_list_"
//课程点击
}
}
//====================课程频道页(course_home_page)====================
class
CourseHomeEvent
{
companion
object
{
private
const
val
COURSE_HOME_PAGE
:
String
=
"course_home_page|"
//课程频道页 partId
const
val
POSITION_COURSE_HOME_PAGE_VISIT
=
COURSE_HOME_PAGE
+
"course_home_page_visit"
//列表页浏览点击
const
val
POSITION_COURSE_HOME_MY_COUSE_CLICK
=
COURSE_HOME_PAGE
+
"course_home_my_couse_click"
//我的课程
const
val
POSITION_COURSE_HOME_SEACH_CLICK
=
COURSE_HOME_PAGE
+
"course_home_seach_click"
//搜索
const
val
POSITION_COURSE_HOME_BANNER_CLICK
=
COURSE_HOME_PAGE
+
"course_home_banner_click"
//banner-各位置
const
val
POSITION_COURSE_HOME_CLASSIFICATION_CLICK
=
COURSE_HOME_PAGE
+
"course_home_classification_click"
//分类点击
const
val
POSITION_COURSE_HOME_EXCELLENT_COURSES_PAY_XXX_CLICK
=
COURSE_HOME_PAGE
+
"course_home_excellent_courses_pay_"
//精品课程-付费课程-各课程页面点击
const
val
POSITION_COURSE_HOME_EXCELLENT_COURSES_FREE_XXX_CLICK
=
COURSE_HOME_PAGE
+
"course_home_excellent_courses_free_"
//精品课程-免费课程-各课程页面点击
const
val
POSITION_COURSE_HOME_EXCELLENT_COURSES_MORE_CLICK
=
COURSE_HOME_PAGE
+
"course_home_excellent_courses_more_click"
//精品课程-更多课程
const
val
POSITION_COURSE_HOME_CONSULTANT_COURSE_MORE_CLICK
=
COURSE_HOME_PAGE
+
"course_home_consultant_course_more_click"
//咨询师课程-更多课程
const
val
POSITION_COURSE_HOME_OFFLINE_CERTIFICATION_TRAINING_XXX_CLICK
=
COURSE_HOME_PAGE
+
"course_home_offline_certification_training_"
//线下考证培训-各课程页面点击
const
val
POSITION_COURSE_HOME_OFFLINE_CERTIFICATION_TRAINING_MORE_CLICK
=
COURSE_HOME_PAGE
+
"course_home_offline_certification_training_more_click"
//线下考证培训-更多课程
const
val
POSITION_COURSE_HOME_THEMATIC_COURSES_XXX_CLICK
=
COURSE_HOME_PAGE
+
"course_home_thematic_courses_"
//专题课程-各课程页面点击
const
val
POSITION_COURSE_HOME_THEMATIC_COURSES_MORE_CLICK
=
COURSE_HOME_PAGE
+
"course_home_thematic_courses_more_click"
//专题课程-更多
}
}
}
\ No newline at end of file
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