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
aaf081b2
Commit
aaf081b2
authored
Dec 26, 2019
by
徐健
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复最后一条消息被隐藏的问题
parent
21900601
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
675 additions
and
152 deletions
+675
-152
build.gradle
app/build.gradle
+3
-3
MainActivity.kt
app/src/main/java/com/ydl/component/MainActivity.kt
+10
-10
FragmentContainerActivity.kt
app/src/main/java/com/ydl/component/music/FragmentContainerActivity.kt
+8
-8
config.gradle
config.gradle
+1
-1
P2PCustomActionHandlerImpl.java
m-im/src/main/java/com/yidianling/im/bridge/P2PCustomActionHandlerImpl.java
+9
-0
YDLMessageFragment.java
m-im/src/main/java/com/yidianling/uikit/business/session/fragment/YDLMessageFragment.java
+177
-2
ImCommentBannerView.kt
m-im/src/main/java/com/yidianling/uikit/business/session/view/ImCommentBannerView.kt
+228
-0
IP2PCustomActionHandler.java
m-im/src/main/java/com/yidianling/uikit/custom/bridge/IP2PCustomActionHandler.java
+5
-0
IMExpertBuild.java
m-im/src/main/modular_api/com/yidianling/im/api/bean/IMExpertBuild.java
+7
-0
ImCommendDetailBean.kt
m-im/src/main/modular_api/com/yidianling/im/api/bean/ImCommendDetailBean.kt
+12
-0
im_comment_list_right_icon.png
m-im/src/main/res_uikit/drawable-xhdpi/im_comment_list_right_icon.png
+0
-0
im_focus_btn_bg.xml
m-im/src/main/res_uikit/drawable/im_focus_btn_bg.xml
+10
-0
im_has_focus_btn_bg.xml
m-im/src/main/res_uikit/drawable/im_has_focus_btn_bg.xml
+10
-0
im_real_view_in.xml
m-im/src/main/res_uikit/layout/im_real_view_in.xml
+33
-0
im_real_view_left.xml
m-im/src/main/res_uikit/layout/im_real_view_left.xml
+16
-0
im_real_view_out.xml
m-im/src/main/res_uikit/layout/im_real_view_out.xml
+33
-0
im_ydl_nim_message_fragment.xml
m-im/src/main/res_uikit/layout/im_ydl_nim_message_fragment.xml
+113
-128
No files found.
app/build.gradle
View file @
aaf081b2
...
@@ -180,7 +180,7 @@ dependencies {
...
@@ -180,7 +180,7 @@ dependencies {
implementation
fileTree
(
dir:
'aars'
,
include:
[
'*.aar'
])
implementation
fileTree
(
dir:
'aars'
,
include:
[
'*.aar'
])
implementation
project
(
':m-user'
)
implementation
project
(
':m-user'
)
implementation
modularPublication
(
'com.ydl:m-user-api'
)
implementation
modularPublication
(
'com.ydl:m-user-api'
)
implementation
project
(
':m-tests'
)
//
implementation project(':m-tests')
implementation
project
(
':m-consultant'
)
implementation
project
(
':m-consultant'
)
implementation
modularPublication
(
'com.ydl:m-consultant-api'
)
implementation
modularPublication
(
'com.ydl:m-consultant-api'
)
// implementation project(':m-confide')
// implementation project(':m-confide')
...
@@ -202,9 +202,9 @@ dependencies {
...
@@ -202,9 +202,9 @@ dependencies {
implementation
project
(
':m-muse'
)
//
implementation project(':m-muse')
implementation
project
(
':m-im'
)
implementation
project
(
':m-im'
)
implementation
project
(
':m-dynamic'
)
//
implementation project(':m-dynamic')
// api rootProject.ext.dependencies["ydl-m-fm-module-ydl"]
// api rootProject.ext.dependencies["ydl-m-fm-module-ydl"]
...
...
app/src/main/java/com/ydl/component/MainActivity.kt
View file @
aaf081b2
...
@@ -25,10 +25,10 @@ import com.ydl.ydlcommon.modular.ModularServiceManager
...
@@ -25,10 +25,10 @@ import com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.mvp.lce.BaseLceActivity
import
com.ydl.ydlcommon.mvp.lce.BaseLceActivity
import
com.ydl.ydlcommon.router.IYDLRouterConstant
import
com.ydl.ydlcommon.router.IYDLRouterConstant
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.consultant.ExpertSearchActivity.Companion.HOT_SEARCH_DOCTOR_NAME
//
import com.yidianling.consultant.ExpertSearchActivity.Companion.HOT_SEARCH_DOCTOR_NAME
import
com.yidianling.consultant.api.IConsultantService
import
com.yidianling.consultant.api.IConsultantService
import
com.yidianling.fm.api.service.IFMService
import
com.yidianling.fm.api.service.IFMService
import
com.yidianling.tests.home.NewTestHomeActivity
//
import com.yidianling.tests.home.NewTestHomeActivity
import
kotlinx.android.synthetic.main.activity_main.*
import
kotlinx.android.synthetic.main.activity_main.*
/**
/**
...
@@ -84,13 +84,13 @@ class MainActivity : BaseLceActivity<DemoContract.View, DemoContract.Presenter>(
...
@@ -84,13 +84,13 @@ class MainActivity : BaseLceActivity<DemoContract.View, DemoContract.Presenter>(
.
navigation
()
.
navigation
()
}
}
bt_to_consultant
.
setOnClickListener
{
bt_to_consultant
.
setOnClickListener
{
ARouter
.
getInstance
()
//
ARouter.getInstance()
.
build
(
"/consult/hot_search"
)
//
.build("/consult/hot_search")
.
withString
(
//
.withString(
HOT_SEARCH_DOCTOR_NAME
,
//
HOT_SEARCH_DOCTOR_NAME,
this
.
resources
?.
getString
(
R
.
string
.
platform_search_hint
)
//
this.resources?.getString(R.string.platform_search_hint)
)
//
)
.
navigation
()
//
.navigation()
}
}
bt_to_music
.
setOnClickListener
{
bt_to_music
.
setOnClickListener
{
FragmentContainerActivity
.
start
(
this
)
FragmentContainerActivity
.
start
(
this
)
...
@@ -102,7 +102,7 @@ class MainActivity : BaseLceActivity<DemoContract.View, DemoContract.Presenter>(
...
@@ -102,7 +102,7 @@ class MainActivity : BaseLceActivity<DemoContract.View, DemoContract.Presenter>(
FragmentContainerActivity
.
start
(
this
,
"TrendsHomeFragment"
)
FragmentContainerActivity
.
start
(
this
,
"TrendsHomeFragment"
)
}
}
bt_to_tests
.
setOnClickListener
{
bt_to_tests
.
setOnClickListener
{
startActivity
(
Intent
(
this
,
NewTestHomeActivity
::
class
.
java
))
//
startActivity(Intent(this, NewTestHomeActivity::class.java))
}
}
// bt_to_confide.setOnClickListener {
// bt_to_confide.setOnClickListener {
// YDLavManager.instances.login("1193016")
// YDLavManager.instances.login("1193016")
...
...
app/src/main/java/com/ydl/component/music/FragmentContainerActivity.kt
View file @
aaf081b2
...
@@ -7,8 +7,8 @@ import com.ydl.component.mvp.DemoContract
...
@@ -7,8 +7,8 @@ import com.ydl.component.mvp.DemoContract
import
com.ydl.component.mvp.DemoPresenter
import
com.ydl.component.mvp.DemoPresenter
import
com.ydl.ydlcommon.bean.StatusBarOptions
import
com.ydl.ydlcommon.bean.StatusBarOptions
import
com.ydl.ydlcommon.mvp.lce.BaseLceActivity
import
com.ydl.ydlcommon.mvp.lce.BaseLceActivity
import
com.yidianling.dynamic.trendsHome.TrendsHomeFragment
//
import com.yidianling.dynamic.trendsHome.TrendsHomeFragment
import
com.yidianling.home.ui.fragment.YdlHomeFragment
//
import com.yidianling.home.ui.fragment.YdlHomeFragment
import
com.yidianling.im.ui.page.NewMultiMessageFragment
import
com.yidianling.im.ui.page.NewMultiMessageFragment
...
@@ -61,12 +61,12 @@ class FragmentContainerActivity : BaseLceActivity<DemoContract.View, DemoContra
...
@@ -61,12 +61,12 @@ class FragmentContainerActivity : BaseLceActivity<DemoContract.View, DemoContra
if
(
"NewMultiMessageFragment"
==
fragmentName
)
{
if
(
"NewMultiMessageFragment"
==
fragmentName
)
{
return
NewMultiMessageFragment
()
return
NewMultiMessageFragment
()
}
}
if
(
"TrendsHomeFragment"
==
fragmentName
)
{
//
if ("TrendsHomeFragment" == fragmentName) {
return
TrendsHomeFragment
()
//
return TrendsHomeFragment()
}
//
}
if
(
"YdlHomeFragment"
==
fragmentName
)
{
//
if ("YdlHomeFragment" == fragmentName) {
return
YdlHomeFragment
()
//
return YdlHomeFragment()
}
//
}
return
PlayFragment
()
return
PlayFragment
()
}
}
}
}
config.gradle
View file @
aaf081b2
ext
{
ext
{
kotlin_version
=
"1.3.21"
kotlin_version
=
"1.3.21"
dev_mode
=
fals
e
dev_mode
=
tru
e
ydl_app
=
[
ydl_app
=
[
appName
:
"心理咨询壹点灵"
,
appName
:
"心理咨询壹点灵"
,
...
...
m-im/src/main/java/com/yidianling/im/bridge/P2PCustomActionHandlerImpl.java
View file @
aaf081b2
...
@@ -130,6 +130,15 @@ public class P2PCustomActionHandlerImpl implements IP2PCustomActionHandler {
...
@@ -130,6 +130,15 @@ public class P2PCustomActionHandlerImpl implements IP2PCustomActionHandler {
docInfo
.
doctorBriefInfoHelpLong
=
expert
.
doctorBriefInfo
.
helpLong
;
docInfo
.
doctorBriefInfoHelpLong
=
expert
.
doctorBriefInfo
.
helpLong
;
docInfo
.
doctorBriefInfoOrderNum
=
expert
.
doctorBriefInfo
.
orderNum
;
docInfo
.
doctorBriefInfoOrderNum
=
expert
.
doctorBriefInfo
.
orderNum
;
docInfo
.
doctorBriefInfoSmallImage
=
expert
.
doctorBriefInfo
.
smallImage
;
docInfo
.
doctorBriefInfoSmallImage
=
expert
.
doctorBriefInfo
.
smallImage
;
docInfo
.
commentCounter
=
expert
.
commentCounter
;
docInfo
.
commentCounterUrl
=
expert
.
commentCounterUrl
;
if
(
docInfo
.
commentList
==
null
)
{
docInfo
.
commentList
=
new
ArrayList
();
}
docInfo
.
commentList
.
clear
();
docInfo
.
commentList
.
addAll
(
expert
.
commentList
);
}
}
public
P2PCustomActionHandlerImpl
(
String
toChatUsername
,
public
P2PCustomActionHandlerImpl
(
String
toChatUsername
,
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/fragment/YDLMessageFragment.java
View file @
aaf081b2
package
com
.
yidianling
.
uikit
.
business
.
session
.
fragment
;
package
com
.
yidianling
.
uikit
.
business
.
session
.
fragment
;
import
android.animation.Animator
;
import
android.animation.ObjectAnimator
;
import
android.animation.ValueAnimator
;
import
android.annotation.SuppressLint
;
import
android.annotation.SuppressLint
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.graphics.Color
;
import
android.graphics.Color
;
...
@@ -10,11 +13,16 @@ import android.os.Handler;
...
@@ -10,11 +13,16 @@ import android.os.Handler;
import
android.os.Message
;
import
android.os.Message
;
import
android.support.constraint.ConstraintLayout
;
import
android.support.constraint.ConstraintLayout
;
import
android.support.v4.content.ContextCompat
;
import
android.support.v4.content.ContextCompat
;
import
android.support.v7.widget.RecyclerView
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.view.ViewTreeObserver
;
import
android.view.animation.Animation
;
import
android.view.animation.DecelerateInterpolator
;
import
android.view.animation.TranslateAnimation
;
import
android.widget.FrameLayout
;
import
android.widget.FrameLayout
;
import
android.widget.ImageView
;
import
android.widget.ImageView
;
import
android.widget.LinearLayout
;
import
android.widget.LinearLayout
;
...
@@ -36,6 +44,8 @@ import com.netease.nimlib.sdk.msg.model.IMMessage;
...
@@ -36,6 +44,8 @@ import com.netease.nimlib.sdk.msg.model.IMMessage;
import
com.netease.nimlib.sdk.msg.model.MemberPushOption
;
import
com.netease.nimlib.sdk.msg.model.MemberPushOption
;
import
com.netease.nimlib.sdk.msg.model.MessageReceipt
;
import
com.netease.nimlib.sdk.msg.model.MessageReceipt
;
import
com.netease.nimlib.sdk.uinfo.model.NimUserInfo
;
import
com.netease.nimlib.sdk.uinfo.model.NimUserInfo
;
import
com.ydl.webview.H5Params
;
import
com.ydl.webview.NewH5Activity
;
import
com.ydl.ydl_image.module.GlideApp
;
import
com.ydl.ydl_image.module.GlideApp
;
import
com.ydl.ydlcommon.modular.ModularServiceManager
;
import
com.ydl.ydlcommon.modular.ModularServiceManager
;
import
com.ydl.ydlcommon.utils.SharedPreferencesEditor
;
import
com.ydl.ydlcommon.utils.SharedPreferencesEditor
;
...
@@ -63,6 +73,7 @@ import com.yidianling.uikit.business.session.module.list.MessageListPanelEx;
...
@@ -63,6 +73,7 @@ import com.yidianling.uikit.business.session.module.list.MessageListPanelEx;
import
com.yidianling.uikit.business.session.view.ChatPrivateTips
;
import
com.yidianling.uikit.business.session.view.ChatPrivateTips
;
import
com.yidianling.uikit.business.session.view.CollectInfoPopupWindow
;
import
com.yidianling.uikit.business.session.view.CollectInfoPopupWindow
;
import
com.yidianling.uikit.business.session.view.CommonQuestionView
;
import
com.yidianling.uikit.business.session.view.CommonQuestionView
;
import
com.yidianling.uikit.business.session.view.ImCommentBannerView
;
import
com.yidianling.uikit.custom.bridge.ActionHandlerStorage
;
import
com.yidianling.uikit.custom.bridge.ActionHandlerStorage
;
import
com.yidianling.uikit.custom.bridge.IP2PCustomActionHandler
;
import
com.yidianling.uikit.custom.bridge.IP2PCustomActionHandler
;
import
com.yidianling.uikit.custom.http.ServiceImpl
;
import
com.yidianling.uikit.custom.http.ServiceImpl
;
...
@@ -141,11 +152,31 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
...
@@ -141,11 +152,31 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
private
ImageView
qingshuImg
;
//预约咨询
private
ImageView
qingshuImg
;
//预约咨询
private
LinearLayout
top_expert_info_ll
;
private
int
expertInfoViewHeight
=
0
;
// 专家信息栏高度
private
RecyclerView
messageListView
;
private
ConstraintLayout
top_expert_info_cl
;
private
ConstraintLayout
top_expert_info_cl
;
private
RelativeLayout
rl_common_question_enter
;
private
RelativeLayout
rl_common_question_enter
;
private
FrameLayout
fl_question_content
;
private
FrameLayout
fl_question_content
;
private
List
<
CommonQuestionBean
>
commonQuestionBeanList
;
private
List
<
CommonQuestionBean
>
commonQuestionBeanList
;
private
LinearLayout
comment_banner_view_ll
;
private
TextView
tv_all_comment_desc
;
private
ImageView
tv_all_comment_go
;
private
ImCommentBannerView
comment_banner_view
;
private
LinearLayout
top_view_container
;
private
LinearLayout
constraint_ll
;
private
ValueAnimator
anim_out
;
private
ValueAnimator
anim_in
;
private
Boolean
expertInfoViewIsIn
=
true
;
private
Boolean
expertInfoViewIsAnimating
=
false
;
private
int
IN_OUT_DURATION
=
1000
;
private
Boolean
hasUpScroll
=
false
;
@SuppressLint
(
"HandlerLeak"
)
@SuppressLint
(
"HandlerLeak"
)
private
Handler
mHandler
=
new
Handler
()
{
private
Handler
mHandler
=
new
Handler
()
{
@Override
@Override
...
@@ -172,9 +203,17 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
...
@@ -172,9 +203,17 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
help_num_tv
=
rootView
.
findViewById
(
R
.
id
.
help_num_tv
);
help_num_tv
=
rootView
.
findViewById
(
R
.
id
.
help_num_tv
);
server_num_tv
=
rootView
.
findViewById
(
R
.
id
.
server_num_tv
);
server_num_tv
=
rootView
.
findViewById
(
R
.
id
.
server_num_tv
);
good_num_tv
=
rootView
.
findViewById
(
R
.
id
.
good_num_tv
);
good_num_tv
=
rootView
.
findViewById
(
R
.
id
.
good_num_tv
);
top_expert_info_ll
=
rootView
.
findViewById
(
R
.
id
.
top_expert_info_ll
);
top_expert_info_cl
=
rootView
.
findViewById
(
R
.
id
.
top_expert_info_cl
);
top_expert_info_cl
=
rootView
.
findViewById
(
R
.
id
.
top_expert_info_cl
);
comment_banner_view_ll
=
rootView
.
findViewById
(
R
.
id
.
comment_banner_view_ll
);
tv_all_comment_desc
=
rootView
.
findViewById
(
R
.
id
.
tv_all_comment_desc
);
tv_all_comment_go
=
rootView
.
findViewById
(
R
.
id
.
tv_all_comment_go
);
comment_banner_view
=
rootView
.
findViewById
(
R
.
id
.
comment_banner_view
);
qingshu
=
rootView
.
findViewById
(
R
.
id
.
action_qingshu
);
qingshu
=
rootView
.
findViewById
(
R
.
id
.
action_qingshu
);
qingshuImg
=
rootView
.
findViewById
(
R
.
id
.
action_qingshu_img
);
qingshuImg
=
rootView
.
findViewById
(
R
.
id
.
action_qingshu_img
);
messageListView
=
rootView
.
findViewById
(
R
.
id
.
messageListView
);
// 消息列表
top_view_container
=
rootView
.
findViewById
(
R
.
id
.
top_view_container
);
// 消息列表
constraint_ll
=
rootView
.
findViewById
(
R
.
id
.
constraint_ll
);
//和助理私聊时的常用语逻辑
//和助理私聊时的常用语逻辑
rl_common_question_enter
=
rootView
.
findViewById
(
R
.
id
.
rl_common_question
);
rl_common_question_enter
=
rootView
.
findViewById
(
R
.
id
.
rl_common_question
);
...
@@ -197,7 +236,7 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
...
@@ -197,7 +236,7 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
try
{
try
{
YdlBuryPointUtil
.
sendPv
(
"快捷短语弹起"
);
YdlBuryPointUtil
.
sendPv
(
"快捷短语弹起"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
}
}
}
}
...
@@ -227,7 +266,7 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
...
@@ -227,7 +266,7 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
try
{
try
{
YdlBuryPointUtil
.
sendPv
(
"用户信息收集页面"
);
YdlBuryPointUtil
.
sendPv
(
"用户信息收集页面"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
}
}
...
@@ -240,6 +279,11 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
...
@@ -240,6 +279,11 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
if
(
ActionHandlerStorage
.
getL
(
sessionId
)
!=
null
&&
ActionHandlerStorage
.
getL
(
sessionId
).
getUserType
()
==
2
)
{
if
(
ActionHandlerStorage
.
getL
(
sessionId
)
!=
null
&&
ActionHandlerStorage
.
getL
(
sessionId
).
getUserType
()
==
2
)
{
top_expert_info_cl
.
setVisibility
(
View
.
VISIBLE
);
top_expert_info_cl
.
setVisibility
(
View
.
VISIBLE
);
initTopCustomBar
();
initTopCustomBar
();
comment_banner_view_ll
.
setVisibility
(
View
.
VISIBLE
);
initCommentBanner
();
initAnimation
();
// 初始化顶部布局的动画
initTopViewHeight
();
//设置顶部专家信息栏高度
addScrollListener
();
}
}
if
(
ActionHandlerStorage
.
getL
(
sessionId
)
!=
null
)
{
if
(
ActionHandlerStorage
.
getL
(
sessionId
)
!=
null
)
{
...
@@ -289,6 +333,119 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
...
@@ -289,6 +333,119 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
}
}
}
}
private
void
addScrollListener
()
{
messageListView
.
addOnScrollListener
(
new
RecyclerView
.
OnScrollListener
()
{
@Override
public
void
onScrollStateChanged
(
RecyclerView
recyclerView
,
int
newState
)
{
super
.
onScrollStateChanged
(
recyclerView
,
newState
);
}
@Override
public
void
onScrolled
(
RecyclerView
recyclerView
,
int
dx
,
int
dy
)
{
super
.
onScrolled
(
recyclerView
,
dx
,
dy
);
Log
.
i
(
"dy="
,
String
.
valueOf
(
dy
));
if
(
dy
<
0
&&
Math
.
abs
(
dy
)
>
15
)
{
hasUpScroll
=
true
;
// 下滑
if
(!
expertInfoViewIsIn
&&
!
expertInfoViewIsAnimating
)
{
expertInfoViewIsAnimating
=
true
;
anim_in
.
start
();
}
}
else
if
(
dy
>
0
&&
Math
.
abs
(
dy
)
>
15
)
{
if
(
expertInfoViewIsIn
&&
!
expertInfoViewIsAnimating
&&
hasUpScroll
)
{
expertInfoViewIsAnimating
=
true
;
anim_out
.
start
();
}
}
}
});
}
private
void
initTopViewHeight
()
{
top_expert_info_ll
.
getViewTreeObserver
().
addOnGlobalLayoutListener
(()
->
expertInfoViewHeight
=
top_expert_info_ll
.
getHeight
());
}
private
void
initAnimation
()
{
anim_out
=
newAnimation
(
0
f
,
1
f
);
anim_out
.
setDuration
(
300
);
anim_in
=
newAnimation
(
1
f
,
0
f
);
anim_in
.
setDuration
(
300
);
anim_in
.
addUpdateListener
(
animation
->
{
if
(
expertInfoViewHeight
!=
0
)
{
ViewGroup
.
MarginLayoutParams
params
=
(
ViewGroup
.
MarginLayoutParams
)
constraint_ll
.
getLayoutParams
();
params
.
topMargin
=
(
int
)
(-
expertInfoViewHeight
*
Float
.
valueOf
(
animation
.
getAnimatedValue
().
toString
()));
constraint_ll
.
setLayoutParams
(
params
);
}
});
anim_in
.
addListener
(
new
Animator
.
AnimatorListener
()
{
@Override
public
void
onAnimationStart
(
Animator
animation
)
{
}
@Override
public
void
onAnimationEnd
(
Animator
animation
)
{
expertInfoViewIsIn
=
true
;
expertInfoViewIsAnimating
=
false
;
}
@Override
public
void
onAnimationCancel
(
Animator
animation
)
{
}
@Override
public
void
onAnimationRepeat
(
Animator
animation
)
{
}
});
anim_out
.
addUpdateListener
(
animation
->
{
if
(
expertInfoViewHeight
!=
0
)
{
ViewGroup
.
MarginLayoutParams
params
=
(
ViewGroup
.
MarginLayoutParams
)
constraint_ll
.
getLayoutParams
();
params
.
topMargin
=
(
int
)
(-
expertInfoViewHeight
*
Float
.
valueOf
(
animation
.
getAnimatedValue
().
toString
()));
constraint_ll
.
setLayoutParams
(
params
);
}
});
anim_out
.
addListener
(
new
Animator
.
AnimatorListener
()
{
@Override
public
void
onAnimationStart
(
Animator
animation
)
{
}
@Override
public
void
onAnimationEnd
(
Animator
animation
)
{
expertInfoViewIsIn
=
false
;
expertInfoViewIsAnimating
=
false
;
}
@Override
public
void
onAnimationCancel
(
Animator
animation
)
{
}
@Override
public
void
onAnimationRepeat
(
Animator
animation
)
{
}
});
}
private
ValueAnimator
newAnimation
(
float
fromYValue
,
float
toYValue
)
{
ValueAnimator
anim1
=
ValueAnimator
.
ofFloat
(
fromYValue
,
toYValue
);
return
anim1
;
}
/**
/**
* 初始化顶部专家信息栏
* 初始化顶部专家信息栏
*/
*/
...
@@ -322,6 +479,22 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
...
@@ -322,6 +479,22 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
}
}
}
}
/**
* 初始化顶部专家信息栏下面的评论view
*/
private
void
initCommentBanner
()
{
int
commentCounter
=
ActionHandlerStorage
.
getL
(
sessionId
).
getInfo
().
commentCounter
;
tv_all_comment_desc
.
setText
(
"评论("
+
String
.
valueOf
(
commentCounter
)
+
")"
);
H5Params
params
=
new
H5Params
(
ActionHandlerStorage
.
getL
(
sessionId
).
getInfo
().
commentCounterUrl
,
""
);
View
.
OnClickListener
onClickListener
=
v
->
NewH5Activity
.
start
(
getActivity
(),
params
);
tv_all_comment_desc
.
setOnClickListener
(
onClickListener
);
tv_all_comment_go
.
setOnClickListener
(
onClickListener
);
comment_banner_view
.
initData
(
ActionHandlerStorage
.
getL
(
sessionId
).
getInfo
().
commentList
);
}
private
void
showTips
()
{
private
void
showTips
()
{
mHandler
.
sendEmptyMessageDelayed
(
1
,
1000
);
mHandler
.
sendEmptyMessageDelayed
(
1
,
1000
);
}
}
...
@@ -486,6 +659,8 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
...
@@ -486,6 +659,8 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
@Override
@Override
public
void
onDestroy
()
{
public
void
onDestroy
()
{
comment_banner_view
.
onDestory
();
super
.
onDestroy
();
super
.
onDestroy
();
messageListPanel
.
onDestroy
();
messageListPanel
.
onDestroy
();
registerObservers
(
false
);
registerObservers
(
false
);
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/view/ImCommentBannerView.kt
0 → 100644
View file @
aaf081b2
package
com.yidianling.uikit.business.session.view
import
android.content.Context
import
android.os.Handler
import
android.os.Looper
import
android.os.Message
import
android.util.AttributeSet
import
android.view.View
import
android.view.ViewGroup
import
android.view.animation.Animation
import
android.view.animation.DecelerateInterpolator
import
android.view.animation.TranslateAnimation
import
android.widget.LinearLayout
import
com.ydl.webview.H5Params
import
com.ydl.webview.NewH5Activity
import
com.yidianling.im.R
import
com.yidianling.im.api.bean.ImCommendDetailBean
import
kotlinx.android.synthetic.main.im_real_view_in.view.*
import
kotlinx.android.synthetic.main.im_real_view_left.view.*
import
kotlinx.android.synthetic.main.im_real_view_out.view.*
class
ImCommentBannerView
:
LinearLayout
{
constructor
(
context
:
Context
)
:
super
(
context
)
{
mContext
=
context
initViews
()
}
constructor
(
context
:
Context
,
attrs
:
AttributeSet
)
:
super
(
context
,
attrs
)
{
mContext
=
context
initViews
()
}
constructor
(
context
:
Context
,
attrs
:
AttributeSet
,
defStyle
:
Int
)
:
super
(
context
,
attrs
,
defStyle
)
{
mContext
=
context
initViews
()
}
private
var
mContext
:
Context
?
=
null
private
val
STATUS_IN
=
0
private
val
STATUS_OUT
=
1
private
var
curTipIndex
=
0
private
var
lastTimeMillis
:
Long
=
0
private
val
ANIM_DELAYED_MILLIONS
=
2
*
1000
/**
* 动画持续时长
*/
private
val
ANIM_DURATION
=
500
/**
* 进、出 两个view (主要用于做动画,其实是两个相同的布局文件)
*/
private
var
view_out
:
View
?
=
null
private
var
view_in
:
View
?
=
null
/**
* 进、出 两个View 的动画
*/
private
var
anim_out
:
Animation
?
=
null
private
var
anim_in
:
Animation
?
=
null
/**
* 数据缓存
*/
private
var
mDataList
:
ArrayList
<
ImCommendDetailBean
>?
=
null
private
val
mHandler
:
Handler
=
object
:
Handler
(
Looper
.
getMainLooper
())
{
override
fun
handleMessage
(
msg
:
Message
?)
{
super
.
handleMessage
(
msg
)
updateTipAndPlayAnimation
()
sendMessageDelayed
(
Message
(),
ANIM_DELAYED_MILLIONS
.
toLong
())
}
}
private
fun
initViews
()
{
initView
()
initAnimation
()
}
/**
* 界面初始化
*/
private
fun
initView
()
{
orientation
=
HORIZONTAL
var
params
=
ViewGroup
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
)
View
.
inflate
(
mContext
,
R
.
layout
.
im_real_view_left
,
this
)
view_out
=
View
.
inflate
(
mContext
,
R
.
layout
.
im_real_view_out
,
null
)
view_in
=
View
.
inflate
(
mContext
,
R
.
layout
.
im_real_view_in
,
null
)
imRealViewLeftFrameLayout
.
addView
(
view_out
)
imRealViewLeftFrameLayout
.
addView
(
view_in
)
layoutParams
=
params
}
private
fun
initAnimation
()
{
anim_out
=
newAnimation
(
0f
,
-
1f
)
anim_in
=
newAnimation
(
1f
,
0f
)
anim_in
?.
setAnimationListener
(
object
:
Animation
.
AnimationListener
{
override
fun
onAnimationStart
(
animation
:
Animation
)
{
}
override
fun
onAnimationRepeat
(
animation
:
Animation
)
{
}
override
fun
onAnimationEnd
(
animation
:
Animation
)
{
updateViewVisibility
()
}
})
}
/**
* 设置数据
*/
fun
initData
(
list
:
ArrayList
<
ImCommendDetailBean
>?)
{
mHandler
.
removeCallbacksAndMessages
(
null
)
if
(
null
==
list
||
list
.
isEmpty
())
{
visibility
=
View
.
GONE
return
}
visibility
=
View
.
VISIBLE
if
(
null
==
mDataList
)
{
mDataList
=
ArrayList
()
}
else
{
(
mDataList
as
ArrayList
).
clear
()
}
(
mDataList
as
ArrayList
).
addAll
(
list
)
curTipIndex
=
0
updateTip
(
STATUS_OUT
)
updateTipAndPlayAnimation
()
mHandler
.
sendMessageDelayed
(
Message
(),
ANIM_DELAYED_MILLIONS
.
toLong
())
}
private
fun
updateViewVisibility
()
{
if
(
curTipIndex
%
2
==
0
)
{
view_out
?.
visibility
=
View
.
INVISIBLE
}
else
{
view_in
?.
visibility
=
View
.
INVISIBLE
}
}
private
fun
newAnimation
(
fromYValue
:
Float
,
toYValue
:
Float
):
Animation
{
val
anim
=
TranslateAnimation
(
Animation
.
RELATIVE_TO_SELF
,
0f
,
Animation
.
RELATIVE_TO_SELF
,
0f
,
Animation
.
RELATIVE_TO_SELF
,
fromYValue
,
Animation
.
RELATIVE_TO_SELF
,
toYValue
)
anim
.
duration
=
ANIM_DURATION
.
toLong
()
anim
.
interpolator
=
DecelerateInterpolator
()
return
anim
}
private
fun
updateTipAndPlayAnimation
()
{
view_in
?.
visibility
=
View
.
VISIBLE
view_out
?.
visibility
=
View
.
VISIBLE
if
(
curTipIndex
%
2
==
0
)
{
updateTip
(
STATUS_OUT
)
view_in
?.
startAnimation
(
anim_out
)
view_out
?.
startAnimation
(
anim_in
)
this
.
bringChildToFront
(
view_in
)
}
else
{
updateTip
(
STATUS_IN
)
view_out
?.
startAnimation
(
anim_out
)
view_in
?.
startAnimation
(
anim_in
)
this
.
bringChildToFront
(
view_out
)
}
}
private
fun
updateTip
(
status
:
Int
)
{
val
bodyBean
=
getNextTip
()
?:
return
mContext
?.
let
{
when
(
status
)
{
STATUS_IN
->
{
tv_in_comment_desc
.
text
=
bodyBean
.
commentContent
tv_in_content_before
.
text
=
getName
(
bodyBean
.
nickName
)
view_in
?.
setOnClickListener
{
val
params
:
H5Params
=
H5Params
(
bodyBean
.
commentUrl
,
""
)
mContext
?.
let
{
NewH5Activity
.
start
(
mContext
,
params
)
}
}
}
STATUS_OUT
->
{
tv_out_comment_desc
.
text
=
bodyBean
.
commentContent
tv_out_content_before
.
text
=
getName
(
bodyBean
.
nickName
)
view_out
?.
setOnClickListener
{
val
params
:
H5Params
=
H5Params
(
bodyBean
.
commentUrl
,
""
)
mContext
?.
let
{
NewH5Activity
.
start
(
mContext
,
params
)
}
}
}
else
->
{}
}
}
}
//获取经过加密的名字 : 徐**
private
fun
getName
(
name
:
String
?):
String
{
var
nameBuffer
=
StringBuffer
()
name
?.
let
{
nameBuffer
.
append
(
name
[
0
])
nameBuffer
.
append
(
"**:"
)
}
return
nameBuffer
.
toString
()
}
private
fun
getNextTip
():
ImCommendDetailBean
?
{
if
(
null
==
mDataList
||
mDataList
?.
isEmpty
()
!!
)
{
return
null
}
return
mDataList
!!
[
curTipIndex
++
%
mDataList
!!
.
size
!!
]
}
fun
onDestory
()
{
mHandler
.
removeCallbacksAndMessages
(
null
)
}
}
\ No newline at end of file
m-im/src/main/java/com/yidianling/uikit/custom/bridge/IP2PCustomActionHandler.java
View file @
aaf081b2
...
@@ -4,6 +4,7 @@ import android.app.Activity;
...
@@ -4,6 +4,7 @@ import android.app.Activity;
import
android.content.Context
;
import
android.content.Context
;
import
com.netease.nimlib.sdk.msg.model.IMMessage
;
import
com.netease.nimlib.sdk.msg.model.IMMessage
;
import
com.yidianling.im.api.bean.ImCommendDetailBean
;
import
com.yidianling.uikit.custom.http.response.RecommendExpertBean
;
import
com.yidianling.uikit.custom.http.response.RecommendExpertBean
;
import
org.json.JSONObject
;
import
org.json.JSONObject
;
...
@@ -148,6 +149,10 @@ public interface IP2PCustomActionHandler {
...
@@ -148,6 +149,10 @@ public interface IP2PCustomActionHandler {
public
int
doctorBriefInfoOrderNum
=
0
;
//帮助人数
public
int
doctorBriefInfoOrderNum
=
0
;
//帮助人数
public
int
doctorBriefInfoHelpLong
=
0
;
//服务时长
public
int
doctorBriefInfoHelpLong
=
0
;
//服务时长
public
String
doctorBriefInfoSmallImage
=
""
;
//小头像
public
String
doctorBriefInfoSmallImage
=
""
;
//小头像
public
int
commentCounter
=
0
;
public
String
commentCounterUrl
=
""
;
public
ArrayList
<
ImCommendDetailBean
>
commentList
;
}
}
//消息中有11位数字,提示是否要隐藏中间5位 相关
//消息中有11位数字,提示是否要隐藏中间5位 相关
...
...
m-im/src/main/modular_api/com/yidianling/im/api/bean/IMExpertBuild.java
View file @
aaf081b2
package
com
.
yidianling
.
im
.
api
.
bean
;
package
com
.
yidianling
.
im
.
api
.
bean
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
/**
* Created by hgw on 2018/3/13.
* Created by hgw on 2018/3/13.
*/
*/
...
@@ -10,5 +13,8 @@ public class IMExpertBuild {
...
@@ -10,5 +13,8 @@ public class IMExpertBuild {
public
String
tips
;
//禁言提示内容
public
String
tips
;
//禁言提示内容
public
String
url
;
//禁言帮助URL
public
String
url
;
//禁言帮助URL
public
IMDoctorBriefInfo
doctorBriefInfo
=
new
IMDoctorBriefInfo
();
public
IMDoctorBriefInfo
doctorBriefInfo
=
new
IMDoctorBriefInfo
();
public
List
<
ImCommendDetailBean
>
commentList
=
new
ArrayList
();
//评论列表
public
int
commentCounter
=
0
;
//评论总数
public
String
commentCounterUrl
=
""
;
//评论总数url
}
}
\ No newline at end of file
m-im/src/main/modular_api/com/yidianling/im/api/bean/ImCommendDetailBean.kt
0 → 100644
View file @
aaf081b2
package
com.yidianling.im.api.bean
/**
* 评论细节bean
*/
class
ImCommendDetailBean
{
var
nickName
:
String
=
""
var
commentContent
:
String
=
""
var
commentUrl
:
String
=
""
}
\ No newline at end of file
m-im/src/main/res_uikit/drawable-xhdpi/im_comment_list_right_icon.png
0 → 100644
View file @
aaf081b2
307 Bytes
m-im/src/main/res_uikit/drawable/im_focus_btn_bg.xml
0 → 100644
View file @
aaf081b2
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<solid
android:color=
"#E5F5FF"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
m-im/src/main/res_uikit/drawable/im_has_focus_btn_bg.xml
0 → 100644
View file @
aaf081b2
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<solid
android:color=
"#E5F5FF"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
m-im/src/main/res_uikit/layout/im_real_view_in.xml
0 → 100644
View file @
aaf081b2
<?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=
"horizontal"
android:background=
"?android:attr/selectableItemBackground"
xmlns:tools=
"http://schemas.android.com/tools"
>
<TextView
android:layout_gravity=
"center_vertical"
tools:text=
"姚**:"
android:layout_marginLeft=
"18dp"
android:id=
"@+id/tv_in_content_before"
android:textColor=
"#242424"
android:textStyle=
"bold"
android:textSize=
"12dp"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
<TextView
android:layout_marginRight=
"6dp"
tools:text=
"谢谢老师的疏导,相信以后的自相信以后的自相信以后的自…"
android:id=
"@+id/tv_in_comment_desc"
android:textSize=
"12dp"
android:textColor=
"#666666"
android:lines=
"1"
android:ellipsize=
"end"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
\ No newline at end of file
m-im/src/main/res_uikit/layout/im_real_view_left.xml
0 → 100644
View file @
aaf081b2
<?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=
"horizontal"
android:paddingTop=
"10dp"
android:paddingBottom=
"10dp"
>
<FrameLayout
android:id=
"@+id/imRealViewLeftFrameLayout"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
/>
</LinearLayout>
m-im/src/main/res_uikit/layout/im_real_view_out.xml
0 → 100644
View file @
aaf081b2
<?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=
"horizontal"
android:background=
"?android:attr/selectableItemBackground"
xmlns:tools=
"http://schemas.android.com/tools"
>
<TextView
android:layout_gravity=
"center_vertical"
tools:text=
"姚**:"
android:layout_marginLeft=
"18dp"
android:id=
"@+id/tv_out_content_before"
android:textColor=
"#242424"
android:textStyle=
"bold"
android:textSize=
"12dp"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
<TextView
android:layout_marginRight=
"6dp"
tools:text=
"谢谢老师的疏导,相信以后的自相信以后的自相信以后的自…"
android:id=
"@+id/tv_out_comment_desc"
android:textSize=
"12dp"
android:textColor=
"#666666"
android:lines=
"1"
android:ellipsize=
"end"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
\ No newline at end of file
m-im/src/main/res_uikit/layout/im_ydl_nim_message_fragment.xml
View file @
aaf081b2
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:background=
"@color/platform_color_F0F0F0"
android:background=
"@color/platform_color_F0F0F0"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
...
@@ -18,79 +18,19 @@
...
@@ -18,79 +18,19 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"match_parent"
/>
<LinearLayout
<android.support.design.widget.CoordinatorLayout
android:id=
"@+id/constraint_ll"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<android.support.design.widget.AppBarLayout
android:id=
"@+id/appbar"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_cont
ent"
android:layout_height=
"match_par
ent"
app:elevation=
"0dp
"
>
android:orientation=
"vertical
"
>
<RelativeLayout
<LinearLayout
android:layout_width=
"match_parent"
android:id=
"@+id/top_view_container"
android:layout_height=
"wrap_content"
app:layout_scrollFlags=
"scroll|enterAlways"
>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/line"
android:orientation=
"vertical"
android:background=
"#ffffff"
app:layout_constraintTop_toTopOf=
"parent"
>
android:visibility=
"gone"
>
<!-- 专家信息 -->
<com.yidianling.nimbase.common.ui.imageview.CircleImageView
android:id=
"@+id/info_head"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:layout_margin=
"10dp"
/>
<TextView
android:id=
"@+id/info_name"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"6dp"
android:layout_toRightOf=
"@+id/info_head"
android:text=
"预约咨询"
/>
<TextView
android:id=
"@+id/info_money"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/info_name"
android:layout_toRightOf=
"@+id/info_head"
android:text=
"200"
android:textColor=
"#ff8800"
android:textSize=
"16sp"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/info_name"
android:layout_alignBaseline=
"@+id/info_money"
android:layout_toRightOf=
"@+id/info_money"
android:text=
"元/次"
android:textSize=
"12sp"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentRight=
"true"
android:layout_centerVertical=
"true"
android:layout_marginRight=
"10dp"
android:background=
"@drawable/im_shape_green_bg"
android:padding=
"5dp"
android:text=
"立即预约"
android:textColor=
"#3fca69"
/>
<ImageView
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
android:layout_below=
"@+id/info_head"
android:background=
"#EDEDED"
/>
</RelativeLayout>
<LinearLayout
<LinearLayout
android:id=
"@+id/top_expert_info_ll"
android:id=
"@+id/top_expert_info_ll"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
@@ -101,71 +41,72 @@
...
@@ -101,71 +41,72 @@
android:id=
"@+id/top_expert_info_cl"
android:id=
"@+id/top_expert_info_cl"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"56dp"
android:layout_height=
"56dp"
android:background=
"@color/im_white"
android:paddingLeft=
"@dimen/platform_dp_10"
android:paddingTop=
"@dimen/platform_dp_8"
android:paddingTop=
"@dimen/platform_dp_8"
android:paddingBottom=
"@dimen/platform_dp_10"
android:paddingBottom=
"@dimen/platform_dp_10"
android:paddingLeft=
"@dimen/platform_dp_10"
android:background=
"@color/im_white"
android:visibility=
"gone"
>
android:visibility=
"gone"
>
<com.ydl.ydlcommon.view.CircleImageView
<com.ydl.ydlcommon.view.CircleImageView
android:id=
"@+id/small_head_img"
android:id=
"@+id/small_head_img"
android:layout_width=
"@dimen/platform_dp_36"
android:layout_width=
"@dimen/platform_dp_36"
android:layout_height=
"@dimen/platform_dp_36"
android:layout_height=
"@dimen/platform_dp_36"
android:background=
"@drawable/platform_head_place_hold_pic"
>
android:background=
"@drawable/platform_head_place_hold_pic"
</com.ydl.ydlcommon.view.CircleImageView>
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
></com.ydl.ydlcommon.view.CircleImageView>
<RelativeLayout
<RelativeLayout
android:id=
"@+id/rl_help"
android:id=
"@+id/rl_help"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
app:layout_constraintLeft_toRightOf=
"@+id/small_head_img"
android:layout_marginLeft=
"30dp"
android:layout_marginLeft=
"30dp"
>
app:layout_constraintLeft_toRightOf=
"@+id/small_head_img"
>
<TextView
<TextView
android:id=
"@+id/help_num_tv"
android:id=
"@+id/help_num_tv"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
tools:text=
"2648
"
android:layout_centerHorizontal=
"true
"
android:fontFamily=
"@font/platform_dincond_bold"
android:fontFamily=
"@font/platform_dincond_bold"
android:textColor=
"@color/im_color_242424"
android:textColor=
"@color/im_color_242424"
android:layout_centerHorizontal=
"true"
android:textSize=
"@dimen/platform_dp_20"
android:textSize=
"@dimen/platform_dp_20"
/>
tools:text=
"2648"
/>
<TextView
<TextView
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"帮助人数"
android:layout_alignParentBottom=
"true"
android:layout_alignParentBottom=
"true"
android:layout_centerHorizontal=
"true"
android:layout_centerHorizontal=
"true"
android:text=
"帮助人数"
android:textColor=
"@color/platform_color_999999"
android:textColor=
"@color/platform_color_999999"
android:textSize=
"@dimen/platform_dp_10"
android:textSize=
"@dimen/platform_dp_10"
/>
/>
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
<RelativeLayout
android:id=
"@+id/rl_good"
android:id=
"@+id/rl_good"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
app:layout_constraintRight_toRightOf=
"parent"
android:layout_marginRight=
"30dp"
android:layout_marginRight=
"30dp"
>
app:layout_constraintRight_toRightOf=
"parent"
>
<TextView
<TextView
android:id=
"@+id/good_num_tv"
android:id=
"@+id/good_num_tv"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
tools:text=
"99.9%
"
android:layout_centerHorizontal=
"true
"
android:fontFamily=
"@font/platform_dincond_bold"
android:fontFamily=
"@font/platform_dincond_bold"
android:textColor=
"@color/im_color_242424"
android:textColor=
"@color/im_color_242424"
android:layout_centerHorizontal=
"true"
android:textSize=
"@dimen/platform_dp_20"
android:textSize=
"@dimen/platform_dp_20"
/>
tools:text=
"99.9%"
/>
<TextView
<TextView
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"好评率"
android:layout_alignParentBottom=
"true"
android:layout_alignParentBottom=
"true"
android:layout_centerHorizontal=
"true"
android:layout_centerHorizontal=
"true"
android:text=
"好评率"
android:textColor=
"@color/platform_color_999999"
android:textColor=
"@color/platform_color_999999"
android:textSize=
"@dimen/platform_dp_10"
android:textSize=
"@dimen/platform_dp_10"
/>
/>
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
<RelativeLayout
...
@@ -174,40 +115,76 @@
...
@@ -174,40 +115,76 @@
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
app:layout_constraintLeft_toRightOf=
"@+id/rl_help"
app:layout_constraintLeft_toRightOf=
"@+id/rl_help"
app:layout_constraintRight_toLeftOf=
"@+id/rl_good"
>
app:layout_constraintRight_toLeftOf=
"@+id/rl_good"
>
<TextView
<TextView
android:id=
"@+id/server_num_tv"
android:id=
"@+id/server_num_tv"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
tools:text=
"1634
"
android:layout_centerHorizontal=
"true
"
android:fontFamily=
"@font/platform_dincond_bold"
android:fontFamily=
"@font/platform_dincond_bold"
android:textColor=
"@color/im_color_242424"
android:textColor=
"@color/im_color_242424"
android:layout_centerHorizontal=
"true"
android:textSize=
"@dimen/platform_dp_20"
android:textSize=
"@dimen/platform_dp_20"
/>
tools:text=
"1634"
/>
<TextView
<TextView
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"服务时长 (小时)"
android:layout_alignParentBottom=
"true"
android:layout_alignParentBottom=
"true"
android:layout_centerHorizontal=
"true"
android:layout_centerHorizontal=
"true"
android:text=
"服务时长 (小时)"
android:textColor=
"@color/platform_color_999999"
android:textColor=
"@color/platform_color_999999"
android:textSize=
"@dimen/platform_dp_10"
android:textSize=
"@dimen/platform_dp_10"
/>
/>
</RelativeLayout>
</RelativeLayout>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
</LinearLayout>
<LinearLayout
</RelativeLayout>
android:id=
"@+id/comment_banner_view_ll"
android:layout_width=
"match_parent"
android:layout_height=
"37dp"
android:background=
"#ffffff"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
android:paddingLeft=
"5dp"
android:paddingRight=
"10dp"
android:visibility=
"gone"
>
</android.support.design.widget.AppBarLayout>
<TextView
android:layout_width=
"46dp"
android:layout_height=
"20dp"
android:gravity=
"center"
android:textColor=
"#1DA1F2"
android:textSize=
"12dp"
tools:background=
"@drawable/im_focus_btn_bg"
tools:text=
"关注"
/>
<RelativeLayout
<com.yidianling.uikit.business.session.view.ImCommentBannerView
android:layout_width=
"match_parent"
android:id=
"@+id/comment_banner_view"
android:layout_height=
"match_parent"
android:layout_width=
"0dp"
android:orientation=
"vertical"
android:layout_height=
"wrap_content"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
>
android:layout_weight=
"1"
></com.yidianling.uikit.business.session.view.ImCommentBannerView>
<!--快捷按钮-->
<TextView
android:id=
"@+id/tv_all_comment_desc"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:lines=
"1"
android:textColor=
"#1DA1F2"
android:textSize=
"12dp"
tools:text=
"评价(18714)"
/>
<ImageView
android:id=
"@+id/tv_all_comment_go"
android:layout_width=
"4dp"
android:layout_height=
"8dp"
android:layout_marginLeft=
"8dp"
android:scaleType=
"fitXY"
android:src=
"@drawable/im_comment_list_right_icon"
/>
</LinearLayout>
</LinearLayout>
<!-- 客服小壹 三个快捷按钮 -->
<FrameLayout
<FrameLayout
android:id=
"@+id/quick_fl"
android:id=
"@+id/quick_fl"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
@@ -306,12 +283,18 @@
...
@@ -306,12 +283,18 @@
</FrameLayout>
</FrameLayout>
</LinearLayout>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<!-- 未支付订单提醒等 -->
<RelativeLayout
<RelativeLayout
android:id=
"@+id/rl_contain"
android:id=
"@+id/rl_contain"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
tools:layout_height=
"50dp"
tools:layout_height=
"50dp"
>
android:layout_below=
"@+id/quick_fl"
>
</RelativeLayout>
</RelativeLayout>
...
@@ -320,33 +303,33 @@
...
@@ -320,33 +303,33 @@
style=
"@style/list_view"
style=
"@style/list_view"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:layout_below=
"@+id/rl_contain"
android:cacheColorHint=
"@android:color/transparent"
android:cacheColorHint=
"@android:color/transparent"
android:divider=
"@null"
android:divider=
"@null"
android:fadingEdge=
"none"
android:fadingEdge=
"none"
android:focusable=
"false"
android:layout_below=
"@+id/rl_contain"
android:listSelector=
"@android:color/transparent"
android:listSelector=
"@android:color/transparent"
android:scrollbars=
"vertical"
/>
android:scrollbars=
"vertical"
/>
<!--右边的两个快捷回复按钮-->
<RelativeLayout
<RelativeLayout
android:id=
"@+id/lin_actions"
android:id=
"@+id/lin_actions"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_
gravity=
"right
"
android:layout_
below=
"@+id/rl_contain
"
android:layout_alignParentRight=
"true"
android:layout_alignParentRight=
"true"
android:layout_alignTop=
"@+id/messageListView"
android:layout_gravity=
"right"
android:layout_marginRight=
"@dimen/platform_dp_10"
android:layout_marginTop=
"10dp"
android:layout_marginTop=
"10dp"
android:layout_marginRight=
"@dimen/platform_dp_10"
android:visibility=
"visible"
>
android:visibility=
"visible"
>
<RelativeLayout
<RelativeLayout
android:id=
"@+id/rela_qingsu"
android:id=
"@+id/rela_qingsu"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"36dp"
android:layout_height=
"36dp"
android:paddingLeft=
"14dp"
android:background=
"@drawable/im_bg_im_confide_action"
android:paddingRight=
"17dp"
android:gravity=
"center"
android:gravity=
"center"
android:background=
"@drawable/im_bg_im_confide_action"
>
android:paddingLeft=
"14dp"
android:paddingRight=
"17dp"
>
<ImageView
<ImageView
...
@@ -360,10 +343,10 @@
...
@@ -360,10 +343,10 @@
android:id=
"@+id/action_qingshu"
android:id=
"@+id/action_qingshu"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:layout_toRightOf=
"@+id/action_qingshu_img"
android:gravity=
"center"
android:gravity=
"center"
android:text=
"即时倾诉"
android:paddingLeft=
"5dp"
android:paddingLeft=
"5dp"
android:
layout_toRightOf=
"@+id/action_qingshu_img
"
android:
text=
"即时倾诉
"
android:textColor=
"@color/platform_google_blue"
android:textColor=
"@color/platform_google_blue"
android:textSize=
"12dp"
android:textSize=
"12dp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
...
@@ -374,12 +357,12 @@
...
@@ -374,12 +357,12 @@
android:id=
"@+id/rela_zixun"
android:id=
"@+id/rela_zixun"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"36dp"
android:layout_height=
"36dp"
android:paddingLeft=
"17dp"
android:paddingRight=
"14dp"
android:layout_toRightOf=
"@+id/rela_qingsu"
android:layout_marginLeft=
"-4dp"
android:layout_marginLeft=
"-4dp"
android:layout_toRightOf=
"@+id/rela_qingsu"
android:background=
"@drawable/im_bg_im_confide_action"
android:gravity=
"center"
android:gravity=
"center"
android:background=
"@drawable/im_bg_im_confide_action"
>
android:paddingLeft=
"17dp"
android:paddingRight=
"14dp"
>
<TextView
<TextView
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
...
@@ -406,10 +389,10 @@
...
@@ -406,10 +389,10 @@
android:id=
"@+id/action_yuyue"
android:id=
"@+id/action_yuyue"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:layout_toRightOf=
"@+id/img_zixun"
android:gravity=
"center"
android:gravity=
"center"
android:text=
"预约咨询"
android:paddingLeft=
"5dp"
android:paddingLeft=
"5dp"
android:
layout_toRightOf=
"@+id/img_zixun
"
android:
text=
"预约咨询
"
android:textColor=
"@color/platform_google_green"
android:textColor=
"@color/platform_google_green"
android:textSize=
"12dp"
android:textSize=
"12dp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
...
@@ -420,7 +403,8 @@
...
@@ -420,7 +403,8 @@
</RelativeLayout>
</RelativeLayout>
</android.support.design.widget.CoordinatorLayout>
</LinearLayout>
<FrameLayout
<FrameLayout
android:id=
"@+id/layoutPlayAudio"
android:id=
"@+id/layoutPlayAudio"
...
@@ -485,14 +469,14 @@
...
@@ -485,14 +469,14 @@
android:layout_marginTop=
"58dp"
android:layout_marginTop=
"58dp"
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
<!-- 快捷回复-->
<!--
常见问题
快捷回复-->
<RelativeLayout
<RelativeLayout
android:id=
"@+id/rl_common_question"
android:id=
"@+id/rl_common_question"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"42dp"
android:layout_height=
"42dp"
android:paddingRight=
"13dp"
android:layout_gravity=
"bottom"
android:layout_gravity=
"bottom"
android:background=
"@drawable/im_background_chat_common_question"
>
android:background=
"@drawable/im_background_chat_common_question"
android:paddingRight=
"13dp"
>
<TextView
<TextView
android:id=
"@+id/tv_open_common_question"
android:id=
"@+id/tv_open_common_question"
...
@@ -515,6 +499,7 @@
...
@@ -515,6 +499,7 @@
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
<include
layout=
"@layout/im_nim_message_activity_bottom_layout"
/>
<include
layout=
"@layout/im_nim_message_activity_bottom_layout"
/>
</LinearLayout>
</LinearLayout>
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