From ee8f6baf02d671e6b3f3b99431474eda0b0be19f Mon Sep 17 00:00:00 2001 From: z583819556 Date: Sat, 9 Mar 2024 16:23:57 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E8=81=8A=E5=A4=A9=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E9=A1=B6=E9=83=A8=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/common/bean/IMLoginModel.java | 10 ++ .../common/bean/MessageChatIsAnchor.java | 16 +++ .../common/bean/MessageUserInfoBean.java | 34 ++++++ .../com/yunbao/common/http/PDLiveApi.java | 6 + .../common/http/live/LiveNetManager.java | 40 +++++++ .../com/yunbao/common/utils/ViewUtils.java | 9 ++ .../activity/PDLiveConversationActivity.java | 106 ++++++++++++++++-- .../MessageChatTopImageListAdapter.java | 55 +++++++++ .../adapter/MessageChatTopTopListAdapter.java | 55 +++++++++ .../main/res/drawable/view_chat_top_tag.xml | 9 ++ .../main/res/layout/view_msg_chat_title.xml | 18 ++- .../res/layout/view_msg_chat_top_image.xml | 15 +++ .../main/res/layout/view_msg_chat_top_tag.xml | 25 +++++ main/src/main/res/values-zh/strings.xml | 1 + main/src/main/res/values/strings.xml | 1 + 15 files changed, 387 insertions(+), 13 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/bean/MessageChatIsAnchor.java create mode 100644 common/src/main/java/com/yunbao/common/utils/ViewUtils.java create mode 100644 main/src/main/java/com/yunbao/main/adapter/MessageChatTopImageListAdapter.java create mode 100644 main/src/main/java/com/yunbao/main/adapter/MessageChatTopTopListAdapter.java create mode 100644 main/src/main/res/drawable/view_chat_top_tag.xml create mode 100644 main/src/main/res/layout/view_msg_chat_top_image.xml create mode 100644 main/src/main/res/layout/view_msg_chat_top_tag.xml diff --git a/common/src/main/java/com/yunbao/common/bean/IMLoginModel.java b/common/src/main/java/com/yunbao/common/bean/IMLoginModel.java index c011a5a67..eec5cea55 100644 --- a/common/src/main/java/com/yunbao/common/bean/IMLoginModel.java +++ b/common/src/main/java/com/yunbao/common/bean/IMLoginModel.java @@ -255,6 +255,16 @@ public class IMLoginModel extends BaseModel { @SerializedName("guard_type") private String guardType = ""; + @SerializedName("isAttention") + private int attention; + + public int getAttention() { + return attention; + } + + public void setAttention(int attention) { + this.attention = attention; + } public String getCreateTime() { return createTime; diff --git a/common/src/main/java/com/yunbao/common/bean/MessageChatIsAnchor.java b/common/src/main/java/com/yunbao/common/bean/MessageChatIsAnchor.java new file mode 100644 index 000000000..2c11bde46 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/MessageChatIsAnchor.java @@ -0,0 +1,16 @@ +package com.yunbao.common.bean; + +import com.google.gson.annotations.SerializedName; + +public class MessageChatIsAnchor extends BaseModel{ + @SerializedName("is_anchor") + private int isAnchor;//是否是主播 0否 1是 + + public int getIsAnchor() { + return isAnchor; + } + + public void setIsAnchor(int isAnchor) { + this.isAnchor = isAnchor; + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/MessageUserInfoBean.java b/common/src/main/java/com/yunbao/common/bean/MessageUserInfoBean.java index 976191284..aded44ad0 100644 --- a/common/src/main/java/com/yunbao/common/bean/MessageUserInfoBean.java +++ b/common/src/main/java/com/yunbao/common/bean/MessageUserInfoBean.java @@ -83,10 +83,43 @@ public class MessageUserInfoBean extends BaseModel{ private String area; private int is_hello; private String star_name; + private String career; + private String height; + private String age; + + public String getAge() { + if(StringUtil.isEmpty(age)){ + age="0"; + } + return age; + } + + public void setAge(String age) { + this.age = age; + } public UserInfo() { } + public String getCareer() { + return career; + } + + public void setCareer(String career) { + this.career = career; + } + + public String getHeight() { + if(StringUtil.isEmpty(height)){ + height="0"; + } + return height; + } + + public void setHeight(String height) { + this.height = height; + } + public int getId() { return id; } @@ -445,5 +478,6 @@ public class MessageUserInfoBean extends BaseModel{ public void setWealth_icon(String wealth_icon) { this.wealth_icon = wealth_icon; } + } } diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index 88e51c66c..befe71ff6 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -43,6 +43,7 @@ import com.yunbao.common.bean.LiveStetUpStatusModel; import com.yunbao.common.bean.LiveTaskModel; import com.yunbao.common.bean.LiveUserMailBoxModel; import com.yunbao.common.bean.MedalAchievementModel; +import com.yunbao.common.bean.MessageChatIsAnchor; import com.yunbao.common.bean.MessageChatUserBean; import com.yunbao.common.bean.MessageUserInfoBean; import com.yunbao.common.bean.MsgSwitchDetailModel; @@ -1176,4 +1177,9 @@ public interface PDLiveApi { Observable>> addressBookSearch(@Query("user_nicename") String key); @GET("/api/public/?service=Pdlinfos.getOtherInfo") Observable> getOtherInfo(@Query("tuid") String tuid); + @GET("/api/public/?service=Userhome.getUserHomeBanner") + Observable>> getUserHomeBanner(@Query("select_uid") String tuid); + @GET("/api/public/?service=Pdlinfos.getIsAnchor") + Observable> getIsAnchor(); + } diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index 963c74e19..f0f4a8bfb 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -43,6 +43,7 @@ import com.yunbao.common.bean.LiveStetUpStatusModel; import com.yunbao.common.bean.LiveTaskModel; import com.yunbao.common.bean.LiveUserMailBoxModel; import com.yunbao.common.bean.MedalAchievementModel; +import com.yunbao.common.bean.MessageChatIsAnchor; import com.yunbao.common.bean.MessageChatUserBean; import com.yunbao.common.bean.MessageUserInfoBean; import com.yunbao.common.bean.NobleRankHideUserListModel; @@ -3028,6 +3029,45 @@ public class LiveNetManager { } }).isDisposed(); } + public void getUserHomeBanner(String search,HttpCallback> callback) { + API.get().pdLiveApi(mContext) + .getUserHomeBanner(search) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(roomMicStatusModelResponseModel -> { + if (callback != null) { + callback.onSuccess(roomMicStatusModelResponseModel.getData().getInfo()); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + throwable.printStackTrace(); + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + } + + public void getIsAnchor(HttpCallback callback) { + API.get().pdLiveApi(mContext) + .getIsAnchor() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(roomMicStatusModelResponseModel -> { + if (callback != null) { + callback.onSuccess(roomMicStatusModelResponseModel.getData().getInfo()); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + throwable.printStackTrace(); + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + } /** * 直播间取消网络请求 */ diff --git a/common/src/main/java/com/yunbao/common/utils/ViewUtils.java b/common/src/main/java/com/yunbao/common/utils/ViewUtils.java new file mode 100644 index 000000000..7a6861ab2 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/utils/ViewUtils.java @@ -0,0 +1,9 @@ +package com.yunbao.common.utils; + +import android.view.View; + +public class ViewUtils { + public static T findViewById(View view,int id,Class clazz){ + return view.findViewById(id); + } +} diff --git a/main/src/main/java/com/yunbao/main/activity/PDLiveConversationActivity.java b/main/src/main/java/com/yunbao/main/activity/PDLiveConversationActivity.java index bd8411c2e..793d8b80f 100644 --- a/main/src/main/java/com/yunbao/main/activity/PDLiveConversationActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/PDLiveConversationActivity.java @@ -16,6 +16,7 @@ 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; @@ -24,6 +25,7 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import androidx.recyclerview.widget.RecyclerView; import com.blankj.utilcode.util.GsonUtils; import com.yunbao.common.activity.AbsActivity; @@ -31,8 +33,11 @@ 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; 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; @@ -41,7 +46,10 @@ 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; +import com.yunbao.common.utils.ViewUtils; +import com.yunbao.common.utils.WordUtil; import com.yunbao.live.bean.SearchUserBean; import com.yunbao.live.dialog.MenuPopuwWindow; import com.yunbao.live.event.InputPanelViewHolderEvent; @@ -49,12 +57,16 @@ import com.yunbao.live.utils.WindowSoftModeAdjustResizeExecutor; import com.yunbao.live.views.InputPanelViewHolder; 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 org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; +import java.util.List; import io.rong.imkit.IMCenter; import io.rong.imkit.conversation.extension.InputMode; @@ -80,6 +92,7 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl private String targetId = ""; private View card; private View mContainer; + private MessageUserInfoBean userInfoBean; @Override @@ -172,9 +185,10 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl //绑定聊天用户id inputPanel.setTargetId(targetId); - ToastUtil.show("id:"+targetId); + ToastUtil.show("id:" + targetId); //获取用户信息 UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(targetId); + setUserCard(); if (null != userInfo) { titleView.setText(userInfo.getName()); if (!TextUtils.isEmpty(userInfo.getExtra())) { @@ -193,10 +207,6 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl inputPanel.setAdmin(isAdmin); Log.e("PDLiveConversation", userInfo.getExtra()); } - } else { - /* titleView.setText("系統消息"); - inputPanel.setVisibility(View.GONE);*/ - setUserCard(); } getDraft(); @@ -248,17 +258,83 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl private void setUserCard() { LiveNetManager.get(mContext) - .getOtherInfo(targetId, new HttpCallback() { + .getOtherInfo(targetId, new HttpCallback() { @Override - public void onSuccess(MessageChatUserBean data) { + public void onSuccess(MessageUserInfoBean data) { + userInfoBean = data; + 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()); + showBanner(); + showTag(); + 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()+""); + } + }); + }else{ + ViewUtils.findViewById(card,R.id.follow, Button.class).setVisibility(View.INVISIBLE); + } } @Override public void onError(String error) { } + private void showBanner() { + LiveNetManager.get(mContext) + .getUserHomeBanner(targetId, new HttpCallback>() { + @Override + public void onSuccess(List data) { + List urls = new ArrayList<>(); + urls.add(userInfoBean.getUser().getAvatar()); + urls.addAll(data); + RecyclerView avatarList = ViewUtils.findViewById(card, R.id.avatar_list, RecyclerView.class); + MessageChatTopImageListAdapter adapter = new MessageChatTopImageListAdapter(); + avatarList.setAdapter(adapter); + adapter.setUrls(urls); + } + + @Override + public void onError(String error) { + + } + }); + } + private void showTag(){ + List tags=new ArrayList<>(); + tags.add(userInfoBean.getInfo().getAge()); + if(!StringUtil.isEmpty(userInfoBean.getInfo().getCareer())){ + tags.add(userInfoBean.getInfo().getCareer()); + } + if(!StringUtil.isEmpty(userInfoBean.getInfo().getHeight())&&!userInfoBean.getInfo().getHeight().equals("0")) { + tags.add(userInfoBean.getInfo().getHeight()); + } + List t; + if(WordUtil.isNewZh()) { + t=userInfoBean.getInfo().getCn_label(); + }else{ + t=userInfoBean.getInfo().getEn_label(); + } + if(t!=null){ + for (String tag : t) { + if(!StringUtil.isEmpty(tag)){ + tags.add(tag); + } + } + } + + MessageChatTopTopListAdapter adapter=new MessageChatTopTopListAdapter(); + RecyclerView avatarList = ViewUtils.findViewById(card, R.id.tag_list, RecyclerView.class); + avatarList.setAdapter(adapter); + adapter.setUrls(tags); + } }); + } @Override @@ -342,7 +418,20 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl } } } + private void follow(Button btn, String id) { + LiveNetManager.get(btn.getContext()) + .setAttents(id, new HttpCallback() { + @Override + public void onSuccess(SetAttentsModel data) { + btn.setVisibility(View.INVISIBLE); + } + @Override + public void onError(String error) { + ToastUtil.show(error); + } + }); + } @Override protected void onDestroy() { super.onDestroy(); @@ -366,7 +455,7 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl //消息中心 @Subscribe(threadMode = ThreadMode.MAIN) public void onInputPanelViewHolderEvent(InputPanelViewHolderEvent event) { - // ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); + // ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); inputPanel.hidePluginList(); } @@ -376,5 +465,4 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl hideUserCard(); } } - } diff --git a/main/src/main/java/com/yunbao/main/adapter/MessageChatTopImageListAdapter.java b/main/src/main/java/com/yunbao/main/adapter/MessageChatTopImageListAdapter.java new file mode 100644 index 000000000..bb16a335d --- /dev/null +++ b/main/src/main/java/com/yunbao/main/adapter/MessageChatTopImageListAdapter.java @@ -0,0 +1,55 @@ +package com.yunbao.main.adapter; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.main.R; + +import java.util.ArrayList; +import java.util.List; + +public class MessageChatTopImageListAdapter extends RecyclerView.Adapter { + List urls = new ArrayList<>(); + + public void setUrls(List urls) { + ToastUtil.show("照片数量:"+urls.size()); + this.urls = urls; + notifyDataSetChanged(); + } + + @NonNull + @Override + public com.yunbao.main.adapter.MessageChatTopImageListAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.view_msg_chat_top_image, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull com.yunbao.main.adapter.MessageChatTopImageListAdapter.ViewHolder holder, int position) { + holder.show(urls.get(position)); + } + + @Override + public int getItemCount() { + return urls.size(); + } + + public static class ViewHolder extends RecyclerView.ViewHolder { + ImageView imageView; + + public ViewHolder(@NonNull View itemView) { + super(itemView); + imageView = itemView.findViewById(R.id.cover); + } + + public void show(String url) { + ImgLoader.display(itemView.getContext(), url, imageView); + } + } +} diff --git a/main/src/main/java/com/yunbao/main/adapter/MessageChatTopTopListAdapter.java b/main/src/main/java/com/yunbao/main/adapter/MessageChatTopTopListAdapter.java new file mode 100644 index 000000000..d93bdf5f3 --- /dev/null +++ b/main/src/main/java/com/yunbao/main/adapter/MessageChatTopTopListAdapter.java @@ -0,0 +1,55 @@ +package com.yunbao.main.adapter; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.main.R; + +import java.util.ArrayList; +import java.util.List; + +public class MessageChatTopTopListAdapter extends RecyclerView.Adapter { + List urls = new ArrayList<>(); + + public void setUrls(List urls) { + this.urls = urls; + notifyDataSetChanged(); + } + + @NonNull + @Override + public MessageChatTopTopListAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.view_msg_chat_top_tag, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull MessageChatTopTopListAdapter.ViewHolder holder, int position) { + holder.show(urls.get(position)); + } + + @Override + public int getItemCount() { + return urls.size(); + } + + public static class ViewHolder extends RecyclerView.ViewHolder { + TextView tagView; + + public ViewHolder(@NonNull View itemView) { + super(itemView); + tagView = itemView.findViewById(R.id.tag); + } + + public void show(String tag) { + tagView.setText(String.format("#%s", tag)); + } + } +} diff --git a/main/src/main/res/drawable/view_chat_top_tag.xml b/main/src/main/res/drawable/view_chat_top_tag.xml new file mode 100644 index 000000000..61e646241 --- /dev/null +++ b/main/src/main/res/drawable/view_chat_top_tag.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/main/src/main/res/layout/view_msg_chat_title.xml b/main/src/main/res/layout/view_msg_chat_title.xml index 598d50597..06d49475e 100644 --- a/main/src/main/res/layout/view_msg_chat_title.xml +++ b/main/src/main/res/layout/view_msg_chat_title.xml @@ -102,7 +102,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="50dp" - android:layout_marginTop="70dp" + android:layout_marginTop="60dp" android:text="TextView" android:textColor="#333333" android:textSize="16sp" @@ -126,7 +126,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" - android:text="TextView" + android:text="@string/activity_msg_chat_top_tip1" android:textColor="#777777" android:textSize="11sp" app:layout_constraintStart_toStartOf="@+id/userName" @@ -157,6 +157,7 @@ android:id="@+id/follow" android:layout_width="69dp" android:layout_height="38dp" + android:layout_marginTop="-10dp" android:background="@drawable/bg_msg_address_book_user_btn_fan" android:drawableLeft="@mipmap/bg_msg_chat_title_follow" android:gravity="center" @@ -168,8 +169,8 @@ android:textColor="#FFFFFF" android:textSize="13sp" app:autoSizeMaxTextSize="13sp" - app:autoSizeMinTextSize="3sp" + app:autoSizeMinTextSize="3sp" app:autoSizeStepGranularity="1sp" app:autoSizeTextType="uniform" app:layout_constraintEnd_toEndOf="@+id/constraintLayout6" @@ -183,6 +184,10 @@ 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:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="@+id/imageView" app:layout_constraintStart_toStartOf="parent" /> @@ -191,9 +196,14 @@ android:id="@+id/tag_list" android:layout_width="0dp" android:layout_height="25dp" + android:layout_marginBottom="5dp" + android:orientation="horizontal" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layout_constraintBottom_toTopOf="@+id/avatar_list" app:layout_constraintEnd_toEndOf="@+id/avatar_list" - app:layout_constraintStart_toStartOf="@+id/avatar_list" /> + app:layout_constraintStart_toStartOf="@+id/avatar_list" + tools:itemCount="9" + tools:listitem="@layout/view_msg_chat_top_tag" /> diff --git a/main/src/main/res/layout/view_msg_chat_top_image.xml b/main/src/main/res/layout/view_msg_chat_top_image.xml new file mode 100644 index 000000000..f0dc41f86 --- /dev/null +++ b/main/src/main/res/layout/view_msg_chat_top_image.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/main/src/main/res/layout/view_msg_chat_top_tag.xml b/main/src/main/res/layout/view_msg_chat_top_tag.xml new file mode 100644 index 000000000..3d808bb43 --- /dev/null +++ b/main/src/main/res/layout/view_msg_chat_top_tag.xml @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/main/src/main/res/values-zh/strings.xml b/main/src/main/res/values-zh/strings.xml index 695c3b343..400d7b42b 100644 --- a/main/src/main/res/values-zh/strings.xml +++ b/main/src/main/res/values-zh/strings.xml @@ -36,4 +36,5 @@ 粉絲 回關 互相關注 + 赠送礼物陪伴TA~ \ No newline at end of file diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml index 0b870d923..717f52241 100644 --- a/main/src/main/res/values/strings.xml +++ b/main/src/main/res/values/strings.xml @@ -36,4 +36,5 @@ Fan Return Mutual + Present a gift to accompany him/her~