diff --git a/common/src/main/java/com/yunbao/common/manager/imrongcloud/RongcloudIMManager.java b/common/src/main/java/com/yunbao/common/manager/imrongcloud/RongcloudIMManager.java index 4494d6149..d7f055a1e 100644 --- a/common/src/main/java/com/yunbao/common/manager/imrongcloud/RongcloudIMManager.java +++ b/common/src/main/java/com/yunbao/common/manager/imrongcloud/RongcloudIMManager.java @@ -32,9 +32,9 @@ import static com.yunbao.common.CommonAppContext.isReady; */ public class RongcloudIMManager { //融云开发者平台注册app唯一识别符 - public static final String RONG_IM_KEY = "uwd1c0sxu1p71"; +// public static final String RONG_IM_KEY = "uwd1c0sxu1p71"; //测试环境 -// public static final String RONG_IM_KEY = "pvxdm17jpd3hr"; + public static final String RONG_IM_KEY = "pvxdm17jpd3hr"; private static final String CLASSNAME = "RongcloudIMManager"; diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 8748fdc6a..0f99673a3 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -883,4 +883,6 @@ 屏蔽禮物特效 屏蔽座駕特效 您已在當前直播間 + 是否清空未讀消息 + diff --git a/config.gradle b/config.gradle index 7d7250467..cf3f0a090 100644 --- a/config.gradle +++ b/config.gradle @@ -10,9 +10,9 @@ ext { manifestPlaceholders = [ //正式 - serverHost : "https://napi.yaoulive.com", +// serverHost : "https://napi.yaoulive.com", //測試 -// serverHost : "https://ceshi.yaoulive.com", + serverHost : "https://ceshi.yaoulive.com", //腾讯地图 txMapAppKey : "EOZBZ-ASLCU-4XPV3-BDCHZ-4E3Q7-H4BWB", diff --git a/live/src/main/res/drawable/background_system_message.xml b/live/src/main/res/drawable/background_system_message.xml new file mode 100644 index 000000000..6fa2f466e --- /dev/null +++ b/live/src/main/res/drawable/background_system_message.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/rc_conversationlist_item.xml b/live/src/main/res/layout/rc_conversationlist_item.xml index ed57232d2..93ebf0431 100644 --- a/live/src/main/res/layout/rc_conversationlist_item.xml +++ b/live/src/main/res/layout/rc_conversationlist_item.xml @@ -1,23 +1,147 @@ - + android:layout_height="123dp"> - + android:layout_height="match_parent" + android:layout_marginStart="8dp" + android:visibility="gone" + android:layout_marginTop="5dp" + android:layout_marginEnd="8dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginStart="16dp" + android:layout_marginTop="39dp" + android:layout_marginEnd="15dp"> + + android:gravity="center_vertical"> @@ -62,30 +184,18 @@ - - + android:layout_below="@id/rc_conversation_linear" + android:layout_marginStart="88dp" + android:gravity="center_vertical"> + android:textSize="@dimen/rc_font_nav_or_date_size" /> @@ -150,8 +260,9 @@ android:layout_height="0.5dp" android:layout_marginTop="71.5dp" android:background="@color/rc_divider_color" + android:visibility="gone" app:layout_constraintStart_toStartOf="@id/rc_conversation_linear" app:layout_constraintTop_toTopOf="parent" /> - + - \ No newline at end of file + \ No newline at end of file diff --git a/live/src/main/res/mipmap-xxxhdpi/img_news_instructor_tags_chinese.png b/live/src/main/res/mipmap-xxxhdpi/img_news_instructor_tags_chinese.png new file mode 100644 index 000000000..c9fa58235 Binary files /dev/null and b/live/src/main/res/mipmap-xxxhdpi/img_news_instructor_tags_chinese.png differ diff --git a/live/src/main/res/mipmap-xxxhdpi/img_news_instructor_tags_english.png b/live/src/main/res/mipmap-xxxhdpi/img_news_instructor_tags_english.png new file mode 100644 index 000000000..e92f53eab Binary files /dev/null and b/live/src/main/res/mipmap-xxxhdpi/img_news_instructor_tags_english.png differ diff --git a/live/src/main/res/mipmap-xxxhdpi/news_icon_clearance.png b/live/src/main/res/mipmap-xxxhdpi/news_icon_clearance.png new file mode 100644 index 000000000..1fb0f61bf Binary files /dev/null and b/live/src/main/res/mipmap-xxxhdpi/news_icon_clearance.png differ diff --git a/live/src/main/res/mipmap-xxxhdpi/white_bg.jpg b/live/src/main/res/mipmap-xxxhdpi/white_bg.jpg new file mode 100644 index 000000000..00bda509d Binary files /dev/null and b/live/src/main/res/mipmap-xxxhdpi/white_bg.jpg differ diff --git a/main/src/main/java/com/yunbao/main/activity/PDLiveConversationListActivity.java b/main/src/main/java/com/yunbao/main/activity/PDLiveConversationListActivity.java index 7618e3dd3..33ed1aaa7 100644 --- a/main/src/main/java/com/yunbao/main/activity/PDLiveConversationListActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/PDLiveConversationListActivity.java @@ -1,11 +1,15 @@ package com.yunbao.main.activity; +import android.app.Dialog; import android.content.Intent; import android.os.Bundle; +import android.os.Handler; +import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; +import android.widget.ImageView; import android.widget.TextView; import androidx.fragment.app.FragmentManager; @@ -19,16 +23,19 @@ import com.alibaba.fastjson.JSON; import com.facebook.appevents.AppEventsLogger; import com.google.firebase.analytics.FirebaseAnalytics; import com.yunbao.common.activity.AbsActivity; +import com.yunbao.common.activity.WebViewActivity; import com.yunbao.common.bean.ImUserInfoModel; import com.yunbao.common.custom.TabButtonGroup; import com.yunbao.common.event.MessageIMEvent; import com.yunbao.common.event.UpdateTablePointMe; -import com.yunbao.common.http.CommonHttpUtil; import com.yunbao.common.http.HttpCallback; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.imrongcloud.MessageIMManager; +import com.yunbao.common.utils.DialogUitl; import com.yunbao.common.utils.ProcessResultUtil; import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; +import com.yunbao.live.activity.SystemMessageActivity; import com.yunbao.live.bean.ImUserBean; import com.yunbao.live.http.ImHttpUtil; import com.yunbao.main.R; @@ -41,6 +48,7 @@ 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.Collections; import java.util.List; @@ -52,7 +60,7 @@ import static com.yunbao.common.CommonAppContext.isReady; /** * pdlive消息中心 */ -public class PDLiveConversationListActivity extends AbsActivity { +public class PDLiveConversationListActivity extends AbsActivity implements View.OnClickListener { //菜单 private TabButtonGroup mTabButtonGroup; public static String CLASSNAME = "PDLiveConversationListActivity", MESSAGENUMBER = "messageNumber", NUMBERME = "numberMe"; @@ -64,8 +72,14 @@ public class PDLiveConversationListActivity extends AbsActivity { private View redpointMe; private SystemMessageAdapter messageAdapter; private ProcessResultUtil mProcessResultUtil; + private TextView textNewsNotice, textNewsInteraction, textNewsOnline; + private ImageView newsIconClearance; + private Handler netHandler = new Handler(); + private String type = null; + private List listUserBean = new ArrayList<>(); @Override + protected int getLayoutId() { return R.layout.activity_conversation_list; } @@ -88,6 +102,10 @@ public class PDLiveConversationListActivity extends AbsActivity { container = findViewById(R.id.container); redPoint = findViewById(R.id.v_table_redpoint); redpointMe = findViewById(R.id.v_table_redpoint_me); + textNewsNotice = findViewById(R.id.text_news_notice); + textNewsInteraction = findViewById(R.id.text_news_interaction); + textNewsOnline = findViewById(R.id.text_news_online); + newsIconClearance = findViewById(R.id.news_icon_clearance); mTabButtonGroup.setCurPosition(2); findViewById(R.id.btn_start).setOnClickListener(v -> { @@ -104,39 +122,35 @@ public class PDLiveConversationListActivity extends AbsActivity { startActivity(new Intent(mContext, MainActivity.class)); } }); - + newsIconClearance.setOnClickListener(this); } + private void showStartDialog() { if (isReady == true) { MainStartDialogFragment dialogFragment = new MainStartDialogFragment(); - dialogFragment.setMainStartChooseCallback(true,this); + dialogFragment.setMainStartChooseCallback(true, this); dialogFragment.show(getSupportFragmentManager(), "MainStartDialogFragment"); } else { ToastUtil.show("正在初始化,請稍等...."); } } + /** * 初始化数据 */ private void initData() { IMLoginManager.get(mContext).checkInstructor(); mProcessResultUtil = new ProcessResultUtil(this); - //获取系统消息列表 - ImHttpUtil.getImUserInfo("", new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0) { - container.post(new Runnable() { - @Override - public void run() { - List listUserBean = JSON.parseArray(Arrays.toString(info), ImUserBean.class); - addSystemMessagesView(listUserBean); - } - }); - } - } - }); + netHandler.post(imUserInfoRunnable); + //展示会话列表 + conversationListFragment = new ConversationListFragment(); + FragmentManager manager = getSupportFragmentManager(); + FragmentTransaction transaction = manager.beginTransaction(); + transaction.replace(R.id.container, conversationListFragment); + transaction.commit(); + //自定义空数据背景View + conversationListFragment.setEmptyView(com.yunbao.live.R.layout.view_layout_msg); //刷新列表内用户信息 ConversationIMListManager.get(mContext).addUserInfoProvider(); //消息中心 @@ -151,6 +165,144 @@ public class PDLiveConversationListActivity extends AbsActivity { MessageIMManager.get(this).getSystemMessages(); } + /** + * 系統消息獲取 + */ + private Runnable imUserInfoRunnable = new Runnable() { + @Override + public void run() { + //获取系统消息列表 + ImHttpUtil.getImUserInfo("", new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0) { + runOnUiThread(() -> { + listUserBean = JSON.parseArray(Arrays.toString(info), ImUserBean.class); + for (ImUserBean userBean : listUserBean) { + switch (userBean.getType()) { + //官方通知 + case "1": + if (TextUtils.isEmpty(userBean.getNum()) || TextUtils.equals("0", userBean.getNum())) { + textNewsNotice.setVisibility(View.GONE); + } else { + textNewsNotice.setVisibility(View.VISIBLE); + textNewsNotice.setText(userBean.getNum()); + } + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.img_news_notice), () -> { + type = userBean.getType(); + netHandler.post(systemNumberRunnable); + startActivity(new Intent(mContext, SystemMessageActivity.class) + .putExtra("type", userBean.getType()) + .putExtra("uid", "") + .putExtra("title", userBean.getTitle()) + .putExtra("headImg", "")); + }); + break; + //互動消息 + case "2": + if (TextUtils.isEmpty(userBean.getNum()) || TextUtils.equals("0", userBean.getNum())) { + textNewsInteraction.setVisibility(View.GONE); + } else { + textNewsInteraction.setVisibility(View.VISIBLE); + textNewsInteraction.setText(userBean.getNum()); + } + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.img_news_interaction), () -> { + type = userBean.getType(); + netHandler.post(systemNumberRunnable); + startActivity(new Intent(mContext, SystemMessageActivity.class) + .putExtra("type", userBean.getType()) + .putExtra("uid", "") + .putExtra("title", userBean.getTitle()) + .putExtra("headImg", "")); + }); + break; + //在線客服 + case "3": + if (TextUtils.isEmpty(userBean.getNum()) || TextUtils.equals("0", userBean.getNum())) { + textNewsOnline.setVisibility(View.GONE); + } else { + textNewsOnline.setVisibility(View.VISIBLE); + textNewsOnline.setText(userBean.getNum()); + } + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.img_news_online), () -> { + type = userBean.getType(); + netHandler.post(systemNumberRunnable); + FirebaseAnalytics.getInstance(mContext).logEvent("FS_customer_service", null); + AppEventsLogger.newLogger(mContext).logEvent("FB_customer_service"); + AdjustEvent adjustEvent1 = new AdjustEvent("ww5z2p"); + Adjust.trackEvent(adjustEvent1); + if (userBean.getLink() != null && !"".equals(userBean.getLink())) { + WebViewActivity.forward(mContext, userBean.getLink()); + } else { + startActivity(new Intent(mContext, SystemMessageActivity.class) + .putExtra("type", userBean.getType()) + .putExtra("uid", "") + .putExtra("title", userBean.getTitle()) + .putExtra("headImg", "")); + } + }); + break; + } + } + + }); + + } + } + }); + } + }; + //修改小紅點 + private Runnable systemNumberRunnable = new Runnable() { + @Override + public void run() { + runOnUiThread(() -> { + int systemNumber = 0; + for (ImUserBean userBean : listUserBean) { + //未读消息数 + String number = userBean.getNum(); + + switch (userBean.getType()) { + //官方通知 + case "1": + if (TextUtils.equals(type, userBean.getType())) { + number = null; + textNewsNotice.setVisibility(View.GONE); + } + break; + //互動消息 + case "2": + if (TextUtils.equals(type, userBean.getType())) { + number = null; + textNewsInteraction.setVisibility(View.GONE); + } + break; + //在線客服 + case "3": + if (TextUtils.equals(type, userBean.getType())) { + number = null; + textNewsOnline.setVisibility(View.GONE); + } + break; + } + + //未读消息不为空并且大于0 + try { + if (!TextUtils.isEmpty(number) && Integer.parseInt(number) > 0) { + systemNumber = Integer.parseInt(number) + systemNumber; + } + } catch (NumberFormatException e) { + systemNumber = systemNumber + 0; + } + + } + type = null; + MessageIMManager.get(mContext).setSystemNumber(systemNumber); + }); + + } + }; + /** * 添加头部系统消息 * @@ -178,6 +330,29 @@ public class PDLiveConversationListActivity extends AbsActivity { conversationListFragment.addHeaderView(rootView); } + @Override + public void onClick(View v) { + ViewClicksAntiShake.clicksAntiShake(v, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + //清除全部消息 + if (v.getId() == R.id.news_icon_clearance) { + DialogUitl.showSimpleDialog(mContext, null, getString(R.string.clear_unread_messages), false, new DialogUitl.SimpleCallback3() { + @Override + public void onConfirmClick(Dialog dialog) { +// IMCenter.getInstance().clearMessagesUnreadStatus(); + } + + @Override + public void onCancel() { + + } + }); + } + } + }); + } + @Override protected void onDestroy() { super.onDestroy(); diff --git a/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java b/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java index c6b14e4a0..8d6231e22 100644 --- a/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java +++ b/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java @@ -27,6 +27,7 @@ import com.yunbao.main.utils.PDLiveCustomConversationProvider; import com.yunbao.main.utils.PDLiveMessageProcessor; import com.yunbao.main.utils.PDSightMessageItemProvider; +import io.rong.imkit.IMCenter; import io.rong.imkit.RongIM; import io.rong.imkit.config.ConversationListBehaviorListener; import io.rong.imkit.config.RongConfigCenter; @@ -35,7 +36,6 @@ import io.rong.imkit.conversation.messgelist.provider.SightMessageItemProvider; import io.rong.imkit.conversationlist.model.BaseUiConversation; import io.rong.imkit.conversationlist.provider.PrivateConversationProvider; import io.rong.imkit.userinfo.RongUserInfoManager; -import io.rong.imkit.userinfo.UserDataProvider; import io.rong.imkit.utils.RouteUtils; import io.rong.imkit.widget.adapter.ProviderManager; import io.rong.imlib.model.Conversation; @@ -149,6 +149,9 @@ public class ConversationIMListManager { //使用空白字段存储自己服务器用户的所有的信息 userInfo.setExtra(GsonUtils.toJson(userBean)); RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo); + if (TextUtils.equals(userBean.getIs_admin(), "1")) { + setConversationToTop(userInfo.getUserId()); + } } } @@ -169,12 +172,12 @@ public class ConversationIMListManager { private void addUserInfoProvider(String userId, Activity context) { //获取用户信息 UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(userId); - if (null != userInfo){ + if (null != userInfo) { context.runOnUiThread(() -> { Conversation.ConversationType type = Conversation.ConversationType.PRIVATE; RouteUtils.routeToConversationActivity(context, type, userId, null); }); - }else { + } else { CommonHttpUtil.getUserBaseinfo(userId, new HttpCallback() { @Override public void onSuccess(int code, String msg, String[] info) { @@ -194,6 +197,9 @@ public class ConversationIMListManager { userInfo.setExtra(GsonUtils.toJson(userBean)); RongUserInfoManager.getInstance().setUserInfoProvider(s -> { RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo); + if (TextUtils.equals(userBean.getIs_admin(), "1")) { + setConversationToTop(userInfo.getUserId()); + } return null; }, true); @@ -208,6 +214,14 @@ public class ConversationIMListManager { } + /** + * 消息置顶 + */ + private void setConversationToTop(String targetId) { + IMCenter.getInstance().setConversationToTop(Conversation.ConversationType.PRIVATE, targetId, true, false, null + ); + } + private ConversationListBehaviorListener listener = new ConversationListBehaviorListener() { @Override public boolean onConversationPortraitClick(Context context, Conversation.ConversationType conversationType, String targetId) { @@ -234,9 +248,17 @@ public class ConversationIMListManager { */ @Override public boolean onConversationLongClick(Context context, View view, BaseUiConversation baseUiConversation) { - new ConversationPopuwWindow((Activity) context) - .setIsAdmin(baseUiConversation.mCore.getTargetId()) - .show(view); + //非指导员都可以点击 + UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(baseUiConversation.mCore.getTargetId()); + if (userInfo != null && !TextUtils.isEmpty(userInfo.getExtra())) { + IMLoginModel model = new Gson().fromJson(userInfo.getExtra(), IMLoginModel.class); + if (!TextUtils.equals(model.getIsAdmin(), "1")) { + new ConversationPopuwWindow((Activity) context) + .setIsAdmin(baseUiConversation.mCore.getTargetId()) + .show(view); + } + } + return true; } @@ -246,7 +268,7 @@ public class ConversationIMListManager { */ @Override public boolean onConversationClick(Context context, View view, BaseUiConversation baseUiConversation) { - ViewClicksAntiShake.clicksAntiShake(view, () -> jumpConversation((Activity) context, baseUiConversation.mCore.getTargetId())); + jumpConversation((Activity) context, baseUiConversation.mCore.getTargetId()); return true; } }; diff --git a/main/src/main/java/com/yunbao/main/utils/PDLiveCustomConversationProvider.java b/main/src/main/java/com/yunbao/main/utils/PDLiveCustomConversationProvider.java index b0afb8644..cd34f10ba 100644 --- a/main/src/main/java/com/yunbao/main/utils/PDLiveCustomConversationProvider.java +++ b/main/src/main/java/com/yunbao/main/utils/PDLiveCustomConversationProvider.java @@ -17,6 +17,7 @@ import io.rong.imkit.config.RongConfigCenter; import io.rong.imkit.conversationlist.model.BaseUiConversation; import io.rong.imkit.conversationlist.provider.BaseConversationProvider; import io.rong.imkit.userinfo.RongUserInfoManager; +import io.rong.imkit.utils.RongDateUtils; import io.rong.imkit.widget.adapter.IViewProviderListener; import io.rong.imkit.widget.adapter.ViewHolder; import io.rong.imlib.RongIMClient; @@ -24,6 +25,7 @@ import io.rong.imlib.model.Conversation; import io.rong.imlib.model.Message; import io.rong.imlib.model.UserInfo; import io.rong.message.RecallNotificationMessage; +import io.rong.message.TextMessage; /** * pdlive自定义会话模板 @@ -48,6 +50,36 @@ public class PDLiveCustomConversationProvider extends BaseConversationProvider { public void bindViewHolder(ViewHolder holder, BaseUiConversation uiConversation, int position, List list, IViewProviderListener listener) { //根据业务需要,自定义处理 super.bindViewHolder(holder, uiConversation, position, list, listener); + String targetId = uiConversation.mCore.getTargetId(); + UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(targetId); + if (userInfo != null && !TextUtils.isEmpty(userInfo.getExtra())) { + IMLoginModel model = new Gson().fromJson(userInfo.getExtra(), IMLoginModel.class); + //指导员对话逻辑 + if (model != null && TextUtils.equals(model.getIsAdmin(), "1")) { + holder.setBackgroundRes(R.id.administrator_layout, R.mipmap.img_news_instructor_bg); + holder.setBackgroundRes(R.id.rc_conversation_item, R.mipmap.white_bg); + holder.setVisible(R.id.rc_conversation_portrait_layout, false); + holder.setVisible(R.id.administrator_layout, true); + holder.setImageUri(R.id.img_administrator, userInfo.getPortraitUri()); + holder.setText(R.id.conversation_title, userInfo.getName()); + if (uiConversation.mCore.getLatestMessage() instanceof TextMessage) { + TextMessage message = (TextMessage) uiConversation.mCore.getLatestMessage(); + holder.setText(R.id.rc_conversation_content, message.getContent()); + } + if (uiConversation.mCore.getUnreadMessageCount() == 0) { + holder.setVisible(R.id.conversation_unread, false); + } else { + holder.setVisible(R.id.conversation_unread, true); + holder.setText(R.id.conversation_unread_count, String.valueOf(uiConversation.mCore.getUnreadMessageCount())); + } + + holder.setText(R.id.conversation_date, RongDateUtils.getConversationListFormatDate(uiConversation.mCore.getSentTime(), holder.getContext())); + } else { + //非指导员按照原有视图展示 + holder.setVisible(R.id.rc_conversation_portrait_layout, true); + holder.setVisible(R.id.administrator_layout, false); + } + } ImageView readReceipt = holder.itemView.findViewById(com.yunbao.live.R.id.rc_conversation_read_receipt); ImageView conversationUnread = holder.itemView.findViewById(com.yunbao.live.R.id.rc_conversation_unread_bg); ImageView imgNew = holder.itemView.findViewById(com.yunbao.live.R.id.img_new); @@ -55,8 +87,7 @@ public class PDLiveCustomConversationProvider extends BaseConversationProvider { Glide.with(holder.getContext()).asDrawable().load(R.mipmap.rc_unread_count_bg_normal).into(conversationUnread); } if (imgNew != null) { - String targetId = uiConversation.mCore.getTargetId(); - UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(targetId); + if (userInfo != null && !TextUtils.isEmpty(userInfo.getExtra())) { IMLoginModel model = new Gson().fromJson(userInfo.getExtra(), IMLoginModel.class); if (model != null && TextUtils.equals(model.getIsAdmin(), "1")) diff --git a/main/src/main/res/layout/activity_conversation_list.xml b/main/src/main/res/layout/activity_conversation_list.xml index 3da278b4a..97dab5ba0 100644 --- a/main/src/main/res/layout/activity_conversation_list.xml +++ b/main/src/main/res/layout/activity_conversation_list.xml @@ -9,20 +9,118 @@ android:orientation="vertical" android:paddingTop="20dp"> - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/main/src/main/res/mipmap-xxhdpi/img_news_instructor_bg.png b/main/src/main/res/mipmap-xxhdpi/img_news_instructor_bg.png new file mode 100644 index 000000000..4674fe610 Binary files /dev/null and b/main/src/main/res/mipmap-xxhdpi/img_news_instructor_bg.png differ diff --git a/main/src/main/res/mipmap-xxhdpi/img_news_interaction.png b/main/src/main/res/mipmap-xxhdpi/img_news_interaction.png new file mode 100644 index 000000000..6c808bbb6 Binary files /dev/null and b/main/src/main/res/mipmap-xxhdpi/img_news_interaction.png differ diff --git a/main/src/main/res/mipmap-xxhdpi/img_news_notice.png b/main/src/main/res/mipmap-xxhdpi/img_news_notice.png new file mode 100644 index 000000000..3c9b50d2b Binary files /dev/null and b/main/src/main/res/mipmap-xxhdpi/img_news_notice.png differ diff --git a/main/src/main/res/mipmap-xxhdpi/img_news_online.png b/main/src/main/res/mipmap-xxhdpi/img_news_online.png new file mode 100644 index 000000000..5ff00d7e5 Binary files /dev/null and b/main/src/main/res/mipmap-xxhdpi/img_news_online.png differ