add 分享

add 聊天页面右上角菜单
This commit is contained in:
2024-03-16 17:50:16 +08:00
parent 9c54cfca2a
commit b3b46ccff3
40 changed files with 835 additions and 376 deletions

View File

@@ -61,6 +61,7 @@ import com.yunbao.live.activity.LiveAudienceActivity;
import com.yunbao.live.views.LiveRoomViewHolder;
import com.yunbao.main.dialog.EncourageDialog;
import com.yunbao.main.http.MainHttpUtil;
import com.yunbao.share.bean.ShareBean;
import com.yunbao.share.ui.SharePopDialog;
import com.yunbao.video.activity.VideoPlayActivity;
import com.yunbao.video.utils.VideoStorge;
@@ -592,8 +593,13 @@ public class MyWebViewActivity extends AbsActivity {
} else if (TextUtils.equals(event.getMethod(), "androidCommunityShare")) {
JSONObject json = JSONObject.parseObject(event.getData());
new SharePopDialog(mContext)
.setShareType(SharePopDialog.TYPE_DYNAMIC)
.setShareData(ShareBean.ShareBuilder
.create()
.setAnchorAvatar(json.getString("avatar"))
.build()
)
.setShareLink(CommonAppConfig.HOST + json.getString("link"))
.setAnchorAvatar(json.getString("avatar"))
.showDialog();
} else if (TextUtils.equals(event.getMethod(), "androidCancelAnchorAttention")) {
if (!StringUtil.isEmpty(LiveAudienceActivity.is_fans)) {

View File

@@ -1,21 +1,16 @@
package com.yunbao.main.activity;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
@@ -27,12 +22,13 @@ import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.GsonUtils;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.activity.SelectImageActivity;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.ImageEntity;
import com.yunbao.common.bean.MessageChatUserBean;
import com.yunbao.common.bean.MessageUserInfoBean;
import com.yunbao.common.bean.NoviceInstructorModel;
import com.yunbao.common.bean.SetAttentsModel;
@@ -40,11 +36,9 @@ import com.yunbao.common.event.PDChatInputModeEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnSendMessageListener;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.NoviceInstructorManager;
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
import com.yunbao.common.message.content.MessageChatTipsContent;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
@@ -59,13 +53,14 @@ import com.yunbao.live.views.PDLiveConversationFragment;
import com.yunbao.main.R;
import com.yunbao.main.adapter.MessageChatTopImageListAdapter;
import com.yunbao.main.adapter.MessageChatTopTopListAdapter;
import com.yunbao.main.fragment.MyAddressBookFragment;
import com.yunbao.main.http.MainHttpUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import io.rong.imkit.IMCenter;
@@ -113,6 +108,12 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
MessageIMManager.get(this).addConversationClickListener();
}
@Override
protected void onResume() {
super.onResume();
setUserCard();
}
private void hideUserCard() {
if (card.getTag() != null) return;
card.setTag("fold");
@@ -185,7 +186,6 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
//绑定聊天用户id
inputPanel.setTargetId(targetId);
ToastUtil.show("id:" + targetId);
//获取用户信息
UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(targetId);
setUserCard();
@@ -262,29 +262,37 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
@Override
public void onSuccess(MessageUserInfoBean data) {
userInfoBean = data;
titleView.setText(data.getUser().getUserNicename() + "_");
titleView.setText(data.getUser().getUserNicename());
ImgLoader.display(mContext, data.getUser().getAvatar(), ViewUtils.findViewById(card, R.id.rc_conversation_portrait, ImageView.class));
ViewUtils.findViewById(card, R.id.userName, TextView.class).setText(data.getUser().getUserNicename());
ViewUtils.findViewById(card, R.id.sign, TextView.class).setText(data.getUser().getSignature());
if (data.getInfo().getRongOnline() == 1) {
ViewUtils.findViewById(card, R.id.user_status, TextView.class).setText(R.string.activity_msg_chat_top_status_online);
ViewUtils.findViewById(card, R.id.userStatusIcon, ImageView.class).setImageResource(R.mipmap.icon_green);
} else {
ViewUtils.findViewById(card, R.id.user_status, TextView.class).setText(R.string.activity_msg_chat_top_status_offline);
ViewUtils.findViewById(card, R.id.userStatusIcon, ImageView.class).setImageResource(R.mipmap.icon_green);
}
showBanner();
showTag();
if(data.getUser().getAttention()==0){
ViewUtils.findViewById(card,R.id.follow, Button.class).setOnClickListener(new View.OnClickListener() {
if (data.getUser().getAttention() == 0) {
ViewUtils.findViewById(card, R.id.follow, Button.class).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
follow((Button) view,userInfoBean.getUser().getId()+"");
follow((Button) view, userInfoBean.getUser().getId() + "");
}
});
}else{
ViewUtils.findViewById(card,R.id.follow, Button.class).setVisibility(View.INVISIBLE);
} else {
ViewUtils.findViewById(card, R.id.follow, Button.class).setVisibility(View.INVISIBLE);
}
getRemarkName();
}
@Override
public void onError(String error) {
}
private void showBanner() {
LiveNetManager.get(mContext)
.getUserHomeBanner(targetId, new HttpCallback<List<String>>() {
@@ -305,30 +313,31 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
}
});
}
private void showTag(){
List<String> tags=new ArrayList<>();
private void showTag() {
List<String> tags = new ArrayList<>();
tags.add(userInfoBean.getInfo().getAge());
if(!StringUtil.isEmpty(userInfoBean.getInfo().getCareer())){
if (!StringUtil.isEmpty(userInfoBean.getInfo().getCareer())) {
tags.add(userInfoBean.getInfo().getCareer());
}
if(!StringUtil.isEmpty(userInfoBean.getInfo().getHeight())&&!userInfoBean.getInfo().getHeight().equals("0")) {
if (!StringUtil.isEmpty(userInfoBean.getInfo().getHeight()) && !userInfoBean.getInfo().getHeight().equals("0")) {
tags.add(userInfoBean.getInfo().getHeight());
}
List<String> t;
if(WordUtil.isNewZh()) {
t=userInfoBean.getInfo().getCn_label();
}else{
t=userInfoBean.getInfo().getEn_label();
if (WordUtil.isNewZh()) {
t = userInfoBean.getInfo().getCn_label();
} else {
t = userInfoBean.getInfo().getEn_label();
}
if(t!=null){
if (t != null) {
for (String tag : t) {
if(!StringUtil.isEmpty(tag)){
if (!StringUtil.isEmpty(tag)) {
tags.add(tag);
}
}
}
MessageChatTopTopListAdapter adapter=new MessageChatTopTopListAdapter();
MessageChatTopTopListAdapter adapter = new MessageChatTopTopListAdapter();
RecyclerView avatarList = ViewUtils.findViewById(card, R.id.tag_list, RecyclerView.class);
avatarList.setAdapter(adapter);
adapter.setUrls(tags);
@@ -337,6 +346,23 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
}
private void getRemarkName() {
MainHttpUtil.getInstructorRemark(new com.yunbao.common.http.HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
JSONArray array = JSONArray.parseArray(Arrays.toString(info));
for (int i = 0; i < array.size(); i++) {
JSONObject json = array.getJSONObject(0);
if (json.containsKey(targetId)) {
titleView.setText(json.getString(targetId));
ViewUtils.findViewById(card, R.id.userName, TextView.class).setText(json.getString(targetId));
return;
}
}
}
});
}
@Override
public void onClick(View v) {
int id = v.getId();
@@ -418,12 +444,13 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
}
}
}
private void follow(Button btn, String id) {
LiveNetManager.get(btn.getContext())
.setAttents(id, new HttpCallback<SetAttentsModel>() {
@Override
public void onSuccess(SetAttentsModel data) {
btn.setVisibility(View.INVISIBLE);
btn.setVisibility(View.INVISIBLE);
}
@Override
@@ -432,6 +459,7 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
@@ -448,7 +476,7 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageIMEvent(String event) {
if (!TextUtils.isEmpty(event)) {
titleView.setText(event);
//titleView.setText(event);
}
}

View File

@@ -65,6 +65,7 @@ import com.yunbao.main.activity.MainActivity;
import com.yunbao.main.activity.MyWalletActivity;
import com.yunbao.main.dialog.EncourageDialog;
import com.yunbao.main.utils.BottomBarUtil;
import com.yunbao.share.bean.ShareBean;
import com.yunbao.share.ui.SharePopDialog;
import com.yunbao.video.activity.VideoPlayActivity;
import com.yunbao.video.utils.VideoStorge;
@@ -376,8 +377,10 @@ public class MainHomeCommunityFragment extends BaseFragment {
} else if (TextUtils.equals(event.getMethod(), "androidCommunityShare")) {
JSONObject json = JSONObject.parseObject(event.getData());
new SharePopDialog(mContext)
.setShareData(ShareBean.ShareBuilder.create()
.setAnchorAvatar(json.getString("avatar"))
.build())
.setShareLink(CommonAppConfig.HOST + json.getString("link"))
.setAnchorAvatar(json.getString("avatar"))
.showDialog();
}
}

View File

@@ -1,8 +1,6 @@
package com.yunbao.main.fragment;
import android.graphics.Color;
import android.os.Bundle;
import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -10,7 +8,6 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.yunbao.common.custom.ItemDecoration;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
@@ -24,9 +21,6 @@ import io.rong.imkit.conversationlist.ConversationListAdapter;
import io.rong.imkit.conversationlist.ConversationListFragment;
import io.rong.imkit.conversationlist.model.BaseUiConversation;
import io.rong.imkit.conversationlist.model.SingleConversation;
import io.rong.imlib.IRongCoreCallback;
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.SearchConversationResult;
@@ -63,7 +57,7 @@ public class MainMessageChatFragment extends ConversationListFragment {
System.err.println(" ----------------------->" + mAdapter.getData().size());
for (BaseUiConversation cn : ((MainConversationListAdapter) mAdapter).getSrcList()) {
System.err.println(" ----------------------->" + cn.mCore.getConversationTitle() + "|" + cn.mCore.getSenderUserName());
if(StringUtil.isEmpty(cn.mCore.getConversationTitle()))continue;
if (StringUtil.isEmpty(cn.mCore.getConversationTitle())) continue;
if (cn.mCore.getConversationTitle().contains(search)) {
conversation = new SingleConversation(getContext(), new Conversation());
conversation.mCore.setObjectName("SEARCH_USER" + search);
@@ -74,7 +68,6 @@ public class MainMessageChatFragment extends ConversationListFragment {
conversation.mCore.setSenderUserId(cn.mCore.getSenderUserId());
data.add(conversation);
}
}
if (data.size() == 1) {
data.get(0).mCore.setMentionedCount(3);

View File

@@ -57,6 +57,7 @@ import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.UserInfo;
import io.rong.sight.SightExtensionModule;
import com.yunbao.main.R;
import com.yunbao.main.views.MessageChatExtensionConfig;
@@ -68,6 +69,7 @@ public class ConversationIMListManager {
private Context mContext;
//指导员ID
private String targetId;
private String topContent;
private Handler conversationIMListHandler = new Handler();
private ConversationIMListManager(Context context) {
@@ -246,11 +248,30 @@ public class ConversationIMListManager {
}
};
private void setConversationToTop(String targetId) {
setConversationToTop(null, targetId);
}
/**
* 消息置顶
*/
private void setConversationToTop(String targetId) {
IMCenter.getInstance().setConversationToTop(Conversation.ConversationType.PRIVATE, targetId, true, false, null
private void setConversationToTop(BaseUiConversation conversation, String targetId) {
boolean top = true;
Conversation.ConversationType type = Conversation.ConversationType.PRIVATE;
if (conversation != null) {
top = !conversation.mCore.isTop();
targetId = conversation.mCore.getTargetId();
type = conversation.mCore.getConversationType();
}
IMCenter.getInstance().setConversationToTop(type, targetId, top, false, new RongIMClient.ResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean aBoolean) {
}
@Override
public void onError(RongIMClient.ErrorCode e) {
}
}
);
}
@@ -283,7 +304,12 @@ public class ConversationIMListManager {
//非指导员都可以点击
UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(baseUiConversation.mCore.getTargetId());
String[] list;
list = new String[]{WordUtil.getNewString(R.string.top),WordUtil.getNewString(R.string.delete)};
if (baseUiConversation.mCore.isTop()) {
topContent = WordUtil.getNewString(R.string.untop);
} else {
topContent = WordUtil.getNewString(R.string.top);
}
list = new String[]{topContent, WordUtil.getNewString(R.string.delete)};
if (userInfo != null && !TextUtils.isEmpty(userInfo.getExtra())) {
IMLoginModel model = new Gson().fromJson(userInfo.getExtra(), IMLoginModel.class);
if (!TextUtils.equals(model.getIsAdmin(), "1")) {
@@ -300,10 +326,10 @@ public class ConversationIMListManager {
.setOnItemClickListener(new OnItemClickListener<String>() {
@Override
public void onItemClick(String bean, int position) {
if (bean.equals(WordUtil.getNewString(R.string.top))) {
// copyText(baseUiConversation,context);
setConversationToTop(targetId);
} else if(bean.equals(WordUtil.getNewString(R.string.delete))){
if (bean.equals(topContent)) {
// copyText(baseUiConversation,context);
setConversationToTop(baseUiConversation, targetId);
} else if (bean.equals(WordUtil.getNewString(R.string.delete))) {
delete(baseUiConversation.mCore.getTargetId());
}
}
@@ -402,7 +428,8 @@ public class ConversationIMListManager {
public String getTargetId() {
return targetId;
}
private void copyText(UiMessage uiMessage,Context context) {
private void copyText(UiMessage uiMessage, Context context) {
ClipboardManager cm = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE);
ClipData clipData = ClipData.newPlainText("text", uiMessage.getContentSpannable());
cm.setPrimaryClip(clipData);

View File

@@ -3,16 +3,15 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
android:layout_height="wrap_content">
<RelativeLayout
android:layout_marginTop="20dp"
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:paddingTop="24dp"
android:layout_height="52dp"
android:layout_marginTop="20dp"
android:paddingTop="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -49,10 +48,10 @@
<ImageView
android:id="@+id/img_more"
android:layout_width="40dp"
android:scaleType="center"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:padding="9dp"
android:scaleType="center"
android:src="@mipmap/btn_more_black"
android:visibility="visible" />
</RelativeLayout>
@@ -109,17 +108,31 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/user_status"
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="在线"
android:textColor="#AAAAAA"
android:textSize="8sp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="@+id/userName"
app:layout_constraintStart_toEndOf="@+id/userName"
app:layout_constraintTop_toTopOf="@+id/userName" />
app:layout_constraintTop_toTopOf="@+id/userName">
<TextView
android:id="@+id/user_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="在线"
android:textColor="#AAAAAA"
android:textSize="8sp" />
<ImageView
android:id="@+id/userStatusIcon"
android:layout_width="5dp"
android:layout_height="5dp"
android:layout_gravity="top"
android:layout_marginStart="5dp"
android:src="@mipmap/icon_green" />
</LinearLayout>
<TextView
android:id="@+id/info"
@@ -184,13 +197,13 @@
android:layout_marginStart="50dp"
android:layout_marginEnd="50dp"
android:layout_marginBottom="60dp"
tools:listitem="@layout/view_msg_chat_top_image"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="9"
android:orientation="horizontal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/imageView"
app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintStart_toStartOf="parent"
tools:itemCount="9"
tools:listitem="@layout/view_msg_chat_top_image" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/tag_list"

View File

@@ -19,6 +19,7 @@
<string name="battlepass_reward_item_lock">暫未達到等級</string>
<string name="battlepass_reward_item_get">領取成功</string>
<string name="top">置頂</string>
<string name="untop">取消置頂</string>
<string name="delete">刪除</string>
<string name="activity_msg_title">消息</string>
<string name="activity_msg_news_notice">官方通知</string>
@@ -70,4 +71,6 @@
<string name="year"></string>
<string name="month"></string>
<string name="day"></string>
<string name="activity_msg_chat_top_status_online">在线</string>
<string name="activity_msg_chat_top_status_offline">离线</string>
</resources>

View File

@@ -19,6 +19,7 @@
<string name="battlepass_reward_item_lock">Not yet reached level</string>
<string name="battlepass_reward_item_get">Successfully claimed</string>
<string name="top">置頂</string>
<string name="untop">取消置頂</string>
<string name="delete">刪除</string>
<string name="activity_msg_title">Information</string>
<string name="activity_msg_news_notice">Activities</string>
@@ -67,7 +68,9 @@
<string name="activity_reg_user_info_birthday_text">Select your Birthday</string>
<string name="dialog_user_info_album">Album</string>
<string name="dialog_user_info_camera">Camera</string>
<string name="year"></string>
<string name="month"></string>
<string name="day"></string>
<string name="year">Year</string>
<string name="month">Month</string>
<string name="day">Day</string>
<string name="activity_msg_chat_top_status_online">Online</string>
<string name="activity_msg_chat_top_status_offline">Offline</string>
</resources>