update
This commit is contained in:
parent
be02488180
commit
307ec30807
@ -57,7 +57,7 @@ public class EndCallActivity extends AbsOTOActivity {
|
||||
return;
|
||||
}
|
||||
ImgLoader.display(mContext, user.getUser().getAvatar(), avatar);
|
||||
ImgLoader.displayBlur(mContext, user.getUser().getAvatar(), findViewById(R.id.bg), 45);
|
||||
ImgLoader.displayBlur(mContext, user.getUser().getAvatar(), findViewById(R.id.bg), 85);
|
||||
usernameView.setText(user.getUser().getUserNicename());
|
||||
callTimerButton.setText(timer);
|
||||
if (user.getUser().isFollow()) {
|
||||
|
@ -24,6 +24,7 @@ import com.shayu.onetoone.bean.MatchingItemSizeBean;
|
||||
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
||||
import com.shayu.onetoone.dialog.FirstTipsDialog;
|
||||
import com.shayu.onetoone.dialog.TipsDialog;
|
||||
import com.shayu.onetoone.event.HomeBusEvent;
|
||||
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||||
import com.shayu.onetoone.listener.OnDialogClickListener;
|
||||
import com.shayu.onetoone.manager.CallClientManager;
|
||||
@ -118,11 +119,10 @@ public class MainActivity extends AbsOTOActivity {
|
||||
@Override
|
||||
public void onCountChanged(int count) {
|
||||
showRedPoint(count);
|
||||
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_SYSTEM));
|
||||
}
|
||||
});
|
||||
CallClientManager.getManager();
|
||||
//initFirstLoginTips();
|
||||
initFirstLoginTips();
|
||||
}
|
||||
|
||||
private void initFirstLoginTips() {
|
||||
@ -141,6 +141,7 @@ public class MainActivity extends AbsOTOActivity {
|
||||
} else {
|
||||
isShow = false;
|
||||
}
|
||||
Bus.get().post(new HomeBusEvent(HomeBusEvent.TYPE_UPDATE_MATCHING, data.getNum()));
|
||||
if (isShow) {
|
||||
new FirstTipsDialog(mContext)
|
||||
.setHome(isMan)
|
||||
@ -171,8 +172,6 @@ public class MainActivity extends AbsOTOActivity {
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
checkUserInfoIsSet();
|
||||
//测试
|
||||
//RouteManager.forwardChooseActivity();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -203,6 +202,7 @@ public class MainActivity extends AbsOTOActivity {
|
||||
for (OfficialNoticeBean datum : data) {
|
||||
point += datum.getNum();
|
||||
}
|
||||
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_SYSTEM,point + count));
|
||||
//大于0则是通过会话未读监听器获取到的数,则不用再调用获取未读数接口了
|
||||
if (count >= 0) {
|
||||
updateUnreadCount(point + count);
|
||||
|
@ -4,6 +4,7 @@ import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
@ -12,13 +13,24 @@ import com.shayu.onetoone.R;
|
||||
import com.shayu.onetoone.activity.fragments.BaseFragment;
|
||||
import com.shayu.onetoone.adapter.HomeRecommendListAdapter;
|
||||
import com.shayu.onetoone.bean.HomeItemBean;
|
||||
import com.shayu.onetoone.bean.MatchingItemSizeBean;
|
||||
import com.shayu.onetoone.bean.SendConsumeBean;
|
||||
import com.shayu.onetoone.dialog.FirstTipsDialog;
|
||||
import com.shayu.onetoone.event.HomeBusEvent;
|
||||
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||||
import com.shayu.onetoone.listener.OnSendMessageListener;
|
||||
import com.shayu.onetoone.manager.OTONetManager;
|
||||
import com.shayu.onetoone.manager.RouteManager;
|
||||
import com.shayu.onetoone.manager.SendMessageManager;
|
||||
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.interfaces.OnItemClickListener;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -36,20 +48,28 @@ public class RecommendFragment extends BaseFragment {
|
||||
private int page = 1;
|
||||
private boolean isScreen;
|
||||
Bundle screen;
|
||||
View matching;
|
||||
ImageView matching;
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
Bus.getOff(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView(View itemView) {
|
||||
Bus.getOn(this);
|
||||
recyclerView = itemView.findViewById(R.id.recyclerView);
|
||||
mRefreshLayout = itemView.findViewById(R.id.swipeRefreshLayout);
|
||||
top = itemView.findViewById(R.id.btn_top_list);
|
||||
matching=itemView.findViewById(R.id.matching);
|
||||
matching = itemView.findViewById(R.id.matching);
|
||||
adapter = new HomeRecommendListAdapter(getContext());
|
||||
recyclerView.setAdapter(adapter);
|
||||
mRefreshLayout.setNestedScrollingEnabled(false);
|
||||
mRefreshLayout.setRefreshHeader(new RongRefreshHeader(this.getContext()));
|
||||
mRefreshLayout.setRefreshFooter(new RongRefreshHeader(this.getContext()));
|
||||
recyclerView.setEmptyView(itemView.findViewById(R.id.view_empty));
|
||||
recyclerView.setAutoLoadMore(true);
|
||||
mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
|
||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||
page = 1;
|
||||
@ -62,7 +82,7 @@ public class RecommendFragment extends BaseFragment {
|
||||
}
|
||||
});
|
||||
top.setOnClickListener(view -> {
|
||||
recyclerView.scrollToPosition(0);
|
||||
recyclerView.scrollToPosition(0);
|
||||
});
|
||||
matching.setOnClickListener(v -> {
|
||||
SendMessageManager.matching(new OnSendMessageListener() {
|
||||
@ -71,7 +91,7 @@ public class RecommendFragment extends BaseFragment {
|
||||
super.onSuccess(token, bean);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("data", JSONObject.toJSONString(bean));
|
||||
RouteManager.forwardActivity(RouteManager.ACTIVITY_MATCHING,bundle);
|
||||
RouteManager.forwardActivity(RouteManager.ACTIVITY_MATCHING, bundle);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -152,6 +172,7 @@ public class RecommendFragment extends BaseFragment {
|
||||
if (page != 1 && data.isEmpty()) {
|
||||
page--;
|
||||
mRefreshLayout.finishLoadMore();
|
||||
recyclerView.loadMoreFinish(true, false);
|
||||
return;
|
||||
}
|
||||
if (page != 1) {
|
||||
@ -173,4 +194,16 @@ public class RecommendFragment extends BaseFragment {
|
||||
public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.fragment_recommend, container, false);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void event(HomeBusEvent event) {
|
||||
if (event.getType() == HomeBusEvent.TYPE_UPDATE_MATCHING) {
|
||||
int num = event.getMatching();
|
||||
if (num > 0) {
|
||||
matching.setImageResource(R.mipmap.ic_matching_free);
|
||||
} else {
|
||||
matching.setImageResource(R.mipmap.ic_matching);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,11 +29,13 @@ import com.shayu.onetoone.bean.GiftBean;
|
||||
import com.shayu.onetoone.bean.MessageChatAuthContent;
|
||||
import com.shayu.onetoone.bean.MessageChatTipsContent;
|
||||
import com.shayu.onetoone.bean.MessageConsumeConfigBean;
|
||||
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
||||
import com.shayu.onetoone.bean.SendConsumeBean;
|
||||
import com.shayu.onetoone.bean.UserBean;
|
||||
import com.shayu.onetoone.dialog.BottomListDialog;
|
||||
import com.shayu.onetoone.dialog.MsgChatClickDialog;
|
||||
import com.shayu.onetoone.dialog.TipsDialog;
|
||||
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||||
import com.shayu.onetoone.listener.OnDialogClickListener;
|
||||
import com.shayu.onetoone.listener.OnSendMessageListener;
|
||||
import com.shayu.onetoone.manager.CallClientManager;
|
||||
@ -48,12 +50,15 @@ import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.interfaces.ImageResultCallback;
|
||||
import com.yunbao.common.interfaces.OnItemClickListener;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.utils.ProcessImageUtil;
|
||||
import com.yunbao.common.utils.SpUtil;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
@ -81,6 +86,7 @@ import io.rong.message.TextMessage;
|
||||
public class ChatMessageFragment extends AbsConversationFragment {
|
||||
Button mSendBtn;
|
||||
View mInputPanel;
|
||||
View numLayout;
|
||||
EditText mEditText;
|
||||
ImageView img, call, video, gift;
|
||||
ProcessImageUtil cameraUtil;
|
||||
@ -94,6 +100,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
TextView home;
|
||||
ImageView sex;
|
||||
ImageView status;
|
||||
TextView num;
|
||||
Button follow;
|
||||
|
||||
|
||||
@ -101,10 +108,20 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
private static final String TAG = "聊天界面";
|
||||
private MessageConsumeConfigBean configBean;
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
Bus.getOff(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
Bus.getOn(this);
|
||||
targetId = getActivity().getIntent().getStringExtra("targetId");
|
||||
num = findViewById(R.id.num);
|
||||
numLayout = findViewById(R.id.constraintLayout2);
|
||||
numLayout.setVisibility(View.INVISIBLE);
|
||||
initBtn();
|
||||
initChat();
|
||||
initPriceBean();
|
||||
@ -120,8 +137,8 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
}
|
||||
SendMessageManager.sendMessageForText(targetId, mEditText.getText().toString(), new OnSendMessageListener() {
|
||||
@Override
|
||||
public void onSuccess(String token,SendConsumeBean bean) {
|
||||
super.onSuccess(token,bean);
|
||||
public void onSuccess(String token, SendConsumeBean bean) {
|
||||
super.onSuccess(token, bean);
|
||||
ChatMessageFragment.this.token = token;
|
||||
sendText();
|
||||
|
||||
@ -148,6 +165,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
});
|
||||
});
|
||||
updateMyInfo();
|
||||
showRedPoint();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -202,11 +220,11 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
giftPanel.setOnItemClickListener(new OnItemClickListener<GiftBean>() {
|
||||
@Override
|
||||
public void onItemClick(GiftBean bean, int position) {
|
||||
if(call.getTag()!=null){
|
||||
call.setTag(null);
|
||||
call.setImageResource(R.mipmap.ic_msg_call);
|
||||
video.setImageResource(R.mipmap.ic_msg_video);
|
||||
}
|
||||
if (call.getTag() != null) {
|
||||
call.setTag(null);
|
||||
call.setImageResource(R.mipmap.ic_msg_call);
|
||||
video.setImageResource(R.mipmap.ic_msg_video);
|
||||
}
|
||||
}
|
||||
});
|
||||
mVoiceToggleBtn.setOnClickListener(view -> {
|
||||
@ -218,13 +236,13 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
});
|
||||
|
||||
video.setOnClickListener(v -> {
|
||||
if(call.getTag()!=null){
|
||||
if (call.getTag() != null) {
|
||||
return;
|
||||
}
|
||||
checkAuth(new OnSendMessageListener() {
|
||||
@Override
|
||||
public void onSuccess(String token, SendConsumeBean bean) {
|
||||
super.onSuccess(token,bean);
|
||||
super.onSuccess(token, bean);
|
||||
new BottomListDialog(mContext).setSelect(new OnItemClickListener<String>() {
|
||||
@Override
|
||||
public void onItemClick(String bean, int position) {
|
||||
@ -244,19 +262,18 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
super.onError(status, msg);
|
||||
new TipsDialog(mContext)
|
||||
.setTitle("餘額不足")
|
||||
.setContent("與TA視頻聊天每分鐘續消耗"+configBean.getVideoPrice()
|
||||
+"鑽石,您可通過充值獲取更多鑽石,以便繼續聊天")
|
||||
.setContent("與TA視頻聊天每分鐘續消耗" + configBean.getVideoPrice()
|
||||
+ "鑽石,您可通過充值獲取更多鑽石,以便繼續聊天")
|
||||
.setCancelText("離開")
|
||||
.setApplyText("去充值")
|
||||
.showDialog();
|
||||
}
|
||||
});
|
||||
}
|
||||
}).setStrings(Collections.singletonList("发起视频通话\n"+configBean.getVideoPrice()+"钻/分钟"))
|
||||
}).setStrings(Collections.singletonList("发起视频通话\n" + configBean.getVideoPrice() + "钻/分钟"))
|
||||
.showDialog();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -267,13 +284,13 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
});
|
||||
});
|
||||
call.setOnClickListener(v -> {
|
||||
if(call.getTag()!=null){
|
||||
if (call.getTag() != null) {
|
||||
return;
|
||||
}
|
||||
checkAuth(new OnSendMessageListener() {
|
||||
@Override
|
||||
public void onSuccess(String token,SendConsumeBean bean) {
|
||||
super.onSuccess(token,bean);
|
||||
public void onSuccess(String token, SendConsumeBean bean) {
|
||||
super.onSuccess(token, bean);
|
||||
new BottomListDialog(mContext).setSelect(new OnItemClickListener<String>() {
|
||||
@Override
|
||||
public void onItemClick(String bean, int position) {
|
||||
@ -293,8 +310,8 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
super.onError(status, msg);
|
||||
new TipsDialog(mContext)
|
||||
.setTitle("餘額不足")
|
||||
.setContent("與TA语音聊天每分鐘續消耗"+configBean.getMp3Price()
|
||||
+"鑽石,您可通過充值獲取更多鑽石,以便繼續聊天")
|
||||
.setContent("與TA语音聊天每分鐘續消耗" + configBean.getMp3Price()
|
||||
+ "鑽石,您可通過充值獲取更多鑽石,以便繼續聊天")
|
||||
.setCancelText("離開")
|
||||
.setApplyText("去充值")
|
||||
.showDialog();
|
||||
@ -302,7 +319,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
});
|
||||
|
||||
}
|
||||
}).setStrings(Collections.singletonList("发起语音通话\n"+configBean.getMp3Price()+"钻/分钟"))
|
||||
}).setStrings(Collections.singletonList("发起语音通话\n" + configBean.getMp3Price() + "钻/分钟"))
|
||||
.showDialog();
|
||||
}
|
||||
|
||||
@ -323,8 +340,8 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
|
||||
SendMessageManager.sendMessageForText(targetId, "图片信息", new OnSendMessageListener() {
|
||||
@Override
|
||||
public void onSuccess(String token,SendConsumeBean bean) {
|
||||
super.onSuccess(token,bean);
|
||||
public void onSuccess(String token, SendConsumeBean bean) {
|
||||
super.onSuccess(token, bean);
|
||||
ChatMessageFragment.this.token = token;
|
||||
if (isCamera) {
|
||||
cameraUtil.getImageByCamera(false);
|
||||
@ -364,7 +381,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
if (data.getInfo().getName_auth() == 1) {
|
||||
listener.onError(0, "");
|
||||
} else {
|
||||
listener.onSuccess("",null);
|
||||
listener.onSuccess("", null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -419,8 +436,8 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String token,SendConsumeBean bean) {
|
||||
super.onSuccess(token,bean);
|
||||
public void onSuccess(String token, SendConsumeBean bean) {
|
||||
super.onSuccess(token, bean);
|
||||
mEditText.setText("");
|
||||
if (!SpUtil.getInstance().isExists("chat_msg_safe_tip_" + targetId)) {
|
||||
SpUtil.getInstance().setBooleanValue("chat_msg_safe_tip_" + targetId, true);
|
||||
@ -544,8 +561,8 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
} else {
|
||||
sex.setImageResource(R.mipmap.ic_message_tab_woman);
|
||||
}
|
||||
System.out.println("同性別:"+data.getUser().getSex()+"|"+IMLoginManager.get(mContext).getUserInfo().getSex());
|
||||
if(data.getUser().getSex()== IMLoginManager.get(mContext).getUserInfo().getSex()){
|
||||
System.out.println("同性別:" + data.getUser().getSex() + "|" + IMLoginManager.get(mContext).getUserInfo().getSex());
|
||||
if (data.getUser().getSex() == IMLoginManager.get(mContext).getUserInfo().getSex()) {
|
||||
call.setVisibility(View.GONE);
|
||||
video.setVisibility(View.GONE);
|
||||
}
|
||||
@ -562,7 +579,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
if (data.getUser().isFollow()) {
|
||||
follow.setVisibility(View.GONE);
|
||||
}
|
||||
if(data.getGiftNum()==0){
|
||||
if (data.getGiftNum() == 0) {
|
||||
call.setImageResource(R.mipmap.ic_msg_call_lock);
|
||||
video.setImageResource(R.mipmap.ic_msg_video_lock);
|
||||
call.setTag("true");
|
||||
@ -653,7 +670,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
for (LocalMedia item : selectList) {
|
||||
String mimeType = item.getMimeType();
|
||||
if (mimeType.startsWith("image")) {
|
||||
ImageMessage imageMessage=ImageMessage.obtain(Uri.parse(item.getPath()),sendOrigin);
|
||||
ImageMessage imageMessage = ImageMessage.obtain(Uri.parse(item.getPath()), sendOrigin);
|
||||
Message message = Message.obtain(targetId, conversationType, imageMessage);
|
||||
message.setSenderUserId(CommonAppConfig.getInstance().getUid());
|
||||
message.setObjectName("RC:ImgMsg");
|
||||
@ -693,12 +710,13 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
}
|
||||
}
|
||||
}
|
||||
private void initPriceBean(){
|
||||
|
||||
private void initPriceBean() {
|
||||
OTONetManager.getInstance(mContext)
|
||||
.getMessageConsumeConfig(targetId, new HttpCallback<MessageConsumeConfigBean>() {
|
||||
@Override
|
||||
public void onSuccess(MessageConsumeConfigBean data) {
|
||||
configBean=data;
|
||||
configBean = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -707,4 +725,53 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void showRedPoint() {
|
||||
OTONetManager.getInstance(mContext).getMessageSystemLists(new HttpCallback<List<OfficialNoticeBean>>() {
|
||||
int point = 0;
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<OfficialNoticeBean> data) {
|
||||
for (OfficialNoticeBean datum : data) {
|
||||
point += datum.getNum();
|
||||
}
|
||||
RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback<Integer>() {
|
||||
@Override
|
||||
public void onSuccess(Integer integer) {
|
||||
Integer tmp = integer + point;
|
||||
if (tmp <= 0) {
|
||||
numLayout.setVisibility(View.INVISIBLE);
|
||||
return;
|
||||
}
|
||||
numLayout.setVisibility(View.VISIBLE);
|
||||
num.setText(tmp + "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode e) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void event(MessageMsgBusEvent event) {
|
||||
if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_SYSTEM) {
|
||||
if (event.getNum() <= 0) {
|
||||
numLayout.setVisibility(View.INVISIBLE);
|
||||
return;
|
||||
}
|
||||
if (num.getVisibility() == View.GONE) {
|
||||
numLayout.setVisibility(View.VISIBLE);
|
||||
}
|
||||
num.setText(event.getNum() + "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,25 +1,242 @@
|
||||
package com.shayu.onetoone.activity.fragments.message;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.shayu.onetoone.R;
|
||||
import com.shayu.onetoone.activity.fragments.BaseFragment;
|
||||
import com.shayu.onetoone.adapter.MsgMessageRecyclerViewAdapter;
|
||||
import com.shayu.onetoone.bean.HomeItemBean;
|
||||
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
||||
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||||
import com.shayu.onetoone.manager.OTONetManager;
|
||||
import com.yanzhenjie.recyclerview.OnItemClickListener;
|
||||
import com.yanzhenjie.recyclerview.OnItemMenuClickListener;
|
||||
import com.yanzhenjie.recyclerview.OnItemMenuStateListener;
|
||||
import com.yanzhenjie.recyclerview.SwipeMenuBridge;
|
||||
import com.yanzhenjie.recyclerview.SwipeMenuCreator;
|
||||
import com.yanzhenjie.recyclerview.SwipeMenuItem;
|
||||
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.utils.DpUtil;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.rong.common.RLog;
|
||||
import io.rong.imkit.config.ConversationListBehaviorListener;
|
||||
import io.rong.imkit.config.RongConfigCenter;
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
import io.rong.imkit.conversationlist.model.GatheredConversation;
|
||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||
import io.rong.imkit.utils.RouteUtils;
|
||||
import io.rong.imkit.widget.FixedLinearLayoutManager;
|
||||
import io.rong.imkit.widget.adapter.BaseAdapter;
|
||||
import io.rong.imkit.widget.adapter.ViewHolder;
|
||||
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;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.imlib.model.UserInfo;
|
||||
|
||||
/**
|
||||
* 消息-好友
|
||||
*/
|
||||
public class MsgFriendFragment extends BaseFragment {
|
||||
public class MsgFriendFragment extends BaseFragment implements BaseAdapter.OnItemClickListener {
|
||||
SwipeRecyclerView mList;
|
||||
SmartRefreshLayout mRefreshLayout;
|
||||
MsgMessageRecyclerViewAdapter mAdapter;
|
||||
List<BaseUiConversation> list;
|
||||
private int page = 1;
|
||||
private static final String TAG = MsgFriendFragment.class.getName();
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
Bus.getOff(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView(View itemView) {
|
||||
Bus.getOn(this);
|
||||
mList = itemView.findViewById(R.id.recyclerView);
|
||||
mRefreshLayout = itemView.findViewById(R.id.swipeRefreshLayout);
|
||||
mAdapter = new MsgMessageRecyclerViewAdapter(mList);
|
||||
mAdapter.setItemClickListener(this);
|
||||
list = new ArrayList<>();
|
||||
mList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
|
||||
//mList.setSwipeMenuCreator(initSwipeMenuCreator());
|
||||
mList.setHasFixedSize(true);
|
||||
mList.setEmptyView(itemView.findViewById(R.id.view_empty));
|
||||
mList.setAutoMarginEnabled(true);
|
||||
mList.setOnItemMenuClickListener(new OnItemMenuClickListener() {
|
||||
@Override
|
||||
public void onItemClick(SwipeMenuBridge menuBridge, int adapterPosition) {
|
||||
|
||||
}
|
||||
});
|
||||
mList.setOnItemMenuStateListener(new OnItemMenuStateListener() {
|
||||
|
||||
@Override
|
||||
public void onMenuState(RecyclerView.ViewHolder viewHolder, int menuState) {
|
||||
|
||||
}
|
||||
});
|
||||
LinearLayoutManager layoutManager = new FixedLinearLayoutManager(this.getActivity());
|
||||
mList.setLayoutManager(layoutManager);
|
||||
mList.setAdapter(this.mAdapter);
|
||||
initRefreshView();
|
||||
initData();
|
||||
|
||||
}
|
||||
|
||||
protected void initRefreshView() {
|
||||
this.mRefreshLayout.setNestedScrollingEnabled(false);
|
||||
this.mRefreshLayout.setRefreshHeader(new RongRefreshHeader(this.getContext()));
|
||||
this.mRefreshLayout.setRefreshFooter(new RongRefreshHeader(this.getContext()));
|
||||
this.mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
|
||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||
page = 1;
|
||||
initData();
|
||||
}
|
||||
});
|
||||
this.mRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
|
||||
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
|
||||
initData();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.fragment_msg_friend, container, false);
|
||||
}
|
||||
|
||||
private SwipeMenuCreator initSwipeMenuCreator() {
|
||||
SwipeMenuCreator creator = (leftMenu, rightMenu, position) -> {
|
||||
SwipeMenuItem top = new SwipeMenuItem(getContext());
|
||||
SwipeMenuItem del = new SwipeMenuItem(getContext());
|
||||
top.setBackgroundColor(Color.parseColor("#D9D9D9"));
|
||||
del.setBackgroundColor(Color.parseColor("#FE5268"));
|
||||
top.setText("置顶");
|
||||
del.setText("删除");
|
||||
top.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
top.setWidth(DpUtil.dp2px(71));
|
||||
del.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
del.setWidth(DpUtil.dp2px(71));
|
||||
|
||||
rightMenu.addMenuItem(top);
|
||||
rightMenu.addMenuItem(del);
|
||||
|
||||
};
|
||||
return creator;
|
||||
}
|
||||
|
||||
private void initData() {
|
||||
|
||||
OTONetManager.getInstance(mContext)
|
||||
.getFriends(page, new HttpCallback<List<HomeItemBean>>() {
|
||||
@Override
|
||||
public void onSuccess(List<HomeItemBean> data) {
|
||||
if (page == 1) {
|
||||
list.clear();
|
||||
}
|
||||
if (data.isEmpty()) {
|
||||
mAdapter.setDataCollection(list);
|
||||
mAdapter.notifyDataSetChanged();
|
||||
mRefreshLayout.finishRefresh();
|
||||
mRefreshLayout.finishLoadMore();
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
getNewData(data.get(i), i == data.size() - 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
|
||||
}
|
||||
|
||||
public synchronized void getNewData(HomeItemBean item, boolean over) {
|
||||
RongIMClient.getInstance().getConversation(Conversation.ConversationType.PRIVATE, item.getId() + "", new RongIMClient.ResultCallback<Conversation>() {
|
||||
@Override
|
||||
public void onSuccess(Conversation conversation) {
|
||||
SingleConversation singleConversation = new SingleConversation(mContext, conversation);
|
||||
if (StringUtil.isEmpty(singleConversation.mConversationContent.toString())) {
|
||||
singleConversation.mConversationContent = new SpannableString("你们什么都没聊");
|
||||
}
|
||||
list.add(singleConversation);
|
||||
if (over) {
|
||||
mAdapter.setDataCollection(list);
|
||||
mAdapter.notifyDataSetChanged();
|
||||
mRefreshLayout.finishRefresh();
|
||||
mRefreshLayout.finishLoadMore();
|
||||
page++;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode e) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemClick(View view, ViewHolder holder, int position) {
|
||||
if (position >= 0 && position < this.mAdapter.getData().size()) {
|
||||
BaseUiConversation baseUiConversation = (BaseUiConversation) this.mAdapter.getItem(position);
|
||||
ConversationListBehaviorListener listBehaviorListener = RongConfigCenter.conversationListConfig().getListener();
|
||||
if (listBehaviorListener != null && listBehaviorListener.onConversationClick(view.getContext(), view, baseUiConversation)) {
|
||||
RLog.d(TAG, "ConversationList item click event has been intercepted by App.");
|
||||
} else {
|
||||
if (baseUiConversation != null && baseUiConversation.mCore != null) {
|
||||
if (baseUiConversation instanceof GatheredConversation) {
|
||||
RouteUtils.routeToSubConversationListActivity(view.getContext(), ((GatheredConversation) baseUiConversation).mGatheredType, baseUiConversation.mCore.getConversationTitle());
|
||||
} else {
|
||||
RouteUtils.routeToConversationActivity(view.getContext(), baseUiConversation.getConversationIdentifier());
|
||||
}
|
||||
} else {
|
||||
RLog.e(TAG, "invalid conversation.");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(View view, ViewHolder holder, int position) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void event(MessageMsgBusEvent event) {
|
||||
if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_SYSTEM) {
|
||||
page = 1;
|
||||
initData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.shayu.onetoone.activity.message;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.os.Bundle;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.SurfaceView;
|
||||
@ -12,19 +13,24 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.lxj.xpopup.core.BasePopupView;
|
||||
import com.lzf.easyfloat.EasyFloat;
|
||||
import com.lzf.easyfloat.enums.ShowPattern;
|
||||
import com.lzf.easyfloat.interfaces.OnFloatCallbacks;
|
||||
import com.lzf.easyfloat.interfaces.OnPermissionResult;
|
||||
import com.lzf.easyfloat.permission.PermissionUtils;
|
||||
import com.makeramen.roundedimageview.RoundedImageView;
|
||||
import com.shayu.onetoone.R;
|
||||
import com.shayu.onetoone.activity.AbsOTOActivity;
|
||||
import com.shayu.onetoone.bean.FollowBean;
|
||||
import com.shayu.onetoone.bean.UserBean;
|
||||
import com.shayu.onetoone.dialog.GiftDialog;
|
||||
import com.shayu.onetoone.dialog.TipsDialog;
|
||||
import com.shayu.onetoone.dialog.TipsTextDialog;
|
||||
import com.shayu.onetoone.listener.OnCallStatusListener;
|
||||
import com.shayu.onetoone.listener.OnDialogClickListener;
|
||||
import com.shayu.onetoone.manager.CallClientManager;
|
||||
import com.shayu.onetoone.manager.OTONetManager;
|
||||
import com.shayu.onetoone.manager.RouteManager;
|
||||
@ -143,7 +149,7 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis
|
||||
userName.setText(data.getUser().getUserNicename());
|
||||
userInfo.setText(data.getUser().getSignature());
|
||||
ImgLoader.display(mContext, data.getUser().getAvatar(), avatar);
|
||||
ImgLoader.displayBlur(mContext, data.getUser().getAvatar(), vague, 50);
|
||||
ImgLoader.displayBlur(mContext, data.getUser().getAvatar(), vague, 85);
|
||||
if (data.getUser().isFollow()) {
|
||||
follow.setVisibility(View.GONE);
|
||||
} else {
|
||||
@ -188,6 +194,29 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis
|
||||
}
|
||||
|
||||
private void showWindow(boolean toChatView) {
|
||||
if(!PermissionUtils.checkPermission(this)){
|
||||
new TipsDialog(mContext)
|
||||
.setTitle("请允许悬浮窗权限才能进行小窗")
|
||||
.setApplyText("前往")
|
||||
.setCancelText("取消")
|
||||
.setOnDialogClickListener(new OnDialogClickListener() {
|
||||
@Override
|
||||
public void onApply(Dialog dialog) {
|
||||
super.onApply(dialog);
|
||||
PermissionUtils.requestPermission(CallAudioActivity.this, new OnPermissionResult() {
|
||||
@Override
|
||||
public void permissionResult(boolean b) {
|
||||
if(b){
|
||||
showWindow(toChatView);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
})
|
||||
.showDialog();
|
||||
return;
|
||||
}
|
||||
ImageView icon = new ImageView(mContext);
|
||||
icon.setTag(getIntent().getExtras());
|
||||
icon.setImageResource(io.rong.callkit.R.drawable.rc_voip_audio_answer_selector_new);
|
||||
@ -256,12 +285,25 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis
|
||||
|
||||
@Override
|
||||
public void onCallStart(String userId, SurfaceView surfaceView) {
|
||||
gift.setVisibility(View.VISIBLE);
|
||||
money.setVisibility(View.VISIBLE);
|
||||
if (model.equals(CallClientManager.AUDIO_RECEIVED_CALL)) {
|
||||
gift.setVisibility(View.INVISIBLE);
|
||||
money.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
gift.setVisibility(View.VISIBLE);
|
||||
money.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCallEnd() {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("model", CallClientManager.AUDIO_CALL);
|
||||
bundle.putString("targetId", targetId);
|
||||
bundle.putString("callId", targetId);
|
||||
bundle.putString("user", JSONObject.toJSONString(userData));
|
||||
bundle.putString("time", callTime.getText().toString());
|
||||
bundle.putString("path", RouteManager.ACTIVITY_CALL_AUDIO);
|
||||
RouteManager.forwardActivity(RouteManager.ACTIVITY_END_CALL, bundle);
|
||||
finish();
|
||||
}
|
||||
|
||||
@ -292,6 +334,9 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis
|
||||
}
|
||||
|
||||
void createShow(long msg) {
|
||||
if (model.equals(CallClientManager.AUDIO_RECEIVED_CALL)) {
|
||||
return;
|
||||
}
|
||||
tipsDialog = new TipsTextDialog(mContext)
|
||||
.setTips("通话将在" + msg + "秒后断\n开,请及时充值")
|
||||
.setOnItemClickListener(new OnItemClickListener<String>() {
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.shayu.onetoone.activity.message;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
@ -21,14 +22,18 @@ import com.lxj.xpopup.core.BasePopupView;
|
||||
import com.lzf.easyfloat.EasyFloat;
|
||||
import com.lzf.easyfloat.enums.ShowPattern;
|
||||
import com.lzf.easyfloat.interfaces.OnFloatCallbacks;
|
||||
import com.lzf.easyfloat.interfaces.OnPermissionResult;
|
||||
import com.lzf.easyfloat.permission.PermissionUtils;
|
||||
import com.makeramen.roundedimageview.RoundedImageView;
|
||||
import com.shayu.onetoone.R;
|
||||
import com.shayu.onetoone.activity.AbsOTOActivity;
|
||||
import com.shayu.onetoone.bean.FollowBean;
|
||||
import com.shayu.onetoone.bean.UserBean;
|
||||
import com.shayu.onetoone.dialog.GiftDialog;
|
||||
import com.shayu.onetoone.dialog.TipsDialog;
|
||||
import com.shayu.onetoone.dialog.TipsTextDialog;
|
||||
import com.shayu.onetoone.listener.OnCallStatusListener;
|
||||
import com.shayu.onetoone.listener.OnDialogClickListener;
|
||||
import com.shayu.onetoone.manager.CallClientManager;
|
||||
import com.shayu.onetoone.manager.OTONetManager;
|
||||
import com.shayu.onetoone.manager.RouteManager;
|
||||
@ -187,6 +192,11 @@ public class CallVideoActivity extends AbsOTOActivity {
|
||||
callTime = itemView.findViewById(R.id.call_time);
|
||||
// 为所有View设置点击事件监听器
|
||||
setClickListeners();
|
||||
|
||||
if(model.equals(CallClientManager.VIDEO_RECEIVED_CALL)){
|
||||
gift.setVisibility(View.INVISIBLE);
|
||||
money.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
private void setClickListeners() {
|
||||
@ -233,6 +243,29 @@ public class CallVideoActivity extends AbsOTOActivity {
|
||||
}
|
||||
|
||||
private void showWindow(boolean toChatView) {
|
||||
if(!PermissionUtils.checkPermission(this)){
|
||||
new TipsDialog(mContext)
|
||||
.setTitle("请允许悬浮窗权限才能进行小窗")
|
||||
.setApplyText("前往")
|
||||
.setCancelText("取消")
|
||||
.setOnDialogClickListener(new OnDialogClickListener() {
|
||||
@Override
|
||||
public void onApply(Dialog dialog) {
|
||||
super.onApply(dialog);
|
||||
PermissionUtils.requestPermission(CallVideoActivity.this, new OnPermissionResult() {
|
||||
@Override
|
||||
public void permissionResult(boolean b) {
|
||||
if(b){
|
||||
showWindow(toChatView);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
})
|
||||
.showDialog();
|
||||
return;
|
||||
}
|
||||
CallClientManager.getManager().getRemoteVideo().setTag(getIntent().getExtras());
|
||||
myView.removeAllViews();
|
||||
targetView.removeAllViews();
|
||||
@ -431,6 +464,9 @@ public class CallVideoActivity extends AbsOTOActivity {
|
||||
}
|
||||
|
||||
void createShow(long msg) {
|
||||
if(model.equals(CallClientManager.VIDEO_RECEIVED_CALL)){
|
||||
return;
|
||||
}
|
||||
tipsDialog = new TipsTextDialog(mContext)
|
||||
.setTips("通话将在" + msg + "秒后断\n开,请及时充值")
|
||||
.setOnItemClickListener(new OnItemClickListener<String>() {
|
||||
|
@ -25,6 +25,7 @@ import com.shayu.onetoone.bean.SendConsumeBean;
|
||||
import com.shayu.onetoone.bean.SystemMessageBean;
|
||||
import com.shayu.onetoone.bean.UserBean;
|
||||
import com.shayu.onetoone.dialog.TipsDialog;
|
||||
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||||
import com.shayu.onetoone.listener.OnDialogClickListener;
|
||||
import com.shayu.onetoone.manager.OTONetManager;
|
||||
import com.shayu.onetoone.manager.RouteManager;
|
||||
@ -34,6 +35,8 @@ import com.yunbao.common.utils.RouteUtil;
|
||||
import com.yunbao.common.utils.SpUtil;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import io.rong.imkit.conversation.ConversationFragment;
|
||||
@ -136,5 +139,4 @@ public class ChatActivity extends AbsOTOActivity {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -93,6 +93,7 @@ public class HomeRecommendListAdapter extends RecyclerView.Adapter<HomeRecommend
|
||||
star.setText(itemBean.getStar() + "·" + itemBean.getStar_name());
|
||||
sign.setText(itemBean.getSignature());
|
||||
userName.setText(itemBean.getUser_nicename());
|
||||
tagLayout.removeAllViews();
|
||||
if (WordUtil.isNewZh()) {
|
||||
addTag(itemBean.getCn_label());
|
||||
} else {
|
||||
@ -108,6 +109,11 @@ public class HomeRecommendListAdapter extends RecyclerView.Adapter<HomeRecommend
|
||||
} else {
|
||||
auth.setVisibility(View.GONE);
|
||||
}
|
||||
if(itemBean.getIs_accost()==1){
|
||||
chat.setImageResource(R.mipmap.ic_home_recommend_chat_up);
|
||||
}else{
|
||||
chat.setImageResource(R.mipmap.ic_home_recommend_chat);
|
||||
}
|
||||
ImgLoader.display(mContext, itemBean.getAvatar(), avatar);
|
||||
chat.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
@ -136,6 +142,11 @@ public class HomeRecommendListAdapter extends RecyclerView.Adapter<HomeRecommend
|
||||
ToastUtil.show("跳充值页面");
|
||||
}
|
||||
})
|
||||
.setApplyText("确定")
|
||||
.showDialog();
|
||||
}else{
|
||||
new TipsDialog(mContext)
|
||||
.setTitle(msg)
|
||||
.showDialog();
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,17 @@
|
||||
package com.shayu.onetoone.adapter;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.shayu.onetoone.R;
|
||||
|
||||
import io.rong.imkit.conversation.MessageListAdapter;
|
||||
import io.rong.imkit.model.UiMessage;
|
||||
import io.rong.imkit.widget.adapter.IViewProviderListener;
|
||||
import io.rong.imkit.widget.adapter.ViewHolder;
|
||||
import io.rong.imlib.model.Message;
|
||||
|
||||
public class MsgChatMessageListAdapter extends MessageListAdapter {
|
||||
public MsgChatMessageListAdapter(IViewProviderListener<UiMessage> listener) {
|
||||
@ -21,6 +25,16 @@ public class MsgChatMessageListAdapter extends MessageListAdapter {
|
||||
return super.onCreateViewHolder(parent, viewType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||
super.onBindViewHolder(holder, position);
|
||||
if(getData().get(position).getMessageDirection()== Message.MessageDirection.SEND) {
|
||||
holder.setTextColor(R.id.rc_text, Color.WHITE);
|
||||
}else{
|
||||
holder.setTextColor(R.id.rc_text, Color.parseColor("#555555"));
|
||||
}
|
||||
}
|
||||
|
||||
public int getPosition(int messageId) {
|
||||
for (int i = 0; i < getData().size(); i++) {
|
||||
if (getData().get(i).getMessageId() == messageId){
|
||||
|
@ -0,0 +1,23 @@
|
||||
package com.shayu.onetoone.event;
|
||||
|
||||
public class HomeBusEvent extends AbsBusEvent {
|
||||
public static final int TYPE_UPDATE_MATCHING = 0;
|
||||
private int matching;
|
||||
|
||||
public HomeBusEvent(int type) {
|
||||
super(type);
|
||||
}
|
||||
|
||||
public HomeBusEvent(int type, int matching) {
|
||||
super(type);
|
||||
this.matching = matching;
|
||||
}
|
||||
|
||||
public int getMatching() {
|
||||
return matching;
|
||||
}
|
||||
|
||||
public void setMatching(int matching) {
|
||||
this.matching = matching;
|
||||
}
|
||||
}
|
@ -4,7 +4,22 @@ public class MessageMsgBusEvent extends AbsBusEvent {
|
||||
public static final int TYPE_ALL_READ = 0;
|
||||
public static final int TYPE_UPDATE_SYSTEM=1;
|
||||
|
||||
private int num;
|
||||
|
||||
public MessageMsgBusEvent(int type, int num) {
|
||||
super(type);
|
||||
this.num = num;
|
||||
}
|
||||
|
||||
public MessageMsgBusEvent(int type) {
|
||||
super(type);
|
||||
}
|
||||
|
||||
public int getNum() {
|
||||
return num;
|
||||
}
|
||||
|
||||
public void setNum(int num) {
|
||||
this.num = num;
|
||||
}
|
||||
}
|
||||
|
@ -36,12 +36,12 @@ import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
|
||||
public class CallClientManager {
|
||||
public static final String VIDEO_RECEIVED_CALL = "receivedCall";//接听
|
||||
public static final String VIDEO_CALL = "call";//拨打
|
||||
public static final String VIDEO_FLOAT = "floatWindow";//浮窗
|
||||
public static final String AUDIO_RECEIVED_CALL = "receivedCall";//接听
|
||||
public static final String AUDIO_CALL = "call";//拨打
|
||||
public static final String AUDIO_FLOAT = "floatWindow";//浮窗
|
||||
public static final String VIDEO_RECEIVED_CALL = "receivedVideoCall";//接听
|
||||
public static final String VIDEO_CALL = "callVideo";//拨打
|
||||
public static final String VIDEO_FLOAT = "videoFloatWindow";//浮窗
|
||||
public static final String AUDIO_RECEIVED_CALL = "receivedAudioCall";//接听
|
||||
public static final String AUDIO_CALL = "callAudio";//拨打
|
||||
public static final String AUDIO_FLOAT = "audioFloatWindow";//浮窗
|
||||
private static CallClientManager manager;
|
||||
private SurfaceView localVideo, remoteVideo;
|
||||
private List<OnCallStatusListener> listeners;
|
||||
@ -347,13 +347,14 @@ public class CallClientManager {
|
||||
@Override
|
||||
public void onReceivedCall(RongCallSession callSession) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("model", VIDEO_RECEIVED_CALL);
|
||||
bundle.putString("targetId", callSession.getTargetId());
|
||||
bundle.putString("callId", callSession.getCallId());
|
||||
bundle.putString("sessionId", callSession.getSessionId());
|
||||
if (callSession.getMediaType() == RongCallCommon.CallMediaType.VIDEO) {
|
||||
bundle.putString("model", VIDEO_RECEIVED_CALL);
|
||||
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_VIDEO, bundle);
|
||||
} else {
|
||||
bundle.putString("model", AUDIO_RECEIVED_CALL);
|
||||
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_AUDIO, bundle);
|
||||
}
|
||||
}
|
||||
|
@ -1197,4 +1197,21 @@ public class OTONetManager {
|
||||
}
|
||||
}).isDisposed();
|
||||
}
|
||||
public void getFriends(int page,HttpCallback<List<HomeItemBean>> callback) {
|
||||
API.get().otoApi(mContext).
|
||||
getFriends(page+"")
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(listResponseModel -> {
|
||||
if (listResponseModel.getData().getCode() == 0) {
|
||||
callback.onSuccess(listResponseModel.getData().getInfo());
|
||||
} else {
|
||||
callback.onError(listResponseModel.getData().getMsg());
|
||||
}
|
||||
}, throwable -> {
|
||||
if (callback != null) {
|
||||
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
|
||||
}
|
||||
}).isDisposed();
|
||||
}
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ public interface OneToOneApi {
|
||||
@GET("/api/public/?service=Friendappmoney.info")
|
||||
Observable<ResponseModel<PurseBean>> getPurseInfo();
|
||||
|
||||
@GET("/api/public/?service=Friendappuser.follow")
|
||||
@GET("/api/public/?service=User.setAttents")
|
||||
Observable<ResponseModel<List<FollowBean>>> follow(@Query("touid") String toUid);
|
||||
|
||||
/**
|
||||
@ -305,6 +305,9 @@ public interface OneToOneApi {
|
||||
@GET("/api/public/?service=Friendappinfos.getSage")
|
||||
Observable<ResponseModel<AuthBloggerBean>> getBloggerInfo(
|
||||
);
|
||||
|
||||
@GET("/api/public/?service=Friendappuser.friend")
|
||||
Observable<ResponseModel<List<HomeItemBean>>> getFriends(@Query("p")String p);
|
||||
}
|
||||
|
||||
|
||||
|
@ -3,6 +3,7 @@ package com.shayu.onetoone.view;
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Dialog;
|
||||
import android.os.SystemClock;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
@ -35,6 +36,8 @@ public class MsgInputPanelForAudio extends AbsInputPanel {
|
||||
ImageView btnText;
|
||||
ImageView btnClose;
|
||||
private float mLastTouchY;
|
||||
private long smStartRecTime;
|
||||
|
||||
private boolean mUpDirection;
|
||||
|
||||
private String token;
|
||||
@ -157,6 +160,7 @@ public class MsgInputPanelForAudio extends AbsInputPanel {
|
||||
}
|
||||
MsgInputPanelForAudio.this.mLastTouchY = mLastTouchY;
|
||||
MsgInputPanelForAudio.this.mUpDirection = false;
|
||||
smStartRecTime = SystemClock.elapsedRealtime();
|
||||
AudioRecordManager.getInstance().startRecord(v.getRootView(), mRongExtension.getConversationIdentifier());
|
||||
return false;
|
||||
}
|
||||
|
BIN
OneToOne/src/main/res/drawable-xhdpi/rc_ic_bubble_right.9.png
Normal file
BIN
OneToOne/src/main/res/drawable-xhdpi/rc_ic_bubble_right.9.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
@ -28,7 +28,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/bg_dialog_tip"
|
||||
android:minWidth="256dp"
|
||||
android:minWidth="289dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@ -38,9 +38,9 @@
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="80dp"
|
||||
android:layout_marginStart="36dp"
|
||||
android:layout_marginStart="25dp"
|
||||
android:layout_marginTop="21dp"
|
||||
android:layout_marginEnd="36dp">
|
||||
android:layout_marginEnd="25dp">
|
||||
|
||||
<com.makeramen.roundedimageview.RoundedImageView
|
||||
android:id="@+id/avatar"
|
||||
@ -56,12 +56,15 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/username"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="7dp"
|
||||
android:ellipsize="end"
|
||||
android:maxEms="6"
|
||||
android:singleLine="true"
|
||||
android:text="小柒"
|
||||
android:textColor="#333333"
|
||||
android:textSize="18sp"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/avatar"
|
||||
app:layout_constraintStart_toEndOf="@+id/avatar"
|
||||
app:layout_constraintTop_toTopOf="@+id/avatar" />
|
||||
|
@ -5,12 +5,29 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<Button
|
||||
android:id="@+id/button3"
|
||||
|
||||
<io.rong.imkit.widget.refresh.SmartRefreshLayout
|
||||
android:id="@+id/swipeRefreshLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.yanzhenjie.recyclerview.SwipeRecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:listitem="@layout/rc_conversationlist_item" />
|
||||
</io.rong.imkit.widget.refresh.SmartRefreshLayout>
|
||||
|
||||
<include
|
||||
android:id="@+id/view_empty"
|
||||
layout="@layout/view_friend_empty"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="26dp"
|
||||
android:text="Button"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
@ -153,10 +153,9 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/input_panel_add_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/yellow"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:visibility="gone"
|
||||
android:src="@mipmap/ic_msg_add" />
|
||||
</LinearLayout>
|
||||
@ -164,11 +163,11 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/audio_layout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:visibility="visible"
|
||||
android:orientation="horizontal" />
|
||||
tools:visibility="visible" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
27
OneToOne/src/main/res/layout/view_friend_empty.xml
Normal file
27
OneToOne/src/main/res/layout/view_friend_empty.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView7"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@mipmap/bg_friend_empty" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView10"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/view_friend_empty_text"
|
||||
app:layout_constraintEnd_toEndOf="@+id/imageView7"
|
||||
app:layout_constraintHorizontal_bias="0.433"
|
||||
app:layout_constraintStart_toStartOf="@+id/imageView7"
|
||||
app:layout_constraintTop_toBottomOf="@+id/imageView7" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -20,6 +20,7 @@
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginEnd="61dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_marginBottom="62dp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/audio_btn"
|
||||
app:layout_constraintEnd_toStartOf="@+id/audio_btn"
|
||||
@ -31,17 +32,16 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="61dp"
|
||||
android:layout_marginBottom="62dp"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/audio_btn"
|
||||
app:layout_constraintStart_toEndOf="@+id/audio_btn"
|
||||
app:srcCompat="@mipmap/ic_chat_video_close" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/time_text"
|
||||
android:visibility="gone"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="TextView"
|
||||
app:layout_constraintBottom_toTopOf="@+id/audio_btn"
|
||||
app:layout_constraintEnd_toEndOf="@+id/audio_btn"
|
||||
app:layout_constraintStart_toStartOf="@+id/audio_btn" />
|
||||
|
@ -21,6 +21,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/follow"
|
||||
app:srcCompat="@mipmap/ic_message_msg_more" />
|
||||
|
BIN
OneToOne/src/main/res/mipmap-xxhdpi/bg_friend_empty.png
Normal file
BIN
OneToOne/src/main/res/mipmap-xxhdpi/bg_friend_empty.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 70 KiB |
BIN
OneToOne/src/main/res/mipmap-xxhdpi/ic_matching.png
Normal file
BIN
OneToOne/src/main/res/mipmap-xxhdpi/ic_matching.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
@ -14,7 +14,24 @@
|
||||
<string name="greet_upload_img">上传图片(非必選)</string>
|
||||
<string name="greet_clear_config">清除设置</string>
|
||||
<string name="greet_save_config">保存设置</string>
|
||||
<string name="my_arnings">我的收益</string>
|
||||
<string name="my_arnings_reward_description">獎勵說明</string>
|
||||
<string name="my_arnings_total_amount_available_for_withdrawal">可提現總額</string>
|
||||
<string name="my_arnings_today_earnings">今日收益:</string>
|
||||
<string name="my_arnings_settlement_record">結算記錄</string>
|
||||
<string name="my_arnings_cumulative_income">累計收益:</string>
|
||||
<string name="my_arnings_exchange_for_diamond_star_coins">兌換鑽石/星幣</string>
|
||||
<string name="my_arnings_incentive_withdrawal">獎勵提現</string>
|
||||
<string name="my_arnings_incentive_withdrawal_minimum">(最低$ %s)</string>
|
||||
<string name="my_arnings_exchange_star">兌換星幣</string>
|
||||
<string name="my_arnings_exchange_record">兌換記錄</string>
|
||||
<string name="my_arnings_total_convertibility">可兌換總額</string>
|
||||
<string name="my_arnings_gold_coin">金幣</string>
|
||||
<string name="my_arnings_toggle">切換</string>
|
||||
<string name="diamond_exchange_input_hint">請輸入需兌換的星幣金額</string>
|
||||
<string name="diamond_exchange_immediate_exchange">立即兌換</string>
|
||||
<string name="diamond_exchange_full_conversion">全額兌換</string>
|
||||
|
||||
<string name="choose_img_max">最多选 %1$s 张图片哦</string>
|
||||
|
||||
<string name="view_friend_empty_text">暫無好友消息~</string>
|
||||
</resources>
|
@ -14,6 +14,24 @@
|
||||
<string name="greet_upload_img">上传图片(非必選)</string>
|
||||
<string name="greet_clear_config">清除设置</string>
|
||||
<string name="greet_save_config">保存设置</string>
|
||||
<string name="my_arnings">我的收益</string>
|
||||
<string name="my_arnings_reward_description">獎勵說明</string>
|
||||
<string name="my_arnings_total_amount_available_for_withdrawal">可提現總額</string>
|
||||
<string name="my_arnings_today_earnings">今日收益:</string>
|
||||
<string name="my_arnings_settlement_record">結算記錄</string>
|
||||
<string name="my_arnings_cumulative_income">累計收益:</string>
|
||||
<string name="my_arnings_exchange_for_diamond_star_coins">兌換鑽石/星幣</string>
|
||||
<string name="my_arnings_incentive_withdrawal">獎勵提現</string>
|
||||
<string name="my_arnings_incentive_withdrawal_minimum">(最低$ %s)</string>
|
||||
<string name="my_arnings_exchange_star">兌換星幣</string>
|
||||
<string name="my_arnings_exchange_record">兌換記錄</string>
|
||||
<string name="my_arnings_total_convertibility">可兌換總額</string>
|
||||
<string name="my_arnings_gold_coin">金幣</string>
|
||||
<string name="my_arnings_toggle">切換</string>
|
||||
<string name="diamond_exchange_input_hint">請輸入需兌換的星幣金額</string>
|
||||
<string name="diamond_exchange_immediate_exchange">立即兌換</string>
|
||||
<string name="diamond_exchange_full_conversion">全額兌換</string>
|
||||
|
||||
<string name="choose_img_max">最多选 %1$s 张图片哦</string>
|
||||
<string name="view_friend_empty_text">暫無好友消息~</string>
|
||||
</resources>
|
@ -32,4 +32,6 @@
|
||||
<string name="diamond_exchange_full_conversion">全額兌換</string>
|
||||
|
||||
<string name="choose_img_max">最多选 %1$s 张图片哦</string>
|
||||
|
||||
<string name="view_friend_empty_text">friend empty</string>
|
||||
</resources>
|
Loading…
x
Reference in New Issue
Block a user