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
f2923d7a
Commit
f2923d7a
authored
May 20, 2022
by
万齐军
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 倾诉视频播放页修改
parent
a5be67ab
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
263 additions
and
82 deletions
+263
-82
ConfideBottomSheetDialogFragment.kt
m-confide/src/main/java/com/ydl/confide/home/ConfideBottomSheetDialogFragment.kt
+18
-13
ConfideHomeActivity.kt
m-confide/src/main/java/com/ydl/confide/home/ConfideHomeActivity.kt
+3
-5
VideoShowAdapter.kt
m-confide/src/main/java/com/ydl/confide/home/adapter/VideoShowAdapter.kt
+1
-1
ConfideHomeBodyBean.kt
m-confide/src/main/java/com/ydl/confide/home/bean/ConfideHomeBodyBean.kt
+2
-1
DialStatus.kt
m-confide/src/main/java/com/ydl/confide/home/bean/DialStatus.kt
+8
-0
ConfideHomeApi.kt
m-confide/src/main/java/com/ydl/confide/home/http/ConfideHomeApi.kt
+1
-0
ConfideLineBindingAdapter.kt
m-confide/src/main/java/com/ydl/confide/home/util/ConfideLineBindingAdapter.kt
+3
-0
ExpertIntroActivity.kt
m-confide/src/main/java/com/ydl/confide/intro/ExpertIntroActivity.kt
+18
-2
IntroAdapter.kt
m-confide/src/main/java/com/ydl/confide/intro/IntroAdapter.kt
+18
-1
ItemIntroHolder.kt
m-confide/src/main/java/com/ydl/confide/intro/ItemIntroHolder.kt
+57
-11
bg_confide_free.xml
m-confide/src/main/res/drawable/bg_confide_free.xml
+14
-0
item_expert_intro.xml
m-confide/src/main/res/layout/item_expert_intro.xml
+37
-6
strings.xml
m-confide/src/main/res/values/strings.xml
+1
-0
ModularServiceManager.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/modular/ModularServiceManager.kt
+52
-0
TimeUtil.java
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/TimeUtil.java
+5
-5
YDLShareDialog.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/view/dialog/YDLShareDialog.kt
+10
-2
VoicePlayingIcon.java
ydl-utils/src/main/java/com/yidianling/common/view/ui/VoicePlayingIcon.java
+15
-35
No files found.
m-confide/src/main/java/com/ydl/confide/home/ConfideBottomSheetDialogFragment.kt
View file @
f2923d7a
...
@@ -6,6 +6,7 @@ import android.app.Dialog
...
@@ -6,6 +6,7 @@ import android.app.Dialog
import
android.os.Bundle
import
android.os.Bundle
import
android.view.*
import
android.view.*
import
android.widget.FrameLayout
import
android.widget.FrameLayout
import
androidx.fragment.app.FragmentActivity
import
com.google.android.material.bottomsheet.BottomSheetBehavior
import
com.google.android.material.bottomsheet.BottomSheetBehavior
import
com.google.android.material.bottomsheet.BottomSheetDialog
import
com.google.android.material.bottomsheet.BottomSheetDialog
import
com.google.android.material.bottomsheet.BottomSheetDialogFragment
import
com.google.android.material.bottomsheet.BottomSheetDialogFragment
...
@@ -17,17 +18,20 @@ import com.ydl.webview.WebModularServiceUtils
...
@@ -17,17 +18,20 @@ import com.ydl.webview.WebModularServiceUtils
import
com.ydl.ydlcommon.base.BaseActivity
import
com.ydl.ydlcommon.base.BaseActivity
import
com.yidianling.common.tools.RxImageTool
import
com.yidianling.common.tools.RxImageTool
class
ConfideBottomSheetDialogFragment
:
BottomSheetDialogFragment
()
{
class
ConfideBottomSheetDialogFragment
:
BottomSheetDialogFragment
()
{
lateinit
var
activity
:
BaseActivity
;
companion
object
{
private
const
val
KEY_JUMP_URL
=
"jumpUrl"
}
lateinit
var
wv_content
:
ProgressWebView
;
lateinit
var
wv_content
:
ProgressWebView
;
lateinit
var
text_title
:
View
;
lateinit
var
text_title
:
View
;
lateinit
var
line
:
View
;
lateinit
var
line
:
View
;
lateinit
var
rl_title
:
View
;
lateinit
var
rl_title
:
View
;
lateinit
var
close_webview_Icon
:
View
lateinit
var
close_webview_Icon
:
View
lateinit
var
jumpUrl
:
String
lateinit
var
jumpUrl
:
String
fun
showBottomSheetDialog
(
activity
:
BaseActivity
,
jumpUrl
:
String
)
{
fun
showBottomSheetDialog
(
activity
:
FragmentActivity
,
jumpUrl
:
String
)
{
this
.
activity
=
activity
arguments
=
Bundle
().
apply
{
this
.
jumpUrl
=
jumpUrl
putString
(
KEY_JUMP_URL
,
jumpUrl
)
}
show
(
activity
.
supportFragmentManager
,
"confide_bottom_showdialog"
)
show
(
activity
.
supportFragmentManager
,
"confide_bottom_showdialog"
)
}
}
...
@@ -38,10 +42,6 @@ class ConfideBottomSheetDialogFragment:BottomSheetDialogFragment() {
...
@@ -38,10 +42,6 @@ class ConfideBottomSheetDialogFragment:BottomSheetDialogFragment() {
}
}
override
fun
onStart
()
{
super
.
onStart
()
}
override
fun
onCreateView
(
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
container
:
ViewGroup
?,
...
@@ -51,6 +51,11 @@ class ConfideBottomSheetDialogFragment:BottomSheetDialogFragment() {
...
@@ -51,6 +51,11 @@ class ConfideBottomSheetDialogFragment:BottomSheetDialogFragment() {
}
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
super
.
onViewCreated
(
view
,
savedInstanceState
)
jumpUrl
=
arguments
?.
getString
(
KEY_JUMP_URL
)
?:
""
if
(
jumpUrl
.
isBlank
())
{
dismiss
()
return
}
wv_content
=
view
.
findViewById
<
ProgressWebView
>(
com
.
ydl
.
webview
.
R
.
id
.
wv_content
)
wv_content
=
view
.
findViewById
<
ProgressWebView
>(
com
.
ydl
.
webview
.
R
.
id
.
wv_content
)
close_webview_Icon
=
view
.
findViewById
<
View
>(
R
.
id
.
close_webview_Icon
)
close_webview_Icon
=
view
.
findViewById
<
View
>(
R
.
id
.
close_webview_Icon
)
text_title
=
view
.
findViewById
<
View
>(
R
.
id
.
text_title
)
text_title
=
view
.
findViewById
<
View
>(
R
.
id
.
text_title
)
...
@@ -92,7 +97,7 @@ class ConfideBottomSheetDialogFragment:BottomSheetDialogFragment() {
...
@@ -92,7 +97,7 @@ class ConfideBottomSheetDialogFragment:BottomSheetDialogFragment() {
val
dialog
=
super
.
onCreateDialog
(
savedInstanceState
)
as
BottomSheetDialog
val
dialog
=
super
.
onCreateDialog
(
savedInstanceState
)
as
BottomSheetDialog
dialog
.
setOnShowListener
{
dialog
.
setOnShowListener
{
val
itemView
=
LayoutInflater
.
from
(
activity
).
inflate
(
R
.
layout
.
confide_bottom_two
,
null
,
false
)
val
itemView
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
confide_bottom_two
,
null
,
false
)
val
layoutCall
=
itemView
.
findViewById
<
View
>(
R
.
id
.
layoutCall
)
val
layoutCall
=
itemView
.
findViewById
<
View
>(
R
.
id
.
layoutCall
)
val
layoutChange
=
itemView
.
findViewById
<
View
>(
R
.
id
.
layoutChange
)
val
layoutChange
=
itemView
.
findViewById
<
View
>(
R
.
id
.
layoutChange
)
val
layout_change_text
=
itemView
.
findViewById
<
View
>(
R
.
id
.
layout_change_text
)
val
layout_change_text
=
itemView
.
findViewById
<
View
>(
R
.
id
.
layout_change_text
)
...
@@ -163,7 +168,7 @@ class ConfideBottomSheetDialogFragment:BottomSheetDialogFragment() {
...
@@ -163,7 +168,7 @@ class ConfideBottomSheetDialogFragment:BottomSheetDialogFragment() {
//设置字符编码
//设置字符编码
setting
.
setDefaultTextEncodingName
(
"GBK"
)
setting
.
setDefaultTextEncodingName
(
"GBK"
)
setting
.
setDomStorageEnabled
(
true
)
setting
.
setDomStorageEnabled
(
true
)
val
appCachePath
:
String
=
activity
?.
getCacheDir
()
?.
getAbsolutePath
().
toString
()
val
appCachePath
:
String
=
context
?.
getCacheDir
()
?.
getAbsolutePath
().
toString
()
setting
.
setAppCachePath
(
appCachePath
)
setting
.
setAppCachePath
(
appCachePath
)
setting
.
setAllowFileAccessFromFileURLs
(
true
)
setting
.
setAllowFileAccessFromFileURLs
(
true
)
setting
.
setAppCacheEnabled
(
true
)
setting
.
setAppCacheEnabled
(
true
)
...
@@ -173,8 +178,8 @@ class ConfideBottomSheetDialogFragment:BottomSheetDialogFragment() {
...
@@ -173,8 +178,8 @@ class ConfideBottomSheetDialogFragment:BottomSheetDialogFragment() {
setting
.
setBlockNetworkImage
(
false
)
setting
.
setBlockNetworkImage
(
false
)
wv_content
!!
.
scrollBarStyle
=
View
.
SCROLLBARS_INSIDE_OVERLAY
//滚动条风格,为0指滚动条不占用空间,直接覆盖在网页上
wv_content
!!
.
scrollBarStyle
=
View
.
SCROLLBARS_INSIDE_OVERLAY
//滚动条风格,为0指滚动条不占用空间,直接覆盖在网页上
va
r
jtoJHandle
=
WebModularServiceUtils
.
getWebService
()
va
l
jtoJHandle
=
WebModularServiceUtils
.
getWebService
()
.
getJavascripHandler
(
activity
as
Activity
,
tellData
=
TellData
())
.
getJavascripHandler
(
requireActivity
()
,
tellData
=
TellData
())
wv_content
!!
.
addJavascriptInterface
(
jtoJHandle
,
"javascriptHandler"
)
wv_content
!!
.
addJavascriptInterface
(
jtoJHandle
,
"javascriptHandler"
)
wv_content
.
loadUrl
(
"https://m.ydl.com/jy/experts/23035?v=4.0.99&uid=9404770&ts=1652787528&toConfide=1&"
+
wv_content
.
loadUrl
(
"https://m.ydl.com/jy/experts/23035?v=4.0.99&uid=9404770&ts=1652787528&toConfide=1&"
+
...
...
m-confide/src/main/java/com/ydl/confide/home/ConfideHomeActivity.kt
View file @
f2923d7a
...
@@ -35,6 +35,7 @@ import com.ydl.webview.NewH5Activity
...
@@ -35,6 +35,7 @@ import com.ydl.webview.NewH5Activity
import
com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener
import
com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener
import
com.ydl.ydlcommon.base.config.HttpConfig.Companion.H5_URL
import
com.ydl.ydlcommon.base.config.HttpConfig.Companion.H5_URL
import
com.ydl.ydlcommon.base.config.HttpConfig.Companion.YDL_H5
import
com.ydl.ydlcommon.base.config.HttpConfig.Companion.YDL_H5
import
com.ydl.ydlcommon.modular.findRouteService
import
com.ydl.ydlcommon.mvp.lce.BaseLceActivity
import
com.ydl.ydlcommon.mvp.lce.BaseLceActivity
import
com.ydl.ydlcommon.utils.BuryPointUtils
import
com.ydl.ydlcommon.utils.BuryPointUtils
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
...
@@ -272,11 +273,8 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
...
@@ -272,11 +273,8 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
NewH5Activity
.
start
(
this
,
h5Paramsqing
)
NewH5Activity
.
start
(
this
,
h5Paramsqing
)
}
}
findViewById
<
View
>(
R
.
id
.
img_customer
)
?.
setOnClickListener
{
findViewById
<
View
>(
R
.
id
.
img_customer
)
?.
setOnClickListener
{
if
(!
PhoneCallIn
.
loginByOneKeyLogin
(
this
,
true
))
{
val
imService
=
findRouteService
(
IImService
::
class
.
java
)
return
@setOnClickListener
imService
?.
startP2PXiaoYi
(
this
)
}
val
imService
=
ARouter
.
getInstance
().
navigation
(
IImService
::
class
.
java
)
imService
?.
startKefuChat
(
this
,
""
,
0
,
0
)
}
}
findViewById
<
View
>(
R
.
id
.
img_help
)
?.
setOnClickListener
{
findViewById
<
View
>(
R
.
id
.
img_help
)
?.
setOnClickListener
{
val
params
=
H5Params
(
H5_URL
+
"help/"
,
""
)
val
params
=
H5Params
(
H5_URL
+
"help/"
,
""
)
...
...
m-confide/src/main/java/com/ydl/confide/home/adapter/VideoShowAdapter.kt
View file @
f2923d7a
...
@@ -72,7 +72,7 @@ class ItemVideoShowViewModel {
...
@@ -72,7 +72,7 @@ class ItemVideoShowViewModel {
internal
fun
ItemVideoShowViewModel
.
mapOf
(
bean
:
ConfideHomeBodyBean
):
ItemVideoShowViewModel
{
internal
fun
ItemVideoShowViewModel
.
mapOf
(
bean
:
ConfideHomeBodyBean
):
ItemVideoShowViewModel
{
name
.
set
(
bean
.
confidedName
)
name
.
set
(
bean
.
confidedName
)
coverUrl
.
set
(
bean
.
co
verPicture
)
coverUrl
.
set
(
bean
.
co
nfidedIcon
)
videoCoverUrl
.
set
(
bean
.
coverVideoPicture
)
videoCoverUrl
.
set
(
bean
.
coverVideoPicture
)
state
.
set
(
bean
.
confideLine
?:
0
)
state
.
set
(
bean
.
confideLine
?:
0
)
linkUrl
=
bean
.
linkUrl
linkUrl
=
bean
.
linkUrl
...
...
m-confide/src/main/java/com/ydl/confide/home/bean/ConfideHomeBodyBean.kt
View file @
f2923d7a
...
@@ -39,7 +39,8 @@ data class ConfideHomeBodyBean(
...
@@ -39,7 +39,8 @@ data class ConfideHomeBodyBean(
//副标题(底部更多文案)
//副标题(底部更多文案)
val
subTitle
:
String
?,
val
subTitle
:
String
?,
//咨询师标题
//咨询师标题
val
confidedTitle
:
String
?,
val
confidedTitle
:
String
?,
val
title
:
String
?,
//副标题点击事件
//副标题点击事件
val
subLinkUrl
:
String
?,
val
subLinkUrl
:
String
?,
//咨询师背景图片
//咨询师背景图片
...
...
m-confide/src/main/java/com/ydl/confide/home/bean/DialStatus.kt
View file @
f2923d7a
...
@@ -2,4 +2,11 @@ package com.ydl.confide.home.bean
...
@@ -2,4 +2,11 @@ package com.ydl.confide.home.bean
class
DialStatus
{
class
DialStatus
{
var
confideLine
:
Int
?
=
null
var
confideLine
:
Int
?
=
null
var
remainingTime
:
RemainingTime
?
=
null
}
class
RemainingTime
{
var
remainingTime
:
Long
?
=
null
//秒
var
listenerUid
:
String
?
=
null
var
listenOrderId
:
String
?
=
null
}
}
\ No newline at end of file
m-confide/src/main/java/com/ydl/confide/home/http/ConfideHomeApi.kt
View file @
f2923d7a
...
@@ -36,6 +36,7 @@ interface ConfideHomeApi {
...
@@ -36,6 +36,7 @@ interface ConfideHomeApi {
fun
connectJava
(
@QueryMap
params
:
Map
<
String
,
String
>):
Observable
<
BaseAPIResponse
<
ConfideConnectResponse
>>
fun
connectJava
(
@QueryMap
params
:
Map
<
String
,
String
>):
Observable
<
BaseAPIResponse
<
ConfideConnectResponse
>>
// 1=在线 3-通话中 2-离线
// 1=在线 3-通话中 2-离线
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
@GET
(
"auth/listen/dialchangestatus"
)
@GET
(
"auth/listen/dialchangestatus"
)
fun
getDialStatus
(
@Query
(
"doctorId"
)
doctorId
:
String
):
Observable
<
BaseAPIResponse
<
DialStatus
>>
fun
getDialStatus
(
@Query
(
"doctorId"
)
doctorId
:
String
):
Observable
<
BaseAPIResponse
<
DialStatus
>>
...
...
m-confide/src/main/java/com/ydl/confide/home/util/ConfideLineBindingAdapter.kt
View file @
f2923d7a
...
@@ -16,6 +16,9 @@ fun TextView.confideLineText(line: Int) {
...
@@ -16,6 +16,9 @@ fun TextView.confideLineText(line: Int) {
3
->
{
3
->
{
text
=
"通话中"
text
=
"通话中"
}
}
4
->{
text
=
"继续倾诉"
}
}
}
}
}
...
...
m-confide/src/main/java/com/ydl/confide/intro/ExpertIntroActivity.kt
View file @
f2923d7a
...
@@ -21,10 +21,12 @@ import com.ydl.webview.H5Params
...
@@ -21,10 +21,12 @@ import com.ydl.webview.H5Params
import
com.ydl.webview.NewH5Activity
import
com.ydl.webview.NewH5Activity
import
com.ydl.ydlcommon.base.config.HttpConfig
import
com.ydl.ydlcommon.base.config.HttpConfig
import
com.ydl.ydlcommon.base.config.HttpConfig.Companion.YDL_H5
import
com.ydl.ydlcommon.base.config.HttpConfig.Companion.YDL_H5
import
com.ydl.ydlcommon.modular.findRouteService
import
com.ydl.ydlcommon.utils.BuryPointUtils
import
com.ydl.ydlcommon.utils.BuryPointUtils
import
com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlnet.YDLHttpUtils
import
com.ydl.ydlnet.YDLHttpUtils
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.user.api.service.IUserService
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.disposables.Disposable
import
io.reactivex.disposables.Disposable
import
io.reactivex.schedulers.Schedulers
import
io.reactivex.schedulers.Schedulers
...
@@ -56,6 +58,8 @@ class ExpertIntroActivity : AppCompatActivity() {
...
@@ -56,6 +58,8 @@ class ExpertIntroActivity : AppCompatActivity() {
private
val
data
=
mutableListOf
<
VideoViewModel
>()
private
val
data
=
mutableListOf
<
VideoViewModel
>()
private
var
noMoreData
=
false
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
ARouter
.
getInstance
().
inject
(
this
)
ARouter
.
getInstance
().
inject
(
this
)
...
@@ -69,7 +73,10 @@ class ExpertIntroActivity : AppCompatActivity() {
...
@@ -69,7 +73,10 @@ class ExpertIntroActivity : AppCompatActivity() {
}
}
if
(
initData
!=
null
)
{
if
(
initData
!=
null
)
{
val
beans
=
JSON
.
parseArray
(
initData
,
ConfideHomeBodyBean
::
class
.
java
)
val
beans
=
JSON
.
parseArray
(
initData
,
ConfideHomeBodyBean
::
class
.
java
)
val
vms
=
beans
.
map
{
VideoViewModel
().
mapOf
(
it
)
}
val
isLogin
=
findRouteService
(
IUserService
::
class
.
java
)
?.
isLogin
()
?:
false
val
vms
=
beans
.
map
{
VideoViewModel
().
mapOf
(
it
).
apply
{
showFreeTag
.
set
(!
isLogin
)
}
}
data
.
addAll
(
vms
)
data
.
addAll
(
vms
)
}
}
binding
.
ivBack
.
setOnClickListener
{
onBackPressed
()
}
binding
.
ivBack
.
setOnClickListener
{
onBackPressed
()
}
...
@@ -97,9 +104,14 @@ class ExpertIntroActivity : AppCompatActivity() {
...
@@ -97,9 +104,14 @@ class ExpertIntroActivity : AppCompatActivity() {
}
}
})
})
adapter
.
checkNetwork
()
adapter
.
checkNetwork
()
binding
.
viewPager
.
currentItem
=
initPos
}
}
private
fun
loadMore
()
{
private
fun
loadMore
()
{
if
(
disposable
!=
null
&&
!
disposable
!!
.
isDisposed
)
{
return
}
if
(
noMoreData
)
return
disposable
=
confideApi
.
recommendDoctor
(
HttpConfig
.
JAVA_BASE_URL
+
"auth/listen/nsearch?"
,
page
,
SOURCE_VIDEO
)
disposable
=
confideApi
.
recommendDoctor
(
HttpConfig
.
JAVA_BASE_URL
+
"auth/listen/nsearch?"
,
page
,
SOURCE_VIDEO
)
.
subscribeOn
(
Schedulers
.
io
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
@@ -107,11 +119,15 @@ class ExpertIntroActivity : AppCompatActivity() {
...
@@ -107,11 +119,15 @@ class ExpertIntroActivity : AppCompatActivity() {
if
(
resp
.
code
==
"200"
)
{
if
(
resp
.
code
==
"200"
)
{
page
++
page
++
val
body
=
resp
.
data
.
body
val
body
=
resp
.
data
.
body
val
map
=
body
?.
map
{
VideoViewModel
().
mapOf
(
it
)
}
val
isLogin
=
findRouteService
(
IUserService
::
class
.
java
)
?.
isLogin
()
?:
false
val
map
=
body
?.
map
{
VideoViewModel
().
mapOf
(
it
).
apply
{
showFreeTag
.
set
(!
isLogin
)
}
}
map
?.
let
{
map
?.
let
{
data
.
addAll
(
it
)
data
.
addAll
(
it
)
adapter
.
notifyItemRangeInserted
(
data
.
size
-
it
.
size
,
it
.
size
)
adapter
.
notifyItemRangeInserted
(
data
.
size
-
it
.
size
,
it
.
size
)
}
}
if
(
body
==
null
||
body
.
size
==
0
)
{
noMoreData
=
true
}
}
else
{
}
else
{
ToastUtil
.
toastShort
(
resp
.
msg
)
ToastUtil
.
toastShort
(
resp
.
msg
)
}
}
...
...
m-confide/src/main/java/com/ydl/confide/intro/IntroAdapter.kt
View file @
f2923d7a
...
@@ -16,6 +16,7 @@ import com.ydl.confide.R
...
@@ -16,6 +16,7 @@ import com.ydl.confide.R
import
com.ydl.confide.databinding.ItemExpertIntroBinding
import
com.ydl.confide.databinding.ItemExpertIntroBinding
import
com.ydl.confide.home.http.ConfideHomeApi
import
com.ydl.confide.home.http.ConfideHomeApi
import
com.ydl.confide.home.util.ConfideNetworkUtil
import
com.ydl.confide.home.util.ConfideNetworkUtil
import
com.ydl.ydlcommon.utils.TimeUtil
import
com.ydl.ydlcommon.view.dialog.CommonDialog
import
com.ydl.ydlcommon.view.dialog.CommonDialog
import
com.ydl.ydlnet.YDLHttpUtils
import
com.ydl.ydlnet.YDLHttpUtils
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.common.tools.ToastUtil
...
@@ -65,6 +66,9 @@ internal class IntroAdapter(
...
@@ -65,6 +66,9 @@ internal class IntroAdapter(
if
(!
playUrl
.
isNullOrBlank
())
{
if
(!
playUrl
.
isNullOrBlank
())
{
if
(
hasAgreePlayWithoutWiFi
||
ConfideNetworkUtil
.
isWifi
(
context
))
{
if
(
hasAgreePlayWithoutWiFi
||
ConfideNetworkUtil
.
isWifi
(
context
))
{
videoView
.
setVideoURI
(
Uri
.
parse
(
playUrl
))
videoView
.
setVideoURI
(
Uri
.
parse
(
playUrl
))
if
(
curPos
==
adapterPosition
)
{
videoView
.
start
()
}
}
else
{
}
else
{
videoView
.
tag
=
playUrl
videoView
.
tag
=
playUrl
}
}
...
@@ -148,9 +152,10 @@ internal class IntroAdapter(
...
@@ -148,9 +152,10 @@ internal class IntroAdapter(
}
}
for
(
entry
in
videoViews
.
entries
)
{
for
(
entry
in
videoViews
.
entries
)
{
if
(
entry
.
key
==
position
)
{
if
(
entry
.
key
==
position
)
{
entry
.
value
.
seekTo
(
0
)
//
entry.value.seekTo(0)
entry
.
value
.
start
()
entry
.
value
.
start
()
}
else
{
}
else
{
entry
.
value
.
seekTo
(
0
)
entry
.
value
.
pause
()
entry
.
value
.
pause
()
}
}
}
}
...
@@ -167,6 +172,18 @@ internal class IntroAdapter(
...
@@ -167,6 +172,18 @@ internal class IntroAdapter(
.
subscribe
({
resp
->
.
subscribe
({
resp
->
if
(
resp
.
code
==
"200"
)
{
if
(
resp
.
code
==
"200"
)
{
val
lineStatus
=
resp
.
data
?.
confideLine
?:
2
val
lineStatus
=
resp
.
data
?.
confideLine
?:
2
if
(
lineStatus
==
4
)
{
//继续倾诉
val
t
=
resp
?.
data
?.
remainingTime
?.
remainingTime
if
(
t
!=
null
)
{
val
remain
=
TimeUtil
.
getElapseTimeForShow
(
t
*
1000
)
data
[
position
].
remainingTime
.
set
(
context
.
getString
(
R
.
string
.
confide_tip_remain_time
,
remain
)
)
}
}
data
[
position
].
lineStatus
.
set
(
lineStatus
)
data
[
position
].
lineStatus
.
set
(
lineStatus
)
}
else
{
}
else
{
if
(!
resp
.
msg
.
isNullOrEmpty
())
{
if
(!
resp
.
msg
.
isNullOrEmpty
())
{
...
...
m-confide/src/main/java/com/ydl/confide/intro/ItemIntroHolder.kt
View file @
f2923d7a
...
@@ -4,14 +4,18 @@ import android.app.Activity
...
@@ -4,14 +4,18 @@ import android.app.Activity
import
android.util.Log
import
android.util.Log
import
android.view.View
import
android.view.View
import
android.widget.SeekBar
import
android.widget.SeekBar
import
androidx.databinding.ObservableBoolean
import
androidx.databinding.ObservableField
import
androidx.databinding.ObservableField
import
androidx.databinding.ObservableInt
import
androidx.databinding.ObservableInt
import
androidx.databinding.ViewDataBinding
import
androidx.databinding.ViewDataBinding
import
androidx.fragment.app.FragmentActivity
import
androidx.recyclerview.widget.RecyclerView
import
androidx.recyclerview.widget.RecyclerView
import
com.alibaba.android.arouter.launcher.ARouter
import
com.dou361.ijkplayer.widget.IjkVideoView
import
com.dou361.ijkplayer.widget.IjkVideoView
import
com.ydl.confide.databinding.ItemExpertIntroBinding
import
com.ydl.confide.databinding.ItemExpertIntroBinding
import
com.ydl.confide.home.ConfideBottomSheetDialogFragment
import
com.ydl.confide.home.bean.ConfideHomeBodyBean
import
com.ydl.confide.home.bean.ConfideHomeBodyBean
import
com.ydl.ydlcommon.base.config.HttpConfig
import
com.ydl.ydlcommon.modular.findRouteService
import
com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.view.dialog.YDLShareDialog
import
com.ydl.ydlcommon.view.dialog.YDLShareDialog
import
com.yidianling.im.api.service.IImService
import
com.yidianling.im.api.service.IImService
...
@@ -20,6 +24,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
...
@@ -20,6 +24,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.disposables.Disposable
import
io.reactivex.disposables.Disposable
import
io.reactivex.schedulers.Schedulers
import
io.reactivex.schedulers.Schedulers
import
tv.danmaku.ijk.media.player.IjkMediaPlayer
import
tv.danmaku.ijk.media.player.IjkMediaPlayer
import
java.net.URLEncoder
import
java.util.concurrent.TimeUnit
import
java.util.concurrent.TimeUnit
internal
class
ItemIntroHolder
(
binding
:
ItemExpertIntroBinding
)
:
internal
class
ItemIntroHolder
(
binding
:
ItemExpertIntroBinding
)
:
...
@@ -42,19 +47,32 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
...
@@ -42,19 +47,32 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
fun
onBind
(
item
:
VideoViewModel
)
{
fun
onBind
(
item
:
VideoViewModel
)
{
vm
=
item
vm
=
item
binding
.
layoutCall
.
setOnClickListener
{
}
binding
.
layoutCall
.
setOnClickListener
{
ConfideBottomSheetDialogFragment
()
.
showBottomSheetDialog
(
itemView
.
context
as
FragmentActivity
,
item
.
linkUrl
!!
)
}
binding
.
btnChat
.
setOnClickListener
{
binding
.
btnChat
.
setOnClickListener
{
val
aty
=
it
.
context
as
?
Activity
val
aty
=
it
.
context
as
?
Activity
if
(
aty
!=
null
&&
!
item
.
uid
.
isNullOrEmpty
())
{
if
(
aty
!=
null
&&
!
item
.
uid
.
isNullOrEmpty
())
{
ARouter
.
getInstance
().
navigation
(
IImService
::
class
.
java
)
?.
startChat
(
aty
,
item
.
uid
!!
,
0
,
0
)
findRouteService
(
IImService
::
class
.
java
)
?.
startChat
(
aty
,
item
.
uid
!!
,
0
,
0
)
}
}
}
}
binding
.
btnEvaluate
.
setOnClickListener
{
}
binding
.
btnEvaluate
.
setOnClickListener
{
ConfideBottomSheetDialogFragment
()
.
showBottomSheetDialog
(
itemView
.
context
as
FragmentActivity
,
item
.
linkUrl
!!
)
}
binding
.
vDisableClick
.
setOnClickListener
{
}
binding
.
vDisableClick
.
setOnClickListener
{
}
binding
.
btnShare
.
setOnClickListener
{
binding
.
btnShare
.
setOnClickListener
{
val
aty
=
it
.
context
as
?
Activity
val
aty
=
it
.
context
as
?
Activity
if
(
aty
!=
null
)
{
if
(
aty
!=
null
&&
!
item
.
linkUrl
.
isNullOrBlank
())
{
val
dialog
=
YDLShareDialog
.
style8
(
aty
,
"title"
,
"url"
,
";sss"
,
"head"
)
var
shareUrl
=
"${HttpConfig.MH5_URL}experts/${item.doctorId}"
if
(!
item
.
confideId
.
isNullOrBlank
())
{
shareUrl
+=
"?id=${item.confideId}"
}
val
dialog
=
YDLShareDialog
.
style8
(
aty
,
"${item.name.get()}_${item.title.get()}"
,
shareUrl
,
"壹点灵心理服务平台让天下人更快乐"
,
item
.
avatar
.
get
(),
genMinProgramPath
(
shareUrl
),
"gh_25b90294ddcc"
)
dialog
.
show
(
aty
.
fragmentManager
,
"share"
)
dialog
.
show
(
aty
.
fragmentManager
,
"share"
)
}
}
}
}
...
@@ -76,6 +94,16 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
...
@@ -76,6 +94,16 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
binding
.
voicePlay
.
start
()
binding
.
voicePlay
.
start
()
}
}
}
}
binding
.
voicePlay
.
setOnClickListener
{
if
(
video
?.
isPlaying
==
true
)
{
video
?.
pause
()
binding
.
voicePlay
.
stop
()
}
else
if
(
video
?.
isPlaying
==
false
)
{
video
?.
start
()
binding
.
voicePlay
.
start
()
}
}
binding
.
seekbar
.
progress
=
0
binding
.
seekbar
.
setOnSeekBarChangeListener
(
object
:
SeekBar
.
OnSeekBarChangeListener
{
binding
.
seekbar
.
setOnSeekBarChangeListener
(
object
:
SeekBar
.
OnSeekBarChangeListener
{
override
fun
onProgressChanged
(
seekBar
:
SeekBar
?,
progress
:
Int
,
fromUser
:
Boolean
)
{
override
fun
onProgressChanged
(
seekBar
:
SeekBar
?,
progress
:
Int
,
fromUser
:
Boolean
)
{
...
@@ -94,7 +122,8 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
...
@@ -94,7 +122,8 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
}
}
}
}
})
})
binding
.
voicePlay
.
visibility
=
if
(
item
.
isVideo
)
View
.
GONE
else
View
.
VISIBLE
binding
.
voicePlay
.
visibility
=
if
(
item
.
isVideo
)
View
.
GONE
else
if
(
item
.
playUrl
.
isNullOrBlank
())
View
.
GONE
else
View
.
VISIBLE
}
}
fun
onAttach
(
videoView
:
IjkVideoView
)
{
fun
onAttach
(
videoView
:
IjkVideoView
)
{
...
@@ -122,7 +151,7 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
...
@@ -122,7 +151,7 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
return
@setOnErrorListener
true
return
@setOnErrorListener
true
}
}
startTiming
()
startTiming
()
if
(
binding
.
voicePlay
.
visibility
==
View
.
VISIBLE
)
{
if
(
vm
?.
isVideo
==
false
&&
!
vm
?.
playUrl
.
isNullOrBlank
()
)
{
binding
.
voicePlay
.
start
()
binding
.
voicePlay
.
start
()
}
}
}
}
...
@@ -140,6 +169,9 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
...
@@ -140,6 +169,9 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
if
(!
isTouch
)
{
if
(!
isTouch
)
{
binding
.
seekbar
.
progress
=
pos
.
toInt
()
// video.bufferPercentage
binding
.
seekbar
.
progress
=
pos
.
toInt
()
// video.bufferPercentage
}
}
if
(
vm
?.
isVideo
==
false
&&
video
?.
isPlaying
==
false
)
{
binding
.
voicePlay
.
start
()
}
}
}
}
}
}
}
...
@@ -151,30 +183,42 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
...
@@ -151,30 +183,42 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
class
VideoViewModel
{
class
VideoViewModel
{
val
name
=
ObservableField
<
String
>(
""
)
val
name
=
ObservableField
<
String
>(
""
)
val
title
=
ObservableField
<
String
>(
""
)
val
avatar
=
ObservableField
<
String
>(
""
)
val
avatar
=
ObservableField
<
String
>(
""
)
val
count
=
ObservableField
<
String
>(
""
)
val
count
=
ObservableField
<
String
>(
""
)
val
lineStatus
=
ObservableInt
()
val
lineStatus
=
ObservableInt
()
var
remainingTime
=
ObservableField
<
String
>(
""
)
val
intro
=
ObservableField
<
String
>(
""
)
val
intro
=
ObservableField
<
String
>(
""
)
val
tag
=
ObservableField
<
String
>(
""
)
val
tag
=
ObservableField
<
String
>(
""
)
var
playUrl
:
String
?
=
null
var
playUrl
:
String
?
=
null
var
coverUrl
=
ObservableField
<
String
>(
""
)
val
coverUrl
=
ObservableField
<
String
>(
""
)
val
showFreeTag
=
ObservableBoolean
(
false
)
var
isVideo
=
false
var
isVideo
=
false
var
uid
:
String
?
=
null
var
uid
:
String
?
=
null
var
doctorId
:
String
?
=
null
var
confideId
:
String
?
=
null
var
linkUrl
:
String
?
=
null
var
linkUrl
:
String
?
=
null
}
}
private
fun
genMinProgramPath
(
url
:
String
):
String
{
val
pathPrefix
=
"/pages/web/web?load_url="
val
encode
=
URLEncoder
.
encode
(
url
,
"UTF-8"
)
return
pathPrefix
+
encode
}
internal
fun
VideoViewModel
.
mapOf
(
bean
:
ConfideHomeBodyBean
):
VideoViewModel
{
internal
fun
VideoViewModel
.
mapOf
(
bean
:
ConfideHomeBodyBean
):
VideoViewModel
{
name
.
set
(
bean
.
confidedName
)
name
.
set
(
bean
.
confidedName
)
avatar
.
set
(
bean
.
confidedIcon
)
avatar
.
set
(
bean
.
confidedIcon
)
count
.
set
(
bean
.
confideHear
Num
)
count
.
set
(
"倾听人次 "
+
bean
.
confide
Num
)
intro
.
set
(
bean
.
confideContent
)
intro
.
set
(
bean
.
confideContent
)
title
.
set
(
bean
.
title
)
val
sb
=
StringBuilder
()
val
sb
=
StringBuilder
()
bean
.
confidedTag
?.
forEach
{
sb
.
append
(
it
).
append
(
" | "
)
}
bean
.
confidedTag
?.
forEach
{
sb
.
append
(
it
).
append
(
" | "
)
}
if
(
sb
.
isNotEmpty
())
{
if
(
sb
.
isNotEmpty
())
{
sb
.
setLength
(
sb
.
length
-
3
)
sb
.
setLength
(
sb
.
length
-
3
)
}
}
tag
.
set
(
sb
.
toString
())
tag
.
set
(
sb
.
toString
())
if
(
bean
.
videoUrl
!=
null
)
{
if
(
!
bean
.
videoUrl
.
isNullOrEmpty
()
)
{
playUrl
=
bean
.
videoUrl
playUrl
=
bean
.
videoUrl
isVideo
=
true
isVideo
=
true
coverUrl
.
set
(
bean
.
coverVideoPicture
)
coverUrl
.
set
(
bean
.
coverVideoPicture
)
...
@@ -184,6 +228,8 @@ internal fun VideoViewModel.mapOf(bean: ConfideHomeBodyBean): VideoViewModel {
...
@@ -184,6 +228,8 @@ internal fun VideoViewModel.mapOf(bean: ConfideHomeBodyBean): VideoViewModel {
coverUrl
.
set
(
bean
.
coverPicture
)
coverUrl
.
set
(
bean
.
coverPicture
)
}
}
uid
=
bean
.
uid
?.
toString
()
uid
=
bean
.
uid
?.
toString
()
doctorId
=
bean
.
doctorId
confideId
=
bean
.
confidedId
linkUrl
=
bean
.
linkUrl
linkUrl
=
bean
.
linkUrl
return
this
return
this
}
}
...
...
m-confide/src/main/res/drawable/bg_confide_free.xml
0 → 100644
View file @
f2923d7a
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<corners
android:bottomRightRadius=
"10dp"
android:topLeftRadius=
"10dp"
android:topRightRadius=
"10dp"
/>
<solid
android:color=
"#FF4A4A"
/>
<stroke
android:width=
"1dp"
android:color=
"@color/white"
/>
</shape>
\ No newline at end of file
m-confide/src/main/res/layout/item_expert_intro.xml
View file @
f2923d7a
...
@@ -7,6 +7,8 @@
...
@@ -7,6 +7,8 @@
<import
type=
"android.view.View"
/>
<import
type=
"android.view.View"
/>
<import
type=
"android.text.TextUtils"
/>
<variable
<variable
name=
"item"
name=
"item"
type=
"com.ydl.confide.intro.VideoViewModel"
/>
type=
"com.ydl.confide.intro.VideoViewModel"
/>
...
@@ -52,6 +54,7 @@
...
@@ -52,6 +54,7 @@
android:layout_width=
"76dp"
android:layout_width=
"76dp"
android:layout_height=
"76dp"
android:layout_height=
"76dp"
android:padding=
"24dp"
android:padding=
"24dp"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
...
@@ -86,12 +89,10 @@
...
@@ -86,12 +89,10 @@
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/layoutCall"
android:id=
"@+id/layoutCall"
android:layout_width=
"
wrap_content
"
android:layout_width=
"
160dp
"
android:layout_height=
"42dp"
android:layout_height=
"42dp"
android:layout_marginBottom=
"32dp"
android:layout_marginBottom=
"32dp"
android:background=
"@{item.lineStatus==3?@drawable/confide_line_bg_3:(item.lineStatus==2?@drawable/confide_line_bg_2:@drawable/confide_line_bg_1)}"
android:background=
"@{item.lineStatus==3?@drawable/confide_line_bg_3:(item.lineStatus==2?@drawable/confide_line_bg_2:@drawable/confide_line_bg_1)}"
android:paddingLeft=
"28dp"
android:paddingRight=
"28dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
...
@@ -105,6 +106,7 @@
...
@@ -105,6 +106,7 @@
android:src=
"@drawable/ic_confide_call"
android:src=
"@drawable/ic_confide_call"
android:visibility=
"@{item.lineStatus==2?View.GONE:View.VISIBLE}"
android:visibility=
"@{item.lineStatus==2?View.GONE:View.VISIBLE}"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintHorizontal_chainStyle=
"packed"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toLeftOf=
"@+id/tvCall"
app:layout_constraintRight_toLeftOf=
"@+id/tvCall"
app:layout_constraintTop_toTopOf=
"parent"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
...
@@ -113,18 +115,47 @@
...
@@ -113,18 +115,47 @@
android:id=
"@+id/tvCall"
android:id=
"@+id/tvCall"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:textColor=
"@color/white"
android:textColor=
"@color/white"
android:textSize=
"1
7
sp"
android:textSize=
"1
6
sp"
app:confideLineText=
"@{item.lineStatus}"
app:confideLineText=
"@{item.lineStatus}"
app:layout_constraintBottom_to
BottomOf=
"parent
"
app:layout_constraintBottom_to
TopOf=
"@+id/tvTime
"
app:layout_constraintLeft_toRightOf=
"@+id/ivCall"
app:layout_constraintLeft_toRightOf=
"@+id/ivCall"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:text=
"通话中"
/>
tools:text=
"通话中"
/>
<TextView
android:id=
"@+id/tvTime"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@{item.remainingTime}"
android:textColor=
"@color/white"
android:textSize=
"10sp"
android:visibility=
"@{TextUtils.isEmpty(item.remainingTime)?View.GONE:View.VISIBLE}"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"@+id/tvCall"
app:layout_constraintRight_toRightOf=
"@+id/tvCall"
app:layout_constraintTop_toBottomOf=
"@+id/tvCall"
tools:text=
"剩余1分40秒"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/bg_confide_free"
android:paddingLeft=
"5dp"
android:paddingTop=
"2dp"
android:paddingRight=
"5dp"
android:paddingBottom=
"2dp"
android:text=
"首单免费"
android:textColor=
"@color/white"
android:textSize=
"11sp"
android:visibility=
"@{item.showFreeTag?View.VISIBLE:View.GONE}"
app:layout_constraintCircle=
"@+id/layoutCall"
app:layout_constraintCircleAngle=
"70"
app:layout_constraintCircleRadius=
"70dp"
/>
<TextView
android:id=
"@+id/tvTag"
android:id=
"@+id/tvTag"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
...
...
m-confide/src/main/res/values/strings.xml
View file @
f2923d7a
...
@@ -2,4 +2,5 @@
...
@@ -2,4 +2,5 @@
<string
name=
"confide_title"
>
即时倾诉
</string>
<string
name=
"confide_title"
>
即时倾诉
</string>
<string
name=
"confide_video_wifi_tip"
>
当前处于非wifi环境下,播放会消耗流量,确定继续播放?
</string>
<string
name=
"confide_video_wifi_tip"
>
当前处于非wifi环境下,播放会消耗流量,确定继续播放?
</string>
<string
name=
"confide_tip"
>
提示
</string>
<string
name=
"confide_tip"
>
提示
</string>
<string
name=
"confide_tip_remain_time"
>
(剩余%s)
</string>
</resources>
</resources>
ydl-platform/src/main/java/com/ydl/ydlcommon/modular/ModularServiceManager.kt
View file @
f2923d7a
package
com.ydl.ydlcommon.modular
package
com.ydl.ydlcommon.modular
import
android.content.Context
import
android.os.Bundle
import
android.os.Parcelable
import
com.alibaba.android.arouter.facade.template.IProvider
import
com.alibaba.android.arouter.facade.template.IProvider
import
com.alibaba.android.arouter.launcher.ARouter
import
com.alibaba.android.arouter.launcher.ARouter
import
com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.LogUtil
...
@@ -9,6 +12,55 @@ import com.ydl.ydlcommon.utils.LogUtil
...
@@ -9,6 +12,55 @@ import com.ydl.ydlcommon.utils.LogUtil
* Created by haorui on 2019-09-21 .
* Created by haorui on 2019-09-21 .
* Des:查找 Arouter 服务封装类
* Des:查找 Arouter 服务封装类
*/
*/
fun
<
T
>
findRouteService
(
clz
:
Class
<
T
>):
T
?
=
ARouter
.
getInstance
().
navigation
(
clz
)
fun
route
(
context
:
Context
,
route
:
String
,
vararg
params
:
Pair
<
String
,
Any
>)
{
val
build
=
ARouter
.
getInstance
().
build
(
route
)
params
.
forEach
{
when
(
val
value
=
it
.
second
)
{
is
Boolean
->
{
build
.
withBoolean
(
it
.
first
,
value
)
}
is
Char
->
{
build
.
withChar
(
it
.
first
,
value
)
}
is
Int
->
{
build
.
withInt
(
it
.
first
,
value
)
}
is
Long
->
{
build
.
withLong
(
it
.
first
,
value
)
}
is
Float
->
{
build
.
withFloat
(
it
.
first
,
value
)
}
is
Double
->
{
build
.
withDouble
(
it
.
first
,
value
)
}
is
Short
->
{
build
.
withShort
(
it
.
first
,
value
)
}
is
Byte
->
{
build
.
withByte
(
it
.
first
,
value
)
}
is
String
->
{
build
.
withString
(
it
.
first
,
value
)
}
is
Bundle
->
{
build
.
withBundle
(
it
.
first
,
value
)
}
is
CharSequence
->
{
build
.
withCharSequence
(
it
.
first
,
value
)
}
is
Parcelable
->
{
build
.
withParcelable
(
it
.
first
,
value
)
}
}
}
build
.
navigation
(
context
)
}
object
ModularServiceManager
{
object
ModularServiceManager
{
private
val
routerMap
:
HashMap
<
String
,
IProvider
>
=
HashMap
()
private
val
routerMap
:
HashMap
<
String
,
IProvider
>
=
HashMap
()
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/TimeUtil.java
View file @
f2923d7a
...
@@ -293,21 +293,21 @@ public class TimeUtil {
...
@@ -293,21 +293,21 @@ public class TimeUtil {
return
retStr
;
return
retStr
;
}
}
public
static
String
getElapseTimeForShow
(
int
milliseconds
)
{
public
static
String
getElapseTimeForShow
(
long
milliseconds
)
{
StringBuilder
sb
=
new
StringBuilder
();
StringBuilder
sb
=
new
StringBuilder
();
int
seconds
=
milliseconds
/
1000
;
long
seconds
=
milliseconds
/
1000
;
if
(
seconds
<
1
)
{
if
(
seconds
<
1
)
{
seconds
=
1
;
seconds
=
1
;
}
}
int
hour
=
seconds
/
(
60
*
60
);
long
hour
=
seconds
/
(
60
*
60
);
if
(
hour
!=
0
)
{
if
(
hour
!=
0
)
{
sb
.
append
(
hour
).
append
(
"小时"
);
sb
.
append
(
hour
).
append
(
"小时"
);
}
}
int
minute
=
(
seconds
-
60
*
60
*
hour
)
/
60
;
long
minute
=
(
seconds
-
60
*
60
*
hour
)
/
60
;
if
(
minute
!=
0
)
{
if
(
minute
!=
0
)
{
sb
.
append
(
minute
).
append
(
"分"
);
sb
.
append
(
minute
).
append
(
"分"
);
}
}
int
second
=
(
seconds
-
60
*
60
*
hour
-
60
*
minute
);
long
second
=
(
seconds
-
60
*
60
*
hour
-
60
*
minute
);
if
(
second
!=
0
)
{
if
(
second
!=
0
)
{
sb
.
append
(
second
).
append
(
"秒"
);
sb
.
append
(
second
).
append
(
"秒"
);
}
}
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/view/dialog/YDLShareDialog.kt
View file @
f2923d7a
...
@@ -144,9 +144,17 @@ class YDLShareDialog : DialogFragment {
...
@@ -144,9 +144,17 @@ class YDLShareDialog : DialogFragment {
return
YDLShareDialog
(
activity
,
shareTitle
,
shareUrl
,
shareContent
,
shareHead
,
minProgramPath
,
minProgramId
)
return
YDLShareDialog
(
activity
,
shareTitle
,
shareUrl
,
shareContent
,
shareHead
,
minProgramPath
,
minProgramId
)
}
}
//只有微信和朋友圈
//只有微信和朋友圈
fun
style8
(
activity
:
Activity
,
shareTitle
:
String
?,
shareUrl
:
String
?,
shareContent
:
String
?,
shareHead
:
String
?):
YDLShareDialog
{
fun
style8
(
activity
:
Activity
,
shareTitle
:
String
?,
shareUrl
:
String
?,
shareContent
:
String
?,
shareHead
:
String
?,
minProgramPath
:
String
?,
minProgramId
:
String
?
):
YDLShareDialog
{
typeStyle
=
TYPE8
typeStyle
=
TYPE8
return
YDLShareDialog
(
activity
,
shareTitle
,
shareUrl
,
shareContent
,
shareHead
)
return
YDLShareDialog
(
activity
,
shareTitle
,
shareUrl
,
shareContent
,
shareHead
,
minProgramPath
,
minProgramId
)
}
}
}
}
...
...
ydl-utils/src/main/java/com/yidianling/common/view/ui/VoicePlayingIcon.java
View file @
f2923d7a
...
@@ -18,7 +18,7 @@ import java.util.List;
...
@@ -18,7 +18,7 @@ import java.util.List;
import
java.util.Random
;
import
java.util.Random
;
public
class
VoicePlayingIcon
extends
View
{
public
class
VoicePlayingIcon
extends
View
implements
Runnable
{
//画笔
//画笔
private
Paint
paint
;
private
Paint
paint
;
...
@@ -141,10 +141,8 @@ public class VoicePlayingIcon extends View {
...
@@ -141,10 +141,8 @@ public class VoicePlayingIcon extends View {
*/
*/
public
void
start
()
{
public
void
start
()
{
if
(!
isPlaying
)
{
if
(!
isPlaying
)
{
if
(
myThread
==
null
)
{
//开启子线程
removeCallbacks
(
this
);
myThread
=
new
Thread
(
new
MyRunnable
());
postOnAnimation
(
this
);
myThread
.
start
();
}
isPlaying
=
true
;
//控制子线程中的循环
isPlaying
=
true
;
//控制子线程中的循环
}
}
}
}
...
@@ -154,47 +152,29 @@ public class VoicePlayingIcon extends View {
...
@@ -154,47 +152,29 @@ public class VoicePlayingIcon extends View {
*/
*/
public
void
stop
()
{
public
void
stop
()
{
isPlaying
=
false
;
isPlaying
=
false
;
removeCallbacks
(
this
);
invalidate
();
invalidate
();
}
}
@Override
@Override
protected
void
onDetachedFromWindow
()
{
protected
void
onDetachedFromWindow
()
{
super
.
onDetachedFromWindow
();
super
.
onDetachedFromWindow
();
if
(
myThread
!=
null
)
{
removeCallbacks
(
this
);
myThread
.
interrupt
();
isPlaying
=
false
;
myThread
=
null
;
}
}
}
private
float
i
=
0
F
;
@Override
/**
public
void
run
()
{
* 子线程,循环改变每个指针的高度
for
(
int
j
=
0
;
j
<
pointers
.
size
();
j
++)
{
//循环改变每个指针高度
*/
float
rate
=
(
float
)
Math
.
abs
(
Math
.
sin
(
i
+
j
));
//利用正弦有规律的获取0~1的数。
public
class
MyRunnable
implements
Runnable
{
pointers
.
get
(
j
).
height
=
(
basePointY
-
getPaddingTop
())
*
rate
;
//rate 乘以 可绘制高度,来改变每个指针的高度
@Override
public
void
run
()
{
for
(
float
i
=
0
;
i
<
Integer
.
MAX_VALUE
;
)
{
//创建一个死循环,每循环一次i+0.1
try
{
for
(
int
j
=
0
;
j
<
pointers
.
size
();
j
++)
{
//循环改变每个指针高度
float
rate
=
(
float
)
Math
.
abs
(
Math
.
sin
(
i
+
j
));
//利用正弦有规律的获取0~1的数。
pointers
.
get
(
j
).
height
=
(
basePointY
-
getPaddingTop
())
*
rate
;
//rate 乘以 可绘制高度,来改变每个指针的高度
}
Thread
.
sleep
(
pointerSpeed
);
//休眠一下下,可自行调节
if
(
isPlaying
)
{
//控制开始/暂停
postInvalidate
();
i
+=
0.1
;
}
}
catch
(
InterruptedException
e
)
{
//ignore
break
;
}
}
}
}
invalidate
();
i
+=
0.1
;
postOnAnimationDelayed
(
this
,
pointerSpeed
);
}
}
/**
/**
* 指针对象
* 指针对象
*/
*/
...
...
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