update
This commit is contained in:
parent
be02488180
commit
307ec30807
@ -57,7 +57,7 @@ public class EndCallActivity extends AbsOTOActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ImgLoader.display(mContext, user.getUser().getAvatar(), avatar);
|
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());
|
usernameView.setText(user.getUser().getUserNicename());
|
||||||
callTimerButton.setText(timer);
|
callTimerButton.setText(timer);
|
||||||
if (user.getUser().isFollow()) {
|
if (user.getUser().isFollow()) {
|
||||||
|
@ -24,6 +24,7 @@ import com.shayu.onetoone.bean.MatchingItemSizeBean;
|
|||||||
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
||||||
import com.shayu.onetoone.dialog.FirstTipsDialog;
|
import com.shayu.onetoone.dialog.FirstTipsDialog;
|
||||||
import com.shayu.onetoone.dialog.TipsDialog;
|
import com.shayu.onetoone.dialog.TipsDialog;
|
||||||
|
import com.shayu.onetoone.event.HomeBusEvent;
|
||||||
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||||||
import com.shayu.onetoone.listener.OnDialogClickListener;
|
import com.shayu.onetoone.listener.OnDialogClickListener;
|
||||||
import com.shayu.onetoone.manager.CallClientManager;
|
import com.shayu.onetoone.manager.CallClientManager;
|
||||||
@ -118,11 +119,10 @@ public class MainActivity extends AbsOTOActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onCountChanged(int count) {
|
public void onCountChanged(int count) {
|
||||||
showRedPoint(count);
|
showRedPoint(count);
|
||||||
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_SYSTEM));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
CallClientManager.getManager();
|
CallClientManager.getManager();
|
||||||
//initFirstLoginTips();
|
initFirstLoginTips();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initFirstLoginTips() {
|
private void initFirstLoginTips() {
|
||||||
@ -141,6 +141,7 @@ public class MainActivity extends AbsOTOActivity {
|
|||||||
} else {
|
} else {
|
||||||
isShow = false;
|
isShow = false;
|
||||||
}
|
}
|
||||||
|
Bus.get().post(new HomeBusEvent(HomeBusEvent.TYPE_UPDATE_MATCHING, data.getNum()));
|
||||||
if (isShow) {
|
if (isShow) {
|
||||||
new FirstTipsDialog(mContext)
|
new FirstTipsDialog(mContext)
|
||||||
.setHome(isMan)
|
.setHome(isMan)
|
||||||
@ -171,8 +172,6 @@ public class MainActivity extends AbsOTOActivity {
|
|||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
checkUserInfoIsSet();
|
checkUserInfoIsSet();
|
||||||
//测试
|
|
||||||
//RouteManager.forwardChooseActivity();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -203,6 +202,7 @@ public class MainActivity extends AbsOTOActivity {
|
|||||||
for (OfficialNoticeBean datum : data) {
|
for (OfficialNoticeBean datum : data) {
|
||||||
point += datum.getNum();
|
point += datum.getNum();
|
||||||
}
|
}
|
||||||
|
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_SYSTEM,point + count));
|
||||||
//大于0则是通过会话未读监听器获取到的数,则不用再调用获取未读数接口了
|
//大于0则是通过会话未读监听器获取到的数,则不用再调用获取未读数接口了
|
||||||
if (count >= 0) {
|
if (count >= 0) {
|
||||||
updateUnreadCount(point + count);
|
updateUnreadCount(point + count);
|
||||||
|
@ -4,6 +4,7 @@ import android.os.Bundle;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
@ -12,13 +13,24 @@ import com.shayu.onetoone.R;
|
|||||||
import com.shayu.onetoone.activity.fragments.BaseFragment;
|
import com.shayu.onetoone.activity.fragments.BaseFragment;
|
||||||
import com.shayu.onetoone.adapter.HomeRecommendListAdapter;
|
import com.shayu.onetoone.adapter.HomeRecommendListAdapter;
|
||||||
import com.shayu.onetoone.bean.HomeItemBean;
|
import com.shayu.onetoone.bean.HomeItemBean;
|
||||||
|
import com.shayu.onetoone.bean.MatchingItemSizeBean;
|
||||||
import com.shayu.onetoone.bean.SendConsumeBean;
|
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.listener.OnSendMessageListener;
|
||||||
import com.shayu.onetoone.manager.OTONetManager;
|
import com.shayu.onetoone.manager.OTONetManager;
|
||||||
import com.shayu.onetoone.manager.RouteManager;
|
import com.shayu.onetoone.manager.RouteManager;
|
||||||
import com.shayu.onetoone.manager.SendMessageManager;
|
import com.shayu.onetoone.manager.SendMessageManager;
|
||||||
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
|
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
|
||||||
import com.yunbao.common.http.base.HttpCallback;
|
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;
|
import java.util.List;
|
||||||
|
|
||||||
@ -36,10 +48,17 @@ public class RecommendFragment extends BaseFragment {
|
|||||||
private int page = 1;
|
private int page = 1;
|
||||||
private boolean isScreen;
|
private boolean isScreen;
|
||||||
Bundle screen;
|
Bundle screen;
|
||||||
View matching;
|
ImageView matching;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
Bus.getOff(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initView(View itemView) {
|
public void initView(View itemView) {
|
||||||
|
Bus.getOn(this);
|
||||||
recyclerView = itemView.findViewById(R.id.recyclerView);
|
recyclerView = itemView.findViewById(R.id.recyclerView);
|
||||||
mRefreshLayout = itemView.findViewById(R.id.swipeRefreshLayout);
|
mRefreshLayout = itemView.findViewById(R.id.swipeRefreshLayout);
|
||||||
top = itemView.findViewById(R.id.btn_top_list);
|
top = itemView.findViewById(R.id.btn_top_list);
|
||||||
@ -50,6 +69,7 @@ public class RecommendFragment extends BaseFragment {
|
|||||||
mRefreshLayout.setRefreshHeader(new RongRefreshHeader(this.getContext()));
|
mRefreshLayout.setRefreshHeader(new RongRefreshHeader(this.getContext()));
|
||||||
mRefreshLayout.setRefreshFooter(new RongRefreshHeader(this.getContext()));
|
mRefreshLayout.setRefreshFooter(new RongRefreshHeader(this.getContext()));
|
||||||
recyclerView.setEmptyView(itemView.findViewById(R.id.view_empty));
|
recyclerView.setEmptyView(itemView.findViewById(R.id.view_empty));
|
||||||
|
recyclerView.setAutoLoadMore(true);
|
||||||
mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
|
mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
|
||||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||||
page = 1;
|
page = 1;
|
||||||
@ -152,6 +172,7 @@ public class RecommendFragment extends BaseFragment {
|
|||||||
if (page != 1 && data.isEmpty()) {
|
if (page != 1 && data.isEmpty()) {
|
||||||
page--;
|
page--;
|
||||||
mRefreshLayout.finishLoadMore();
|
mRefreshLayout.finishLoadMore();
|
||||||
|
recyclerView.loadMoreFinish(true, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (page != 1) {
|
if (page != 1) {
|
||||||
@ -173,4 +194,16 @@ public class RecommendFragment extends BaseFragment {
|
|||||||
public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
return inflater.inflate(R.layout.fragment_recommend, container, false);
|
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.MessageChatAuthContent;
|
||||||
import com.shayu.onetoone.bean.MessageChatTipsContent;
|
import com.shayu.onetoone.bean.MessageChatTipsContent;
|
||||||
import com.shayu.onetoone.bean.MessageConsumeConfigBean;
|
import com.shayu.onetoone.bean.MessageConsumeConfigBean;
|
||||||
|
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
||||||
import com.shayu.onetoone.bean.SendConsumeBean;
|
import com.shayu.onetoone.bean.SendConsumeBean;
|
||||||
import com.shayu.onetoone.bean.UserBean;
|
import com.shayu.onetoone.bean.UserBean;
|
||||||
import com.shayu.onetoone.dialog.BottomListDialog;
|
import com.shayu.onetoone.dialog.BottomListDialog;
|
||||||
import com.shayu.onetoone.dialog.MsgChatClickDialog;
|
import com.shayu.onetoone.dialog.MsgChatClickDialog;
|
||||||
import com.shayu.onetoone.dialog.TipsDialog;
|
import com.shayu.onetoone.dialog.TipsDialog;
|
||||||
|
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||||||
import com.shayu.onetoone.listener.OnDialogClickListener;
|
import com.shayu.onetoone.listener.OnDialogClickListener;
|
||||||
import com.shayu.onetoone.listener.OnSendMessageListener;
|
import com.shayu.onetoone.listener.OnSendMessageListener;
|
||||||
import com.shayu.onetoone.manager.CallClientManager;
|
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.ImageResultCallback;
|
||||||
import com.yunbao.common.interfaces.OnItemClickListener;
|
import com.yunbao.common.interfaces.OnItemClickListener;
|
||||||
import com.yunbao.common.manager.IMLoginManager;
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
|
import com.yunbao.common.utils.Bus;
|
||||||
import com.yunbao.common.utils.ProcessImageUtil;
|
import com.yunbao.common.utils.ProcessImageUtil;
|
||||||
import com.yunbao.common.utils.SpUtil;
|
import com.yunbao.common.utils.SpUtil;
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
import com.yunbao.common.utils.WordUtil;
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -81,6 +86,7 @@ import io.rong.message.TextMessage;
|
|||||||
public class ChatMessageFragment extends AbsConversationFragment {
|
public class ChatMessageFragment extends AbsConversationFragment {
|
||||||
Button mSendBtn;
|
Button mSendBtn;
|
||||||
View mInputPanel;
|
View mInputPanel;
|
||||||
|
View numLayout;
|
||||||
EditText mEditText;
|
EditText mEditText;
|
||||||
ImageView img, call, video, gift;
|
ImageView img, call, video, gift;
|
||||||
ProcessImageUtil cameraUtil;
|
ProcessImageUtil cameraUtil;
|
||||||
@ -94,6 +100,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
|||||||
TextView home;
|
TextView home;
|
||||||
ImageView sex;
|
ImageView sex;
|
||||||
ImageView status;
|
ImageView status;
|
||||||
|
TextView num;
|
||||||
Button follow;
|
Button follow;
|
||||||
|
|
||||||
|
|
||||||
@ -101,10 +108,20 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
|||||||
private static final String TAG = "聊天界面";
|
private static final String TAG = "聊天界面";
|
||||||
private MessageConsumeConfigBean configBean;
|
private MessageConsumeConfigBean configBean;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
Bus.getOff(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
Bus.getOn(this);
|
||||||
targetId = getActivity().getIntent().getStringExtra("targetId");
|
targetId = getActivity().getIntent().getStringExtra("targetId");
|
||||||
|
num = findViewById(R.id.num);
|
||||||
|
numLayout = findViewById(R.id.constraintLayout2);
|
||||||
|
numLayout.setVisibility(View.INVISIBLE);
|
||||||
initBtn();
|
initBtn();
|
||||||
initChat();
|
initChat();
|
||||||
initPriceBean();
|
initPriceBean();
|
||||||
@ -148,6 +165,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
updateMyInfo();
|
updateMyInfo();
|
||||||
|
showRedPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -256,7 +274,6 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
|||||||
.showDialog();
|
.showDialog();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -693,6 +710,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initPriceBean() {
|
private void initPriceBean() {
|
||||||
OTONetManager.getInstance(mContext)
|
OTONetManager.getInstance(mContext)
|
||||||
.getMessageConsumeConfig(targetId, new HttpCallback<MessageConsumeConfigBean>() {
|
.getMessageConsumeConfig(targetId, new HttpCallback<MessageConsumeConfigBean>() {
|
||||||
@ -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;
|
package com.shayu.onetoone.activity.fragments.message;
|
||||||
|
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.text.SpannableString;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import 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.R;
|
||||||
import com.shayu.onetoone.activity.fragments.BaseFragment;
|
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
|
@Override
|
||||||
public void initView(View itemView) {
|
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
|
@Override
|
||||||
public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
return inflater.inflate(R.layout.fragment_msg_friend, container, false);
|
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;
|
package com.shayu.onetoone.activity.message;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.SurfaceView;
|
import android.view.SurfaceView;
|
||||||
@ -12,19 +13,24 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.lxj.xpopup.XPopup;
|
import com.lxj.xpopup.XPopup;
|
||||||
import com.lxj.xpopup.core.BasePopupView;
|
import com.lxj.xpopup.core.BasePopupView;
|
||||||
import com.lzf.easyfloat.EasyFloat;
|
import com.lzf.easyfloat.EasyFloat;
|
||||||
import com.lzf.easyfloat.enums.ShowPattern;
|
import com.lzf.easyfloat.enums.ShowPattern;
|
||||||
import com.lzf.easyfloat.interfaces.OnFloatCallbacks;
|
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.makeramen.roundedimageview.RoundedImageView;
|
||||||
import com.shayu.onetoone.R;
|
import com.shayu.onetoone.R;
|
||||||
import com.shayu.onetoone.activity.AbsOTOActivity;
|
import com.shayu.onetoone.activity.AbsOTOActivity;
|
||||||
import com.shayu.onetoone.bean.FollowBean;
|
import com.shayu.onetoone.bean.FollowBean;
|
||||||
import com.shayu.onetoone.bean.UserBean;
|
import com.shayu.onetoone.bean.UserBean;
|
||||||
import com.shayu.onetoone.dialog.GiftDialog;
|
import com.shayu.onetoone.dialog.GiftDialog;
|
||||||
|
import com.shayu.onetoone.dialog.TipsDialog;
|
||||||
import com.shayu.onetoone.dialog.TipsTextDialog;
|
import com.shayu.onetoone.dialog.TipsTextDialog;
|
||||||
import com.shayu.onetoone.listener.OnCallStatusListener;
|
import com.shayu.onetoone.listener.OnCallStatusListener;
|
||||||
|
import com.shayu.onetoone.listener.OnDialogClickListener;
|
||||||
import com.shayu.onetoone.manager.CallClientManager;
|
import com.shayu.onetoone.manager.CallClientManager;
|
||||||
import com.shayu.onetoone.manager.OTONetManager;
|
import com.shayu.onetoone.manager.OTONetManager;
|
||||||
import com.shayu.onetoone.manager.RouteManager;
|
import com.shayu.onetoone.manager.RouteManager;
|
||||||
@ -143,7 +149,7 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis
|
|||||||
userName.setText(data.getUser().getUserNicename());
|
userName.setText(data.getUser().getUserNicename());
|
||||||
userInfo.setText(data.getUser().getSignature());
|
userInfo.setText(data.getUser().getSignature());
|
||||||
ImgLoader.display(mContext, data.getUser().getAvatar(), avatar);
|
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()) {
|
if (data.getUser().isFollow()) {
|
||||||
follow.setVisibility(View.GONE);
|
follow.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
@ -188,6 +194,29 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showWindow(boolean toChatView) {
|
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);
|
ImageView icon = new ImageView(mContext);
|
||||||
icon.setTag(getIntent().getExtras());
|
icon.setTag(getIntent().getExtras());
|
||||||
icon.setImageResource(io.rong.callkit.R.drawable.rc_voip_audio_answer_selector_new);
|
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
|
@Override
|
||||||
public void onCallStart(String userId, SurfaceView surfaceView) {
|
public void onCallStart(String userId, SurfaceView surfaceView) {
|
||||||
|
if (model.equals(CallClientManager.AUDIO_RECEIVED_CALL)) {
|
||||||
|
gift.setVisibility(View.INVISIBLE);
|
||||||
|
money.setVisibility(View.INVISIBLE);
|
||||||
|
} else {
|
||||||
gift.setVisibility(View.VISIBLE);
|
gift.setVisibility(View.VISIBLE);
|
||||||
money.setVisibility(View.VISIBLE);
|
money.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCallEnd() {
|
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();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -292,6 +334,9 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis
|
|||||||
}
|
}
|
||||||
|
|
||||||
void createShow(long msg) {
|
void createShow(long msg) {
|
||||||
|
if (model.equals(CallClientManager.AUDIO_RECEIVED_CALL)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
tipsDialog = new TipsTextDialog(mContext)
|
tipsDialog = new TipsTextDialog(mContext)
|
||||||
.setTips("通话将在" + msg + "秒后断\n开,请及时充值")
|
.setTips("通话将在" + msg + "秒后断\n开,请及时充值")
|
||||||
.setOnItemClickListener(new OnItemClickListener<String>() {
|
.setOnItemClickListener(new OnItemClickListener<String>() {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.shayu.onetoone.activity.message;
|
package com.shayu.onetoone.activity.message;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
@ -21,14 +22,18 @@ import com.lxj.xpopup.core.BasePopupView;
|
|||||||
import com.lzf.easyfloat.EasyFloat;
|
import com.lzf.easyfloat.EasyFloat;
|
||||||
import com.lzf.easyfloat.enums.ShowPattern;
|
import com.lzf.easyfloat.enums.ShowPattern;
|
||||||
import com.lzf.easyfloat.interfaces.OnFloatCallbacks;
|
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.makeramen.roundedimageview.RoundedImageView;
|
||||||
import com.shayu.onetoone.R;
|
import com.shayu.onetoone.R;
|
||||||
import com.shayu.onetoone.activity.AbsOTOActivity;
|
import com.shayu.onetoone.activity.AbsOTOActivity;
|
||||||
import com.shayu.onetoone.bean.FollowBean;
|
import com.shayu.onetoone.bean.FollowBean;
|
||||||
import com.shayu.onetoone.bean.UserBean;
|
import com.shayu.onetoone.bean.UserBean;
|
||||||
import com.shayu.onetoone.dialog.GiftDialog;
|
import com.shayu.onetoone.dialog.GiftDialog;
|
||||||
|
import com.shayu.onetoone.dialog.TipsDialog;
|
||||||
import com.shayu.onetoone.dialog.TipsTextDialog;
|
import com.shayu.onetoone.dialog.TipsTextDialog;
|
||||||
import com.shayu.onetoone.listener.OnCallStatusListener;
|
import com.shayu.onetoone.listener.OnCallStatusListener;
|
||||||
|
import com.shayu.onetoone.listener.OnDialogClickListener;
|
||||||
import com.shayu.onetoone.manager.CallClientManager;
|
import com.shayu.onetoone.manager.CallClientManager;
|
||||||
import com.shayu.onetoone.manager.OTONetManager;
|
import com.shayu.onetoone.manager.OTONetManager;
|
||||||
import com.shayu.onetoone.manager.RouteManager;
|
import com.shayu.onetoone.manager.RouteManager;
|
||||||
@ -187,6 +192,11 @@ public class CallVideoActivity extends AbsOTOActivity {
|
|||||||
callTime = itemView.findViewById(R.id.call_time);
|
callTime = itemView.findViewById(R.id.call_time);
|
||||||
// 为所有View设置点击事件监听器
|
// 为所有View设置点击事件监听器
|
||||||
setClickListeners();
|
setClickListeners();
|
||||||
|
|
||||||
|
if(model.equals(CallClientManager.VIDEO_RECEIVED_CALL)){
|
||||||
|
gift.setVisibility(View.INVISIBLE);
|
||||||
|
money.setVisibility(View.INVISIBLE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setClickListeners() {
|
private void setClickListeners() {
|
||||||
@ -233,6 +243,29 @@ public class CallVideoActivity extends AbsOTOActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showWindow(boolean toChatView) {
|
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());
|
CallClientManager.getManager().getRemoteVideo().setTag(getIntent().getExtras());
|
||||||
myView.removeAllViews();
|
myView.removeAllViews();
|
||||||
targetView.removeAllViews();
|
targetView.removeAllViews();
|
||||||
@ -431,6 +464,9 @@ public class CallVideoActivity extends AbsOTOActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void createShow(long msg) {
|
void createShow(long msg) {
|
||||||
|
if(model.equals(CallClientManager.VIDEO_RECEIVED_CALL)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
tipsDialog = new TipsTextDialog(mContext)
|
tipsDialog = new TipsTextDialog(mContext)
|
||||||
.setTips("通话将在" + msg + "秒后断\n开,请及时充值")
|
.setTips("通话将在" + msg + "秒后断\n开,请及时充值")
|
||||||
.setOnItemClickListener(new OnItemClickListener<String>() {
|
.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.SystemMessageBean;
|
||||||
import com.shayu.onetoone.bean.UserBean;
|
import com.shayu.onetoone.bean.UserBean;
|
||||||
import com.shayu.onetoone.dialog.TipsDialog;
|
import com.shayu.onetoone.dialog.TipsDialog;
|
||||||
|
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||||||
import com.shayu.onetoone.listener.OnDialogClickListener;
|
import com.shayu.onetoone.listener.OnDialogClickListener;
|
||||||
import com.shayu.onetoone.manager.OTONetManager;
|
import com.shayu.onetoone.manager.OTONetManager;
|
||||||
import com.shayu.onetoone.manager.RouteManager;
|
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.SpUtil;
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
|
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import io.rong.imkit.conversation.ConversationFragment;
|
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());
|
star.setText(itemBean.getStar() + "·" + itemBean.getStar_name());
|
||||||
sign.setText(itemBean.getSignature());
|
sign.setText(itemBean.getSignature());
|
||||||
userName.setText(itemBean.getUser_nicename());
|
userName.setText(itemBean.getUser_nicename());
|
||||||
|
tagLayout.removeAllViews();
|
||||||
if (WordUtil.isNewZh()) {
|
if (WordUtil.isNewZh()) {
|
||||||
addTag(itemBean.getCn_label());
|
addTag(itemBean.getCn_label());
|
||||||
} else {
|
} else {
|
||||||
@ -108,6 +109,11 @@ public class HomeRecommendListAdapter extends RecyclerView.Adapter<HomeRecommend
|
|||||||
} else {
|
} else {
|
||||||
auth.setVisibility(View.GONE);
|
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);
|
ImgLoader.display(mContext, itemBean.getAvatar(), avatar);
|
||||||
chat.setOnClickListener(new View.OnClickListener() {
|
chat.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -136,6 +142,11 @@ public class HomeRecommendListAdapter extends RecyclerView.Adapter<HomeRecommend
|
|||||||
ToastUtil.show("跳充值页面");
|
ToastUtil.show("跳充值页面");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
.setApplyText("确定")
|
||||||
|
.showDialog();
|
||||||
|
}else{
|
||||||
|
new TipsDialog(mContext)
|
||||||
|
.setTitle(msg)
|
||||||
.showDialog();
|
.showDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,17 @@
|
|||||||
package com.shayu.onetoone.adapter;
|
package com.shayu.onetoone.adapter;
|
||||||
|
|
||||||
|
import android.graphics.Color;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import com.shayu.onetoone.R;
|
||||||
|
|
||||||
import io.rong.imkit.conversation.MessageListAdapter;
|
import io.rong.imkit.conversation.MessageListAdapter;
|
||||||
import io.rong.imkit.model.UiMessage;
|
import io.rong.imkit.model.UiMessage;
|
||||||
import io.rong.imkit.widget.adapter.IViewProviderListener;
|
import io.rong.imkit.widget.adapter.IViewProviderListener;
|
||||||
import io.rong.imkit.widget.adapter.ViewHolder;
|
import io.rong.imkit.widget.adapter.ViewHolder;
|
||||||
|
import io.rong.imlib.model.Message;
|
||||||
|
|
||||||
public class MsgChatMessageListAdapter extends MessageListAdapter {
|
public class MsgChatMessageListAdapter extends MessageListAdapter {
|
||||||
public MsgChatMessageListAdapter(IViewProviderListener<UiMessage> listener) {
|
public MsgChatMessageListAdapter(IViewProviderListener<UiMessage> listener) {
|
||||||
@ -21,6 +25,16 @@ public class MsgChatMessageListAdapter extends MessageListAdapter {
|
|||||||
return super.onCreateViewHolder(parent, viewType);
|
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) {
|
public int getPosition(int messageId) {
|
||||||
for (int i = 0; i < getData().size(); i++) {
|
for (int i = 0; i < getData().size(); i++) {
|
||||||
if (getData().get(i).getMessageId() == messageId){
|
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_ALL_READ = 0;
|
||||||
public static final int TYPE_UPDATE_SYSTEM=1;
|
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) {
|
public MessageMsgBusEvent(int type) {
|
||||||
super(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;
|
import io.rong.imlib.model.Conversation;
|
||||||
|
|
||||||
public class CallClientManager {
|
public class CallClientManager {
|
||||||
public static final String VIDEO_RECEIVED_CALL = "receivedCall";//接听
|
public static final String VIDEO_RECEIVED_CALL = "receivedVideoCall";//接听
|
||||||
public static final String VIDEO_CALL = "call";//拨打
|
public static final String VIDEO_CALL = "callVideo";//拨打
|
||||||
public static final String VIDEO_FLOAT = "floatWindow";//浮窗
|
public static final String VIDEO_FLOAT = "videoFloatWindow";//浮窗
|
||||||
public static final String AUDIO_RECEIVED_CALL = "receivedCall";//接听
|
public static final String AUDIO_RECEIVED_CALL = "receivedAudioCall";//接听
|
||||||
public static final String AUDIO_CALL = "call";//拨打
|
public static final String AUDIO_CALL = "callAudio";//拨打
|
||||||
public static final String AUDIO_FLOAT = "floatWindow";//浮窗
|
public static final String AUDIO_FLOAT = "audioFloatWindow";//浮窗
|
||||||
private static CallClientManager manager;
|
private static CallClientManager manager;
|
||||||
private SurfaceView localVideo, remoteVideo;
|
private SurfaceView localVideo, remoteVideo;
|
||||||
private List<OnCallStatusListener> listeners;
|
private List<OnCallStatusListener> listeners;
|
||||||
@ -347,13 +347,14 @@ public class CallClientManager {
|
|||||||
@Override
|
@Override
|
||||||
public void onReceivedCall(RongCallSession callSession) {
|
public void onReceivedCall(RongCallSession callSession) {
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putString("model", VIDEO_RECEIVED_CALL);
|
|
||||||
bundle.putString("targetId", callSession.getTargetId());
|
bundle.putString("targetId", callSession.getTargetId());
|
||||||
bundle.putString("callId", callSession.getCallId());
|
bundle.putString("callId", callSession.getCallId());
|
||||||
bundle.putString("sessionId", callSession.getSessionId());
|
bundle.putString("sessionId", callSession.getSessionId());
|
||||||
if (callSession.getMediaType() == RongCallCommon.CallMediaType.VIDEO) {
|
if (callSession.getMediaType() == RongCallCommon.CallMediaType.VIDEO) {
|
||||||
|
bundle.putString("model", VIDEO_RECEIVED_CALL);
|
||||||
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_VIDEO, bundle);
|
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_VIDEO, bundle);
|
||||||
} else {
|
} else {
|
||||||
|
bundle.putString("model", AUDIO_RECEIVED_CALL);
|
||||||
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_AUDIO, bundle);
|
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_AUDIO, bundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1197,4 +1197,21 @@ public class OTONetManager {
|
|||||||
}
|
}
|
||||||
}).isDisposed();
|
}).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")
|
@GET("/api/public/?service=Friendappmoney.info")
|
||||||
Observable<ResponseModel<PurseBean>> getPurseInfo();
|
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);
|
Observable<ResponseModel<List<FollowBean>>> follow(@Query("touid") String toUid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -305,6 +305,9 @@ public interface OneToOneApi {
|
|||||||
@GET("/api/public/?service=Friendappinfos.getSage")
|
@GET("/api/public/?service=Friendappinfos.getSage")
|
||||||
Observable<ResponseModel<AuthBloggerBean>> getBloggerInfo(
|
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.Manifest;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
|
import android.os.SystemClock;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -35,6 +36,8 @@ public class MsgInputPanelForAudio extends AbsInputPanel {
|
|||||||
ImageView btnText;
|
ImageView btnText;
|
||||||
ImageView btnClose;
|
ImageView btnClose;
|
||||||
private float mLastTouchY;
|
private float mLastTouchY;
|
||||||
|
private long smStartRecTime;
|
||||||
|
|
||||||
private boolean mUpDirection;
|
private boolean mUpDirection;
|
||||||
|
|
||||||
private String token;
|
private String token;
|
||||||
@ -157,6 +160,7 @@ public class MsgInputPanelForAudio extends AbsInputPanel {
|
|||||||
}
|
}
|
||||||
MsgInputPanelForAudio.this.mLastTouchY = mLastTouchY;
|
MsgInputPanelForAudio.this.mLastTouchY = mLastTouchY;
|
||||||
MsgInputPanelForAudio.this.mUpDirection = false;
|
MsgInputPanelForAudio.this.mUpDirection = false;
|
||||||
|
smStartRecTime = SystemClock.elapsedRealtime();
|
||||||
AudioRecordManager.getInstance().startRecord(v.getRootView(), mRongExtension.getConversationIdentifier());
|
AudioRecordManager.getInstance().startRecord(v.getRootView(), mRongExtension.getConversationIdentifier());
|
||||||
return false;
|
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_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/bg_dialog_tip"
|
android:background="@drawable/bg_dialog_tip"
|
||||||
android:minWidth="256dp"
|
android:minWidth="289dp"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
@ -38,9 +38,9 @@
|
|||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="80dp"
|
android:layout_height="80dp"
|
||||||
android:layout_marginStart="36dp"
|
android:layout_marginStart="25dp"
|
||||||
android:layout_marginTop="21dp"
|
android:layout_marginTop="21dp"
|
||||||
android:layout_marginEnd="36dp">
|
android:layout_marginEnd="25dp">
|
||||||
|
|
||||||
<com.makeramen.roundedimageview.RoundedImageView
|
<com.makeramen.roundedimageview.RoundedImageView
|
||||||
android:id="@+id/avatar"
|
android:id="@+id/avatar"
|
||||||
@ -56,12 +56,15 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/username"
|
android:id="@+id/username"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="7dp"
|
android:layout_marginStart="7dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxEms="6"
|
||||||
|
android:singleLine="true"
|
||||||
android:text="小柒"
|
android:text="小柒"
|
||||||
android:textColor="#333333"
|
android:textColor="#333333"
|
||||||
android:textSize="18sp"
|
android:textSize="16sp"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/avatar"
|
app:layout_constraintBottom_toBottomOf="@+id/avatar"
|
||||||
app:layout_constraintStart_toEndOf="@+id/avatar"
|
app:layout_constraintStart_toEndOf="@+id/avatar"
|
||||||
app:layout_constraintTop_toTopOf="@+id/avatar" />
|
app:layout_constraintTop_toTopOf="@+id/avatar" />
|
||||||
|
@ -5,12 +5,29 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="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_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="26dp"
|
android:visibility="gone"
|
||||||
android:text="Button"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
@ -153,10 +153,9 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/input_panel_add_btn"
|
android:id="@+id/input_panel_add_btn"
|
||||||
android:layout_width="wrap_content"
|
android:background="@color/yellow"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1"
|
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:src="@mipmap/ic_msg_add" />
|
android:src="@mipmap/ic_msg_add" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -164,11 +163,11 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/audio_layout"
|
android:id="@+id/audio_layout"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
tools:visibility="visible"
|
tools:visibility="visible" />
|
||||||
android:orientation="horizontal" />
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</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_width="30dp"
|
||||||
android:layout_height="30dp"
|
android:layout_height="30dp"
|
||||||
android:layout_marginEnd="61dp"
|
android:layout_marginEnd="61dp"
|
||||||
|
android:visibility="invisible"
|
||||||
android:layout_marginBottom="62dp"
|
android:layout_marginBottom="62dp"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/audio_btn"
|
app:layout_constraintBottom_toBottomOf="@+id/audio_btn"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/audio_btn"
|
app:layout_constraintEnd_toStartOf="@+id/audio_btn"
|
||||||
@ -31,17 +32,16 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="61dp"
|
android:layout_marginStart="61dp"
|
||||||
android:layout_marginBottom="62dp"
|
android:layout_marginBottom="62dp"
|
||||||
|
android:visibility="invisible"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/audio_btn"
|
app:layout_constraintBottom_toBottomOf="@+id/audio_btn"
|
||||||
app:layout_constraintStart_toEndOf="@+id/audio_btn"
|
app:layout_constraintStart_toEndOf="@+id/audio_btn"
|
||||||
app:srcCompat="@mipmap/ic_chat_video_close" />
|
app:srcCompat="@mipmap/ic_chat_video_close" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/time_text"
|
android:id="@+id/time_text"
|
||||||
android:visibility="gone"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="8dp"
|
android:layout_marginBottom="8dp"
|
||||||
android:text="TextView"
|
|
||||||
app:layout_constraintBottom_toTopOf="@+id/audio_btn"
|
app:layout_constraintBottom_toTopOf="@+id/audio_btn"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/audio_btn"
|
app:layout_constraintEnd_toEndOf="@+id/audio_btn"
|
||||||
app:layout_constraintStart_toStartOf="@+id/audio_btn" />
|
app:layout_constraintStart_toStartOf="@+id/audio_btn" />
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="21dp"
|
android:layout_marginEnd="21dp"
|
||||||
|
android:visibility="invisible"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="@+id/follow"
|
app:layout_constraintTop_toTopOf="@+id/follow"
|
||||||
app:srcCompat="@mipmap/ic_message_msg_more" />
|
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_upload_img">上传图片(非必選)</string>
|
||||||
<string name="greet_clear_config">清除设置</string>
|
<string name="greet_clear_config">清除设置</string>
|
||||||
<string name="greet_save_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="choose_img_max">最多选 %1$s 张图片哦</string>
|
||||||
|
<string name="view_friend_empty_text">暫無好友消息~</string>
|
||||||
</resources>
|
</resources>
|
@ -14,6 +14,24 @@
|
|||||||
<string name="greet_upload_img">上传图片(非必選)</string>
|
<string name="greet_upload_img">上传图片(非必選)</string>
|
||||||
<string name="greet_clear_config">清除设置</string>
|
<string name="greet_clear_config">清除设置</string>
|
||||||
<string name="greet_save_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="choose_img_max">最多选 %1$s 张图片哦</string>
|
||||||
|
<string name="view_friend_empty_text">暫無好友消息~</string>
|
||||||
</resources>
|
</resources>
|
@ -32,4 +32,6 @@
|
|||||||
<string name="diamond_exchange_full_conversion">全額兌換</string>
|
<string name="diamond_exchange_full_conversion">全額兌換</string>
|
||||||
|
|
||||||
<string name="choose_img_max">最多选 %1$s 张图片哦</string>
|
<string name="choose_img_max">最多选 %1$s 张图片哦</string>
|
||||||
|
|
||||||
|
<string name="view_friend_empty_text">friend empty</string>
|
||||||
</resources>
|
</resources>
|
Loading…
x
Reference in New Issue
Block a user