update
This commit is contained in:
parent
e4cd95951c
commit
05d4f84844
@ -121,7 +121,7 @@
|
||||
android:name=".activity.MainActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".activity.message.MsgMoreConfigActivity"
|
||||
android:name=".activity.message.MsgMoreGreetConfigActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".activity.message.ChatActivity"
|
||||
|
@ -16,6 +16,7 @@ import com.shayu.onetoone.provider.MessageChatTipsItemProvider;
|
||||
import com.shayu.onetoone.utils.NeverCrashUtils;
|
||||
import com.yunbao.common.BuildConfig;
|
||||
import com.yunbao.common.CommonAppContext;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.manager.imrongcloud.InstructorSendReward;
|
||||
import com.yunbao.common.manager.imrongcloud.InstructorSendRewardProvider;
|
||||
import com.yunbao.common.manager.imrongcloud.RecommendLiveRoom;
|
||||
@ -96,15 +97,15 @@ public class AppContext extends CommonAppContext {
|
||||
RongcloudIMManager.addRongcloudIMOnReceiveMessageListener(new RongIMClient.OnReceiveMessageWrapperListener() {
|
||||
@Override
|
||||
public boolean onReceived(Message message, int left, boolean hasPackage, boolean offline) {
|
||||
System.out.println("初始化IM消息:"+message.getContent());
|
||||
if (message.getContent() instanceof TextMessage) {
|
||||
TextMessage content = (TextMessage) message.getContent();
|
||||
ToastUtil.show("收到:" + content.getContent());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
RouteUtils.registerActivity(RouteUtils.RongActivityType.ConversationActivity, ChatActivity.class);
|
||||
|
||||
IMLoginManager.get(this).setLanguage(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -16,6 +16,8 @@ import androidx.appcompat.app.AppCompatActivity;
|
||||
import com.shayu.onetoone.R;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Activity基类
|
||||
*/
|
||||
@ -28,6 +30,9 @@ public abstract class AbsOTOActivity extends AppCompatActivity {
|
||||
Configuration config = new Configuration();
|
||||
config.setToDefaults();
|
||||
config.locale = IMLoginManager.get(this).getLocaleLanguage();
|
||||
if(config.locale== Locale.SIMPLIFIED_CHINESE){
|
||||
config.locale=Locale.TRADITIONAL_CHINESE;
|
||||
}
|
||||
res.updateConfiguration(config, res.getDisplayMetrics());
|
||||
return res;
|
||||
}
|
||||
|
@ -63,6 +63,7 @@ import org.greenrobot.eventbus.ThreadMode;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* 启动Activity
|
||||
|
@ -19,19 +19,29 @@ import com.shayu.onetoone.activity.fragments.DynamicFragment;
|
||||
import com.shayu.onetoone.activity.fragments.FriendsFragment;
|
||||
import com.shayu.onetoone.activity.fragments.MessageFragment;
|
||||
import com.shayu.onetoone.activity.fragments.MyFragment;
|
||||
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
||||
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||||
import com.shayu.onetoone.manager.OTONetManager;
|
||||
import com.shayu.onetoone.manager.RouteManager;
|
||||
import com.yunbao.common.CommonAppConfig;
|
||||
import com.yunbao.common.bean.IMLoginModel;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
|
||||
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.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.rong.imkit.RongIM;
|
||||
import io.rong.imkit.manager.UnReadMessageManager;
|
||||
import io.rong.imkit.userinfo.RongUserInfoManager;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.UserInfo;
|
||||
import kotlin.Unit;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
@ -46,8 +56,15 @@ public class MainActivity extends AbsOTOActivity {
|
||||
private ViewPager2 viewPager;
|
||||
private DslTabLayout dslTabLayout;
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
Bus.getOff(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void main(Bundle savedInstanceState) {
|
||||
Bus.getOn(this);
|
||||
fragments.add(new FriendsFragment());
|
||||
fragments.add(new DynamicFragment());
|
||||
fragments.add(new MessageFragment());
|
||||
@ -87,13 +104,70 @@ public class MainActivity extends AbsOTOActivity {
|
||||
}
|
||||
});
|
||||
RongcloudIMManager.connectIM(mContext);
|
||||
IMLoginModel userInfo = IMLoginManager.get(this).getUserInfo();
|
||||
UserInfo info = new UserInfo(userInfo.getId() + "", userInfo.getUserNicename(), Uri.parse(userInfo.getAvatar()));
|
||||
RongUserInfoManager.getInstance().refreshUserInfoCache(info);
|
||||
showRedPoint(-1);
|
||||
UnReadMessageManager.getInstance().addObserver(new Conversation.ConversationType[]{Conversation.ConversationType.SYSTEM, Conversation.ConversationType.PRIVATE}, new UnReadMessageManager.IUnReadMessageObserver() {
|
||||
@Override
|
||||
public void onCountChanged(int count) {
|
||||
showRedPoint(count);
|
||||
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_SYSTEM));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void showRedPoint(int count) {
|
||||
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();
|
||||
}
|
||||
//大于0则是通过会话未读监听器获取到的数,则不用再调用获取未读数接口了
|
||||
if (count >= 0) {
|
||||
updateUnreadCount(point + count);
|
||||
return;
|
||||
}
|
||||
RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback<Integer>() {
|
||||
@Override
|
||||
public void onSuccess(Integer integer) {
|
||||
updateUnreadCount(point + integer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode e) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void updateUnreadCount(int count) {
|
||||
if(count==0){
|
||||
dslTabLayout.setDrawBadge(false);
|
||||
}else {
|
||||
dslTabLayout.setDrawBadge(true);
|
||||
}
|
||||
dslTabLayout.updateTabBadge(2, count + "");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_main;
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void busEvent(MessageMsgBusEvent event) {
|
||||
if (event.getType() == MessageMsgBusEvent.TYPE_ALL_READ) {
|
||||
updateUnreadCount(0);
|
||||
}
|
||||
}
|
||||
}
|
@ -22,11 +22,13 @@ public class RecommendFragment extends BaseFragment {
|
||||
SmartRefreshLayout mRefreshLayout;
|
||||
SwipeRecyclerView recyclerView;
|
||||
HomeRecommendListAdapter adapter;
|
||||
View top;
|
||||
|
||||
@Override
|
||||
public void initView(View itemView) {
|
||||
recyclerView = itemView.findViewById(R.id.recyclerView);
|
||||
mRefreshLayout = itemView.findViewById(R.id.swipeRefreshLayout);
|
||||
top=itemView.findViewById(R.id.btn_top_list);
|
||||
adapter=new HomeRecommendListAdapter(getContext());
|
||||
recyclerView.setAdapter(adapter);
|
||||
mRefreshLayout.setNestedScrollingEnabled(false);
|
||||
@ -42,6 +44,9 @@ public class RecommendFragment extends BaseFragment {
|
||||
onConversationListLoadMore();
|
||||
}
|
||||
});
|
||||
top.setOnClickListener(view -> {
|
||||
recyclerView.scrollToPosition(0);
|
||||
});
|
||||
}
|
||||
|
||||
private void onConversationListLoadMore() {
|
||||
|
@ -15,6 +15,7 @@ import com.yunbao.common.CommonAppConfig;
|
||||
import com.yunbao.common.interfaces.ImageResultCallback;
|
||||
import com.yunbao.common.utils.ProcessImageUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
@ -50,16 +51,16 @@ public class ChatMessageFragment extends ConversationFragment {
|
||||
initCamera();
|
||||
|
||||
call.setOnClickListener(v -> {
|
||||
MessageChatTipsContent bean= MessageChatTipsContent.obtain("【安全提示】為保障您的權益,慶提高警惕,不要輕易添加或提供第三方聯繫方式");
|
||||
MessageChatTipsContent bean= MessageChatTipsContent.obtain(WordUtil.getString(R.string.message_chat_tip1));
|
||||
IMCenter.getInstance().insertOutgoingMessage(conversationType, targetId, Message.SentStatus.SENT, bean, System.currentTimeMillis(), new RongIMClient.ResultCallback<Message>() {
|
||||
@Override
|
||||
public void onSuccess(Message message) {
|
||||
ToastUtil.show("成功");
|
||||
ToastUtil.show(R.string.system_tip_success);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode e) {
|
||||
ToastUtil.show("失败:"+e.getMessage());
|
||||
ToastUtil.show(R.string.system_tip_failure);
|
||||
System.out.println("失败:"+e.getMessage());
|
||||
|
||||
}
|
||||
@ -145,7 +146,7 @@ public class ChatMessageFragment extends ConversationFragment {
|
||||
|
||||
@Override
|
||||
public void onError(Message message, RongIMClient.ErrorCode errorCode) {
|
||||
ToastUtil.show("发送失败");
|
||||
ToastUtil.show(R.string.system_tip_failure);
|
||||
System.out.println("发送失败:" + errorCode.getMessage());
|
||||
}
|
||||
});
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.shayu.onetoone.activity.fragments.message;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
@ -14,33 +13,28 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
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.MsgMessageBean;
|
||||
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
||||
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||||
import com.shayu.onetoone.manager.OTONetManager;
|
||||
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.CommonAppConfig;
|
||||
import com.yunbao.common.glide.ImgLoader;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.utils.DialogUitl;
|
||||
import com.yunbao.common.utils.DpUtil;
|
||||
import com.yunbao.common.utils.RandomUtil;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
@ -48,6 +42,12 @@ import org.greenrobot.eventbus.ThreadMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import io.rong.common.RLog;
|
||||
import io.rong.imkit.GlideKitImageEngine;
|
||||
import io.rong.imkit.IMCenter;
|
||||
@ -64,7 +64,6 @@ 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.dialog.OptionsPopupDialog;
|
||||
import io.rong.imkit.widget.refresh.SmartRefreshLayout;
|
||||
import io.rong.imkit.widget.refresh.api.RefreshLayout;
|
||||
import io.rong.imkit.widget.refresh.constant.RefreshState;
|
||||
@ -76,6 +75,7 @@ import io.rong.imlib.IRongCoreEnum;
|
||||
import io.rong.imlib.RongCoreClient;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.imlib.model.UserInfo;
|
||||
|
||||
/**
|
||||
@ -96,7 +96,6 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
protected Handler mHandler = new Handler(Looper.getMainLooper());
|
||||
protected boolean delayRefresh = false;
|
||||
|
||||
View notification, interaction, system;
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
@ -121,10 +120,12 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
Bus.getOn(this);
|
||||
mList = itemView.findViewById(R.id.recyclerView);
|
||||
mRefreshLayout = itemView.findViewById(R.id.swipeRefreshLayout);
|
||||
mAdapter = new MsgMessageRecyclerViewAdapter();
|
||||
mAdapter = new MsgMessageRecyclerViewAdapter(mList);
|
||||
list = new ArrayList<>();
|
||||
mList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
|
||||
mList.setSwipeMenuCreator(initSwipeMenuCreator());
|
||||
mList.setHasFixedSize(true);
|
||||
mList.setAutoMarginEnabled(true);
|
||||
mList.setOnItemMenuClickListener(new OnItemMenuClickListener() {
|
||||
@Override
|
||||
public void onItemClick(SwipeMenuBridge menuBridge, int adapterPosition) {
|
||||
@ -141,19 +142,15 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
BaseUiConversation conversation = mAdapter.getData().get(swipeRunnable.adapterPosition);
|
||||
if (swipeRunnable.menuPosition == 0) {
|
||||
topItem(conversation, swipeRunnable.adapterPosition);
|
||||
// ToastUtil.showDebug("置顶:" + mAdapter.getList().get(adapterPosition).getNickname());
|
||||
} else {
|
||||
removeItem(conversation, swipeRunnable.adapterPosition);
|
||||
// ToastUtil.showDebug("删除:" + mAdapter.getList().get(adapterPosition).getNickname());
|
||||
//mAdapter.getData().remove(adapterPosition);
|
||||
//mAdapter.notifyDataSetChanged();
|
||||
}
|
||||
swipeRunnable = null;
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
});
|
||||
initListTop();
|
||||
initSystemNotice();
|
||||
initUserInfo(0);
|
||||
initRongConfig();
|
||||
}
|
||||
@ -199,37 +196,67 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
}
|
||||
|
||||
|
||||
private void initListTop() {
|
||||
private void initSystemNotice() {
|
||||
|
||||
mAdapter.add(setTopData("官方通知", "测试", "12:00", null, 5), 0);
|
||||
mAdapter.add(setTopData("互动消息", "测试2", "13:00", null, 0), 1);
|
||||
mAdapter.add(setTopData("系统消息", "测试3", "14:00", null, 15), 2);
|
||||
|
||||
OTONetManager.getInstance(mContext)
|
||||
.getMessageSystemLists(new HttpCallback<List<OfficialNoticeBean>>() {
|
||||
@Override
|
||||
public void onSuccess(List<OfficialNoticeBean> data) {
|
||||
for (OfficialNoticeBean datum : data) {
|
||||
if (datum.getType() == 3) {
|
||||
continue;
|
||||
}
|
||||
mAdapter.add(setTopData(datum.getTitle(), datum.getContent(), datum.getAddtime()*1000, datum.getNew_image(), datum.getNum(), datum.getType()), datum.getType());
|
||||
}
|
||||
onConversationListRefresh(mRefreshLayout);
|
||||
mAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
private SingleConversation setTopData(String title, String content, String time, String avatar, int num) {
|
||||
private SingleConversation setTopData(String title, String content, long time, String avatar, int num, int id) {
|
||||
SingleConversation conversation = new SingleConversation(getContext(), new Conversation());
|
||||
conversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE);
|
||||
conversation.mCore.setSenderUserName(title);
|
||||
conversation.mCore.setConversationTitle(title + "?");
|
||||
conversation.mCore.setConversationTitle(title);
|
||||
conversation.mCore.setSentTime(time);
|
||||
conversation.mCore.setSentStatus(Message.SentStatus.SENT);
|
||||
conversation.mConversationContent = new SpannableString(content);
|
||||
conversation.mCore.setSentTime(System.currentTimeMillis());
|
||||
conversation.mCore.setUnreadMessageCount(num);
|
||||
conversation.mCore.setTargetId("10000");
|
||||
conversation.mCore.setTargetId(id + "");
|
||||
UserInfo info = new UserInfo(id + "", title, Uri.parse(avatar));
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("sex", -1);
|
||||
json.put("age", -1);
|
||||
info.setExtra(json.toJSONString());
|
||||
RongUserInfoManager.getInstance().refreshUserInfoCache(info);
|
||||
return conversation;
|
||||
}
|
||||
|
||||
private void clearTopData() {
|
||||
|
||||
mAdapter.clearSystemNotification();
|
||||
mAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* 全部标记已读
|
||||
*/
|
||||
public void allRead() {
|
||||
clearTopData();
|
||||
RongCoreClient.getInstance().getUnreadConversationList(new IRongCoreCallback.ResultCallback<List<Conversation>>() {
|
||||
@Override
|
||||
public void onSuccess(List<Conversation> conversations) {
|
||||
for (Conversation conversation : conversations) {
|
||||
Log.i(TAG, "onSuccess: " + conversation.getTargetId());
|
||||
if (conversation.getConversationType() != Conversation.ConversationType.PRIVATE) {
|
||||
continue;
|
||||
}
|
||||
@ -238,6 +265,8 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
new RongIMClient.ResultCallback<Boolean>() {
|
||||
@Override
|
||||
public void onSuccess(Boolean aBoolean) {
|
||||
onConversationListRefresh(mRefreshLayout);
|
||||
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_ALL_READ));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -265,8 +294,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
@Override
|
||||
public void onSuccess(Boolean aBoolean) {
|
||||
Log.i(TAG, "置顶 onSuccess: " + aBoolean);
|
||||
mList.requestLayout();
|
||||
mList.invalidate();
|
||||
onConversationListRefresh(mRefreshLayout);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -286,7 +314,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
@Override
|
||||
public void onSuccess(Boolean aBoolean) {
|
||||
Log.i(TAG, "删除 onSuccess: " + aBoolean);
|
||||
//mRefreshLayout.postInvalidate();
|
||||
onConversationListRefresh(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -340,7 +368,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
|
||||
protected void initRefreshView() {
|
||||
if (this.mRefreshLayout == null) {
|
||||
RLog.d(this.TAG, "initRefreshView null");
|
||||
RLog.d(TAG, "initRefreshView null");
|
||||
} else {
|
||||
this.mRefreshLayout.setNestedScrollingEnabled(false);
|
||||
this.mRefreshLayout.setRefreshHeader(new RongRefreshHeader(this.getContext()));
|
||||
@ -363,12 +391,11 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
this.mConversationListViewModel.getConversationList(false, false, 0L);
|
||||
this.mConversationListViewModel.getConversationListLiveData().observe(this.getViewLifecycleOwner(), new Observer<List<BaseUiConversation>>() {
|
||||
public void onChanged(List<BaseUiConversation> uiConversations) {
|
||||
RLog.d(MsgMessageFragment.this.TAG, "conversation list onChanged.");
|
||||
if (MsgMessageFragment.this.mNewState == 0) {
|
||||
MsgMessageFragment.this.mAdapter.setDataCollection(uiConversations);
|
||||
} else {
|
||||
RLog.d(TAG, "conversation list onChanged. |" + MsgMessageFragment.this.mNewState);
|
||||
if (MsgMessageFragment.this.mNewState == 1) {
|
||||
MsgMessageFragment.this.delayRefresh = true;
|
||||
}
|
||||
MsgMessageFragment.this.mAdapter.setDataCollection(uiConversations);
|
||||
|
||||
}
|
||||
});
|
||||
@ -410,7 +437,6 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
if (this.mConversationListViewModel != null) {
|
||||
this.mConversationListViewModel.getConversationList(false, true, 0L);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void onConversationListLoadMore() {
|
||||
@ -439,6 +465,16 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
public void onItemClick(View view, ViewHolder holder, int position) {
|
||||
if (position >= 0 && position < this.mAdapter.getData().size()) {
|
||||
BaseUiConversation baseUiConversation = (BaseUiConversation) this.mAdapter.getItem(position);
|
||||
String targetId = baseUiConversation.mCore.getTargetId();
|
||||
try {
|
||||
long type=Integer.parseInt(targetId);
|
||||
if(type<100){
|
||||
ToastUtil.showDebug("还没做");
|
||||
return;
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
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.");
|
||||
@ -459,6 +495,51 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(View view, ViewHolder holder, int position) {
|
||||
/*if (position >= 0 && position < this.mAdapter.getData().size()) {
|
||||
final BaseUiConversation baseUiConversation = (BaseUiConversation) this.mAdapter.getItem(position);
|
||||
ConversationListBehaviorListener listBehaviorListener = RongConfigCenter.conversationListConfig().getListener();
|
||||
if (listBehaviorListener != null && listBehaviorListener.onConversationLongClick(view.getContext(), view, baseUiConversation)) {
|
||||
RLog.d(this.TAG, "ConversationList item click event has been intercepted by App.");
|
||||
return true;
|
||||
} else {
|
||||
final ArrayList<String> items = new ArrayList();
|
||||
final String removeItem = view.getContext().getResources().getString(io.rong.imkit.R.string.rc_conversation_list_dialog_remove);
|
||||
final String setTopItem = view.getContext().getResources().getString(io.rong.imkit.R.string.rc_conversation_list_dialog_set_top);
|
||||
final String cancelTopItem = view.getContext().getResources().getString(io.rong.imkit.R.string.rc_conversation_list_dialog_cancel_top);
|
||||
if (!(baseUiConversation instanceof GatheredConversation)) {
|
||||
if (baseUiConversation.mCore.isTop()) {
|
||||
items.add(cancelTopItem);
|
||||
} else {
|
||||
items.add(setTopItem);
|
||||
}
|
||||
}
|
||||
|
||||
items.add(removeItem);
|
||||
int size = items.size();
|
||||
OptionsPopupDialog.newInstance(view.getContext(), (String[]) items.toArray(new String[size])).setOptionsPopupDialogListener(new OptionsPopupDialog.OnOptionsItemClickedListener() {
|
||||
public void onOptionsItemClicked(final int which) {
|
||||
if (!((String) items.get(which)).equals(setTopItem) && !((String) items.get(which)).equals(cancelTopItem)) {
|
||||
if (((String) items.get(which)).equals(removeItem)) {
|
||||
IMCenter.getInstance().removeConversation(baseUiConversation.mCore.getConversationType(), baseUiConversation.mCore.getTargetId(), (RongIMClient.ResultCallback) null);
|
||||
}
|
||||
} else {
|
||||
IMCenter.getInstance().setConversationToTop(baseUiConversation.getConversationIdentifier(), !baseUiConversation.mCore.isTop(), false, new RongIMClient.ResultCallback<Boolean>() {
|
||||
public void onSuccess(Boolean value) {
|
||||
Toast.makeText(view.getContext(), (CharSequence) items.get(which), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
public void onError(RongIMClient.ErrorCode errorCode) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}).show();
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}*/
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -487,6 +568,8 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
|
||||
public void busEvent(MessageMsgBusEvent event) {
|
||||
if (event.getType() == MessageMsgBusEvent.TYPE_ALL_READ) {
|
||||
allRead();
|
||||
}else if(event.getType()==MessageMsgBusEvent.TYPE_UPDATE_SYSTEM){
|
||||
initSystemNotice();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ import java.util.List;
|
||||
* 打招呼设置界面
|
||||
*/
|
||||
@Route(path = RouteManager.ACTIVITY_MSG_MORE_CONFIG_ACTIVITY)
|
||||
public class MsgMoreConfigActivity extends AbsOTOActivity {
|
||||
public class MsgMoreGreetConfigActivity extends AbsOTOActivity {
|
||||
List<GreetBean> deleteList = new ArrayList<>();
|
||||
RecyclerView recyclerView;
|
||||
MsgGreetConfigAdapter adapter;
|
||||
@ -93,7 +93,7 @@ public class MsgMoreConfigActivity extends AbsOTOActivity {
|
||||
cancel.setOnClickListener(v -> clearGreet());
|
||||
recyclerView.setOnClickListener(v -> adapter.notifyDataSetChanged());
|
||||
findViewById(R.id.upload_img).setOnClickListener(v -> {
|
||||
imageUtil.getImageByAlumb();
|
||||
imageUtil.getImageByAlumb(false);
|
||||
});
|
||||
initData();
|
||||
imageUtil.setImageResultCallback(new ImageResultCallback() {
|
@ -2,10 +2,14 @@ package com.shayu.onetoone.adapter;
|
||||
|
||||
import android.text.SpannableString;
|
||||
|
||||
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -14,6 +18,7 @@ import io.rong.imkit.conversationlist.ConversationListAdapter;
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||
import io.rong.imkit.widget.adapter.ViewHolder;
|
||||
import io.rong.imkit.widget.refresh.SmartRefreshLayout;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
|
||||
/**
|
||||
@ -21,42 +26,65 @@ import io.rong.imlib.model.Conversation;
|
||||
*/
|
||||
public class MsgMessageRecyclerViewAdapter extends ConversationListAdapter {
|
||||
List<BaseUiConversation> conversationList = null;
|
||||
Map<BaseUiConversation, Integer> map = new HashMap<>();
|
||||
Map<Integer,BaseUiConversation> map = new HashMap<>();
|
||||
|
||||
SwipeRecyclerView mList;
|
||||
|
||||
public MsgMessageRecyclerViewAdapter(SwipeRecyclerView mList) {
|
||||
this.mList = mList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||
|
||||
String targetId = getData().get(position).mCore.getTargetId();
|
||||
try {
|
||||
int type=Integer.parseInt(targetId);
|
||||
mList.setSwipeItemMenuEnabled(position, type > 100);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
super.onBindViewHolder(holder, position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDataCollection(List<BaseUiConversation> data) {
|
||||
List<BaseUiConversation> tmp = new ArrayList<>();
|
||||
if(conversationList!=null) {
|
||||
tmp.addAll(conversationList);
|
||||
}
|
||||
conversationList = new ArrayList<>(data);
|
||||
List<BaseUiConversation> top = new ArrayList<>();
|
||||
List<BaseUiConversation> data2 = new ArrayList<>();
|
||||
for (BaseUiConversation datum : data) {
|
||||
if (datum.mCore.getConversationType() == Conversation.ConversationType.PRIVATE) {
|
||||
SingleConversation conversation = (SingleConversation) datum;
|
||||
if (conversation.mConversationContent.length() >= 6) {
|
||||
conversation.mConversationContent = new SpannableString(conversation.mConversationContent.toString().substring(0, 6) + "...·");
|
||||
if (datum.mCore.getConversationType() == Conversation.ConversationType.PRIVATE || datum.mCore.getConversationType() == Conversation.ConversationType.SYSTEM) {
|
||||
if (datum.mCore.isTop()) {
|
||||
top.add(datum);
|
||||
} else {
|
||||
conversation.mConversationContent = new SpannableString(conversation.mConversationContent.toString() + "·");
|
||||
data2.add(datum);
|
||||
}
|
||||
tmp.add(datum);
|
||||
}
|
||||
}
|
||||
for (BaseUiConversation conversation : map.keySet()) {
|
||||
if ( map.get(conversation) >= tmp.size()) {
|
||||
tmp.add(conversation);
|
||||
}else{
|
||||
tmp.add(map.get(conversation),conversation);
|
||||
}
|
||||
}
|
||||
super.setDataCollection(tmp);
|
||||
List<BaseUiConversation> list = new ArrayList<>(top);
|
||||
data2.addAll(map.values());
|
||||
Collections.sort(data2,new ListComparator());
|
||||
list.addAll(data2);
|
||||
|
||||
super.setDataCollection(list);
|
||||
}
|
||||
|
||||
|
||||
public void add(SingleConversation item, int position) {
|
||||
map.put(item, position);
|
||||
map.put(position,item);
|
||||
}
|
||||
|
||||
public void clearSystemNotification(){
|
||||
for (BaseUiConversation conversation : map.values()) {
|
||||
conversation.mCore.setUnreadMessageCount(0);
|
||||
}
|
||||
}
|
||||
|
||||
private class ListComparator implements Comparator<BaseUiConversation> {
|
||||
|
||||
@Override
|
||||
public int compare(BaseUiConversation baseUiConversation, BaseUiConversation t1) {
|
||||
System.out.println(" "+t1.mCore.getSentTime()+"|"+baseUiConversation.mCore.getSentTime()+" "+baseUiConversation.mCore.getConversationTitle()+"|"+t1.mCore.getConversationTitle());
|
||||
return (int) (t1.mCore.getSentTime()-baseUiConversation.mCore.getSentTime());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,81 @@
|
||||
package com.shayu.onetoone.bean;
|
||||
|
||||
import com.yunbao.common.bean.BaseModel;
|
||||
|
||||
public class OfficialNoticeBean extends BaseModel {
|
||||
String title;
|
||||
String image;
|
||||
String new_image;
|
||||
String content;
|
||||
long addtime;
|
||||
int num;
|
||||
String link;
|
||||
int type;
|
||||
|
||||
public OfficialNoticeBean() {
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getImage() {
|
||||
return image;
|
||||
}
|
||||
|
||||
public void setImage(String image) {
|
||||
this.image = image;
|
||||
}
|
||||
|
||||
public String getNew_image() {
|
||||
return new_image;
|
||||
}
|
||||
|
||||
public void setNew_image(String new_image) {
|
||||
this.new_image = new_image;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public long getAddtime() {
|
||||
return addtime;
|
||||
}
|
||||
|
||||
public void setAddtime(long addtime) {
|
||||
this.addtime = addtime;
|
||||
}
|
||||
|
||||
public int getNum() {
|
||||
return num;
|
||||
}
|
||||
|
||||
public void setNum(int num) {
|
||||
this.num = num;
|
||||
}
|
||||
|
||||
public String getLink() {
|
||||
return link;
|
||||
}
|
||||
|
||||
public void setLink(String link) {
|
||||
this.link = link;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@ package com.shayu.onetoone.event;
|
||||
|
||||
public class MessageMsgBusEvent extends AbsBusEvent {
|
||||
public static final int TYPE_ALL_READ = 0;
|
||||
public static final int TYPE_UPDATE_SYSTEM=1;
|
||||
|
||||
public MessageMsgBusEvent(int type) {
|
||||
super(type);
|
||||
|
@ -1,11 +1,13 @@
|
||||
package com.shayu.onetoone.manager;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
import com.shayu.onetoone.bean.AvatarBean;
|
||||
import com.shayu.onetoone.bean.GreetBean;
|
||||
import com.shayu.onetoone.bean.JoinAnchorBean;
|
||||
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
||||
import com.shayu.onetoone.bean.UserBean;
|
||||
import com.shayu.onetoone.network.API;
|
||||
import com.yunbao.common.CommonAppConfig;
|
||||
@ -14,6 +16,7 @@ import com.yunbao.common.bean.HttpCallbackModel;
|
||||
import com.yunbao.common.bean.IMLoginModel;
|
||||
import com.yunbao.common.http.ResponseModel;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.utils.MD5Util;
|
||||
|
||||
import java.io.File;
|
||||
@ -22,6 +25,8 @@ import java.util.List;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.functions.Consumer;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import io.rong.imkit.userinfo.RongUserInfoManager;
|
||||
import io.rong.imlib.model.UserInfo;
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
@ -80,6 +85,9 @@ public class OTONetManager {
|
||||
@Override
|
||||
public void accept(ResponseModel<UserBean> liveGiftBeanResponseModel) throws Exception {
|
||||
if (callback != null) {
|
||||
IMLoginModel userInfo = liveGiftBeanResponseModel.getData().getInfo().getUser();
|
||||
UserInfo info = new UserInfo(userInfo.getId() + "", userInfo.getUserNicename(), Uri.parse(userInfo.getAvatar()));
|
||||
RongUserInfoManager.getInstance().refreshUserInfoCache(info);
|
||||
callback.onSuccess(liveGiftBeanResponseModel.getData().getInfo());
|
||||
}
|
||||
}
|
||||
@ -346,8 +354,9 @@ public class OTONetManager {
|
||||
|
||||
public void updateFile(File file, HttpCallback<AvatarBean> callback) {
|
||||
MultipartBody.Part uploadFile = createUploadFile(file);
|
||||
IMLoginModel userInfo = IMLoginManager.get(mContext).getUserInfo();
|
||||
API.get().otoApi(mContext)
|
||||
.updateFile(uploadFile)
|
||||
.updateFile(uploadFile,userInfo.getId()+"",userInfo.getToken())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Consumer<ResponseModel<AvatarBean>>() {
|
||||
@ -367,6 +376,28 @@ public class OTONetManager {
|
||||
}
|
||||
}).isDisposed();
|
||||
}
|
||||
public void getMessageSystemLists(HttpCallback<List<OfficialNoticeBean>> callback) {
|
||||
API.get().otoApi(mContext)
|
||||
.getLists()
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Consumer<ResponseModel<List<OfficialNoticeBean>>>() {
|
||||
@Override
|
||||
public void accept(ResponseModel<List<OfficialNoticeBean>> model) throws Exception {
|
||||
if (callback != null) {
|
||||
callback.onSuccess(model.getData().getInfo());
|
||||
}
|
||||
}
|
||||
}, new Consumer<Throwable>() {
|
||||
@Override
|
||||
public void accept(Throwable throwable) throws Exception {
|
||||
Log.e(TAG, "accept: ", throwable);
|
||||
if (callback != null) {
|
||||
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
|
||||
}
|
||||
}
|
||||
}).isDisposed();
|
||||
}
|
||||
|
||||
private MultipartBody.Part createUploadFile(File file) {
|
||||
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
|
||||
|
@ -3,6 +3,7 @@ package com.shayu.onetoone.network;
|
||||
import com.shayu.onetoone.bean.AvatarBean;
|
||||
import com.shayu.onetoone.bean.GreetBean;
|
||||
import com.shayu.onetoone.bean.JoinAnchorBean;
|
||||
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
||||
import com.shayu.onetoone.bean.UserBean;
|
||||
import com.yunbao.common.bean.BaseModel;
|
||||
import com.yunbao.common.bean.IMLoginModel;
|
||||
@ -82,10 +83,13 @@ public interface OneToOneApi {
|
||||
Observable<ResponseModel<Integer>> getGreetConfigStatus();
|
||||
@GET("/api/public/?service=Friendappinfos.setTextStatus")
|
||||
Observable<ResponseModel<BaseModel>> setGreetConfigGreet( @Query("id")String id, @Query("status")String status);
|
||||
|
||||
@POST("/api/public/?service=Friendappinfos.updateAvatar")
|
||||
@Multipart
|
||||
Observable<ResponseModel<AvatarBean>> updateFile(@Part MultipartBody.Part file);
|
||||
@POST("/api/public/?service=Friendappinfos.updateAvatar")
|
||||
Observable<ResponseModel<AvatarBean>> updateFile(@Part MultipartBody.Part file,@Query("uid")String uid,@Query("token")String token);
|
||||
|
||||
@GET("/api/public/?service=Message.getLists")
|
||||
Observable<ResponseModel<List<OfficialNoticeBean>>> getLists();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.shayu.onetoone.provider;
|
||||
|
||||
import android.text.SpannableString;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.shayu.onetoone.R;
|
||||
@ -25,12 +27,15 @@ public class CustomConversationProvider extends BaseConversationProvider {
|
||||
public void bindViewHolder(ViewHolder holder, BaseUiConversation uiConversation, int position, List<BaseUiConversation> list, IViewProviderListener<BaseUiConversation> listener) {
|
||||
String targetId = uiConversation.mCore.getTargetId();
|
||||
UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(targetId);
|
||||
if(userInfo!=null){
|
||||
JSONObject json=JSONObject.parseObject(userInfo.getExtra());
|
||||
if(json.getInteger("sex")==0){
|
||||
holder.setImageResource(R.id.sex,R.mipmap.ic_message_tab_woman);
|
||||
}else{
|
||||
holder.setImageResource(R.id.sex,R.mipmap.ic_message_tab_man);
|
||||
if (userInfo != null) {
|
||||
JSONObject json = JSONObject.parseObject(userInfo.getExtra());
|
||||
holder.getView(R.id.sex).setVisibility(View.VISIBLE);
|
||||
if (json.getInteger("sex") == -1) {
|
||||
holder.getView(R.id.sex).setVisibility(View.GONE);
|
||||
} else if (json.getInteger("sex") == 0) {
|
||||
holder.setImageResource(R.id.sex, R.mipmap.ic_message_tab_woman);
|
||||
} else {
|
||||
holder.setImageResource(R.id.sex, R.mipmap.ic_message_tab_man);
|
||||
}
|
||||
}
|
||||
super.bindViewHolder(holder, uiConversation, position, list, listener);
|
||||
|
@ -24,6 +24,12 @@
|
||||
android:background="@color/white"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:tab_draw_badge="true"
|
||||
app:tab_badge_offset_x="40dp"
|
||||
app:tab_badge_offset_y="15dp"
|
||||
app:tab_badge_text="2"
|
||||
app:tab_badge_text_size="10sp"
|
||||
app:tab_badge_gravity="right"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:tab_draw_indicator="false"
|
||||
app:tab_item_is_equ_width="true">
|
||||
@ -46,7 +52,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="10sp"
|
||||
android:gravity="center"
|
||||
android:text="交友" />
|
||||
android:text="@string/home_label_friends" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@ -66,7 +72,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="10sp"
|
||||
android:gravity="center"
|
||||
android:text="动态" />
|
||||
android:text="@string/home_label_dynamic" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@ -86,7 +92,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="10sp"
|
||||
android:gravity="center"
|
||||
android:text="消息" />
|
||||
android:text="@string/home_label_chat" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@ -106,7 +112,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="10sp"
|
||||
android:gravity="center"
|
||||
android:text="我的" />
|
||||
android:text="@string/home_label_my" />
|
||||
</LinearLayout>
|
||||
</com.angcyo.tablayout.DslTabLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -7,6 +7,7 @@
|
||||
|
||||
<include
|
||||
android:id="@+id/include"
|
||||
android:layout_marginTop="@dimen/activity_top"
|
||||
layout="@layout/view_activity_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="71dp"
|
||||
@ -31,7 +32,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="21dp"
|
||||
android:text="打招呼文案"
|
||||
android:text="@string/greet_switch_title"
|
||||
android:textColor="#999999"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
@ -89,7 +90,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="9dp"
|
||||
android:text="上传图片(非必選)"
|
||||
android:text="@string/greet_upload_img"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/imageView5"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@ -119,7 +120,7 @@
|
||||
android:layout_height="42dp"
|
||||
android:layout_marginEnd="14dp"
|
||||
android:background="@drawable/bg_msg_greet_config_btn_cancel"
|
||||
android:text="清除设置"
|
||||
android:text="@string/greet_clear_config"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="16sp" />
|
||||
|
||||
@ -128,7 +129,7 @@
|
||||
android:layout_width="118dp"
|
||||
android:layout_height="42dp"
|
||||
android:background="@drawable/bg_msg_greet_config_btn_apply"
|
||||
android:text="保存设置"
|
||||
android:text="@string/greet_save_config"
|
||||
android:textColor="#FFFFFF"
|
||||
|
||||
android:textSize="16sp" />
|
||||
|
@ -1,18 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="110dp"
|
||||
android:layout_height="80dp"
|
||||
android:background="@mipmap/bg_msg_more"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_config"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="start"
|
||||
android:layout_marginStart="14dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
@ -35,11 +36,12 @@
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_read"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_gravity="start"
|
||||
android:layout_marginStart="14dp"
|
||||
android:layout_marginTop="5dp"
|
||||
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
|
@ -2,11 +2,12 @@
|
||||
<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:background="#F7F7F7"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:background="#F7F7F7">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/constraintLayout"
|
||||
@ -54,20 +55,31 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:lines="6"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/constraintLayout"
|
||||
app:layout_constraintStart_toEndOf="@+id/constraintLayout"
|
||||
tools:text="@tools:sample/lorem[4:10]" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/separator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:text="·"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginStart="5dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_content"
|
||||
app:layout_constraintStart_toEndOf="@+id/separator"
|
||||
tools:text="@tools:sample/date/hhmm" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
@ -1,4 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">1v1</string>
|
||||
<string name="title_activity_tag_selection">选择活动</string>
|
||||
<string name="message_chat_tip1">【安全提示】為保障您的權益,慶提高警惕,不要輕易添加或提供第三方聯繫方式</string>
|
||||
<string name="system_tip_success">成功</string>
|
||||
<string name="system_tip_failure">失败</string>
|
||||
<string name="system_tip_error">错误</string>
|
||||
<string name="home_label_friends">交友</string>
|
||||
<string name="home_label_dynamic">动态</string>
|
||||
<string name="home_label_chat">消息</string>
|
||||
<string name="home_label_my">我的</string>
|
||||
<string name="greet_switch_title">打招呼文案</string>
|
||||
<string name="greet_upload_img">上传图片(非必選)</string>
|
||||
<string name="greet_clear_config">清除设置</string>
|
||||
<string name="greet_save_config">保存设置</string>
|
||||
</resources>
|
@ -1,4 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">1v1</string>
|
||||
<string name="title_activity_tag_selection">选择活动</string>
|
||||
<string name="message_chat_tip1">【安全提示】為保障您的權益,慶提高警惕,不要輕易添加或提供第三方聯繫方式</string>
|
||||
<string name="system_tip_success">成功</string>
|
||||
<string name="system_tip_failure">失败</string>
|
||||
<string name="system_tip_error">错误</string>
|
||||
<string name="home_label_friends">交友</string>
|
||||
<string name="home_label_dynamic">动态</string>
|
||||
<string name="home_label_chat">消息</string>
|
||||
<string name="home_label_my">我的</string>
|
||||
<string name="greet_switch_title">打招呼文案</string>
|
||||
<string name="greet_upload_img">上传图片(非必選)</string>
|
||||
<string name="greet_clear_config">清除设置</string>
|
||||
<string name="greet_save_config">保存设置</string>
|
||||
</resources>
|
4
OneToOne/src/main/res/values/dimens.xml
Normal file
4
OneToOne/src/main/res/values/dimens.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<dimen name="activity_top">42dp</dimen>
|
||||
</resources>
|
@ -1,4 +1,17 @@
|
||||
<resources>
|
||||
<string name="app_name">1v1</string>
|
||||
<string name="title_activity_tag_selection">TagSelection_Activity</string>
|
||||
<string name="message_chat_tip1">[Safety Tips]</string>
|
||||
<string name="system_tip_success">success</string>
|
||||
<string name="system_tip_failure">failure</string>
|
||||
<string name="system_tip_error">error</string>
|
||||
<string name="home_label_friends">Friends</string>
|
||||
<string name="home_label_dynamic">Dynamic</string>
|
||||
<string name="home_label_chat">Message</string>
|
||||
<string name="home_label_my">My</string>
|
||||
<string name="greet_switch_title">Greeting copy</string>
|
||||
<string name="greet_upload_img">Upload a picture (not required)</string>
|
||||
<string name="greet_clear_config">Clear Settings</string>
|
||||
<string name="greet_save_config">Save Settings</string>
|
||||
|
||||
</resources>
|
@ -8,14 +8,14 @@ import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.utils.RouteUtil;
|
||||
|
||||
import okhttp3.FormBody;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.Request;
|
||||
|
||||
public class PostRequestParams implements IRequestParam {
|
||||
@Override
|
||||
public Request getRequest(boolean isNeedUid,boolean isNeedToken, Request request, Context context) {
|
||||
if (request.body() instanceof FormBody) {
|
||||
public Request getRequest(boolean isNeedUid, boolean isNeedToken, Request request, Context context) {
|
||||
if (request.body() instanceof FormBody) {
|
||||
FormBody.Builder bodyBuilder = new FormBody.Builder();
|
||||
|
||||
FormBody formBody = (FormBody) request.body();
|
||||
|
||||
for (int i = 0; i < formBody.size(); i++) {
|
||||
@ -32,7 +32,7 @@ public class PostRequestParams implements IRequestParam {
|
||||
if (isNeedUid) {
|
||||
bodyBuilder.addEncoded("uid", String.valueOf(model.getId()));
|
||||
}
|
||||
if(isNeedToken) {
|
||||
if (isNeedToken) {
|
||||
bodyBuilder.addEncoded("token", model.getToken());
|
||||
}
|
||||
formBody = bodyBuilder.build();
|
||||
|
@ -101,7 +101,11 @@ public class ProcessImageUtil extends ProcessResultUtil {
|
||||
mAlumbResultCallback = new ActivityResultCallback() {
|
||||
@Override
|
||||
public void onSuccess(Intent intent) {
|
||||
crop(intent.getData());
|
||||
if(mNeedCrop) {
|
||||
crop(intent.getData());
|
||||
}else{
|
||||
mResultCallback.onSuccess(new File(intent.getData().toString()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -143,6 +147,10 @@ public class ProcessImageUtil extends ProcessResultUtil {
|
||||
* 相册获取图片
|
||||
*/
|
||||
public void getImageByAlumb() {
|
||||
getImageByAlumb(true);
|
||||
}
|
||||
public void getImageByAlumb(boolean needCrop) {
|
||||
mNeedCrop = needCrop;
|
||||
requestPermissions(mAlumbPermissions, mAlumbPermissionCallback);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user