Commit aaf081b2 by 徐健

修复最后一条消息被隐藏的问题

parent 21900601
...@@ -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"]
......
...@@ -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")
......
...@@ -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()
} }
} }
ext { ext {
kotlin_version = "1.3.21" kotlin_version = "1.3.21"
dev_mode = false dev_mode = true
ydl_app = [ ydl_app = [
appName : "心理咨询壹点灵", appName : "心理咨询壹点灵",
......
...@@ -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,
......
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(0f, 1f);
anim_out.setDuration(300);
anim_in = newAnimation(1f, 0f);
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);
......
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
...@@ -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位 相关
......
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
package com.yidianling.im.api.bean
/**
* 评论细节bean
*/
class ImCommendDetailBean {
var nickName: String = ""
var commentContent: String = ""
var commentUrl: String = ""
}
\ No newline at end of file
<?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
<?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
<?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
<?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>
<?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
<?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,196 +18,173 @@ ...@@ -18,196 +18,173 @@
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_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout <LinearLayout
android:id="@+id/appbar" android:id="@+id/top_view_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:elevation="0dp"> android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout <!-- 专家信息 -->
<LinearLayout
android:id="@+id/top_expert_info_ll"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways"> android:orientation="vertical">
<RelativeLayout
<android.support.constraint.ConstraintLayout
android:id="@+id/top_expert_info_cl"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="56dp"
android:layout_below="@+id/line" android:background="@color/im_white"
android:background="#ffffff" android:paddingLeft="@dimen/platform_dp_10"
android:paddingTop="@dimen/platform_dp_8"
android:paddingBottom="@dimen/platform_dp_10"
android:visibility="gone"> android:visibility="gone">
<com.yidianling.nimbase.common.ui.imageview.CircleImageView <com.ydl.ydlcommon.view.CircleImageView
android:id="@+id/info_head" android:id="@+id/small_head_img"
android:layout_width="30dp" android:layout_width="@dimen/platform_dp_36"
android:layout_height="30dp" android:layout_height="@dimen/platform_dp_36"
android:layout_margin="10dp" /> android:background="@drawable/platform_head_place_hold_pic"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"></com.ydl.ydlcommon.view.CircleImageView>
<TextView <RelativeLayout
android:id="@+id/info_name" android:id="@+id/rl_help"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_marginTop="6dp" android:layout_marginLeft="30dp"
android:layout_toRightOf="@+id/info_head" app:layout_constraintLeft_toRightOf="@+id/small_head_img">
android:text="预约咨询" />
<TextView <TextView
android:id="@+id/info_money" android:id="@+id/help_num_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:fontFamily="@font/platform_dincond_bold"
android:textColor="@color/im_color_242424"
android:textSize="@dimen/platform_dp_20"
tools:text="2648" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="帮助人数"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_10" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_good"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_below="@+id/info_name" android:layout_marginRight="30dp"
android:layout_toRightOf="@+id/info_head" app:layout_constraintRight_toRightOf="parent">
android:text="200"
android:textColor="#ff8800"
android:textSize="16sp" />
<TextView <TextView
android:id="@+id/good_num_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:fontFamily="@font/platform_dincond_bold"
android:textColor="@color/im_color_242424"
android:textSize="@dimen/platform_dp_20"
tools:text="99.9%" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="好评率"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_10" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_server"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent"
app:layout_constraintLeft_toRightOf="@+id/rl_help"
app:layout_constraintRight_toLeftOf="@+id/rl_good">
<TextView
android:id="@+id/server_num_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:fontFamily="@font/platform_dincond_bold"
android:textColor="@color/im_color_242424"
android:textSize="@dimen/platform_dp_20"
tools:text="1634" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="服务时长 (小时)"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_10" />
</RelativeLayout>
</android.support.constraint.ConstraintLayout>
<LinearLayout
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">
<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="关注" />
<com.yidianling.uikit.business.session.view.ImCommentBannerView
android:id="@+id/comment_banner_view"
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/info_name" android:layout_weight="1"></com.yidianling.uikit.business.session.view.ImCommentBannerView>
android:layout_alignBaseline="@+id/info_money"
android:layout_toRightOf="@+id/info_money"
android:text="元/次"
android:textSize="12sp" />
<TextView <TextView
android:id="@+id/tv_all_comment_desc"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:lines="1"
android:layout_centerVertical="true" android:textColor="#1DA1F2"
android:layout_marginRight="10dp" android:textSize="12dp"
android:background="@drawable/im_shape_green_bg" tools:text="评价(18714)" />
android:padding="5dp"
android:text="立即预约"
android:textColor="#3fca69" />
<ImageView <ImageView
android:layout_width="match_parent" android:id="@+id/tv_all_comment_go"
android:layout_height="1dp" android:layout_width="4dp"
android:layout_below="@+id/info_head" android:layout_height="8dp"
android:background="#EDEDED" /> android:layout_marginLeft="8dp"
</RelativeLayout> android:scaleType="fitXY"
android:src="@drawable/im_comment_list_right_icon" />
<LinearLayout
android:id="@+id/top_expert_info_ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.constraint.ConstraintLayout
android:id="@+id/top_expert_info_cl"
android:layout_width="match_parent"
android:layout_height="56dp"
android:paddingTop="@dimen/platform_dp_8"
android:paddingBottom="@dimen/platform_dp_10"
android:paddingLeft="@dimen/platform_dp_10"
android:background="@color/im_white"
android:visibility="gone">
<com.ydl.ydlcommon.view.CircleImageView
android:id="@+id/small_head_img"
android:layout_width="@dimen/platform_dp_36"
android:layout_height="@dimen/platform_dp_36"
android:background="@drawable/platform_head_place_hold_pic">
</com.ydl.ydlcommon.view.CircleImageView>
<RelativeLayout
android:id="@+id/rl_help"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:layout_constraintLeft_toRightOf="@+id/small_head_img"
android:layout_marginLeft="30dp">
<TextView
android:id="@+id/help_num_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="2648"
android:fontFamily="@font/platform_dincond_bold"
android:textColor="@color/im_color_242424"
android:layout_centerHorizontal="true"
android:textSize="@dimen/platform_dp_20"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="帮助人数"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_10"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_good"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginRight="30dp">
<TextView
android:id="@+id/good_num_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="99.9%"
android:fontFamily="@font/platform_dincond_bold"
android:textColor="@color/im_color_242424"
android:layout_centerHorizontal="true"
android:textSize="@dimen/platform_dp_20"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="好评率"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_10"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_server"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:layout_constraintLeft_toRightOf="@+id/rl_help"
app:layout_constraintRight_toLeftOf="@+id/rl_good">
<TextView
android:id="@+id/server_num_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="1634"
android:fontFamily="@font/platform_dincond_bold"
android:textColor="@color/im_color_242424"
android:layout_centerHorizontal="true"
android:textSize="@dimen/platform_dp_20"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="服务时长 (小时)"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_10"
/>
</RelativeLayout>
</android.support.constraint.ConstraintLayout>
</LinearLayout> </LinearLayout>
</RelativeLayout>
</android.support.design.widget.AppBarLayout>
<RelativeLayout </LinearLayout>
android:layout_width="match_parent" <!-- 客服小壹 三个快捷按钮 -->
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<!--快捷按钮-->
<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>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment