6.9.0
This commit is contained in:
@@ -39,6 +39,7 @@ import io.rong.imkit.widget.adapter.ViewHolder;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.message.SightMessage;
|
||||
import io.rong.message.TextMessage;
|
||||
|
||||
public class MainConversationListAdapter extends ConversationListAdapter {
|
||||
@@ -55,6 +56,11 @@ public class MainConversationListAdapter extends ConversationListAdapter {
|
||||
this.mContext = mContext;
|
||||
}
|
||||
|
||||
public void setSrcList(List<BaseUiConversation> srcList) {
|
||||
this.srcList = srcList;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setOnRefreshListener(OnRecyclerListRefreshListener<List<BaseUiConversation>> onRefreshListener) {
|
||||
this.onRefreshListener = onRefreshListener;
|
||||
}
|
||||
@@ -134,6 +140,13 @@ public class MainConversationListAdapter extends ConversationListAdapter {
|
||||
} else if (holder.getView(R.id.rc_conversation_date) != null) {
|
||||
holder.getView(R.id.rc_conversation_date).setVisibility(View.GONE);
|
||||
}
|
||||
if("0".equals(conversation.mCore.getDraft())){
|
||||
holder.setImageDrawable(R.id.rc_conversation_live_online_icon,mContext.getResources().getDrawable(R.mipmap.msg_online));
|
||||
holder.setText(R.id.rc_conversation_live_online,WordUtil.isNewZh()?"在線":"Online");
|
||||
}else{
|
||||
holder.setImageDrawable(R.id.rc_conversation_live_online_icon,mContext.getResources().getDrawable(R.mipmap.msg_off));
|
||||
holder.setText(R.id.rc_conversation_live_online,WordUtil.isNewZh()?"離線":"Offline");
|
||||
}
|
||||
if (holder.getView(R.id.rc_conversation_live_status) == null || IMLoginManager.get(holder.getContext()).getAnchorB() != 1) {
|
||||
return;
|
||||
}
|
||||
@@ -322,7 +335,12 @@ public class MainConversationListAdapter extends ConversationListAdapter {
|
||||
BaseUiConversation conversation = mDataList.get(id);
|
||||
conversation.mCore.setSentTime(bean.getSentTime());
|
||||
conversation.mCore.setUnreadMessageCount(integer);
|
||||
conversation.mConversationContent = new SpannableString(((TextMessage) bean.getContent()).getContent());
|
||||
if(bean.getContent() instanceof SightMessage){
|
||||
conversation.mConversationContent = new SpannableString(WordUtil.isNewZh()?"[小視頻]":"[Video]");
|
||||
}else{
|
||||
conversation.mConversationContent = new SpannableString(((TextMessage) bean.getContent()).getContent());
|
||||
}
|
||||
|
||||
mDataList.set(id, conversation);
|
||||
notifyItemChanged(id);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
package com.yunbao.common.adapter;
|
||||
|
||||
import static com.yunbao.common.utils.StringUtil.isEmpty;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.bean.MessageChatUserBean;
|
||||
import com.yunbao.common.bean.MsgRecommendBean;
|
||||
import com.yunbao.common.glide.ImgLoader;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.common.views.weight.ClipPathCircleImage;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by cxf on 2019/4/22.
|
||||
*/
|
||||
|
||||
public class MsgRecommendAdapter extends RecyclerView.Adapter<MsgRecommendAdapter.Vh> {
|
||||
|
||||
private Context mContext;
|
||||
private List<MsgRecommendBean> mList;
|
||||
private LayoutInflater mInflater;
|
||||
|
||||
public MsgRecommendAdapter.onItemSayHi onItemSayHi;
|
||||
|
||||
public void setOnItemSayHi(onItemSayHi onItemSayHi) {
|
||||
this.onItemSayHi = onItemSayHi;
|
||||
}
|
||||
|
||||
public MsgRecommendAdapter(Context context, List<MsgRecommendBean> list) {
|
||||
mContext = context;
|
||||
mInflater = LayoutInflater.from(context);
|
||||
mList = list;
|
||||
}
|
||||
|
||||
public void setDataCollection(List<MsgRecommendBean> data) {
|
||||
if (data == null) {
|
||||
data = new ArrayList();
|
||||
}
|
||||
this.mList = data;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Vh onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
return new Vh(mInflater.inflate(R.layout.msg_main_recommend_item, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull Vh holder, @SuppressLint("RecyclerView") int position) {
|
||||
if (isEmpty() || mList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
ImgLoader.display(holder.itemView.getContext(), mList.get(position).getAvatar(), holder.mAvatar);
|
||||
holder.rc_conversation_title.setText(mList.get(position).getUser_nicename());
|
||||
holder.sayHi.setText(mList.get(position).isSayHi()? (WordUtil.isNewZh()?"已打招呼":"Said Hallo"):(WordUtil.isNewZh()?"打招呼":"Greet"));
|
||||
holder.sayHi.setBackground(mList.get(position).isSayHi()? mContext.getDrawable(R.drawable.bg_msg_recommended):mContext.getDrawable(R.drawable.bg_msg_recommend));
|
||||
holder.sayHi.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if(onItemSayHi!=null){
|
||||
onItemSayHi.onSayHi(mList.get(position),position);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mList.size();
|
||||
}
|
||||
|
||||
class Vh extends RecyclerView.ViewHolder {
|
||||
private ClipPathCircleImage mAvatar;
|
||||
private TextView rc_conversation_title;
|
||||
private TextView sayHi;
|
||||
|
||||
public Vh(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
mAvatar = itemView.findViewById(R.id.avatar);
|
||||
rc_conversation_title = itemView.findViewById(R.id.rc_conversation_title);
|
||||
sayHi = itemView.findViewById(R.id.sayHi);
|
||||
}
|
||||
}
|
||||
|
||||
public interface onItemSayHi{
|
||||
void onSayHi(MsgRecommendBean model,int position);
|
||||
}
|
||||
}
|
||||
@@ -54,6 +54,16 @@ public class HomeUserInfoBean extends BaseModel {
|
||||
|
||||
private String rong_online;
|
||||
|
||||
private String type;
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getRong_online() {
|
||||
return rong_online;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.yunbao.common.bean;
|
||||
/**
|
||||
* 消息列表用户在线状态
|
||||
*/
|
||||
public class MsgOnlineStatusBean {
|
||||
private String id;
|
||||
private String online;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getOnline() {
|
||||
return online;
|
||||
}
|
||||
|
||||
public void setOnline(String online) {
|
||||
this.online = online;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.yunbao.common.bean;
|
||||
|
||||
/**
|
||||
* 消息-推荐消息
|
||||
*/
|
||||
public class MsgRecommendBean {
|
||||
private String id;
|
||||
private String avatar;
|
||||
private String user_login;
|
||||
private String user_nicename;
|
||||
private String langue;
|
||||
private String online;
|
||||
private boolean sayHi = false;
|
||||
|
||||
public boolean isSayHi() {
|
||||
return sayHi;
|
||||
}
|
||||
|
||||
public void setSayHi(boolean sayHi) {
|
||||
this.sayHi = sayHi;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getAvatar() {
|
||||
return avatar;
|
||||
}
|
||||
|
||||
public void setAvatar(String avatar) {
|
||||
this.avatar = avatar;
|
||||
}
|
||||
|
||||
public String getUser_login() {
|
||||
return user_login;
|
||||
}
|
||||
|
||||
public void setUser_login(String user_login) {
|
||||
this.user_login = user_login;
|
||||
}
|
||||
|
||||
public String getUser_nicename() {
|
||||
return user_nicename;
|
||||
}
|
||||
|
||||
public void setUser_nicename(String user_nicename) {
|
||||
this.user_nicename = user_nicename;
|
||||
}
|
||||
|
||||
public String getLangue() {
|
||||
return langue;
|
||||
}
|
||||
|
||||
public void setLangue(String langue) {
|
||||
this.langue = langue;
|
||||
}
|
||||
|
||||
public String getOnline() {
|
||||
return online;
|
||||
}
|
||||
|
||||
public void setOnline(String online) {
|
||||
this.online = online;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.yunbao.common.event;
|
||||
|
||||
public class LiveMsgWindowsCloseEvent {
|
||||
public LiveMsgWindowsCloseEvent() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.yunbao.common.event;
|
||||
|
||||
import com.yunbao.common.bean.BaseModel;
|
||||
|
||||
/**
|
||||
* 未读消息整合
|
||||
*/
|
||||
public class MessageIMLiveEvent extends BaseModel {
|
||||
private int number = 0;
|
||||
private int message = 0;
|
||||
|
||||
public int getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public MessageIMLiveEvent setMessage(int message) {
|
||||
this.message = message;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MessageIMLiveEvent(int number) {
|
||||
this.number = number;
|
||||
}
|
||||
|
||||
public int getNumber() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public MessageIMLiveEvent setNumber(int number) {
|
||||
this.number = number;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +1,51 @@
|
||||
package com.yunbao.common.fragment;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.yunbao.common.bean.IMLoginModel;
|
||||
import com.yunbao.common.bean.MainMessageChatListTimer;
|
||||
import com.yunbao.common.bean.MessageChatUserBean;
|
||||
import com.yunbao.common.bean.MsgOnlineStatusBean;
|
||||
import com.yunbao.common.http.CommonHttpUtil;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.http.live.LiveNetManager;
|
||||
import com.yunbao.common.interfaces.OnRecyclerListRefreshListener;
|
||||
import com.yunbao.common.adapter.MainConversationListAdapter;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.manager.InstructorRemarkManager;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||
import io.rong.imkit.userinfo.RongUserInfoManager;
|
||||
import io.rong.imkit.widget.refresh.SmartRefreshLayout;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.imlib.model.UserInfo;
|
||||
|
||||
public abstract class AbsMainMessageChatListFragment extends Fragment {
|
||||
private static final String TAG = "全部聊天";
|
||||
public RecyclerView recyclerView;
|
||||
public MainConversationListAdapter mAdapter;
|
||||
public SmartRefreshLayout refreshLayout;
|
||||
@@ -118,6 +136,45 @@ public abstract class AbsMainMessageChatListFragment extends Fragment {
|
||||
});
|
||||
}
|
||||
|
||||
public void loadLiveOnlineStatus(List<BaseUiConversation> srcList, OnRecyclerListRefreshListener<List<BaseUiConversation>> onRefreshListener){
|
||||
List<String> uids = new ArrayList<>();
|
||||
isNet = true;
|
||||
for (BaseUiConversation conversation : srcList) {
|
||||
map.put(conversation.mCore.getTargetId(), conversation);
|
||||
if (conversation.mCore.getConversationType() == Conversation.ConversationType.PRIVATE) {
|
||||
uids.add(conversation.mCore.getTargetId());
|
||||
}
|
||||
}
|
||||
CommonHttpUtil.getUserOnline(String.join(",", uids), new com.yunbao.common.http.HttpCallback() {
|
||||
@Override
|
||||
public void onSuccess(int code, String msg, String[] info) {
|
||||
if(code==0&&info!=null){
|
||||
List<MsgOnlineStatusBean> listUserBean = JSON.parseArray(Arrays.toString(info), MsgOnlineStatusBean.class);
|
||||
for (int i = 0; i <srcList.size(); i++) {
|
||||
srcList.get(i).mCore.setDraft(listUserBean.get(i).getOnline());
|
||||
}
|
||||
onRefreshListener.onFinish(srcList);
|
||||
isNet = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static String toStringWithComma(String[] array) {
|
||||
if (array == null || array.length == 0) {
|
||||
return "";
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < array.length; i++) {
|
||||
sb.append(array[i]);
|
||||
if (i < array.length - 1) {
|
||||
sb.append(",");
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void sendMessage(io.rong.imlib.model.Message bean) {
|
||||
int id1 = mAdapter.getMessageId(bean.getSenderUserId());
|
||||
|
||||
@@ -10,11 +10,8 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.adapter.MainConversationListAdapter;
|
||||
import com.yunbao.common.utils.DpUtil;
|
||||
import com.yunbao.common.utils.L;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
@@ -119,7 +116,6 @@ public class MainMessageChatFragment extends ConversationListFragment {
|
||||
}
|
||||
list.addAll(data);
|
||||
getChatRecordList(list, search);
|
||||
L.eSw(new Gson().toJson(list));
|
||||
}
|
||||
|
||||
private void getChatRecordList(List<BaseUiConversation> list, String search) {
|
||||
|
||||
@@ -1,27 +1,44 @@
|
||||
package com.yunbao.common.fragment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.bean.MessageChatUserBean;
|
||||
import com.yunbao.common.event.MessageIMLiveEvent;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.http.live.LiveNetManager;
|
||||
import com.yunbao.common.interfaces.OnRecyclerListRefreshListener;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.manager.InstructorRemarkManager;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.utils.L;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||
import io.rong.imkit.userinfo.RongUserInfoManager;
|
||||
import io.rong.imkit.widget.refresh.api.RefreshLayout;
|
||||
import io.rong.imkit.widget.refresh.listener.OnLoadMoreListener;
|
||||
import io.rong.imkit.widget.refresh.listener.OnRefreshListener;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.imlib.model.UserInfo;
|
||||
|
||||
public class MainMessageChatListFragment extends AbsMainMessageChatListFragment {
|
||||
private static final String TAG = "MainMessageChatListFragment";
|
||||
@@ -33,20 +50,20 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
L.eSw("111111");
|
||||
return inflater.inflate(R.layout.fragment_main_message_chat_list, container, false);
|
||||
}
|
||||
|
||||
MainMessageChatFragment conversationListFragment;
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
Log.i(TAG, "onViewCreated: 准备创建融云");
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
conversationListFragment = new MainMessageChatFragment();
|
||||
setAdapter(conversationListFragment.getAdapter());
|
||||
FragmentManager manager = ((FragmentActivity) mContext).getSupportFragmentManager();
|
||||
FragmentManager manager = getChildFragmentManager();
|
||||
FragmentTransaction transaction = manager.beginTransaction();
|
||||
transaction.replace(view.findViewById(R.id.container).getId(), conversationListFragment);
|
||||
transaction.replace(R.id.container, conversationListFragment);
|
||||
transaction.commitAllowingStateLoss();
|
||||
//自定义空数据背景View
|
||||
//conversationListFragment.setEmptyView(emptyView);
|
||||
@@ -60,10 +77,95 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment
|
||||
public void onFinish(Map<String, Integer> stringIntegerMap) {
|
||||
conversationListFragment.getAdapter().setTimerMap(stringIntegerMap);
|
||||
updateList();
|
||||
loadLiveOnlineStatus(baseUiConversations, new OnRecyclerListRefreshListener<List<BaseUiConversation>>() {
|
||||
@Override
|
||||
public void onFinish(List<BaseUiConversation> baseUiConversations) {
|
||||
conversationListFragment.getAdapter().setSrcList(baseUiConversations);
|
||||
}
|
||||
});
|
||||
int count=0;
|
||||
for (int i = 0; i <baseUiConversations.size(); i++) {
|
||||
count = count+ baseUiConversations.get(i).getUnreadMessageCount();
|
||||
}
|
||||
Bus.get().post(new MessageIMLiveEvent(baseUiConversations.size()));
|
||||
|
||||
}
|
||||
});
|
||||
List<String> uids = new ArrayList<>();
|
||||
for (BaseUiConversation conversation : baseUiConversations) {
|
||||
map.put(conversation.mCore.getTargetId(), conversation);
|
||||
if (conversation.mCore.getConversationType() == Conversation.ConversationType.PRIVATE) {
|
||||
uids.add(conversation.mCore.getTargetId());
|
||||
}
|
||||
}
|
||||
getUserInfo(uids);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void getUserInfo(List<String> uidList) {
|
||||
String uids = String.join(",", uidList);
|
||||
LiveNetManager.get(getContext())
|
||||
.getOtherList(uids, new HttpCallback<List<MessageChatUserBean>>() {
|
||||
@Override
|
||||
public void onSuccess(List<MessageChatUserBean> data) {
|
||||
List<BaseUiConversation> list = new ArrayList<>();
|
||||
for (MessageChatUserBean datum : data) {
|
||||
Conversation conversation = new Conversation();
|
||||
BaseUiConversation baseUiConversation = new SingleConversation(getContext(), conversation);
|
||||
baseUiConversation.mCore.setTargetId(datum.getId());
|
||||
baseUiConversation.mCore.setSenderUserId(IMLoginManager.get(getContext()).getUserInfo().getId() + "");
|
||||
baseUiConversation.mCore.setSentStatus(Message.SentStatus.CANCELED);
|
||||
baseUiConversation.mCore.setSentTime(-1);
|
||||
baseUiConversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE);
|
||||
baseUiConversation.mCore.setPortraitUrl(datum.getAvatar());
|
||||
String remark = InstructorRemarkManager.get(getContext()).getInstructorRemark().get(datum.getId());
|
||||
baseUiConversation.mCore.setConversationTitle(StringUtil.isEmpty(remark) ? datum.getUserNiceName() : remark);
|
||||
|
||||
list.add(baseUiConversation);
|
||||
|
||||
UserInfo userInfo = new UserInfo(baseUiConversation.mCore.getTargetId(),
|
||||
baseUiConversation.mCore.getConversationTitle(),
|
||||
Uri.parse(baseUiConversation.mCore.getPortraitUrl()));
|
||||
RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo);
|
||||
}
|
||||
if (!list.isEmpty()) {
|
||||
List<BaseUiConversation> srcList = new ArrayList<>(mAdapter.getSrcList());
|
||||
srcList.addAll(list);
|
||||
Log.i(TAG, "onSuccess: 增加用户数:" + list.size() + "||总用户数:" + srcList.size());
|
||||
for (BaseUiConversation conversation : srcList) {
|
||||
Log.i(TAG, "onSuccess: 用户id:" + conversation.mCore.getTargetId() + "||用户名:" + conversation.mCore.getConversationTitle() + "||用户头像:" + conversation.mCore.getPortraitUrl());
|
||||
}
|
||||
int position = 0;
|
||||
try {
|
||||
position = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
mAdapter.setDataCollection(srcList);
|
||||
//mAdapter.onFinish();
|
||||
recyclerView.scrollToPosition(position);
|
||||
}
|
||||
onRefreshFinished();
|
||||
onLoadMoreFinished();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
onLoadMoreFinished();
|
||||
onRefreshFinished();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
L.eSw("222222");
|
||||
Log.i(TAG, "onViewCreated: 准备创建融云");
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,51 +1,131 @@
|
||||
package com.yunbao.common.fragment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.adapter.MainConversationListAdapter;
|
||||
import com.yunbao.common.utils.L;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.adapter.MsgRecommendAdapter;
|
||||
import com.yunbao.common.bean.MsgRecommendBean;
|
||||
import com.yunbao.common.http.CommonHttpUtil;
|
||||
import com.yunbao.common.http.HttpCallback;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import io.rong.imkit.conversationlist.ConversationListAdapter;
|
||||
import io.rong.imkit.conversationlist.ConversationListFragment;
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||
import io.rong.imkit.event.Event;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.SearchConversationResult;
|
||||
import io.rong.imkit.widget.refresh.SmartRefreshLayout;
|
||||
import io.rong.imkit.widget.refresh.api.RefreshLayout;
|
||||
import io.rong.imkit.widget.refresh.listener.OnLoadMoreListener;
|
||||
import io.rong.imkit.widget.refresh.listener.OnRefreshListener;
|
||||
import io.rong.imkit.widget.refresh.wrapper.RongRefreshHeader;
|
||||
|
||||
public class MainMessageRecommendFragment extends ConversationListFragment {
|
||||
public class MainMessageRecommendFragment extends AbsMainMessageChatListFragment {
|
||||
SmartRefreshLayout mRefreshLayout;
|
||||
RecyclerView mList;
|
||||
Context mContext;
|
||||
MsgRecommendAdapter adapter;
|
||||
List<MsgRecommendBean> list = new ArrayList<>();
|
||||
|
||||
@Nullable
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.msg_main_recommend_list_fragment, container, false);
|
||||
}
|
||||
|
||||
public MainMessageRecommendFragment(Context context) {
|
||||
this.mContext = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
initView(view);
|
||||
initRefreshView();
|
||||
initData();
|
||||
}
|
||||
|
||||
private void initView(View view) {
|
||||
mRefreshLayout = view.findViewById(R.id.rc_refresh);
|
||||
mList = view.findViewById(R.id.rc_conversation_list);
|
||||
LinearLayoutManager layoutManager = new LinearLayoutManager(this.getActivity());
|
||||
mList.setLayoutManager(layoutManager);
|
||||
mList.setItemViewCacheSize(0);
|
||||
}
|
||||
|
||||
protected void initRefreshView() {
|
||||
mRefreshLayout.setNestedScrollingEnabled(false);
|
||||
mRefreshLayout.setRefreshHeader(new RongRefreshHeader(getContext()));
|
||||
mRefreshLayout.setRefreshFooter(new RongRefreshHeader(getContext()));
|
||||
mRefreshLayout.setEnableLoadMore(false);
|
||||
mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
|
||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||
initData();
|
||||
}
|
||||
});
|
||||
mRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
|
||||
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
|
||||
|
||||
}
|
||||
});
|
||||
adapter = new MsgRecommendAdapter(mContext,list);
|
||||
mList.setAdapter(adapter);
|
||||
adapter.setOnItemSayHi(new MsgRecommendAdapter.onItemSayHi() {
|
||||
@Override
|
||||
public void onSayHi(MsgRecommendBean model,int position) {
|
||||
if (model.isSayHi()) {
|
||||
return;
|
||||
}
|
||||
CommonHttpUtil.sayHi(model.getId(), new HttpCallback() {
|
||||
@Override
|
||||
public void onSuccess(int code, String msg, String[] info) {
|
||||
if (code == 0) {
|
||||
list.get(position).setSayHi(true);
|
||||
adapter.notifyItemChanged(position);
|
||||
}
|
||||
ToastUtil.show(msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initData() {
|
||||
CommonHttpUtil.getMainMsgRecommend(new HttpCallback() {
|
||||
@Override
|
||||
public void onSuccess(int code, String msg, String[] info) {
|
||||
if (code == 0 && info != null) {
|
||||
list = JSON.parseArray(Arrays.toString(info), MsgRecommendBean.class);
|
||||
adapter.setDataCollection(list);
|
||||
mRefreshLayout.finishRefresh(true);
|
||||
} else {
|
||||
ToastUtil.show(msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChatList() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void search(String string) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateList() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -685,6 +685,39 @@ public class CommonHttpUtil {
|
||||
.params("dynamic_id", dynamic_id)
|
||||
.execute(callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取打招呼推荐列表
|
||||
*/
|
||||
public static void getMainMsgRecommend(HttpCallback callback) {
|
||||
HttpClient.getInstance().get("Pdluser.getRecommendUser", "Pdluser.getRecommendUser")
|
||||
.execute(callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* 打招呼
|
||||
* @param toUid
|
||||
* @param callback
|
||||
*/
|
||||
public static void sayHi(String toUid,HttpCallback callback) {
|
||||
HttpClient.getInstance().get("Pdluser.liveCall", "Pdluser.liveCall")
|
||||
.params("target_uid",toUid)
|
||||
.params("behavior_type","5")
|
||||
.execute(callback);
|
||||
}
|
||||
|
||||
/**
|
||||
*获取聊天列表用户在线状态
|
||||
* @param toUid
|
||||
* @param callback
|
||||
*/
|
||||
public static void getUserOnline(String toUid,HttpCallback callback) {
|
||||
HttpClient.getInstance().get("Pdluser.getUserOnline", "Pdluser.getUserOnline")
|
||||
.params("uids",toUid)
|
||||
.execute(callback);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.yunbao.common.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.makeramen.roundedimageview.RoundedImageView;
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.bean.MsgRecommendBean;
|
||||
import com.yunbao.common.bean.playerObject;
|
||||
import com.yunbao.common.glide.ImgLoader;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.common.views.weight.ClipPathCircleImage;
|
||||
|
||||
public class MsgCommemdViewHolder extends RecyclerView.ViewHolder {
|
||||
private ClipPathCircleImage mAvatar;
|
||||
private TextView rc_conversation_title;
|
||||
private TextView sayHi;
|
||||
|
||||
public MsgCommemdViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
mAvatar = itemView.findViewById(R.id.avatar);
|
||||
rc_conversation_title = itemView.findViewById(R.id.rc_conversation_title);
|
||||
sayHi = itemView.findViewById(R.id.sayHi);
|
||||
}
|
||||
|
||||
public void setData(MsgRecommendBean model, Context mContext,onItemSayHi onItemSayHi) {
|
||||
ImgLoader.display(itemView.getContext(), model.getAvatar(), mAvatar);
|
||||
rc_conversation_title.setText(model.getUser_nicename());
|
||||
sayHi.setText(model.isSayHi()? (WordUtil.isNewZh()?"已打招呼":"Said Hallo"):(WordUtil.isNewZh()?"打招呼":"Greet"));
|
||||
sayHi.setBackground(model.isSayHi()? mContext.getDrawable(R.drawable.bg_msg_recommended):mContext.getDrawable(R.drawable.bg_msg_recommend));
|
||||
sayHi.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if(onItemSayHi!=null){
|
||||
onItemSayHi.onSayHi(model);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public interface onItemSayHi{
|
||||
void onSayHi(MsgRecommendBean model);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.yunbao.common.views;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.lxj.xpopup.core.AttachPopupView;
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
|
||||
public class MsgRecommendPopupView extends AttachPopupView {
|
||||
|
||||
ItemDelListener itemDelListener;
|
||||
|
||||
public MsgRecommendPopupView(@NonNull Context context, ItemDelListener itemDelListener) {
|
||||
super(context);
|
||||
this.itemDelListener = itemDelListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getImplLayoutId() {
|
||||
return R.layout.view_msg_recommend;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate() {
|
||||
//特效设置
|
||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.close), new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
dismiss();
|
||||
itemDelListener.onItemDel();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public interface ItemDelListener {
|
||||
void onItemDel();
|
||||
}
|
||||
}
|
||||
8
common/src/main/res/drawable/backgroud_user_home_msg.xml
Normal file
8
common/src/main/res/drawable/backgroud_user_home_msg.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@color/white" />
|
||||
<stroke
|
||||
android:width="1.2dp"
|
||||
android:color="#EB6FFF" />
|
||||
<corners android:radius="21dp" />
|
||||
</shape>
|
||||
11
common/src/main/res/drawable/bg_msg_recommend.xml
Normal file
11
common/src/main/res/drawable/bg_msg_recommend.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners
|
||||
android:topLeftRadius="15dp"
|
||||
android:topRightRadius="15dp"
|
||||
android:bottomLeftRadius="15dp"
|
||||
android:bottomRightRadius="15dp" />
|
||||
<gradient
|
||||
android:endColor="#FF83C6"
|
||||
android:startColor="#EB6FFF" />
|
||||
</shape>
|
||||
11
common/src/main/res/drawable/bg_msg_recommended.xml
Normal file
11
common/src/main/res/drawable/bg_msg_recommended.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners
|
||||
android:topLeftRadius="15dp"
|
||||
android:topRightRadius="15dp"
|
||||
android:bottomLeftRadius="15dp"
|
||||
android:bottomRightRadius="15dp" />
|
||||
<gradient
|
||||
android:endColor="#D8D8D8"
|
||||
android:startColor="#D8D8D8" />
|
||||
</shape>
|
||||
@@ -213,30 +213,62 @@
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/followLayout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="35dp"
|
||||
android:background="@drawable/bg_main_com_type"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingEnd="10dp">
|
||||
android:orientation="vertical"
|
||||
android:gravity="center_horizontal"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/followIcon"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:src="@mipmap/icon_like_follow" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/followName"
|
||||
<LinearLayout
|
||||
android:id="@+id/followLayout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:text="@string/focus_on"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="14dp"
|
||||
android:textStyle="bold" />
|
||||
android:layout_height="35dp"
|
||||
android:minWidth="90dp"
|
||||
android:background="@drawable/bg_main_com_type"
|
||||
android:gravity="center"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingEnd="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/followIcon"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:src="@mipmap/icon_like_follow" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/followName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:text="@string/focus_on"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="14dp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/msgLayout"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:minWidth="90dp"
|
||||
android:layout_height="35dp"
|
||||
android:background="@drawable/backgroud_user_home_msg"
|
||||
android:gravity="center"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingEnd="10dp">
|
||||
|
||||
<com.flyjingfish.gradienttextviewlib.GradientTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/im_pri_chat"
|
||||
android:textStyle="bold"
|
||||
android:textSize="14dp"
|
||||
app:gradient_angle="45"
|
||||
android:layout_marginLeft="5dp"
|
||||
app:gradient_endColor="#FF83C6"
|
||||
app:gradient_startColor="#EB6FFF" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -529,11 +529,32 @@
|
||||
android:textColor="#FF9A9A9A"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/live_tool_qa"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="23dp"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:src="@mipmap/icon_live_qa" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:text="@string/dialog_live_function_qa"
|
||||
android:textColor="#FF9A9A9A"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/live_tool_call_me"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="invisible"
|
||||
android:layout_marginStart="23dp"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
@@ -566,26 +587,7 @@
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginBottom="20dp">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/live_tool_qa"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:src="@mipmap/icon_live_qa" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:text="@string/dialog_live_function_qa"
|
||||
android:textColor="#FF9A9A9A"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</HorizontalScrollView>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -16,36 +16,12 @@
|
||||
>
|
||||
|
||||
<com.yunbao.common.views.weight.ClipPathCircleImage
|
||||
android:id="@+id/rc_conversation_portrait"
|
||||
android:id="@+id/avatar"
|
||||
android:layout_width="54dp"
|
||||
android:layout_height="54dp"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@mipmap/beauty_jingbai" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/rc_conversation_unread"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentEnd="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/rc_conversation_unread_bg"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:src="@drawable/rc_unread_count_bg_normal" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_unread_count"
|
||||
style="@style/TextStyle.Alignment"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:text="15"
|
||||
android:textColor="@color/rc_white_color"
|
||||
android:textSize="@dimen/rc_font_auxiliary_size" />
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
@@ -57,7 +33,8 @@
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_title"
|
||||
style="@style/TextStyle.Alignment"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxWidth="120dp"
|
||||
@@ -65,25 +42,21 @@
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/rc_text_main_color"
|
||||
android:textSize="@dimen/rc_font_secondary_size"
|
||||
tools:text="张三11111111111111111111111" />
|
||||
tools:text="" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="25dp"
|
||||
android:singleLine="true"
|
||||
android:textSize="8sp"
|
||||
android:visibility="visible"
|
||||
tools:text="在线" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/rc_conversation_status_icon"
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="5dp"
|
||||
android:src="@color/green_81c160"
|
||||
android:layout_marginTop="25dp"
|
||||
android:visibility="visible" />
|
||||
android:id="@+id/sayHi"
|
||||
android:layout_width="51dp"
|
||||
android:layout_height="26dp"
|
||||
android:ellipsize="end"
|
||||
android:background="@drawable/bg_msg_recommend"
|
||||
android:maxWidth="120dp"
|
||||
android:gravity="center"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="11dp"
|
||||
tools:text="打招呼" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:gravity="bottom"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
@@ -11,7 +10,7 @@
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rc_conversation_list"
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
android:id="@+id/rc_conversation_title_layout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginStart="@dimen/rc_margin_size_12"
|
||||
android:orientation="horizontal"
|
||||
app:autoTextEllipsize="@+id/rc_conversation_title"
|
||||
@@ -74,14 +75,40 @@
|
||||
android:maxWidth="120dp"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/rc_text_main_color"
|
||||
android:textSize="@dimen/rc_font_secondary_size"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_portrait_rl"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:textSize="13dp"
|
||||
tools:text="张三11111111111111111111111" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="14dp"
|
||||
android:layout_marginEnd="@dimen/rc_margin_size_12"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_live_online"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:textColor="#AAAAAA"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:textSize="8sp"
|
||||
android:text="在线"
|
||||
android:visibility="visible" />
|
||||
|
||||
<ImageView
|
||||
android:layout_marginLeft="-3dp"
|
||||
android:id="@+id/rc_conversation_live_online_icon"
|
||||
android:layout_width="10dp"
|
||||
android:layout_height="10dp"
|
||||
android:textColor="#EC70FD"
|
||||
android:layout_marginTop="3dp"
|
||||
android:textSize="18sp"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@mipmap/msg_online"
|
||||
android:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_live_status"
|
||||
android:layout_width="wrap_content"
|
||||
@@ -97,25 +124,9 @@
|
||||
android:textColor="#EC70FD"
|
||||
android:textSize="10sp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/rc_conversation_title"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_title"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="看直播10min"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/rc_margin_size_12"
|
||||
android:layout_marginTop="@dimen/rc_margin_size_16"
|
||||
android:singleLine="true"
|
||||
android:textSize="8sp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/rc_conversation_title"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_live_status"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="在线" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -131,7 +142,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="你好,朋友!11111111111111111111111111111111111111111"
|
||||
android:textColor="@color/rc_secondary_color"
|
||||
android:textSize="@dimen/rc_font_text_third_size"
|
||||
android:textSize="13dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_portrait_rl"
|
||||
|
||||
14
common/src/main/res/layout/view_msg_recommend.xml
Normal file
14
common/src/main/res/layout/view_msg_recommend.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:background="@color/transparent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/close"
|
||||
android:src="@mipmap/recommed_msg_bg"
|
||||
android:layout_width="wrap_content"
|
||||
android:scaleType="fitStart"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</FrameLayout>
|
||||
BIN
common/src/main/res/mipmap-b+en+us/recommed_msg_bg.png
Normal file
BIN
common/src/main/res/mipmap-b+en+us/recommed_msg_bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
BIN
common/src/main/res/mipmap-mdpi/msg_off.png
Normal file
BIN
common/src/main/res/mipmap-mdpi/msg_off.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 222 B |
BIN
common/src/main/res/mipmap-mdpi/msg_online.png
Normal file
BIN
common/src/main/res/mipmap-mdpi/msg_online.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 221 B |
BIN
common/src/main/res/mipmap-xxhdpi/recommed_msg_bg.png
Normal file
BIN
common/src/main/res/mipmap-xxhdpi/recommed_msg_bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 39 KiB |
Reference in New Issue
Block a user