From 7fb4a104259068433d753418fbe579d88f7c4719 Mon Sep 17 00:00:00 2001 From: ningwenqiang Date: Tue, 27 Aug 2024 14:01:00 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/MainConversationListAdapter.java | 151 +++++++++++++++-- .../fragment/MainMessageChatListFragment.java | 8 + .../views/MsgChatTypeSelectPoPupView.java | 107 ++++++++++++ common/src/main/res/drawable/green_dot.xml | 11 ++ common/src/main/res/drawable/red_dot.xml | 10 ++ common/src/main/res/drawable/shape_white.xml | 6 + .../res/layout/rc_conversation_type_item.xml | 29 ++++ .../res/layout/rc_conversationlist_item.xml | 2 +- .../res/layout/rc_conversationlist_item2.xml | 156 ++++++++++++++++++ .../res/layout/view_msg_select_chat_type.xml | 128 ++++++++++++++ .../res/mipmap-mdpi/ic_chat_type_select.png | Bin 0 -> 642 bytes .../res/mipmap-mdpi/ic_chat_type_unselect.png | Bin 0 -> 542 bytes .../res/mipmap-xxhdpi/ic_chat_type_select.png | Bin 0 -> 2654 bytes .../mipmap-xxhdpi/ic_chat_type_unselect.png | Bin 0 -> 2179 bytes .../mipmap-xxxhdpi/ic_chat_type_select.png | Bin 0 -> 2055 bytes .../mipmap-xxxhdpi/ic_chat_type_unselect.png | Bin 0 -> 1713 bytes common/src/main/res/values-en-rUS/strings.xml | 7 + common/src/main/res/values-zh/strings.xml | 8 +- common/src/main/res/values/strings.xml | 8 +- .../main/views/MainMessageViewHolder.java | 59 ++++++- .../src/main/res/layout/view_main_message.xml | 73 ++++++-- .../main/res/mipmap-mdpi/ic_expend_down.png | Bin 0 -> 377 bytes .../src/main/res/mipmap-mdpi/ic_expend_up.png | Bin 0 -> 366 bytes .../main/res/mipmap-xxhdpi/ic_expend_down.png | Bin 0 -> 1009 bytes .../main/res/mipmap-xxhdpi/ic_expend_up.png | Bin 0 -> 950 bytes .../res/mipmap-xxxhdpi/ic_expend_down.png | Bin 0 -> 455 bytes .../main/res/mipmap-xxxhdpi/ic_expend_up.png | Bin 0 -> 433 bytes 27 files changed, 721 insertions(+), 42 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java create mode 100644 common/src/main/res/drawable/green_dot.xml create mode 100644 common/src/main/res/drawable/red_dot.xml create mode 100644 common/src/main/res/drawable/shape_white.xml create mode 100644 common/src/main/res/layout/rc_conversation_type_item.xml create mode 100644 common/src/main/res/layout/rc_conversationlist_item2.xml create mode 100644 common/src/main/res/layout/view_msg_select_chat_type.xml create mode 100644 common/src/main/res/mipmap-mdpi/ic_chat_type_select.png create mode 100644 common/src/main/res/mipmap-mdpi/ic_chat_type_unselect.png create mode 100644 common/src/main/res/mipmap-xxhdpi/ic_chat_type_select.png create mode 100644 common/src/main/res/mipmap-xxhdpi/ic_chat_type_unselect.png create mode 100644 common/src/main/res/mipmap-xxxhdpi/ic_chat_type_select.png create mode 100644 common/src/main/res/mipmap-xxxhdpi/ic_chat_type_unselect.png create mode 100644 main/src/main/res/mipmap-mdpi/ic_expend_down.png create mode 100644 main/src/main/res/mipmap-mdpi/ic_expend_up.png create mode 100644 main/src/main/res/mipmap-xxhdpi/ic_expend_down.png create mode 100644 main/src/main/res/mipmap-xxhdpi/ic_expend_up.png create mode 100644 main/src/main/res/mipmap-xxxhdpi/ic_expend_down.png create mode 100644 main/src/main/res/mipmap-xxxhdpi/ic_expend_up.png diff --git a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java index 50a222466..a639fd5ea 100644 --- a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -12,6 +12,7 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; import com.blankj.utilcode.util.LogUtils; import com.yunbao.common.R; @@ -27,6 +28,8 @@ import com.yunbao.common.utils.ViewUtils; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; +import org.spongycastle.jcajce.provider.asymmetric.rsa.ISOSignatureSpi; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -52,18 +55,80 @@ public class MainConversationListAdapter extends ConversationListAdapter { public static final int TYPE_SEARCH_USER = 510; public static final int TYPE_SEARCH_CHAT = 520; private List srcList; + private List allDataList; private Context mContext; private boolean isChat = true; private OnRecyclerListRefreshListener> onRefreshListener; private Map timerMap = new HashMap<>(); + + public static final int FILTER_OFFLINE = 0; + public static final int FILTER_ONLINE = 1; + public static final int FILTER_UNREAD = 2; + public static final int FILTER_READ = 4; + public static final int FILTER_ALL = 7; + + private int mFilter = FILTER_ALL; + + public int getFilter() { + return mFilter; + } + + public void setFilter(int mFilter) { + this.mFilter = mFilter; + super.setDataCollection(FilterData(mFilter, allDataList)); + } + + private List FilterData(int filterType, List data){ + List showData= new ArrayList<>();; + Log.i("MainConversationListAdapter", "FilterData: 源" + data.size()); + switch (filterType) { + case FILTER_ALL: + showData = data; + break; + case FILTER_ONLINE : + for (BaseUiConversation conversation : data) { + if ("0".equals(conversation.mCore.getDraft())) { + showData.add(conversation); + } + } + break; + case FILTER_OFFLINE: + for (BaseUiConversation conversation : data) { + if (!"0".equals(conversation.mCore.getDraft())) { + showData.add(conversation); + } + } + break; + case FILTER_READ: + for (BaseUiConversation conversation : data) { + if (conversation.mCore.getUnreadMessageCount() <= 0) { + showData.add(conversation); + } + } + break; + case FILTER_UNREAD: + for (BaseUiConversation conversation : data) { + if (conversation.mCore.getUnreadMessageCount() > 0) { + showData.add(conversation); + } + } + break; + } + Log.i("MainConversationListAdapter", "FilterData: 结果" + showData.size()); + return showData; + } + + + public MainConversationListAdapter(Context mContext) { this.mContext = mContext; } public void setSrcList(List srcList) { - this.srcList = srcList; - notifyDataSetChanged(); + this.srcList = srcList; + super.setDataCollection(FilterData(mFilter, allDataList)); + // notifyDataSetChanged(); } public void setOnRefreshListener(OnRecyclerListRefreshListener> onRefreshListener) { @@ -87,7 +152,7 @@ public class MainConversationListAdapter extends ConversationListAdapter { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_main_msg_search_chat, parent, false); holder = ViewHolder.createViewHolder(parent.getContext(), view); } else if (viewType != -200) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rc_conversationlist_item, parent, false); + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rc_conversationlist_item2, parent, false); holder = ViewHolder.createViewHolder(parent.getContext(), view); } else { holder = super.onCreateViewHolder(parent, viewType); @@ -126,13 +191,62 @@ public class MainConversationListAdapter extends ConversationListAdapter { } else if (getItemViewType(position) == TYPE_SEARCH_TITLE) { bindTitle(holder, position); } else if (getItemViewType(position) != -200) { + bindChatNew(holder, position); super.onBindViewHolder(holder, position); + return; } if (getItemViewType(position) != -200) { bindDefault(holder, position); } } + + private void bindChatNew(ViewHolder holder, int position) { + BaseUiConversation conversation = mDataList.get(position); + ImgLoader.display(holder.getContext(), conversation.mCore.getPortraitUrl(), holder.getView(R.id.rc_conversation_portrait)); + holder.setText(R.id.rc_conversation_title, conversation.mCore.getConversationTitle()); + ((TextView) holder.getView(R.id.rc_conversation_content)).setText(ChatMsgTypeUtils.getMsg(conversation.mConversationContent.toString())); + if (conversation.mCore.getSentTime() != -1 && holder.getView(R.id.rc_conversation_date) != null) { + holder.setText(R.id.rc_conversation_date, DateFormatUtil.getDateTimeString(conversation.mCore.getSentTime(), true, holder.getContext())); + holder.getView(R.id.rc_conversation_date).setVisibility(View.VISIBLE); + } else if (holder.getView(R.id.rc_conversation_date) != null) { + holder.getView(R.id.rc_conversation_date).setVisibility(View.GONE); + } + holder.setVisible(R.id.rc_conversation_live_online, "0".equals(conversation.mCore.getDraft())); + int unReadCount = conversation.mCore.getUnreadMessageCount(); + + if (unReadCount > 0) { + holder.setVisible(R.id.rc_conversation_unread_count, true); + holder.setText(R.id.rc_conversation_unread_count, String.valueOf(unReadCount)); + holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.red)); + holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_unread_tip)); + } else { + holder.setVisible(R.id.rc_conversation_unread_count, false); + holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.rc_secondary_color)); + holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_read_tip)); + } + + if (holder.getView(R.id.rc_conversation_live_status) == null || IMLoginManager.get(holder.getContext()).getAnchorB() != 1) { + return; + } + Integer timer = timerMap.get(mDataList.get(position).mCore.getTargetId()); + if (timer == null) { + holder.getView(R.id.rc_conversation_live_status).setVisibility(View.GONE); + return; + } + if (timer >= 10) { + holder.setText(R.id.rc_conversation_live_status, + String.format(WordUtil.getNewString(R.string.message_chat_msg_look_live), timer) + ); + holder.getView(R.id.rc_conversation_live_status).setVisibility(View.VISIBLE); + } else { + holder.getView(R.id.rc_conversation_live_status).setVisibility(View.GONE); + } + + + } + + private void bindDefault(ViewHolder holder, int position) { BaseUiConversation conversation = mDataList.get(position); Log.i("列表", "bindDefault: 用户头像:" + conversation.mCore.getPortraitUrl()); @@ -171,6 +285,7 @@ public class MainConversationListAdapter extends ConversationListAdapter { } } + private void bindEmpty(ViewHolder holder, int position) { if (isChat) { ViewUtils.findViewById(holder.itemView, R.id.imageView, ImageView.class).setImageResource(R.mipmap.ic_message_not_chat_list); @@ -183,12 +298,13 @@ public class MainConversationListAdapter extends ConversationListAdapter { public void onFinish() { if (onRefreshListener != null) { - Log.i("聊天数据源", "设置数据源: " + mDataList.size()); - onRefreshListener.onFinish(mDataList); + Log.i("聊天数据源", "设置数据源: " + allDataList.size()); + onRefreshListener.onFinish(allDataList); } } private int listHashCode = 0; + @Override public synchronized void setDataCollection(List data) { if (data.hashCode() == listHashCode) return; @@ -236,8 +352,9 @@ public class MainConversationListAdapter extends ConversationListAdapter { } tmp.add(item); } - // ToastUtil.showDebug("消息数:"+data.size()); - super.setDataCollection(tmp); + allDataList= tmp; + List showData= FilterData(mFilter,tmp); + super.setDataCollection(showData); } private List tmpUids = new ArrayList<>(); @@ -349,15 +466,15 @@ public class MainConversationListAdapter extends ConversationListAdapter { BaseUiConversation conversation = mDataList.get(id); conversation.mCore.setSentTime(bean.getSentTime()); conversation.mCore.setUnreadMessageCount(integer); - if(bean.getContent() instanceof SightMessage){ - conversation.mConversationContent = new SpannableString(WordUtil.isNewZh()?"[小視頻]":"[Video]"); - }else if(bean.getContent() instanceof HQVoiceMessage){ - conversation.mConversationContent = new SpannableString(WordUtil.isNewZh()?"[語音]":"[Voice]"); - } else if(bean.getContent() instanceof ImageMessage){ - conversation.mConversationContent = new SpannableString(WordUtil.isNewZh()?"[圖片]":"[picture]"); - }else if(bean.getContent() instanceof MessageChatCardContent){ - conversation.mConversationContent = new SpannableString(WordUtil.isNewZh()?"[站內分享]":"[In-app sharing]"); - } else{ + if (bean.getContent() instanceof SightMessage) { + conversation.mConversationContent = new SpannableString(WordUtil.isNewZh() ? "[小視頻]" : "[Video]"); + } else if (bean.getContent() instanceof HQVoiceMessage) { + conversation.mConversationContent = new SpannableString(WordUtil.isNewZh() ? "[語音]" : "[Voice]"); + } else if (bean.getContent() instanceof ImageMessage) { + conversation.mConversationContent = new SpannableString(WordUtil.isNewZh() ? "[圖片]" : "[picture]"); + } else if (bean.getContent() instanceof MessageChatCardContent) { + conversation.mConversationContent = new SpannableString(WordUtil.isNewZh() ? "[站內分享]" : "[In-app sharing]"); + } else { conversation.mConversationContent = new SpannableString(((TextMessage) bean.getContent()).getContent()); } mDataList.set(id, conversation); @@ -375,4 +492,6 @@ public class MainConversationListAdapter extends ConversationListAdapter { }); } + + } diff --git a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java index e479828d2..966eca9b0 100644 --- a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java @@ -165,6 +165,14 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment } + public int getFilter() { + return mAdapter.getFilter(); + } + + public void setFilter(int mFilter) { + mAdapter.setFilter(mFilter); + } + @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { diff --git a/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java b/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java new file mode 100644 index 000000000..183bc5b84 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java @@ -0,0 +1,107 @@ +package com.yunbao.common.views; + +import static io.rong.imlib.publicservice.model.PublicServiceMenu.PublicServiceMenuItemType.View; + +import android.content.Context; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; + +import com.lxj.xpopup.core.AttachPopupView; +import com.yunbao.common.R; +import com.yunbao.common.adapter.MainConversationListAdapter; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import org.repackage.com.zui.opendeviceidlibrary.OpenDeviceId; + +public class MsgChatTypeSelectPoPupView extends AttachPopupView implements android.view.View.OnClickListener { + + private TextView chatTypeTv1, chatTypeTv2, chatTypeTv3, chatTypeTv4, chatTypeTv5; + private ImageView chatTypeImg1, chatTypeImg2, chatTypeImg3, chatTypeImg4, chatTypeImg5; + + private ResultCallBack mResultCallBack; + private int lastType; + public MsgChatTypeSelectPoPupView(@NonNull Context context,int type, ResultCallBack itemDelListener) { + super(context); + mResultCallBack = itemDelListener; + lastType = type; + } + + @Override + protected int getImplLayoutId() { + return R.layout.view_msg_select_chat_type; + } + + @Override + protected void onCreate() { + chatTypeTv1 =findViewById(R.id.chatTypeTv1); + chatTypeImg1 =findViewById(R.id.chatTypeImg1); + chatTypeTv2 =findViewById(R.id.chatTypeTv2); + chatTypeImg2 =findViewById(R.id.chatTypeImg2); + chatTypeTv3 =findViewById(R.id.chatTypeTv3); + chatTypeImg3 =findViewById(R.id.chatTypeImg3); + chatTypeTv4 =findViewById(R.id.chatTypeTv4); + chatTypeImg4 =findViewById(R.id.chatTypeImg4); + chatTypeTv5 =findViewById(R.id.chatTypeTv5); + chatTypeImg5 =findViewById(R.id.chatTypeImg5); + + chatTypeImg1.setOnClickListener(this); + chatTypeImg2.setOnClickListener(this); + chatTypeImg3.setOnClickListener(this); + chatTypeImg4.setOnClickListener(this); + chatTypeImg5.setOnClickListener(this); + + handleChatTypeClick(lastType); + } + + + + private void handleChatTypeClick(int type) { + switch (type) { + case MainConversationListAdapter.FILTER_ALL: + chatTypeImg1.setImageResource(R.mipmap.ic_chat_type_select); + chatTypeTv1.setTextColor(ContextCompat.getColor(chatTypeTv1.getContext(),R.color.colorMainTab)); + break; + case MainConversationListAdapter.FILTER_ONLINE: + chatTypeImg2.setImageResource(R.mipmap.ic_chat_type_select); + chatTypeTv2.setTextColor(ContextCompat.getColor(chatTypeTv2.getContext(),R.color.colorMainTab)); + break; + case MainConversationListAdapter.FILTER_OFFLINE: + chatTypeImg3.setImageResource(R.mipmap.ic_chat_type_select); + chatTypeTv3.setTextColor(ContextCompat.getColor(chatTypeTv3.getContext(),R.color.colorMainTab)); + break; + case MainConversationListAdapter.FILTER_READ: + chatTypeImg4.setImageResource(R.mipmap.ic_chat_type_select); + chatTypeTv4.setTextColor(ContextCompat.getColor(chatTypeTv4.getContext(),R.color.colorMainTab)); + break; + case MainConversationListAdapter.FILTER_UNREAD: + chatTypeImg5.setImageResource(R.mipmap.ic_chat_type_select); + chatTypeTv5.setTextColor(ContextCompat.getColor(chatTypeTv5.getContext(),R.color.colorMainTab)); + break; + } + } + + @Override + public void onClick(android.view.View v) { + if (v.getId()==R.id.chatTypeImg1){ + mResultCallBack.callBack(MainConversationListAdapter.FILTER_ALL); + }else if (v.getId()==R.id.chatTypeImg2){ + mResultCallBack.callBack(MainConversationListAdapter.FILTER_ONLINE); + }else if (v.getId()==R.id.chatTypeImg3){ + mResultCallBack.callBack(MainConversationListAdapter.FILTER_OFFLINE); + }else if (v.getId()==R.id.chatTypeImg4){ + mResultCallBack.callBack(MainConversationListAdapter.FILTER_READ); + }else if (v.getId()==R.id.chatTypeImg5){ + mResultCallBack.callBack(MainConversationListAdapter.FILTER_UNREAD); + } + dismiss(); + } + + + public interface ResultCallBack { + void callBack(int i); + } +} diff --git a/common/src/main/res/drawable/green_dot.xml b/common/src/main/res/drawable/green_dot.xml new file mode 100644 index 000000000..46fab62ef --- /dev/null +++ b/common/src/main/res/drawable/green_dot.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/common/src/main/res/drawable/red_dot.xml b/common/src/main/res/drawable/red_dot.xml new file mode 100644 index 000000000..39d9237fe --- /dev/null +++ b/common/src/main/res/drawable/red_dot.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/common/src/main/res/drawable/shape_white.xml b/common/src/main/res/drawable/shape_white.xml new file mode 100644 index 000000000..a9043c57d --- /dev/null +++ b/common/src/main/res/drawable/shape_white.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/rc_conversation_type_item.xml b/common/src/main/res/layout/rc_conversation_type_item.xml new file mode 100644 index 000000000..5b7fe7538 --- /dev/null +++ b/common/src/main/res/layout/rc_conversation_type_item.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/rc_conversationlist_item.xml b/common/src/main/res/layout/rc_conversationlist_item.xml index 30703b211..da3a74afc 100644 --- a/common/src/main/res/layout/rc_conversationlist_item.xml +++ b/common/src/main/res/layout/rc_conversationlist_item.xml @@ -14,7 +14,6 @@ android:id="@+id/rc_conversation_portrait_rl" android:layout_width="48dp" android:layout_height="48dp" - android:layout_marginTop="@dimen/rc_margin_size_12" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -180,6 +179,7 @@ android:layout_marginBottom="@dimen/rc_margin_size_12" android:src="@drawable/rc_read_receipt" android:visibility="gone" + tools:visibility="visible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/rc_conversation_no_disturb" app:layout_goneMarginRight="@dimen/rc_margin_size_12" /> diff --git a/common/src/main/res/layout/rc_conversationlist_item2.xml b/common/src/main/res/layout/rc_conversationlist_item2.xml new file mode 100644 index 000000000..188c1721b --- /dev/null +++ b/common/src/main/res/layout/rc_conversationlist_item2.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/view_msg_select_chat_type.xml b/common/src/main/res/layout/view_msg_select_chat_type.xml new file mode 100644 index 000000000..2ae32ab29 --- /dev/null +++ b/common/src/main/res/layout/view_msg_select_chat_type.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/common/src/main/res/mipmap-mdpi/ic_chat_type_select.png b/common/src/main/res/mipmap-mdpi/ic_chat_type_select.png new file mode 100644 index 0000000000000000000000000000000000000000..3f5330bc3f344f1907cfcdfb74ff714b275adaa4 GIT binary patch literal 642 zcmV-|0)737P)Px%JV``BR5(wKlU+ztVHkj)_e|SQTOmbYkP#JuSA`Hne^Tit3b~-Wf(RP@3hvCV zz0Mt_q+)gx)LqaFEImrJey#$cix9*jGAf87NZp*ay>)i1L~QlleSgpQe((Fd!jhp4 z9oz8~&!8LtHkP)9H$aAhaa~5bUM#*Mzb0DW>BIZ&3K-3xmoXUN)6@jHuR?Xr7Aj}~ zIR`q7F?U`Dd-EA8L|J=d23|n>RoM z*xknkirQ$lBD90-L{x!M3eqhj$+Ut&*t`ugEp{>{dMLgFkI|1(E5pedjU>8&#Bvb; zNf}CZxRC_LDN3_w#7v>Q7Tda{4T&fo?*8SnyIj<$3|svgHZLMojHw|SrC7D0JCBz{aP2RWNm211$>@bDWiS! z8cyU8d}RS>PKK<2)*fBKhMH*yFoD5g8MMYUY(7S0-#-A)WXRfE`a&gX(MB_cEF{q> zpCRe8fI{JjjP#`cB+*gV(EH@G+Z=)ZyNtfTOA6AuAX2;!B#3PtD~Z(59>rtCfjU$K z^f^jTseC1o;k`(%h*EeLI>J|MrU&FO>R&9wNnlG+t=`e*yrqijM%QQji@ cXt{R&0q&go7V2N4V*mgE07*qoM6N<$fR literal 0 HcmV?d00001 diff --git a/common/src/main/res/mipmap-mdpi/ic_chat_type_unselect.png b/common/src/main/res/mipmap-mdpi/ic_chat_type_unselect.png new file mode 100644 index 0000000000000000000000000000000000000000..8f04b106f2cb4c44537e7ee50def9c9d6586f2f8 GIT binary patch literal 542 zcmV+(0^$9MP)Px$*hxe|R5(walfR1-K^(>3H=v$z14)rW8jZ99Rez7jf`w#}Q^djxq}dd^`Ee$BGT~N_a3`0WZst4h!@S`=!Q4_x ztpKnbH z2LL{%QmKdee14?0GeEQ1JQarF7RenEDOr{k&c96WE0v0o&1PKy=b|XOQ7jgRGl1uL zFGVETZny6`jx#+-9G^LklgQdn6*u;(4AX-L@>Ny$C=lWs-cS0lU8M8;;}bE&^~}_e46K zj%I*fuXm|ikX7iA5p z)oM%0Wbzq+>pJ$jOaQ(GLBLEVb4f(jNN$j9_WS(}-Gjen+V4?EdpsVmi^x>~7es^r geom*;)Px<7)eAyRA@upT6=I*)fxYN=iYq)31X49;`rzk+sa_I!jwmfMia6d9!?oxI&Cej z(5bDqG|BGbgRv}Cv2HdA+G-t3TU)g=EmS%ZlHKr_paQ{4EtLVabc(jnKhT09$Yyu% z`N}!>?wW9Sm&7Fe(KC~OviF?x{m%KGzwZ!+IJhP}27YfD(y1wc2mqK2U=o0d0Lq=^ zPXRav!dsBk1<)QCdxZ-emH-%F?!Ppt ztq2eTAOpzu_5#=ga1zr09CbYOua6?jpaF2j%5s#;#{tX-=wc<4Ei3^_NKyi-KP66X z`5Yhyq;x>4pD8!@xCTPvUTTm1doVx-41lM8$Ae4CSHLjh>VWN&*3w%5PJ;0^hZ=sInL8$-->L-DWxd19bv{0|9ZpSczY-TSk4%4=# zm(K^{yZ|^5z8!?01LV`Xtv9mvgXnwkl_n4`S_<`Sx0d$;LmHnqLwC2gAz&{K8Rir7mXx5u-#bIuxOc&E-HS1fmB4^6SG=Lx^S67W;Lv zIYj|*ZDbk9_$6f4Ha02u0ivFgjW3Oa@VPa)I`k!&XatEF+BR&5P!vQ#033)c0`W$@ zsO>4e2u zTUwXv#=$El17Z#gnh)mB!}NOfoJ?;wNW1~aT@dtp^m-1{_J>Oz23J;^@J~C?2ShKj zTz#%#_XEI{Q9pb=ogkWS3oE<8avmjH{##sc>n;V%Z-ZzFOwYC22(_=*zSf?W3t~zg zbda;&0q9u(zoPcWe-vH2>aOuHMn$Qm*=zf4EI2#N?!*mQe1|jaDw%9Yp52$`N$VdVhrDKJ1ugO@G3jkN&eFe`h&LBnn4?jFuG4Xto_b`{gAlsFr>0l={T7rTiO_}(Dk!=J2UkWxSgmhY zfq0+C(yo}wukx`T91L#&iN&_Z$-Y8~CP$6>ug6Q47&vw1CJ1AJ4r;?ObQHEWV@BDR zDH>HF-VGuU`YVKSovlgoSxUsekq2O(zI+wn2^xT)$+RVQsPJh-nju8}unC{rM1znm zlxS=yyl;3W40AUu?MqHTST|8y%j?<(xHfz@7(a2m&htpU`*rGk+LeoNZDc77&u@mT zHpOmDsZ%=rL+Xe>cJ3#H_SOYkK-t27ZTzAra3*mhrx&hjIov9`cgzkgsdB_Pq1&xU3hNlBY z*RUIINn1!&P)GA_7l2@>8D!MkS#h?JI2e8bLM+h#uw*qQV%rN&5}taU*j`i2%8Brr zM0hhG%Cm98a)3#c3k->1;Ea@OdqKA zp~3(@oG@Y{yB02Wpz~L;<8<(U0pR>96b$zQUSHe!B-5{<5eQqwaq4r-66jW`f$g<;GClpD1c7h(aprXdQC zceRs9jXVP75oM-@5>2kejsx}8FnwEf+=A7rY#;_7okfZGo`OC&5N?5C)D3%PstlKT9ks{m3+}7jr{seU zm4Ezf4LwzG*B4w!GZH<28s4H_Gt-+<{`SJ6%tURt3uM@F zL0bKbdVLG3ad8p4wSTqw$Tiefn8el0ME8|(c)WE(Rwt!4R(c)U%R+>rj6?`R^(9o= zCR3pF)ztn|-3aMVY$my6q(Dl4NJk|VSpwM&O7BhH^(9IV4)&Dcl!?2 zxeb8dR`2v3lxTV?_j`W;stYq=YyzNL^asrQko5#g@tCZOeQP;Dw?UYf>oaln$(;6+ z?vDu|lRj{^8TbdlyPlG3UB!D|cun$(Er6I||4()yRep2d?v0z=)$}$g#12EpZz5GT zg*v09$z4@9`!bUt`72;i0m#q6;~T5@&8E`;{SDG;)oemq9xPPv_O&_P(wZ>#^*-co z8d+;`W|bm&hcha0W#|(4>E%ActL$_Mbu`(Of1lyLfm}yG zb!UXRKHuPAbRjDv1L<201q=rwvjN!xA*R~?Ua221qc(SMz-7eeZtS#})J^0%l8UWc zRgCl%i+P? z04tVFHOmDpg5jykH^A+F@eX9MdLZh0-ZpFAuyrod{mrx8`A0#9PXn+GTs4kQ0(=7C z&0uPSnLSEd*7akzSF(P%XSbU4Tz$tUz}$)+X6P)Px-JxN4CRA@upT5D_+*A+fz?(EDy*cz8str8_orKA-WRnj7r5QkC%QQ8Don6NY6 zEd?3>a9=`70_r0_FlsBc2?aIkBeWoDns}KR=t!fLcJAZ*=H7emx!*SkbG!~7Jea7dsaa4c6qb0NcbB3l zbpUW909*qA$)Ncm0QeUGyd$OT1AtSA_!a;R8-_7F7YI1p%3WPuONzzfy@*&304w70 zc$9MvLJ0qsQu;Sti0I#nqWHI}s*um;T_Pf-Jf>;dejPe=XfYyQ3jlW`Vgr$vQZ7V9 zM(xq4aL!%E*w(?p!Gq1s&7rQp!#t#8c^X zx}qsy+xCr8%DVyJi;S^G8Z~+;nx=v4y037~w`DS!7iS_dBLT;8nx&M#LPVY36anX) zzwUY7HkSPJBQte!x#tHC9EjG`)O?b2{#(Y_=SxPmAf?Qhrg`{s^)E}nw(S-G z_|3(2=uekCB0iK#rP}5Kdb+xnWj%n1KSac6NdVZAN~I1=S7%xRot>RqR8`$iQ-;6` zAx?XqcV9Z4eqlbqhi!Irblk40>cfhn+!_W4Ddn^zrX*ll7KO*oFp>x%-p=Rq^_w?u zJ~yA>!?tbP{xAT%tSHK-gK#W`5G_qjO_z+sB?K(Xsz<~V0HD#rBJlnF{Y%=~+ITg< zhkdlQwW)P=b#D?03cmnA`^Fl>FeWVQ2?S_CB@&5e5ph`%ziHRJ$1se4R}*~LS9^Q= zqF5|;3=x+Gcuouq41B4zwY3_GrmSz1(Rn?mb59j&J4N*8t$7 zLBdtHe*JpN7O$Agw(aGbroCJ!6bRD*0IW0&;|+fV9LM>Nl=8>HX4RF;<-S^OE>bOq zJv}|~d_MmqBCe)B$0AdkX_`CHw(SJ~(2IyGDKV2$-fx=bBh>;{Nk5&PonIG1{G1X% zA;ioyXBk0auHQc4{W `qtg*52uaz`ht+Lr{_BzJc9|2$yMM+)PZ$QhkRwWXN z6C)#jPWG;07&lc5&}{m#EbFwQD4&bPVlXr`w1x{b-zz95}{n5NK^s;V|n^eGmLYf`Dy@oIsYO+S>U>AFs55Zcs^5`jNczCj0xk&%(Q zrlzJVDtt~RnayUeNhA_yD4bHBMg#^CF&T|Up`oE+#ski5-r5IUr>Cb!j*gDf`DBO) z_|ic<9*4DS*IpF_dV70i5Om=Gg1}Wjg~k_gE|PW*VWavm@(E*N8NA{ z_o}LT4~0?JbvMkU0?ZY_Ta;hU5>XY5K>vEA_H%`!6IOQ`F4ma(7^NclXC!*L@EFq5yEt^SsYisGZcv(|ojApepIdvaGF$xI55Op9O%6JFjI~ zJH{5VueM1kkH=!Mugq04tOQs&Wdp^e0}&eot?0X^Y5v3~VB7X*NLdDe+8`&oEtAQd zDyQLUm7(w{gy;`6qW3+|TS`-XJaw=v>vyWEZX`e?-kPR)OSQn2(~sjgeT*?*Xz)Dm zu~aJc-$On9+1=fp^gM5nTo%f;g%CUEOT;Y)aA_G5eN|Q66*xbmg+k$`&6<#MY^6_ZQSXWO=K2LNL1D|G)WaW{CGZl$C{0Cx{*&a+XqvXK#Ng=T zoNu3RvDa~&6;jGQilQtH4GzxvmZ`h}B2$jVw9hYi(PAR!@WJ^KeQn#`2>{y>F&0=% z(;6F7F5;;oLN=S-z!-ZR5w+0d6GFVg7;C<8;lkhMDnXKDI6ORj3uEk;jIoUrKbGnve^{@9Eo5E2S}t6jRTFC#S|*e7U2x`YtVA>vWPFy5UhB$hrua^%Q$g+hVM z@_QqZ$m-Al5By?sh;~eNW2S1q>_hy?lP9BR&z{|^D9X#N^0)Qt->n|5{X}MVw2pb9H`2|wS#Q?B8 z*fl>j#pgC>NIVuoyhUHANGabO`ADjP)Px+!AV3xRCr$PTg`GCMG*daWdl`kaGn5*7eMBmD&!PIy5T%Q9B#P~Cz7kU#pXms zGEsPeC@(qZhwYBV$Y+u50&+11MBL-yh-Yp1vSoBo^b9>R(r zuI_CD>t)cW1O#7V#G4@60C+R{Y3hNwk3jxC$0+C`2)Y#h+FK=yvL^oqh}C+%w2`?&$Y<-HAjw)SYei+gH^SMdli3I{;&cV3#YGyvBlxCW*$ z6`~ff_G(!mmI8n)wMS#t4ia}`DCya^0mS{aniEa-sw1>Oz1)M@pzFetU_lR_B*b^y9>ry+n? z-_D{9sR2mbb+y|<=vG#tZ9*yy3CaLH1xSk^02l(~Lpp7?(tw=`0It-ZgRmF-zzPL7 z3B%R;0l@c-KmZ36HV=J4@CJaZ`!50BjSEk2Kv$1-oAzZO>w8KgL_{!|2DK?{Jn*6I z1prs-Z$T(U2#Q??rB*o~rqaB_l_z`BEaIWJLt%5IV!QyJ!>Ti*kQ+t;n~E+DNSFj{old~9291weXxnQSaRBHUyXUZ%$) zwg)1{qXZsp%+ywyQ*U+-0EGIcPJ0tTcx;OfMgU}-=c~6-yGk$oa#`Z^46uHfCcYa% z5FwJ*woG&^0Msrb_9VmHaLZTirQn~gJvD|*mo6KB=QiLE1b@F@LNGeh9HY@G#sJ{z z{w}~G%bPz8s|xA-dZowNKuDGL%IHABbC(}?oCV?%B98N8= zZo87geklq6c@A9C;+ic&(H2Bw*K0Ec*zL~Mi=h~+pct5`U5U#z6^&HHfND- z27uY|MPIhDZ%mYOk~M*hSE8fRW{7aE9!(1t0MKopdlViOU25vN- znnRpv!2$r9=LheO0Z2S&8y%(#vAloxaL^_#pws3p!HNVxCMm#Kl(#`KDeRdYX5P|y z&@(u;SY$G5!L~@YCIHmh(NmS%^K(^Sf#?ODH1?(dXo(MY z=(KrkH9b`kx>%JwndrV7+)9cHaV@7Fg^eOj%3D!koWyR>?$6PRgf~Ak7!--`)^-q( zh~d-68D6-mJIqXbmhU1)f9lxmnp+osZlTah4=Cm#C$^D5#NaUVm1PNP(y>{2uhd!~ z5|wQA2w7v!fnD~mB^FC?oBL8nNHm1)V=`oME)=8QG~`~&&6fp-Pd(uScyYnFq?}wPtJE%6*ZW%%3_nL0 zl{Ym28emJZocnU;2I?FB5rB^-kkSdpoM!G?oSmTX>Zi@EbWTwB>Oq@PNX$~c=L-stz7jGl^aYYTDE7QS3!`~# zsxJ*k^=e8cUc#G$HV44bK}qxndU){_V43$EY42QkZOTQ?3Jhkgeyuxf&;rX~!6NUI zd4RLnAk{JgCa>+_-Qb?PIcn;5TbiTNrcGKvOe|&WV?^7&V{yqtj2Tc6`fSx zGsXDyAS`%e(NLL;!HerM)2lPWSj7-l(1)1(z^DVF^GsuMCgG(su+KQTD!}^jQBcb~ znw~-Vy_XnwUad|{=sZSc>!LWK&FbGQ5cs<%TUet%;%4SPBRBz2DX(c*I@^4{_m+CR z$Rd-i)E|v)$S^F;XA~aYagp%?K*dy(Cdgk>4KcbH^8H<^Jkf8FF}T@c_s&mW^#))9 zLUiJ4{=wc@{n}|RD)c`= zKaIm<+0v8baT4DFhClkwGCLC?U-e}Fw6`O#%?%431fxDM=ozog4cEn$xstqQD@N;? zOO7jfnRY!l0F+;lS)(YU-@mr5u~2uS-}AVgmf8o{w8MF=%~!4L@3G1l^AS8#6!4Wn zHBaOXv-D?x`9~&weCmzwDjb6Y(e_Gxi^RoqZW@rN8KXi80V%tlodJy3=P$w3Lt*$Y lxNr_!b+R}%m(Yv9{|`93Y2JEQmT>?8002ovPDHLkV1hwL$q4`e literal 0 HcmV?d00001 diff --git a/common/src/main/res/mipmap-xxxhdpi/ic_chat_type_unselect.png b/common/src/main/res/mipmap-xxxhdpi/ic_chat_type_unselect.png new file mode 100644 index 0000000000000000000000000000000000000000..e68a3dd8f238cb75d6d2a6c6d98efe81580352ff GIT binary patch literal 1713 zcmV;i22S~jP)Px*Ye_^wRCr$PTW?M)HxOTYBR(L6!U+n!z=K|(@Gel05^wUUqzCAO6Flev`gpwn z;RA$tQS-RKd+7z*a01d3kS~dlg6(Ef?`qevvwyN17K9~)l-(WA{5&%rk7tmT^XPOs zo8$3#mvg?2G5*f7tWC?Z%JP43_P%9V1Ix1dLWn!dvU;5JUcFw2-*X!%56Z6V?lQ*q zF~&b>1Wh_60MJDUT~w>pZqkpV-p>qx^Yioa+S=L&A;ghf;i$ROJnv(SPsZc%Us-9! z!T>Bua22cpLg?)2>FHuoAQl3EQu<-S*-6BTgI$9?-w7dlwr%$qV*{1(R;vZRVH0Cq z7DDV|jNeUEe>Xx+rW#SHR4&q}6MT~j0ARLMDxCwPhKUE0XI;+u=f}s#UZc?f5E2j2 zuGQ65m}4Iy^z$47ea6^c8f{1nK*Xwp;GajM(OFudO+rcy*|lx^qrtHbIOnIeTJ0CRIAm~xFEy^fKqxs*`p6NgugJxj?<`L zTqbqzfkuG+>r4Y<+^ke8jX3mU0YEAJ$Fi(#gKC`(%Y*ZwUEMl!kIweoFAKZ2Q2`S5ZHatt_m%D1PBAh*pALoYXP8?-YfQG zB#@_Cr=?9P1&0kj!Cyd=Q=9>SQVLrgY7&X)-xP94YbcQzk@I4>t%fg-#w!)6GS zyb;m@9{`Q*_X#0eMG#^U9y*;)c|0D2Q}-QWPz!IzEJ`PFm5BBem;c&Q-bw=kogbvPWFoP}BZnq)d z1_6UNx`dF(bM$iylxBX{b-yWj%mx4eSrvbu^lT%|1V#UbQVOSA$Yf6k$cj|w@EYyk z6IhLPIOn$jKq%eiZ4X6X%{2VUQzFRgjUE6H3V>eI{;z_hark`zKm=bTghb{E)1Y6J zZ&Z2T0C>}YHxqbsg6gf$PEjsAvUZ%BQ}1*eRP$yHLP#^~$%{Zw4g0-7XeK;_V`32) z&YA}`6o$+YXh0|p9`{l)Yvz_gPdyAl*snVd&!mo*!Cc;R$m8%sa2|+ywF!~ecplIk z`~Odf03sUO_~JOuLEfvfO!}s@-xL5%y69DzfiCM6N{UJ?0Q=D9&X>7TdCaA`^SCF3 zd=GQ^C%>p0lsp()7ESfYAH4JM0f@RmSr)Td&!eew30?Jv&i*x3D0O70Z&QuEt4s->FT1Y4Yb#>$~?- zPKlIKxYhn!sd4f>e-P+bS0p8c|EknDJut?8h+QNF2B;J%o0}WxQ<^E3hJp{rao$InUMv8Bh(QzJQIj!ty6kEasq()oWpGn@~ zOl$z)15Kpp(di?Enn@ZJqE^QA{POa0V`XIpRvm76LnZQ-WeIt^Z7hyX>;u#fO!fJm zgUq_E4d{ZZUtL|5=Lin3J#fx{%e7_31H)96t$+p2^L8{Eb<{r=A zrmnceXWF3kOBypwWCE%-v|6phIZaId>yT(=jNQS1jPamUD)kQz4ni%lvc(nz+=ez= z+qT~cA)x44C$vX9)v8BEf=TRCY6GOvVXK_SY!b3j?>-12{>Y*`Z6OT^av7toElQ}U z=WvY=ZF!jpo@y6};xOPNp!4$(A@t({&C}Dmg~ Include: 看直播%dmin Chat Records + [Read] + [Unread] + All Chats + Show Online Only + Show Offline Only + Show Read Only + Show Unread Only diff --git a/common/src/main/res/values-zh/strings.xml b/common/src/main/res/values-zh/strings.xml index c98de881c..ebbb31de6 100644 --- a/common/src/main/res/values-zh/strings.xml +++ b/common/src/main/res/values-zh/strings.xml @@ -1604,5 +1604,11 @@ 違規原因: 處罰內容: 處罰時間: - + [已讀] + [未讀] + 全部聊天 + 僅展示在線 + 僅展示離線 + 僅展示已讀 + 僅展示未讀 diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index e59cb38c7..3c55e3931 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1412,5 +1412,11 @@ Limited ride And limited avatar frame Personal hal Whole site hal Honors - + [Read] + [Unread] + All Chats + Show Online Only + Show Offline Only + Show Read Only + Show Unread Only diff --git a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java index 220d8341a..1327fe7c7 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -73,6 +73,7 @@ import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ViewPageIndicatorUtils; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.views.AbsMainViewHolder; +import com.yunbao.common.views.MsgChatTypeSelectPoPupView; import com.yunbao.common.views.MsgRecommendPopupView; import com.yunbao.common.views.MsgSysDelPopupView; import com.yunbao.common.views.weight.ViewClicksAntiShake; @@ -134,12 +135,14 @@ public class MainMessageViewHolder extends AbsMainViewHolder { private ConstraintLayout tabLayout1, tabLayout2, tabLayout3; private TextView tab1, tab2, tab3; + private ImageView imageView1, imageView2, imageView3; private View tab_line1, tab_line2, tab_line3; private ImageView tab_icon; private List relativeLayouts = new ArrayList<>(); private List tabTexts = new ArrayList<>(); private List tabLine = new ArrayList<>(); + private List tabExpend = new ArrayList<>(); private LinearLayout tabLayouts; private int userType = 0; // (0)普通用户 (1)主播A (2)主播B @@ -201,6 +204,20 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tab2 = findViewById(R.id.tab2); tab3 = findViewById(R.id.tab3); + imageView1 = findViewById(R.id.expendImg1); + imageView2 = findViewById(R.id.expendImg2); + imageView3 = findViewById(R.id.expendImg3); + + imageView1.setOnClickListener(view -> { + selectChatType(view, 0); + }); + imageView2.setOnClickListener(view -> { + selectChatType(view, 1); + }); + imageView3.setOnClickListener(view -> { + selectChatType(view, 2); + }); + tab_line1 = findViewById(R.id.tab_line1); tab_line2 = findViewById(R.id.tab_line2); tab_line3 = findViewById(R.id.tab_line3); @@ -224,6 +241,25 @@ public class MainMessageViewHolder extends AbsMainViewHolder { }); } + private void selectChatType(View view, int position) { + AbsMainMessageChatListFragment fragment = fragmentList.get(position); + if (!(fragment instanceof MainMessageChatListFragment) || !(view instanceof ImageView)) { + return; + } + MainMessageChatListFragment chatFragment = (MainMessageChatListFragment) fragment; + ImageView expendImg = (ImageView) view; + expendImg.setImageResource(R.mipmap.ic_expend_down); + XPopup.Builder builder = new XPopup.Builder(mContext).atView(relativeLayouts.get(position)); + builder.asCustom(new MsgChatTypeSelectPoPupView(mContext, chatFragment.getFilter(), new MsgChatTypeSelectPoPupView.ResultCallBack() { + @Override + public void callBack(int i) { + chatFragment.setFilter(i); + expendImg.setImageResource(R.mipmap.ic_expend_up); + } + })).show(); + } + + private void initFragment() { final String[] titles; fragmentList = new ArrayList<>(); @@ -264,9 +300,9 @@ public class MainMessageViewHolder extends AbsMainViewHolder { return fragmentList.get(i); } }); - if(userType==1){ + if (userType == 1) { viewPager.setCurrentItem(1); - }else{ + } else { viewPager.setCurrentItem(0); } viewPager.setUserInputEnabled(false); @@ -340,7 +376,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { @Override public void onPageSelected(int position) { super.onPageSelected(position); - if(!StringUtil.isEmpty(search.getText().toString())) { + if (!StringUtil.isEmpty(search.getText().toString())) { search.setText(""); } selectTab(position); @@ -369,6 +405,12 @@ public class MainMessageViewHolder extends AbsMainViewHolder { }); } + + private void showChatTypeSelect() { + + } + + private void initTabView() { relativeLayouts = new ArrayList<>(); tabTexts = new ArrayList<>(); @@ -382,6 +424,10 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabTexts.add(tab2); tabTexts.add(tab3); + tabExpend.add(imageView1); + tabExpend.add(imageView2); + tabExpend.add(imageView3); + tabLine.add(tab_line1); tabLine.add(tab_line2); tabLine.add(tab_line3); @@ -390,6 +436,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_all_an_a)); ViewGroup.LayoutParams params = tabLayouts.getLayoutParams(); params.width = LinearLayout.LayoutParams.WRAP_CONTENT; + tabExpend.get(0).setVisibility(View.VISIBLE); tabLayouts.setLayoutParams(params); } else if (userType == 1) {//主播A tab_icon.setVisibility(View.VISIBLE); @@ -410,7 +457,9 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_recommend)); relativeLayouts.get(1).setVisibility(View.VISIBLE); tabTexts.get(1).setText(WordUtil.getNewString(R.string.message_chat_msg_all_an_a)); + tabExpend.get(1).setVisibility(View.VISIBLE); } else { //主播B + tabExpend.get(0).setVisibility(View.VISIBLE); relativeLayouts.get(0).setVisibility(View.VISIBLE); tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_all)); relativeLayouts.get(1).setVisibility(View.VISIBLE); @@ -428,9 +477,9 @@ public class MainMessageViewHolder extends AbsMainViewHolder { } }); } - if(userType==1){ + if (userType == 1) { selectTab(1); - }else{ + } else { selectTab(0); } } diff --git a/main/src/main/res/layout/view_main_message.xml b/main/src/main/res/layout/view_main_message.xml index 47097b605..ac0ba6b34 100644 --- a/main/src/main/res/layout/view_main_message.xml +++ b/main/src/main/res/layout/view_main_message.xml @@ -312,12 +312,12 @@ android:paddingEnd="20dp"> + android:layout_weight="1" + android:visibility="gone" + tools:visibility="visible"> + + + + android:layout_weight="1" + android:visibility="gone" + tools:visibility="visible"> + + android:layout_weight="1" + android:visibility="gone" + tools:visibility="visible"> + + diff --git a/main/src/main/res/mipmap-mdpi/ic_expend_down.png b/main/src/main/res/mipmap-mdpi/ic_expend_down.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb75c255aede3aecf47dc39930c1b1f04049f70 GIT binary patch literal 377 zcmV-<0fzpGP)Px$Gf6~2R47x0(7j6oK@bJ-nb}=?!Nx`uKMITF_LeIw>=Z>oZ1hjC6-zrUB3Q)F zQbDY&Z3HbWtxUoh6G&+x*onvyFgvqyLPSOJmBah-V9;7Sj)=?5e3Yi?Bm5Io;Z$20N_w-J?p){ z27t9{wR-2ATLgezrPQGJeh(2hDwWF1C(N;PZa9RnqqSaO=Bp6GEdVSTV@5lj&SsWn zj!?lL0o6VaTAyb)0kGncX~+wP)YVSX$Yi(^Wu10tGX=Cb#`RIk^czdr08 XLdt}e{UV|;00000NkvXXu0mjf^p~J3 literal 0 HcmV?d00001 diff --git a/main/src/main/res/mipmap-mdpi/ic_expend_up.png b/main/src/main/res/mipmap-mdpi/ic_expend_up.png new file mode 100644 index 0000000000000000000000000000000000000000..983c252517081cdb84b709488ee1f19f0aae9ac4 GIT binary patch literal 366 zcmV-!0g?WRP)Px$C`m*?R47wzkUvYqP!z@QdBkWP(jj*1kf9%-ea#2xSacOf7Y7GXP(jp1TvP-t zCt4li z{P71@V5`-d^*rwYz!4GU%)IjpUJ{WH;J7G?)8TOVW%UZwTAu^hC8Bo`Su@5w*nrl0 z1;8B<&5Ou|F=npOKYwB0PMqWBDz7h+qEOqn0Yx((-$I=X`rpu>2&%^sYhGq2fKD^wpkych5!Hn M07*qoM6N<$f@e0O`Tzg` literal 0 HcmV?d00001 diff --git a/main/src/main/res/mipmap-xxhdpi/ic_expend_down.png b/main/src/main/res/mipmap-xxhdpi/ic_expend_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2b70c60e5fb6f07bde97c842d2804fb85d9a4544 GIT binary patch literal 1009 zcmVX1^@s6sPETi00001b5ch_0Itp) z=>Px&t4TybR9HvVmQiRNRTPH*b9Z(v!H5Vx`B*6uUovx7m#|V+BZe(u5g)856^kP1 zgT;cPs1Owd1;M9+5UjSerTDNS^u;0#ibf$fyP4Hc5R|rxZKEJ;%qDYZ=9meyVRo}K zvzvq#=XLHq=ey_s?>|HMA3YRh&FAw^GxJ>lE-9r>-|Takrdbg}>;tf@wLZBCo6qOJ zWacsv8O*Gi`TI(x^3c@Olz%gzrIc?0cn!c%*#D;uSj(~w6440&xh}A(*7}fb+yCB3 zVAC|8H4J0g_dDmb0UMlxh~8o54kjT4eBVE{Zi~Z8DSab=Ez5evFpLj8&)d?j4f`B3 zf4mMXx>pbpnE8TIY8*i4X?B@jO8F*$w*hS72wH7=R!aE;fI>q5YA%<1YIb(Ewabhf z3hrN4=yEVSm$F zk9R~@p-{NZb=}X1=+Ry$3@!1MQfgwirfXT&8$|SOROM)GX8xOq9#BeM?0^jxl}e>O z%gf8(GIKu362rs8PtMHDtnLKbvaDx>5Xa-BXXX|W?Nv(s+2Pq})6f#m<+GMUV=IO&=Bvex>+Mx*g-n{CTv+b;r3c%F9>KqbKv=af>DgHBgU`TBaM zzZbWUng8-Uue7kR@N;xcENqy+!Pn!PAc_-!zG$^t2NxF?oqnMEklt}!cdu>Rzi)}r zv<6bjED>D*P>i!gkkKnED=(!12VbUaHandl{U2KE{ZZ-ro@~?-uIrv6qR9jgSCvwa z#U0+VtXGNX{RHWk06aWDKX1paNwh)NrMtD+Y|f-v0>IjsLA|ddvI*wC}lYU?uL^p&faR$JF1P`B` zo11&WG|i(zhz}DcdfoT^iF&O- z1Ltg7!O_vt+YQ4wpJIuPGR*AzzJE`>UjHSnZm;(Pr9oVSa=CoV($bOwaBsp-$v;|a zIjHnIN`pAyz!Ga~YgGW_J%F$IzCT&3)#kP{(H&o~UQNfw#_rHsSDAT#Jh027CVl-a_3T)B7A|00000NkvXXu0mjfSjgw- literal 0 HcmV?d00001 diff --git a/main/src/main/res/mipmap-xxhdpi/ic_expend_up.png b/main/src/main/res/mipmap-xxhdpi/ic_expend_up.png new file mode 100644 index 0000000000000000000000000000000000000000..d75a1b232125e5b2294d2ffa6fb896ecbd772c09 GIT binary patch literal 950 zcmV;n14;aeP)X1^@s6M=iWq00001b5ch_0Itp) z=>Px&a7jc#R9HvVmrsZkM-;~2d(}MyCP9J+2?_>Wg~+heU0r)n4=#$V=*5G2QoI;J z0uez-@GfX_i5>*egZSqV6~u!I8cjU7vopQhT?>*xR79enpac_9VY~aq3bQi1cJ|9;U|tf@`Y;S{ z&IWc?pq}S>LWti0VD1bM&xvR-3`5;5Y}cSt%CCs%_vv!mKuj7qjmh-fGb!{HA1LC2s?3o>%g>-4bZ`e%qZI669dyOaGLfl4X+5b;jY z0nEI{aU4j~^m@TME|p44Yqi?lc46BF^?hFnA#O19XO`d-S(fdH)Hggl{GjM&3qeiA zAtGbcHlIw=G~K1OK3;T)l=5ptJOTiYW!-Zj#HykSW(BQQt4m$iz0S-FZE~k+x-E*L z)9vJ#QfeC_o-9a%hs~VLZDevmtJUfP$8qifK-uyTOipgpT3>7ja&k=&1RD|YLO~k5 zc3roxR;xXl9`_y4=EJ#Vx*!XLk$bn++DO^)P)dEn%s&;R!QZayuAE-Mrhrx|mBr<9 z`4<5A(kA!B#KcamwXvP9hf-=MA|5SBgZs?9c5H0SsQUkS3tFjE=9kN5W5Ayl$h}2t zeXeW5mW@)%EkcN&3t;~hLM*A*>rdW-HY?6ZL0L?hd2bX&MzWp_rPLl~{t*Cd*7uZ| zmq$@_7lR=90sxE!EwRa+B+2eLjt}>Yuq99s1m634U z$yTlPnfC!X8FOG@U@HKe%7bnG)?7uU6kF`V$h|L$q95KTWQ%ou_ogq{Z%Kn!=0^Vl zfGMWltli(oaeVMYK(@jX(Se+seTY)ZbwqTf^;WYi+dkO^eMnGqmg%|>@x&xgQ~II* Y0NQ+07yERHH~;_u07*qoM6N<$fb%7 literal 0 HcmV?d00001 diff --git a/main/src/main/res/mipmap-xxxhdpi/ic_expend_down.png b/main/src/main/res/mipmap-xxxhdpi/ic_expend_down.png new file mode 100644 index 0000000000000000000000000000000000000000..3432b8e1b1848634e21a172b7da5d9ce80add403 GIT binary patch literal 455 zcmV;&0XY7NP)Px$fk{L`R9Hvl*xhY|Fc1LX3tk{2bOcL?_ofqcl}ywT+6_7Y5A_JyAbCgFsUsQ% zu<_p=Tou3YfF*Ho}lfXzz8Fxl=4Lg@c{r50QSGnufFe(N~zO-_!++V@5rIU z&wzV0U8<@&v~8<6L#32b2=VQT|BkHd`V#=&JrLH=1>lYIh%|wbVhIfar^vHosHbjL z&=}wpY3K86#JXbvjRlU73mcEiy(u&WXpFgxQb^M@Qfuwnq1ZrEfm-XstQg=7%>gQ< zl(XXD2+akK*5q_Pa)Oos7m@ZQ2WTlUh};^A0gOU!1;qkJBiDvv0+WzyL9v0!NNOkr zFbhcqr2=Lnv7wZ}A|w`+8d!`hg{}caLFPict^?1V%Px$Ye_^wR9Hvd*vnDFFc1ddl{LOo0wsvp1ppOL3k^|1sDKpU11fwH75*h~HZmEQg40@0T}$8h4~Y0tBFQ9R z4sMRA6fzn}fh&oO0#f2iA%lS&xDv=9ASaF+=>?X+aUxfNC2?HHtH3RA9LPoBmN;tU zA7BkQO5_EwCL9&=2UsJH0yzO|#^oZ#=~DJHq_cPPoEv%OslYeTQ9qAu(2X%W(RJM( z0A73_vo$U;$%6ypf59anM+Y3&wr4HL{SF~;yP^ZS>x0Lo6l=vrB>8^zkf|N#Ln7j6 bt=$~~rg`j6OjPy300000NkvXXu0mjf7=5o5 literal 0 HcmV?d00001 From 6abe02390e6d391d7147c05a0d2cbfc1c5126b68 Mon Sep 17 00:00:00 2001 From: ningwenqiang Date: Tue, 27 Aug 2024 14:22:48 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=AD=9B=E9=80=89=20=E7=BB=86=E8=8A=82?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=AE=8C=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/MainConversationListAdapter.java | 2 ++ .../views/MsgChatTypeSelectPoPupView.java | 14 +++++---- .../res/layout/view_msg_select_chat_type.xml | 31 +++++++++++-------- .../main/views/MainMessageViewHolder.java | 6 +++- 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java index a639fd5ea..008587ef0 100644 --- a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -75,6 +75,8 @@ public class MainConversationListAdapter extends ConversationListAdapter { } public void setFilter(int mFilter) { + if (this.mFilter == mFilter) + return; this.mFilter = mFilter; super.setDataCollection(FilterData(mFilter, allDataList)); } diff --git a/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java b/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java index 183bc5b84..4165676c4 100644 --- a/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java +++ b/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java @@ -87,21 +87,23 @@ public class MsgChatTypeSelectPoPupView extends AttachPopupView implements andro @Override public void onClick(android.view.View v) { if (v.getId()==R.id.chatTypeImg1){ - mResultCallBack.callBack(MainConversationListAdapter.FILTER_ALL); + mResultCallBack.callBack(MainConversationListAdapter.FILTER_ALL,chatTypeTv1.getText().toString()); }else if (v.getId()==R.id.chatTypeImg2){ - mResultCallBack.callBack(MainConversationListAdapter.FILTER_ONLINE); + mResultCallBack.callBack(MainConversationListAdapter.FILTER_ONLINE,chatTypeTv2.getText().toString()); }else if (v.getId()==R.id.chatTypeImg3){ - mResultCallBack.callBack(MainConversationListAdapter.FILTER_OFFLINE); + mResultCallBack.callBack(MainConversationListAdapter.FILTER_OFFLINE,chatTypeTv3.getText().toString()); }else if (v.getId()==R.id.chatTypeImg4){ - mResultCallBack.callBack(MainConversationListAdapter.FILTER_READ); + mResultCallBack.callBack(MainConversationListAdapter.FILTER_READ,chatTypeTv4.getText().toString()); }else if (v.getId()==R.id.chatTypeImg5){ - mResultCallBack.callBack(MainConversationListAdapter.FILTER_UNREAD); + mResultCallBack.callBack(MainConversationListAdapter.FILTER_UNREAD,chatTypeTv5.getText().toString()); } dismiss(); } + + public interface ResultCallBack { - void callBack(int i); + void callBack(int i,String string); } } diff --git a/common/src/main/res/layout/view_msg_select_chat_type.xml b/common/src/main/res/layout/view_msg_select_chat_type.xml index 2ae32ab29..644c8b8cf 100644 --- a/common/src/main/res/layout/view_msg_select_chat_type.xml +++ b/common/src/main/res/layout/view_msg_select_chat_type.xml @@ -2,7 +2,7 @@ @@ -13,11 +13,12 @@ android:layout_marginStart="20dp" android:layout_marginTop="20dp" android:layout_weight="1" + android:text="@string/all_chats" android:textColor="#777777" - tools:textColor="@color/colorMainTab" + android:textSize="14sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - android:text="@string/all_chats" /> + tools:textColor="@color/colorMainTab" /> + app:layout_constraintTop_toTopOf="@+id/chatTypeTv1" + tools:src="@mipmap/ic_chat_type_select" /> + app:layout_constraintTop_toBottomOf="@+id/chatTypeTv1" /> + app:layout_constraintTop_toBottomOf="@+id/chatTypeTv2" /> + app:layout_constraintTop_toBottomOf="@+id/chatTypeTv3" /> + app:layout_constraintTop_toBottomOf="@+id/chatTypeTv4" /> Date: Tue, 27 Aug 2024 18:01:03 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=B2=E8=AF=BB?= =?UTF-8?q?=E6=9C=AA=E8=AF=BB=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91=20?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E6=A1=86=E5=A4=96=E9=83=A8=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E7=82=B9=E5=87=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/tmp/full-r8-config.txt | 324 +++++++++--------- .../adapter/MainConversationListAdapter.java | 36 +- .../views/MsgChatTypeSelectPoPupView.java | 73 ++-- .../res/layout/view_msg_select_chat_type.xml | 28 +- common/src/main/res/values-en-rUS/strings.xml | 8 +- common/src/main/res/values/strings.xml | 8 +- .../main/views/MainMessageViewHolder.java | 50 ++- .../src/main/res/layout/view_main_message.xml | 5 +- 8 files changed, 314 insertions(+), 218 deletions(-) diff --git a/app/tmp/full-r8-config.txt b/app/tmp/full-r8-config.txt index 502664459..9986f7a7c 100644 --- a/app/tmp/full-r8-config.txt +++ b/app/tmp/full-r8-config.txt @@ -1,4 +1,4 @@ -# The proguard configuration file for the following section is D:\android project\pandorapan\app\build\intermediates\default_proguard_files\global\proguard-android.txt-8.3.1 +# The proguard configuration file for the following section is D:\AndroidProject\pandorapanL\app\build\intermediates\default_proguard_files\global\proguard-android.txt-8.3.1 # This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usage.html # @@ -95,8 +95,8 @@ # These classes are duplicated between android.jar and core-lambda-stubs.jar. -dontnote java.lang.invoke.** -# End of content from D:\android project\pandorapan\app\build\intermediates\default_proguard_files\global\proguard-android.txt-8.3.1 -# The proguard configuration file for the following section is D:\android project\pandorapan\app\proguard-rules.pro +# End of content from D:\AndroidProject\pandorapanL\app\build\intermediates\default_proguard_files\global\proguard-android.txt-8.3.1 +# The proguard configuration file for the following section is D:\AndroidProject\pandorapanL\app\proguard-rules.pro # Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in /Users/macpro/Library/Android/sdk/tools/proguard/proguard-android.txt @@ -419,8 +419,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.qiniu.**{public ();} -ignorewarnings -# End of content from D:\android project\pandorapan\app\proguard-rules.pro -# The proguard configuration file for the following section is D:\android project\pandorapan\app\build\intermediates\aapt_proguard_file\google_onlineRelease\processGoogle_onlineReleaseResources\aapt_rules.txt +# End of content from D:\AndroidProject\pandorapanL\app\proguard-rules.pro +# The proguard configuration file for the following section is D:\AndroidProject\pandorapanL\app\build\intermediates\aapt_proguard_file\google_testRelease\processGoogle_testReleaseResources\aapt_rules.txt -keep class androidx.core.app.CoreComponentFactory { (); } -keep class androidx.core.content.FileProvider { (); } -keep class androidx.core.content.FileProvider4Utils { (); } @@ -1091,11 +1091,11 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keepclassmembers class * { *** videoEditClick(android.view.View); } -# End of content from D:\android project\pandorapan\app\build\intermediates\aapt_proguard_file\google_onlineRelease\processGoogle_onlineReleaseResources\aapt_rules.txt -# The proguard configuration file for the following section is D:\android project\pandorapan\lib_faceunity\build\intermediates\consumer_proguard_dir\google_onlineRelease\exportGoogle_onlineReleaseConsumerProguardFiles\lib0\proguard.txt +# End of content from D:\AndroidProject\pandorapanL\app\build\intermediates\aapt_proguard_file\google_testRelease\processGoogle_testReleaseResources\aapt_rules.txt +# The proguard configuration file for the following section is D:\AndroidProject\pandorapanL\lib_faceunity\build\intermediates\consumer_proguard_dir\google_testRelease\exportGoogle_testReleaseConsumerProguardFiles\lib0\proguard.txt -# End of content from D:\android project\pandorapan\lib_faceunity\build\intermediates\consumer_proguard_dir\google_onlineRelease\exportGoogle_onlineReleaseConsumerProguardFiles\lib0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt +# End of content from D:\AndroidProject\pandorapanL\lib_faceunity\build\intermediates\consumer_proguard_dir\google_testRelease\exportGoogle_testReleaseConsumerProguardFiles\lib0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt # Generated keep rule for Lifecycle observer adapter. -if class com.lxj.xpopup.core.BasePopupView { (...); @@ -1104,8 +1104,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; (...); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt # Copyright (C) 2015 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1153,16 +1153,16 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt -# The proguard configuration file for the following section is D:\android project\pandorapan\lib_google\build\intermediates\consumer_proguard_dir\google_onlineRelease\exportGoogle_onlineReleaseConsumerProguardFiles\lib0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt +# The proguard configuration file for the following section is D:\AndroidProject\pandorapanL\lib_google\build\intermediates\consumer_proguard_dir\google_testRelease\exportGoogle_testReleaseConsumerProguardFiles\lib0\proguard.txt -# End of content from D:\android project\pandorapan\lib_google\build\intermediates\consumer_proguard_dir\google_onlineRelease\exportGoogle_onlineReleaseConsumerProguardFiles\lib0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt +# End of content from D:\AndroidProject\pandorapanL\lib_google\build\intermediates\consumer_proguard_dir\google_testRelease\exportGoogle_testReleaseConsumerProguardFiles\lib0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt -keepattributes *Annotation* -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt # To enable ProGuard in your project, edit project.properties # to define the proguard.config property as described in that file. # @@ -1202,8 +1202,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; public android.os.Bundle getSkuDetails(int, java.lang.String, java.lang.String, android.os.Bundle); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1244,8 +1244,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.gamingservices.GamingServices -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1286,8 +1286,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.share.Share -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1328,8 +1328,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.login.Login -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1370,12 +1370,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.common.Common -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt -keep class com.davemorrissey.labs.subscaleview.** { *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt # Copyright (C) 2018 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1399,13 +1399,13 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt #Picasso Proguard Config https://github.com/square/picasso -dontwarn com.squareup.okhttp.** -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt # Copyright (C) 2016 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1432,13 +1432,13 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; RuntimeVisibleParameterAnnotations, RuntimeVisibleTypeAnnotations -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt -keepclasseswithmembers class androidx.recyclerview.widget.RecyclerView$ViewHolder { public final android.view.View *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt # Proguard rules specific to the UI module. # Constructor method accessed via reflection in StyledPlayerView @@ -1479,8 +1479,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -dontwarn kotlin.annotations.jvm.** -dontwarn javax.annotation.** -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt # Copyright (C) 2015 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1506,11 +1506,11 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; public void suppressLayout(boolean); public boolean isLayoutSuppressed(); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt -# The proguard configuration file for the following section is D:\android project\pandorapan\TabLayout\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt +# The proguard configuration file for the following section is D:\AndroidProject\pandorapanL\TabLayout\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt -# End of content from D:\android project\pandorapan\TabLayout\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt +# End of content from D:\AndroidProject\pandorapanL\TabLayout\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1551,8 +1551,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.applinks.AppLinks -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1597,8 +1597,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.facebook.messenger.Messenger -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt # Copyright (C) 2020 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1627,16 +1627,16 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; android.view.View findViewByAccessibilityIdTraversal(int); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt -assumenosideeffects public class androidx.compose.runtime.ComposerKt { void sourceInformation(androidx.compose.runtime.Composer,java.lang.String); void sourceInformationMarkerStart(androidx.compose.runtime.Composer,int,java.lang.String); void sourceInformationMarkerEnd(androidx.compose.runtime.Composer); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt -dontwarn jp.co.cyberagent.android.gpuimage.** -keep public class * implements com.bumptech.glide.module.GlideModule @@ -1646,8 +1646,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; public *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt -keep public class * implements com.bumptech.glide.module.GlideModule -keep class * extends com.bumptech.glide.module.AppGlideModule { (...); @@ -1663,8 +1663,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; # Uncomment for DexGuard only #-keepresourcexmlelements manifest/application/meta-data@value=GlideModule -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\245cd6e28cb45ea53af06bd1902d8887\transformed\jetified-billing-7.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\245cd6e28cb45ea53af06bd1902d8887\transformed\jetified-billing-7.0.0\proguard.txt # Keep the AIDL interface -keep class com.android.vending.billing.** { *; } @@ -1699,8 +1699,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\245cd6e28cb45ea53af06bd1902d8887\transformed\jetified-billing-7.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\389aac78ceffe6f037f7624d2175f98b\transformed\jetified-play-services-base-18.3.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\245cd6e28cb45ea53af06bd1902d8887\transformed\jetified-billing-7.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\389aac78ceffe6f037f7624d2175f98b\transformed\jetified-play-services-base-18.3.0\proguard.txt # b/35135904 Ensure that proguard will not strip the mResultGuardian. -keepclassmembers class com.google.android.gms.common.api.internal.BasePendingResult { com.google.android.gms.common.api.internal.BasePendingResult$ReleasableResultGuardian mResultGuardian; @@ -1708,8 +1708,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\389aac78ceffe6f037f7624d2175f98b\transformed\jetified-play-services-base-18.3.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\fdcd25b13ca01df0d64e21ab18452962\transformed\jetified-play-services-measurement-api-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\389aac78ceffe6f037f7624d2175f98b\transformed\jetified-play-services-base-18.3.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\fdcd25b13ca01df0d64e21ab18452962\transformed\jetified-play-services-measurement-api-21.1.1\proguard.txt # Can be removed once we pull in a dependency on firebase-common that includes # https://github.com/firebase/firebase-android-sdk/pull/1472/commits/856f1ca1151cdd88679bbc778892f23dfa34fc06#diff-a2ed34b5a38b4c6c686b09e54865eb48 -dontwarn com.google.auto.value.AutoValue @@ -1722,18 +1722,18 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\fdcd25b13ca01df0d64e21ab18452962\transformed\jetified-play-services-measurement-api-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\fdcd25b13ca01df0d64e21ab18452962\transformed\jetified-play-services-measurement-api-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt -dontwarn com.google.firebase.platforminfo.KotlinDetector -dontwarn com.google.auto.value.AutoValue -dontwarn com.google.auto.value.AutoValue$Builder -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\1d73edc853ec5797eb8fbdbaf92a3a43\transformed\jetified-play-services-tasks-18.1.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\1d73edc853ec5797eb8fbdbaf92a3a43\transformed\jetified-play-services-tasks-18.1.0\proguard.txt -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\1d73edc853ec5797eb8fbdbaf92a3a43\transformed\jetified-play-services-tasks-18.1.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\53d8ae00710cb6dfde668ad5c2529a5c\transformed\jetified-play-services-measurement-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\1d73edc853ec5797eb8fbdbaf92a3a43\transformed\jetified-play-services-tasks-18.1.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\53d8ae00710cb6dfde668ad5c2529a5c\transformed\jetified-play-services-measurement-21.1.1\proguard.txt # We keep all fields for every generated proto file as the runtime uses # reflection over them that ProGuard cannot detect. Without this keep # rule, fields may be removed that would cause runtime failures. @@ -1741,8 +1741,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\53d8ae00710cb6dfde668ad5c2529a5c\transformed\jetified-play-services-measurement-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\d9a1fa15000998f069a9eb095ddd5d6c\transformed\jetified-play-services-measurement-sdk-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\53d8ae00710cb6dfde668ad5c2529a5c\transformed\jetified-play-services-measurement-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\d9a1fa15000998f069a9eb095ddd5d6c\transformed\jetified-play-services-measurement-sdk-21.1.1\proguard.txt # We keep all fields for every generated proto file as the runtime uses # reflection over them that ProGuard cannot detect. Without this keep # rule, fields may be removed that would cause runtime failures. @@ -1750,8 +1750,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\d9a1fa15000998f069a9eb095ddd5d6c\transformed\jetified-play-services-measurement-sdk-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\e3d5db4c204c05b688c67157d08d719e\transformed\jetified-play-services-measurement-impl-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\d9a1fa15000998f069a9eb095ddd5d6c\transformed\jetified-play-services-measurement-sdk-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\e3d5db4c204c05b688c67157d08d719e\transformed\jetified-play-services-measurement-impl-21.1.1\proguard.txt # We keep all fields for every generated proto file as the runtime uses # reflection over them that ProGuard cannot detect. Without this keep # rule, fields may be removed that would cause runtime failures. @@ -1759,8 +1759,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\e3d5db4c204c05b688c67157d08d719e\transformed\jetified-play-services-measurement-impl-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\a14887389ea05f2c3a61b51470f02e11\transformed\jetified-play-services-measurement-sdk-api-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\e3d5db4c204c05b688c67157d08d719e\transformed\jetified-play-services-measurement-impl-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\a14887389ea05f2c3a61b51470f02e11\transformed\jetified-play-services-measurement-sdk-api-21.1.1\proguard.txt # We keep all fields for every generated proto file as the runtime uses # reflection over them that ProGuard cannot detect. Without this keep # rule, fields may be removed that would cause runtime failures. @@ -1768,8 +1768,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\a14887389ea05f2c3a61b51470f02e11\transformed\jetified-play-services-measurement-sdk-api-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\a00f92aeac02d4041e8903bda4c31467\transformed\jetified-play-services-measurement-base-21.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\a14887389ea05f2c3a61b51470f02e11\transformed\jetified-play-services-measurement-sdk-api-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\a00f92aeac02d4041e8903bda4c31467\transformed\jetified-play-services-measurement-base-21.1.1\proguard.txt # We keep all fields for every generated proto file as the runtime uses # reflection over them that ProGuard cannot detect. Without this keep # rule, fields may be removed that would cause runtime failures. @@ -1777,8 +1777,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\a00f92aeac02d4041e8903bda4c31467\transformed\jetified-play-services-measurement-base-21.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\6eda7df53f5a535e22df39c8e1d72650\transformed\jetified-play-services-basement-18.3.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\a00f92aeac02d4041e8903bda4c31467\transformed\jetified-play-services-measurement-base-21.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\6eda7df53f5a535e22df39c8e1d72650\transformed\jetified-play-services-basement-18.3.0\proguard.txt # Needed when building against pre-Marshmallow SDK. -dontwarn android.security.NetworkSecurityPolicy @@ -1856,8 +1856,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\6eda7df53f5a535e22df39c8e1d72650\transformed\jetified-play-services-basement-18.3.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\6eda7df53f5a535e22df39c8e1d72650\transformed\jetified-play-services-basement-18.3.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt # Copyright (C) 2020 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -1878,12 +1878,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; public (); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt # 本库模块专用的混淆规则 -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -1941,8 +1941,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; public ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt -keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel { (); } @@ -1951,8 +1951,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; (android.app.Application); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt -keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel { (androidx.lifecycle.SavedStateHandle); } @@ -1961,8 +1961,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; (android.app.Application,androidx.lifecycle.SavedStateHandle); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro # When editing this file, update the following files as well: # - META-INF/proguard/coroutines.pro # - META-INF/com.android.tools/proguard/coroutines.pro @@ -1990,8 +1990,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; # An annotation used for build tooling, won't be directly accessed. -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro # Allow R8 to optimize away the FastServiceLoader. # Together with ServiceLoader optimization in R8 # this results in direct instantiation when loading Dispatchers.Main @@ -2016,8 +2016,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; boolean getDEBUG() return false; boolean getRECOVER_STACK_TRACES() return false; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt #GSON # Retain Annotations for model objects -keepattributes *Annotation* @@ -2041,8 +2041,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keepclasseswithmembers class * { @retrofit2.http.* ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro # JSR 305 annotations are for embedding nullability information. -dontwarn javax.annotation.** @@ -2055,16 +2055,16 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; # OkHttp platform used only on JVM and when Conscrypt dependency is available. -dontwarn okhttp3.internal.platform.ConscryptPlatform -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt # Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in G:\Android_IDE\ADT\sdk/tools/proguard/proguard-android.txt @@ -2093,8 +2093,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep @com.blankj.utilcode.util.ApiUtils$Api class * -keepattributes *Annotation* -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt -keep class cn.rongcloud.xcrash.NativeHandler { native ; void crashCallback(...); @@ -2102,22 +2102,22 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; void traceCallbackBeforeDump(...); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt # Proguard configuration. -dontwarn com.squareup.okhttp.** # References to Picasso are okay if the consuming app doesn't use it -dontwarn com.squareup.picasso.Transformation -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt -keep public class pl.droidsonroids.gif.GifIOException{(int, java.lang.String);} #Prevents warnings for consumers not using AndroidX -dontwarn androidx.annotation.** -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt #https://github.com/leolin310148/ShortcutBadger/issues/46 -keep class me.leolin.shortcutbadger.impl.AdwHomeBadger { (...); } -keep class me.leolin.shortcutbadger.impl.ApexHomeBadger { (...); } @@ -2128,8 +2128,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class me.leolin.shortcutbadger.impl.SolidHomeBadger { (...); } -keep class me.leolin.shortcutbadger.impl.SonyHomeBadger { (...); } -keep class me.leolin.shortcutbadger.impl.XiaomiHomeBadger { (...); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt # Add project specific ProGuard rules here. # You can control the filterSet of applied configuration files using the # proguardFiles setting in build.gradle. @@ -2167,8 +2167,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; # 保持反射不被混淆 -keepattributes EnclosingMethod -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. @@ -2190,12 +2190,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt # 本库模块专用的混淆规则 -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\483c0844792efef20618064763675691\transformed\jetified-SudMGP-1.4.3.1201\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\483c0844792efef20618064763675691\transformed\jetified-SudMGP-1.4.3.1201\proguard.txt -keep class com.cocos.game.**{ *; } -keep class tech.sud.runtime.**{ *; } -keep class tech.sud.mgp.core.**{ *; } @@ -2849,8 +2849,8 @@ native ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\483c0844792efef20618064763675691\transformed\jetified-SudMGP-1.4.3.1201\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\9fef6e1dea59ce01cbe6739f12545786\transformed\jetified-SudASR-1.4.3.1201\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\483c0844792efef20618064763675691\transformed\jetified-SudMGP-1.4.3.1201\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\9fef6e1dea59ce01cbe6739f12545786\transformed\jetified-SudASR-1.4.3.1201\proguard.txt -keep class com.microsoft.cognitiveservices.** { *; } -keep class tech.sud.mgp.asr.azure.** { *; } @@ -2865,8 +2865,8 @@ native ; *** *Callback(long); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\9fef6e1dea59ce01cbe6739f12545786\transformed\jetified-SudASR-1.4.3.1201\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\d5594233d50b1d727f4630790ca89a13\transformed\jetified-core-8.7.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\9fef6e1dea59ce01cbe6739f12545786\transformed\jetified-SudASR-1.4.3.1201\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\d5594233d50b1d727f4630790ca89a13\transformed\jetified-core-8.7.0\proguard.txt # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. @@ -2893,8 +2893,8 @@ native ; -keep class com.faceunity.wrapper.faceunity {*;} -keep class com.faceunity.wrapper.faceunity$RotatedImage {*;} -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\d5594233d50b1d727f4630790ca89a13\transformed\jetified-core-8.7.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\d5594233d50b1d727f4630790ca89a13\transformed\jetified-core-8.7.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt # Proguard rules specific to the core module. # Constructors accessed via reflection in DefaultRenderersFactory @@ -2951,8 +2951,8 @@ native ; (); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt # Copyright (C) 2019 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -2971,8 +2971,8 @@ native ; (); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt # Copyright (C) 2017 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -2992,8 +2992,8 @@ native ; androidx.transition.ChangeBounds$ViewBounds mViewBounds; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt # Copyright (C) 2016 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -3014,8 +3014,8 @@ native ; *** get*(); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # @@ -3051,8 +3051,8 @@ native ; java.lang.Object readResolve(); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt # Copyright (C) 2017 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -3076,8 +3076,8 @@ native ; -keep class androidx.media.** implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\c6ec9c31a3362678dbcc66f2e9ea7260\transformed\core-1.10.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\c6ec9c31a3362678dbcc66f2e9ea7260\transformed\core-1.10.1\proguard.txt # Never inline methods, but allow shrinking and obfuscation. -keepclassmembernames,allowobfuscation,allowshrinking class androidx.core.view.ViewCompat$Api* { ; @@ -3095,8 +3095,8 @@ native ; ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\c6ec9c31a3362678dbcc66f2e9ea7260\transformed\core-1.10.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\c6ec9c31a3362678dbcc66f2e9ea7260\transformed\core-1.10.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt -keepattributes AnnotationDefault, RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations, @@ -3120,8 +3120,8 @@ native ; # this rule is need to work properly when app is compiled with api 28, see b/142778206 # Also this rule prevents registerIn from being inlined. -keepclassmembers class androidx.lifecycle.ReportFragment$LifecycleCallbacks { *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt # Proguard rules specific to the DataSource module. # Constant folding for resource integers may mean that a resource passed to this method appears to be unused. Keep the method to prevent this from happening. @@ -3135,8 +3135,8 @@ native ; (); } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt # Proguard rules specific to the extractor module. # Methods accessed via reflection in DefaultExtractorsFactory @@ -3154,8 +3154,8 @@ native ; -dontwarn kotlin.annotations.jvm.** -dontwarn javax.annotation.** -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt # Proguard rules specific to the common module. # Don't warn about checkerframework and Kotlin annotations @@ -3179,30 +3179,30 @@ native ; # This is needed for ProGuard but not R8. -keepclassmembernames class com.google.common.base.Function { *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt -keep class * implements androidx.versionedparcelable.VersionedParcelable -keep public class android.support.**Parcelizer { *; } -keep public class androidx.**Parcelizer { *; } -keep public class androidx.versionedparcelable.ParcelImpl -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt -keep class * extends androidx.room.RoomDatabase -dontwarn androidx.room.paging.** -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\c4bf50f4bef00295f739a61609b757c2\transformed\jetified-transport-backend-cct-3.1.8\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\c4bf50f4bef00295f739a61609b757c2\transformed\jetified-transport-backend-cct-3.1.8\proguard.txt -dontwarn com.google.auto.value.AutoValue -dontwarn com.google.auto.value.AutoValue$Builder -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\c4bf50f4bef00295f739a61609b757c2\transformed\jetified-transport-backend-cct-3.1.8\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\c4bf50f4bef00295f739a61609b757c2\transformed\jetified-transport-backend-cct-3.1.8\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt -dontwarn com.google.auto.value.AutoValue -dontwarn com.google.auto.value.AutoValue$Builder -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt # This Proguard rule ensures that ComponentInitializers are are neither shrunk nor obfuscated. # This is because they are discovered and instantiated during application initialization. -keep class * extends androidx.startup.Initializer { @@ -3212,22 +3212,22 @@ native ; -assumenosideeffects class androidx.startup.StartupLogger -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt -dontwarn com.google.firebase.components.Component$Instantiation -dontwarn com.google.firebase.components.Component$ComponentType -keep class * implements com.google.firebase.components.ComponentRegistrar -keep,allowshrinking interface com.google.firebase.components.ComponentRegistrar -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\eb4fdf1a1abe4d45e8a1ea6c65e9f330\transformed\jetified-model-8.7.0\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\eb4fdf1a1abe4d45e8a1ea6c65e9f330\transformed\jetified-model-8.7.0\proguard.txt -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\eb4fdf1a1abe4d45e8a1ea6c65e9f330\transformed\jetified-model-8.7.0\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\eb4fdf1a1abe4d45e8a1ea6c65e9f330\transformed\jetified-model-8.7.0\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt # Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in /Developer/android-sdk-osx/tools/proguard/proguard-android.txt @@ -3249,8 +3249,8 @@ native ; -keep class io.github.inflationx.calligraphy3.* { *; } -keep class io.github.inflationx.calligraphy3.*$* { *; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt -# The proguard configuration file for the following section is C:\Users\Administrator\.gradle\caches\transforms-3\6ee4aefc5377638487f62f6779665411\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt +# The proguard configuration file for the following section is C:\Users\CVB88\.gradle\caches\transforms-3\6ee4aefc5377638487f62f6779665411\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro -keep,allowobfuscation @interface androidx.annotation.Keep -keep @androidx.annotation.Keep class * {*;} @@ -3270,7 +3270,7 @@ native ; @androidx.annotation.DoNotInline ; } -# End of content from C:\Users\Administrator\.gradle\caches\transforms-3\6ee4aefc5377638487f62f6779665411\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro +# End of content from C:\Users\CVB88\.gradle\caches\transforms-3\6ee4aefc5377638487f62f6779665411\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro # The proguard configuration file for the following section is # End of content from \ No newline at end of file diff --git a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java index 008587ef0..7e825d1c0 100644 --- a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -36,6 +36,7 @@ import java.util.List; import java.util.Map; import io.rong.imkit.IMCenter; +import io.rong.imkit.RongIM; import io.rong.imkit.conversationlist.ConversationListAdapter; import io.rong.imkit.conversationlist.model.BaseUiConversation; import io.rong.imkit.conversationlist.model.SingleConversation; @@ -104,14 +105,28 @@ public class MainConversationListAdapter extends ConversationListAdapter { break; case FILTER_READ: for (BaseUiConversation conversation : data) { - if (conversation.mCore.getUnreadMessageCount() <= 0) { + boolean isRead; + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) + { + isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); + }else { + isRead = conversation.mCore.getReceivedStatus().isRead(); + } + if (isRead) { showData.add(conversation); } } break; case FILTER_UNREAD: for (BaseUiConversation conversation : data) { - if (conversation.mCore.getUnreadMessageCount() > 0) { + boolean isRead; + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) + { + isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); + }else { + isRead = conversation.mCore.getReceivedStatus().isRead(); + } + if (!isRead) { showData.add(conversation); } } @@ -220,14 +235,27 @@ public class MainConversationListAdapter extends ConversationListAdapter { if (unReadCount > 0) { holder.setVisible(R.id.rc_conversation_unread_count, true); holder.setText(R.id.rc_conversation_unread_count, String.valueOf(unReadCount)); - holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.red)); - holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_unread_tip)); } else { holder.setVisible(R.id.rc_conversation_unread_count, false); + } + + boolean isRead; + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) + { + isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); + }else { + isRead = conversation.mCore.getReceivedStatus().isRead(); + } + if (isRead) { holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.rc_secondary_color)); holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_read_tip)); + } else { + holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.red)); + holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_unread_tip)); } + + if (holder.getView(R.id.rc_conversation_live_status) == null || IMLoginManager.get(holder.getContext()).getAnchorB() != 1) { return; } diff --git a/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java b/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java index 4165676c4..d3e217aac 100644 --- a/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java +++ b/common/src/main/java/com/yunbao/common/views/MsgChatTypeSelectPoPupView.java @@ -3,7 +3,9 @@ package com.yunbao.common.views; import static io.rong.imlib.publicservice.model.PublicServiceMenu.PublicServiceMenuItemType.View; import android.content.Context; +import android.util.DisplayMetrics; import android.view.View; +import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; @@ -13,6 +15,7 @@ import androidx.core.content.ContextCompat; import com.lxj.xpopup.core.AttachPopupView; import com.yunbao.common.R; import com.yunbao.common.adapter.MainConversationListAdapter; +import com.yunbao.common.utils.DpUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; import org.repackage.com.zui.opendeviceidlibrary.OpenDeviceId; @@ -24,12 +27,14 @@ public class MsgChatTypeSelectPoPupView extends AttachPopupView implements andro private ResultCallBack mResultCallBack; private int lastType; - public MsgChatTypeSelectPoPupView(@NonNull Context context,int type, ResultCallBack itemDelListener) { + + public MsgChatTypeSelectPoPupView(@NonNull Context context, int type, ResultCallBack itemDelListener) { super(context); mResultCallBack = itemDelListener; lastType = type; } + @Override protected int getImplLayoutId() { return R.layout.view_msg_select_chat_type; @@ -37,16 +42,27 @@ public class MsgChatTypeSelectPoPupView extends AttachPopupView implements andro @Override protected void onCreate() { - chatTypeTv1 =findViewById(R.id.chatTypeTv1); - chatTypeImg1 =findViewById(R.id.chatTypeImg1); - chatTypeTv2 =findViewById(R.id.chatTypeTv2); - chatTypeImg2 =findViewById(R.id.chatTypeImg2); - chatTypeTv3 =findViewById(R.id.chatTypeTv3); - chatTypeImg3 =findViewById(R.id.chatTypeImg3); - chatTypeTv4 =findViewById(R.id.chatTypeTv4); - chatTypeImg4 =findViewById(R.id.chatTypeImg4); - chatTypeTv5 =findViewById(R.id.chatTypeTv5); - chatTypeImg5 =findViewById(R.id.chatTypeImg5); + + // 获取屏幕宽度 + DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics(); + int screenWidth = displayMetrics.widthPixels; + + // 设置弹窗宽度为屏幕宽度的 3/4 + View view = findViewById(R.id.root); + ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); + layoutParams.width = screenWidth*3/4; + view.setLayoutParams(layoutParams); + + chatTypeTv1 = findViewById(R.id.chatTypeTv1); + chatTypeImg1 = findViewById(R.id.chatTypeImg1); + chatTypeTv2 = findViewById(R.id.chatTypeTv2); + chatTypeImg2 = findViewById(R.id.chatTypeImg2); + chatTypeTv3 = findViewById(R.id.chatTypeTv3); + chatTypeImg3 = findViewById(R.id.chatTypeImg3); + chatTypeTv4 = findViewById(R.id.chatTypeTv4); + chatTypeImg4 = findViewById(R.id.chatTypeImg4); + chatTypeTv5 = findViewById(R.id.chatTypeTv5); + chatTypeImg5 = findViewById(R.id.chatTypeImg5); chatTypeImg1.setOnClickListener(this); chatTypeImg2.setOnClickListener(this); @@ -58,52 +74,49 @@ public class MsgChatTypeSelectPoPupView extends AttachPopupView implements andro } - private void handleChatTypeClick(int type) { switch (type) { case MainConversationListAdapter.FILTER_ALL: chatTypeImg1.setImageResource(R.mipmap.ic_chat_type_select); - chatTypeTv1.setTextColor(ContextCompat.getColor(chatTypeTv1.getContext(),R.color.colorMainTab)); + chatTypeTv1.setTextColor(ContextCompat.getColor(chatTypeTv1.getContext(), R.color.colorMainTab)); break; case MainConversationListAdapter.FILTER_ONLINE: chatTypeImg2.setImageResource(R.mipmap.ic_chat_type_select); - chatTypeTv2.setTextColor(ContextCompat.getColor(chatTypeTv2.getContext(),R.color.colorMainTab)); + chatTypeTv2.setTextColor(ContextCompat.getColor(chatTypeTv2.getContext(), R.color.colorMainTab)); break; case MainConversationListAdapter.FILTER_OFFLINE: chatTypeImg3.setImageResource(R.mipmap.ic_chat_type_select); - chatTypeTv3.setTextColor(ContextCompat.getColor(chatTypeTv3.getContext(),R.color.colorMainTab)); + chatTypeTv3.setTextColor(ContextCompat.getColor(chatTypeTv3.getContext(), R.color.colorMainTab)); break; case MainConversationListAdapter.FILTER_READ: chatTypeImg4.setImageResource(R.mipmap.ic_chat_type_select); - chatTypeTv4.setTextColor(ContextCompat.getColor(chatTypeTv4.getContext(),R.color.colorMainTab)); + chatTypeTv4.setTextColor(ContextCompat.getColor(chatTypeTv4.getContext(), R.color.colorMainTab)); break; case MainConversationListAdapter.FILTER_UNREAD: chatTypeImg5.setImageResource(R.mipmap.ic_chat_type_select); - chatTypeTv5.setTextColor(ContextCompat.getColor(chatTypeTv5.getContext(),R.color.colorMainTab)); + chatTypeTv5.setTextColor(ContextCompat.getColor(chatTypeTv5.getContext(), R.color.colorMainTab)); break; } } @Override public void onClick(android.view.View v) { - if (v.getId()==R.id.chatTypeImg1){ - mResultCallBack.callBack(MainConversationListAdapter.FILTER_ALL,chatTypeTv1.getText().toString()); - }else if (v.getId()==R.id.chatTypeImg2){ - mResultCallBack.callBack(MainConversationListAdapter.FILTER_ONLINE,chatTypeTv2.getText().toString()); - }else if (v.getId()==R.id.chatTypeImg3){ - mResultCallBack.callBack(MainConversationListAdapter.FILTER_OFFLINE,chatTypeTv3.getText().toString()); - }else if (v.getId()==R.id.chatTypeImg4){ - mResultCallBack.callBack(MainConversationListAdapter.FILTER_READ,chatTypeTv4.getText().toString()); - }else if (v.getId()==R.id.chatTypeImg5){ - mResultCallBack.callBack(MainConversationListAdapter.FILTER_UNREAD,chatTypeTv5.getText().toString()); + if (v.getId() == R.id.chatTypeImg1) { + mResultCallBack.callBack(MainConversationListAdapter.FILTER_ALL, chatTypeTv1.getText().toString()); + } else if (v.getId() == R.id.chatTypeImg2) { + mResultCallBack.callBack(MainConversationListAdapter.FILTER_ONLINE, chatTypeTv2.getText().toString()); + } else if (v.getId() == R.id.chatTypeImg3) { + mResultCallBack.callBack(MainConversationListAdapter.FILTER_OFFLINE, chatTypeTv3.getText().toString()); + } else if (v.getId() == R.id.chatTypeImg4) { + mResultCallBack.callBack(MainConversationListAdapter.FILTER_READ, chatTypeTv4.getText().toString()); + } else if (v.getId() == R.id.chatTypeImg5) { + mResultCallBack.callBack(MainConversationListAdapter.FILTER_UNREAD, chatTypeTv5.getText().toString()); } dismiss(); } - - public interface ResultCallBack { - void callBack(int i,String string); + void callBack(int i, String string); } } diff --git a/common/src/main/res/layout/view_msg_select_chat_type.xml b/common/src/main/res/layout/view_msg_select_chat_type.xml index 644c8b8cf..1a0cdc151 100644 --- a/common/src/main/res/layout/view_msg_select_chat_type.xml +++ b/common/src/main/res/layout/view_msg_select_chat_type.xml @@ -2,7 +2,8 @@ @@ -10,8 +11,8 @@ android:id="@+id/chatTypeTv1" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="20dp" - android:layout_marginTop="20dp" + android:layout_marginStart="24dp" + android:layout_marginTop="22dp" android:layout_weight="1" android:text="@string/all_chats" android:textColor="#777777" @@ -26,6 +27,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginEnd="20dp" + android:padding="5dp" android:src="@mipmap/ic_chat_type_unselect" app:layout_constraintBottom_toBottomOf="@+id/chatTypeTv1" app:layout_constraintEnd_toEndOf="parent" @@ -37,8 +39,8 @@ android:id="@+id/chatTypeTv2" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="20dp" - android:layout_marginTop="20dp" + android:layout_marginStart="24dp" + android:layout_marginTop="22dp" android:layout_weight="1" android:text="@string/online_only" android:textColor="#777777" @@ -51,6 +53,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" + android:padding="5dp" android:src="@mipmap/ic_chat_type_unselect" app:layout_constraintBottom_toBottomOf="@+id/chatTypeTv2" app:layout_constraintEnd_toEndOf="@+id/chatTypeImg1" @@ -61,8 +64,8 @@ android:id="@+id/chatTypeTv3" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="20dp" - android:layout_marginTop="20dp" + android:layout_marginStart="24dp" + android:layout_marginTop="22dp" android:layout_weight="1" android:text="@string/offline_only" android:textColor="#777777" @@ -75,6 +78,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" + android:padding="5dp" android:src="@mipmap/ic_chat_type_unselect" app:layout_constraintBottom_toBottomOf="@+id/chatTypeTv3" app:layout_constraintEnd_toEndOf="@+id/chatTypeImg1" @@ -85,8 +89,8 @@ android:id="@+id/chatTypeTv4" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="20dp" - android:layout_marginTop="20dp" + android:layout_marginStart="24dp" + android:layout_marginTop="22dp" android:layout_weight="1" android:text="@string/read_only" android:textColor="#777777" @@ -99,6 +103,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" + android:padding="5dp" android:src="@mipmap/ic_chat_type_unselect" app:layout_constraintBottom_toBottomOf="@+id/chatTypeTv4" app:layout_constraintEnd_toEndOf="@+id/chatTypeImg1" @@ -109,8 +114,8 @@ android:id="@+id/chatTypeTv5" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="20dp" - android:layout_marginTop="20dp" + android:layout_marginStart="24dp" + android:layout_marginTop="22dp" android:layout_marginBottom="20dp" android:layout_weight="1" android:text="@string/unread_only" @@ -125,6 +130,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" + android:padding="5dp" android:src="@mipmap/ic_chat_type_unselect" app:layout_constraintBottom_toBottomOf="@+id/chatTypeTv5" app:layout_constraintEnd_toEndOf="@+id/chatTypeImg1" diff --git a/common/src/main/res/values-en-rUS/strings.xml b/common/src/main/res/values-en-rUS/strings.xml index 2c7e16aff..970edade2 100644 --- a/common/src/main/res/values-en-rUS/strings.xml +++ b/common/src/main/res/values-en-rUS/strings.xml @@ -1477,8 +1477,8 @@ Limited ride And limited avatar frame [Read] [Unread] All Chats - Show Online Only - Show Offline Only - Show Read Only - Show Unread Only + Show Online + Show Offline + Show Read + Show Unread diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 3c55e3931..f1f515bd9 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1415,8 +1415,8 @@ Limited ride And limited avatar frame [Read] [Unread] All Chats - Show Online Only - Show Offline Only - Show Read Only - Show Unread Only + Show Online + Show Offline + Show Read + Show Unread diff --git a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java index c5d8b7353..b6ddf386b 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -43,7 +43,9 @@ import com.binioter.guideview.Guide; import com.binioter.guideview.GuideBuilder; import com.facebook.appevents.AppEventsLogger; import com.lxj.xpopup.XPopup; +import com.lxj.xpopup.core.BasePopupView; import com.lxj.xpopup.enums.PopupPosition; +import com.lxj.xpopup.interfaces.XPopupCallback; import com.opensource.svgaplayer.SVGADrawable; import com.opensource.svgaplayer.SVGAImageView; import com.opensource.svgaplayer.SVGAParser; @@ -251,13 +253,57 @@ public class MainMessageViewHolder extends AbsMainViewHolder { expendImg.setImageResource(R.mipmap.ic_expend_down); XPopup.Builder builder = new XPopup.Builder(mContext).atView(relativeLayouts.get(position)); builder.offsetY(16); - builder.dismissOnTouchOutside(false); + builder.dismissOnTouchOutside(true); + builder.setPopupCallback(new XPopupCallback() { + @Override + public void onCreated(BasePopupView popupView) { + } + + @Override + public void beforeShow(BasePopupView popupView) { + + } + + @Override + public void onShow(BasePopupView popupView) { + + } + + @Override + public void onDismiss(BasePopupView popupView) { + expendImg.setImageResource(R.mipmap.ic_expend_up); + } + + @Override + public void beforeDismiss(BasePopupView popupView) { + + } + + @Override + public boolean onBackPressed(BasePopupView popupView) { + return false; + } + + @Override + public void onKeyBoardStateChanged(BasePopupView popupView, int height) { + + } + + @Override + public void onDrag(BasePopupView popupView, int value, float percent, boolean upOrLeft) { + + } + + @Override + public void onClickOutside(BasePopupView popupView) { + + } + }); builder.asCustom(new MsgChatTypeSelectPoPupView(mContext, chatFragment.getFilter(), new MsgChatTypeSelectPoPupView.ResultCallBack() { @Override public void callBack(int i,String str) { tabTexts.get(position).setText(str); chatFragment.setFilter(i); - expendImg.setImageResource(R.mipmap.ic_expend_up); } })).show(); diff --git a/main/src/main/res/layout/view_main_message.xml b/main/src/main/res/layout/view_main_message.xml index ac0ba6b34..9e95af268 100644 --- a/main/src/main/res/layout/view_main_message.xml +++ b/main/src/main/res/layout/view_main_message.xml @@ -64,7 +64,7 @@ android:layout_width="0dp" android:layout_height="24dp" android:layout_gravity="end|bottom" - android:layout_marginStart="8dp" + android:layout_marginStart="5dp" android:layout_marginTop="18dp" android:layout_marginEnd="15dp" android:layout_marginBottom="16dp" @@ -377,6 +377,7 @@ Date: Wed, 28 Aug 2024 11:22:13 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=9D=9E=E7=A9=BA=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/MainConversationListAdapter.java | 93 ++++--------- .../fragment/MainMessageChatFragment.java | 13 +- .../common/utils/UiConversationCodeUtil.java | 130 ++++++++++++++++++ .../res/layout/view_msg_select_chat_type.xml | 10 +- gradle.properties | 4 +- .../main/views/MainMessageViewHolder.java | 4 +- .../src/main/res/layout/view_main_message.xml | 6 +- 7 files changed, 174 insertions(+), 86 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java diff --git a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java index 7e825d1c0..beabaff90 100644 --- a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -15,6 +15,7 @@ import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.blankj.utilcode.util.LogUtils; +import com.google.android.exoplayer2.C; import com.yunbao.common.R; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.interfaces.OnRecyclerListRefreshListener; @@ -24,6 +25,7 @@ import com.yunbao.common.utils.AppManager; import com.yunbao.common.utils.ChatMsgTypeUtils; import com.yunbao.common.utils.DateFormatUtil; import com.yunbao.common.utils.StringUtil; +import com.yunbao.common.utils.UiConversationCodeUtil; import com.yunbao.common.utils.ViewUtils; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; @@ -34,6 +36,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import io.rong.imkit.IMCenter; import io.rong.imkit.RongIM; @@ -68,7 +71,6 @@ public class MainConversationListAdapter extends ConversationListAdapter { public static final int FILTER_UNREAD = 2; public static final int FILTER_READ = 4; public static final int FILTER_ALL = 7; - private int mFilter = FILTER_ALL; public int getFilter() { @@ -79,62 +81,9 @@ public class MainConversationListAdapter extends ConversationListAdapter { if (this.mFilter == mFilter) return; this.mFilter = mFilter; - super.setDataCollection(FilterData(mFilter, allDataList)); + super.setDataCollection(UiConversationCodeUtil.FilterData(mFilter, allDataList)); } - private List FilterData(int filterType, List data){ - List showData= new ArrayList<>();; - Log.i("MainConversationListAdapter", "FilterData: 源" + data.size()); - switch (filterType) { - case FILTER_ALL: - showData = data; - break; - case FILTER_ONLINE : - for (BaseUiConversation conversation : data) { - if ("0".equals(conversation.mCore.getDraft())) { - showData.add(conversation); - } - } - break; - case FILTER_OFFLINE: - for (BaseUiConversation conversation : data) { - if (!"0".equals(conversation.mCore.getDraft())) { - showData.add(conversation); - } - } - break; - case FILTER_READ: - for (BaseUiConversation conversation : data) { - boolean isRead; - if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) - { - isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); - }else { - isRead = conversation.mCore.getReceivedStatus().isRead(); - } - if (isRead) { - showData.add(conversation); - } - } - break; - case FILTER_UNREAD: - for (BaseUiConversation conversation : data) { - boolean isRead; - if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) - { - isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); - }else { - isRead = conversation.mCore.getReceivedStatus().isRead(); - } - if (!isRead) { - showData.add(conversation); - } - } - break; - } - Log.i("MainConversationListAdapter", "FilterData: 结果" + showData.size()); - return showData; - } @@ -143,8 +92,8 @@ public class MainConversationListAdapter extends ConversationListAdapter { } public void setSrcList(List srcList) { - this.srcList = srcList; - super.setDataCollection(FilterData(mFilter, allDataList)); + this.srcList = srcList; + super.setDataCollection(UiConversationCodeUtil.FilterData(mFilter, allDataList)); // notifyDataSetChanged(); } @@ -239,13 +188,17 @@ public class MainConversationListAdapter extends ConversationListAdapter { holder.setVisible(R.id.rc_conversation_unread_count, false); } - boolean isRead; - if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) - { - isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); - }else { - isRead = conversation.mCore.getReceivedStatus().isRead(); + boolean isRead = false; + Message message = conversation.mCore.getMessage(); + if (message != null) { + Message.MessageDirection direction = message.getMessageDirection(); + if (direction != null && direction == Message.MessageDirection.SEND) { + isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); + } else { + isRead = conversation.mCore.getReceivedStatus().isRead(); + } } + if (isRead) { holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.rc_secondary_color)); holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_read_tip)); @@ -255,7 +208,6 @@ public class MainConversationListAdapter extends ConversationListAdapter { } - if (holder.getView(R.id.rc_conversation_live_status) == null || IMLoginManager.get(holder.getContext()).getAnchorB() != 1) { return; } @@ -272,8 +224,6 @@ public class MainConversationListAdapter extends ConversationListAdapter { } else { holder.getView(R.id.rc_conversation_live_status).setVisibility(View.GONE); } - - } @@ -382,11 +332,16 @@ public class MainConversationListAdapter extends ConversationListAdapter { } tmp.add(item); } - allDataList= tmp; - List showData= FilterData(mFilter,tmp); - super.setDataCollection(showData); + allDataList = tmp; + if(mFilter!=FILTER_OFFLINE){ + List showData = UiConversationCodeUtil.FilterData(mFilter, tmp); + if(!UiConversationCodeUtil.checkIsSame(showData,mDataList)){ + super.setDataCollection(showData); + } + } } + private List tmpUids = new ArrayList<>(); public void clear() { diff --git a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java index 73d5f9132..eeaaad722 100644 --- a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java @@ -14,6 +14,7 @@ import com.yunbao.common.R; import com.yunbao.common.adapter.MainConversationListAdapter; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.UiConversationCodeUtil; import com.yunbao.common.utils.WordUtil; import java.util.ArrayList; @@ -46,10 +47,13 @@ public class MainMessageChatFragment extends ConversationListFragment { mConversationListViewModel.getConversationListLiveData().observe(this.getViewLifecycleOwner(), new Observer>() { @Override public void onChanged(List uiConversations) { - if (listHashCode != uiConversations.hashCode()) { - listHashCode = uiConversations.hashCode(); + int hashCode = UiConversationCodeUtil.getListHasCode(uiConversations); + if (listHashCode != hashCode) { + Log.i("nwq", "刷新数据"); + listHashCode = hashCode; ((MainConversationListAdapter) mAdapter).onFinish(); } + } }); mConversationListViewModel.getRefreshEventLiveData().observe(this.getViewLifecycleOwner(), new Observer() { @@ -58,7 +62,6 @@ public class MainMessageChatFragment extends ConversationListFragment { listHashCode = 0; } }); - } public void setEmptyView(int viewLayoutMsgId) { @@ -156,10 +159,10 @@ public class MainMessageChatFragment extends ConversationListFragment { } public void onChatList() { - if(mConversationListViewModel==null)return; + if (mConversationListViewModel == null) return; ((MainConversationListAdapter) mAdapter).setChat(); ((MainConversationListAdapter) mAdapter).clear(); - System.out.println(">!>!>!>!!>"+mConversationListViewModel); + System.out.println(">!>!>!>!!>" + mConversationListViewModel); subscribeUi(); } diff --git a/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java new file mode 100644 index 000000000..cc2aac47d --- /dev/null +++ b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java @@ -0,0 +1,130 @@ +package com.yunbao.common.utils; + +import android.util.Log; + +import java.util.ArrayList; +import java.util.List; + +import io.rong.imkit.conversationlist.model.BaseUiConversation; +import io.rong.imlib.model.Conversation; +import io.rong.imlib.model.Message; + +public class UiConversationCodeUtil { + + + public static final int FILTER_OFFLINE = 0; + public static final int FILTER_ONLINE = 1; + public static final int FILTER_UNREAD = 2; + public static final int FILTER_READ = 4; + public static final int FILTER_ALL = 7; + + + public static boolean checkIsSame(List list1, List list2) { + if (list1.size() != list2.size()) return false; + int hashCode1 = getListHasCode(list1); + int hashCode2 = getListHasCode(list2); + return hashCode1 == hashCode2; + } + + public static boolean checkIsSame(int hashCode1, List list2) { + int hashCode2 = getListHasCode(list2); + return hashCode1 == hashCode2; + } + + public static int getListHasCode(List list) { + int hashCodeValue = 1; + for (BaseUiConversation conversation : list) { + if (conversation != null) { + hashCodeValue = 31 * hashCodeValue + getBaseUiConversationHashCode(conversation); + } + } + return hashCodeValue; + } + + + //根据BaseUiConversation对象的属性计算hashCode + private static int getBaseUiConversationHashCode(BaseUiConversation item) { + final int prime = 31; + int result = 1; + Conversation mCore = item.mCore; + result = prime * result + ((mCore.getPortraitUrl() == null) ? 0 : mCore.getPortraitUrl().hashCode()); + result = prime * result + ((mCore.getConversationTitle() == null) ? 0 : mCore.getConversationTitle().hashCode()); + result = prime * result + ((item.mConversationContent == null) ? 0 : item.mConversationContent.hashCode()); + result = prime * result + (int) (mCore.getSentTime() ^ (mCore.getSentTime() >>> 32)); + result = prime * result + ((mCore.getDraft() == null) ? 0 : mCore.getDraft().hashCode()); + result = prime * result + mCore.getUnreadMessageCount(); + + Message message = mCore.getMessage(); + if (message != null) { + Message.MessageDirection direction = message.getMessageDirection(); + if (direction != null) { + result = prime * result + direction.hashCode(); + } + } + + result = prime * result + ((mCore.getSentStatus() == null) ? 0 : mCore.getSentStatus().hashCode()); + result = prime * result + ((mCore.getReceivedStatus() == null) ? 0 : mCore.getReceivedStatus().hashCode()); + result = prime * result + ((mCore.getTargetId() == null) ? 0 : mCore.getTargetId().hashCode()); + return result; + } + + + public static List FilterData(int filterType, List data) { + List showData = new ArrayList<>(); + ; + Log.i("MainConversationListAdapter", "FilterData: 源" + data.size()); + switch (filterType) { + case FILTER_ALL: + showData = data; + break; + case FILTER_ONLINE: + for (BaseUiConversation conversation : data) { + if ("0".equals(conversation.mCore.getDraft())) { + showData.add(conversation); + } + } + break; + case FILTER_OFFLINE: + for (BaseUiConversation conversation : data) { + if (!"0".equals(conversation.mCore.getDraft())) { + showData.add(conversation); + } + } + break; + case FILTER_READ: + for (BaseUiConversation conversation : data) { + boolean isRead; + if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { + isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); + } else { + isRead = conversation.mCore.getReceivedStatus().isRead(); + } + if (isRead) { + showData.add(conversation); + } + } + + } + break; + case FILTER_UNREAD: + for (BaseUiConversation conversation : data) { + boolean isRead; + if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { + isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); + } else { + isRead = conversation.mCore.getReceivedStatus().isRead(); + } + if (!isRead) { + showData.add(conversation); + } + } + } + break; + } + return showData; + } + + +} diff --git a/common/src/main/res/layout/view_msg_select_chat_type.xml b/common/src/main/res/layout/view_msg_select_chat_type.xml index 1a0cdc151..694295563 100644 --- a/common/src/main/res/layout/view_msg_select_chat_type.xml +++ b/common/src/main/res/layout/view_msg_select_chat_type.xml @@ -16,7 +16,7 @@ android:layout_weight="1" android:text="@string/all_chats" android:textColor="#777777" - android:textSize="14sp" + android:textSize="15sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:textColor="@color/colorMainTab" /> @@ -44,7 +44,7 @@ android:layout_weight="1" android:text="@string/online_only" android:textColor="#777777" - android:textSize="14sp" + android:textSize="15sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/chatTypeTv1" /> @@ -69,7 +69,7 @@ android:layout_weight="1" android:text="@string/offline_only" android:textColor="#777777" - android:textSize="14sp" + android:textSize="15sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/chatTypeTv2" /> @@ -94,7 +94,7 @@ android:layout_weight="1" android:text="@string/read_only" android:textColor="#777777" - android:textSize="14sp" + android:textSize="15sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/chatTypeTv3" /> @@ -120,7 +120,7 @@ android:layout_weight="1" android:text="@string/unread_only" android:textColor="#777777" - android:textSize="14sp" + android:textSize="15sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/chatTypeTv4" /> diff --git a/gradle.properties b/gradle.properties index c41a7a913..d015f4ba1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,6 +24,6 @@ android.nonTransitiveRClass=false systemProp.http.proxyHost=127.0.0.1 systemProp.https.proxyHost=127.0.0.1 -systemProp.https.proxyPort=7890 -systemProp.http.proxyPort=7890 +systemProp.https.proxyPort=9098 +systemProp.http.proxyPort=9098 #android.enableR8.fullMode=true \ No newline at end of file diff --git a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java index b6ddf386b..7575fd000 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -250,7 +250,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { } MainMessageChatListFragment chatFragment = (MainMessageChatListFragment) fragment; ImageView expendImg = (ImageView) view; - expendImg.setImageResource(R.mipmap.ic_expend_down); + expendImg.setImageResource(R.mipmap.ic_expend_up); XPopup.Builder builder = new XPopup.Builder(mContext).atView(relativeLayouts.get(position)); builder.offsetY(16); builder.dismissOnTouchOutside(true); @@ -271,7 +271,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { @Override public void onDismiss(BasePopupView popupView) { - expendImg.setImageResource(R.mipmap.ic_expend_up); + expendImg.setImageResource(R.mipmap.ic_expend_down); } @Override diff --git a/main/src/main/res/layout/view_main_message.xml b/main/src/main/res/layout/view_main_message.xml index 9e95af268..4ea0338f7 100644 --- a/main/src/main/res/layout/view_main_message.xml +++ b/main/src/main/res/layout/view_main_message.xml @@ -383,7 +383,7 @@ android:padding="5dp" android:visibility="gone" tools:visibility="visible" - android:src="@mipmap/ic_expend_up" + android:src="@mipmap/ic_expend_down" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toEndOf="@+id/tab_top1" app:layout_constraintBottom_toBottomOf="parent"/> @@ -448,7 +448,7 @@ android:padding="5dp" android:visibility="gone" tools:visibility="visible" - android:src="@mipmap/ic_expend_up" + android:src="@mipmap/ic_expend_down" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toEndOf="@+id/tab_top2" app:layout_constraintBottom_toBottomOf="parent"/> @@ -514,7 +514,7 @@ android:visibility="gone" tools:visibility="visible" android:layout_centerHorizontal="true" - android:src="@mipmap/ic_expend_up" + android:src="@mipmap/ic_expend_down" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toEndOf="@+id/tab_top3" app:layout_constraintBottom_toBottomOf="parent"/> From f463557bc4f9757ad02f417c059afea760d9a3eb Mon Sep 17 00:00:00 2001 From: ningwenqiang Date: Wed, 28 Aug 2024 15:16:07 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=A2=9E=E5=8A=A0=E9=95=BF=E6=9C=9F=E6=8C=81?= =?UTF-8?q?=E6=9C=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/MainConversationListAdapter.java | 4 +- .../yunbao/common/fragment/ChatViewModel.java | 57 +++++++++++++++++++ .../fragment/MainMessageChatFragment.java | 7 ++- .../fragment/MainMessageChatListFragment.java | 6 +- .../common/utils/UiConversationCodeUtil.java | 5 +- .../main/views/MainMessageViewHolder.java | 10 +++- .../src/main/res/layout/view_main_message.xml | 36 ++++++------ 7 files changed, 102 insertions(+), 23 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/fragment/ChatViewModel.java diff --git a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java index beabaff90..4835ceb5a 100644 --- a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -81,7 +81,9 @@ public class MainConversationListAdapter extends ConversationListAdapter { if (this.mFilter == mFilter) return; this.mFilter = mFilter; - super.setDataCollection(UiConversationCodeUtil.FilterData(mFilter, allDataList)); + if (allDataList !=null && !allDataList.isEmpty()){ + super.setDataCollection(UiConversationCodeUtil.FilterData(mFilter, allDataList)); + } } diff --git a/common/src/main/java/com/yunbao/common/fragment/ChatViewModel.java b/common/src/main/java/com/yunbao/common/fragment/ChatViewModel.java new file mode 100644 index 000000000..66f0d4189 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/fragment/ChatViewModel.java @@ -0,0 +1,57 @@ +package com.yunbao.common.fragment; + +import android.app.Application; + +import androidx.annotation.NonNull; + +import androidx.lifecycle.ViewModel; + +import com.facebook.all.All; +import com.yunbao.common.R; +import com.yunbao.common.utils.UiConversationCodeUtil; + +public class ChatViewModel extends ViewModel { + + private int mChatFilter = UiConversationCodeUtil.FILTER_ALL; + + public int getChatFilter() { + return mChatFilter; + } + + public void setChatFilter(int mChatFilter) { + this.mChatFilter = mChatFilter; + } + +// public static final int FILTER_OFFLINE = 0; +// public static final int FILTER_ONLINE = 1; +// public static final int FILTER_UNREAD = 2; +// public static final int FILTER_READ = 4; +// public static final int FILTER_ALL = 7; +// All Chats +// Show Online +// Show Offline +// Show Read +// Show Unread + + public int getTitleTextId() { + int id = R.string.all_chats; + switch (mChatFilter) { + case UiConversationCodeUtil.FILTER_ALL: + id = R.string.all_chats; + break; + case UiConversationCodeUtil.FILTER_ONLINE: + id = R.string.online_only; + break; + case UiConversationCodeUtil.FILTER_OFFLINE: + id = R.string.offline_only; + break; + case UiConversationCodeUtil.FILTER_READ: + id = R.string.read_only; + break; + case UiConversationCodeUtil.FILTER_UNREAD: + id = R.string.unread_only; + break; + } + return id; + } +} diff --git a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java index eeaaad722..fbd7bb028 100644 --- a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java @@ -9,6 +9,7 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; import com.yunbao.common.R; import com.yunbao.common.adapter.MainConversationListAdapter; @@ -33,10 +34,12 @@ public class MainMessageChatFragment extends ConversationListFragment { private static final String TAG = "融云列表"; int listHashCode = 0; +// ChatViewModel chatViewModel; @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { Log.i(TAG, "onCreateView: 创建融云"); +// chatViewModel = (ChatViewModel)(new ViewModelProvider(requireActivity())).get(ChatViewModel.class); return inflater.inflate(R.layout.rc_conversationlist_fragment, container, false); } @@ -169,7 +172,9 @@ public class MainMessageChatFragment extends ConversationListFragment { @Override protected ConversationListAdapter onResolveAdapter() { - this.mAdapter = new MainConversationListAdapter(getContext()); + MainConversationListAdapter adapter= new MainConversationListAdapter(getContext()); +// adapter.setFilter(chatViewModel.getChatFilter()); + this.mAdapter =adapter; return this.mAdapter; } } diff --git a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java index 966eca9b0..35f9a6f70 100644 --- a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java @@ -13,6 +13,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import com.yunbao.common.R; @@ -49,7 +50,7 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment public MainMessageChatListFragment(Context mContext) { this.mContext =mContext; } - + ChatViewModel chatViewModel; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -62,8 +63,10 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment @Override public void onResume() { super.onResume(); + chatViewModel = (new ViewModelProvider(requireActivity())).get(ChatViewModel.class); conversationListFragment = new MainMessageChatFragment(); setAdapter(conversationListFragment.getAdapter()); + mAdapter.setFilter(chatViewModel.getChatFilter()); FragmentManager manager = getChildFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.container, conversationListFragment); @@ -171,6 +174,7 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment public void setFilter(int mFilter) { mAdapter.setFilter(mFilter); + chatViewModel.setChatFilter(mFilter); } diff --git a/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java index cc2aac47d..bdd2ac8de 100644 --- a/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java @@ -33,6 +33,8 @@ public class UiConversationCodeUtil { public static int getListHasCode(List list) { int hashCodeValue = 1; + if (list == null || list.isEmpty()) + return 1; for (BaseUiConversation conversation : list) { if (conversation != null) { hashCodeValue = 31 * hashCodeValue + getBaseUiConversationHashCode(conversation); @@ -71,7 +73,8 @@ public class UiConversationCodeUtil { public static List FilterData(int filterType, List data) { List showData = new ArrayList<>(); - ; + if (data == null || data.isEmpty()) + return showData; Log.i("MainConversationListAdapter", "FilterData: 源" + data.size()); switch (filterType) { case FILTER_ALL: diff --git a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java index 7575fd000..a227aa485 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -35,6 +35,7 @@ import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.lifecycle.ViewModelProvider; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.widget.ViewPager2; @@ -51,6 +52,7 @@ import com.opensource.svgaplayer.SVGAImageView; import com.opensource.svgaplayer.SVGAParser; import com.opensource.svgaplayer.SVGAVideoEntity; import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.fragment.ChatViewModel; import com.yunbao.common.fragment.MainMessageRecommendFragment; import com.yunbao.common.utils.DebugUtils; import com.yunbao.common.utils.DialogUitl; @@ -148,6 +150,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { private LinearLayout tabLayouts; private int userType = 0; // (0)普通用户 (1)主播A (2)主播B + ChatViewModel chatViewModel; public MainMessageViewHolder setHomeZdyPop(String homeZdyPop) { this.homeZdyPop = homeZdyPop; @@ -161,6 +164,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { public MainMessageViewHolder(MainActivity context, ViewGroup parentView) { super(context, parentView); mContext = context; + chatViewModel= (new ViewModelProvider(mContext)).get(ChatViewModel.class); } @Override @@ -483,7 +487,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabLine.add(tab_line3); if (userType == 0) { //普通用户 relativeLayouts.get(0).setVisibility(View.VISIBLE); - tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_all_an_a)); + tabTexts.get(0).setText(WordUtil.getNewString(chatViewModel.getTitleTextId())); ViewGroup.LayoutParams params = tabLayouts.getLayoutParams(); params.width = LinearLayout.LayoutParams.WRAP_CONTENT; tabExpend.get(0).setVisibility(View.VISIBLE); @@ -506,12 +510,12 @@ public class MainMessageViewHolder extends AbsMainViewHolder { relativeLayouts.get(0).setVisibility(View.VISIBLE); tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_recommend)); relativeLayouts.get(1).setVisibility(View.VISIBLE); - tabTexts.get(1).setText(WordUtil.getNewString(R.string.message_chat_msg_all_an_a)); + tabTexts.get(1).setText(WordUtil.getNewString(chatViewModel.getTitleTextId())); tabExpend.get(1).setVisibility(View.VISIBLE); } else { //主播B tabExpend.get(0).setVisibility(View.VISIBLE); relativeLayouts.get(0).setVisibility(View.VISIBLE); - tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_all)); + tabTexts.get(0).setText(WordUtil.getNewString(chatViewModel.getTitleTextId())); relativeLayouts.get(1).setVisibility(View.VISIBLE); tabTexts.get(1).setText(WordUtil.getNewString(R.string.message_chat_msg_system)); relativeLayouts.get(2).setVisibility(View.VISIBLE); diff --git a/main/src/main/res/layout/view_main_message.xml b/main/src/main/res/layout/view_main_message.xml index 4ea0338f7..8c1a02219 100644 --- a/main/src/main/res/layout/view_main_message.xml +++ b/main/src/main/res/layout/view_main_message.xml @@ -377,16 +377,17 @@ + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible" /> @@ -440,18 +441,20 @@ app:layout_constraintTop_toBottomOf="@+id/tab2" /> + + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible" /> + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible" /> From c7f4c1276f9369292f4c48b463fdaa4c68262155 Mon Sep 17 00:00:00 2001 From: ningwenqiang Date: Thu, 29 Aug 2024 11:08:15 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=B1=BB=E5=9E=8BTab=E9=A1=B5=E7=9A=84?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=B1=BB=E5=9E=8B=E5=92=8C=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=EF=BC=88=E5=87=8F=E5=B0=91=E4=BA=8C=E6=AC=A1?= =?UTF-8?q?=E5=B1=82=E5=B8=83=E5=B1=80=E5=B1=82=E7=BA=A7=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/views/MainMessageViewHolder.java | 17 +- .../src/main/res/layout/view_main_message.xml | 581 ++++++++++++------ 2 files changed, 391 insertions(+), 207 deletions(-) diff --git a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java index a227aa485..ff8e5df8c 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -32,6 +32,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.constraintlayout.widget.Group; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; @@ -137,17 +138,17 @@ public class MainMessageViewHolder extends AbsMainViewHolder { private MagicIndicator mIndicator; private List fragmentList; - private ConstraintLayout tabLayout1, tabLayout2, tabLayout3; + private Group tabLayout1, tabLayout2, tabLayout3; private TextView tab1, tab2, tab3; private ImageView imageView1, imageView2, imageView3; private View tab_line1, tab_line2, tab_line3; private ImageView tab_icon; - private List relativeLayouts = new ArrayList<>(); + private List relativeLayouts = new ArrayList<>(); private List tabTexts = new ArrayList<>(); private List tabLine = new ArrayList<>(); private List tabExpend = new ArrayList<>(); - private LinearLayout tabLayouts; + private ConstraintLayout tabLayouts; private int userType = 0; // (0)普通用户 (1)主播A (2)主播B ChatViewModel chatViewModel; @@ -202,9 +203,9 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabLayouts = findViewById(R.id.tabLayouts); tab_icon = findViewById(R.id.tab_icon); - tabLayout1 = findViewById(R.id.tabLayout1); - tabLayout2 = findViewById(R.id.tabLayout2); - tabLayout3 = findViewById(R.id.tabLayout3); + tabLayout1 = findViewById(R.id.group_tab1); + tabLayout2 = findViewById(R.id.group_tab2); + tabLayout3 = findViewById(R.id.group_tab3); tab1 = findViewById(R.id.tab1); tab2 = findViewById(R.id.tab2); @@ -255,7 +256,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { MainMessageChatListFragment chatFragment = (MainMessageChatListFragment) fragment; ImageView expendImg = (ImageView) view; expendImg.setImageResource(R.mipmap.ic_expend_up); - XPopup.Builder builder = new XPopup.Builder(mContext).atView(relativeLayouts.get(position)); + XPopup.Builder builder = new XPopup.Builder(mContext).atView(tabTexts.get(position)); builder.offsetY(16); builder.dismissOnTouchOutside(true); builder.setPopupCallback(new XPopupCallback() { @@ -523,7 +524,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { } for (int i = 0; i < relativeLayouts.size(); i++) { int finalI = i; - relativeLayouts.get(i).setOnClickListener(new View.OnClickListener() { + tabTexts.get(i).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { selectTab(finalI); diff --git a/main/src/main/res/layout/view_main_message.xml b/main/src/main/res/layout/view_main_message.xml index 8c1a02219..5bc51d7be 100644 --- a/main/src/main/res/layout/view_main_message.xml +++ b/main/src/main/res/layout/view_main_message.xml @@ -303,229 +303,412 @@ android:layout_height="37dp" android:visibility="gone" /> - + android:paddingStart="12dp" + android:paddingEnd="12dp"> - + + + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/tab1" + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible" /> - - - - - - - - - - - - - - - + + + app:layout_constraintBottom_toBottomOf="@+id/tab1" + app:layout_constraintStart_toEndOf="@+id/tab1" + app:layout_constraintTop_toTopOf="@+id/tab1" + tools:visibility="gone" /> - + - + - + - - - - - - + + + app:layout_constraintBottom_toBottomOf="@+id/tab2" + app:layout_constraintStart_toEndOf="@+id/tab2" + app:layout_constraintTop_toTopOf="@+id/tab2" + tools:visibility="gone" /> - + - + - + - + - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Date: Thu, 29 Aug 2024 14:23:44 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E5=8F=AA=E6=9C=89=E4=B8=BB=E6=92=ADB?= =?UTF-8?q?=E6=89=8D=E8=83=BD=E8=BF=9B=E8=A1=8C=E6=B6=88=E6=81=AF=E7=AD=9B?= =?UTF-8?q?=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/MainConversationListAdapter.java | 21 +++++++++++-------- .../fragment/MainMessageChatFragment.java | 11 +++++++--- .../fragment/MainMessageChatListFragment.java | 1 + .../main/views/MainMessageViewHolder.java | 4 ++-- .../src/main/res/layout/view_main_message.xml | 2 +- 5 files changed, 24 insertions(+), 15 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java index 4835ceb5a..79f0c0892 100644 --- a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -81,14 +81,12 @@ public class MainConversationListAdapter extends ConversationListAdapter { if (this.mFilter == mFilter) return; this.mFilter = mFilter; - if (allDataList !=null && !allDataList.isEmpty()){ - super.setDataCollection(UiConversationCodeUtil.FilterData(mFilter, allDataList)); - } +// if (allDataList !=null && !allDataList.isEmpty()){ +// super.setDataCollection(UiConversationCodeUtil.FilterData(mFilter, allDataList)); +// } } - - public MainConversationListAdapter(Context mContext) { this.mContext = mContext; } @@ -287,8 +285,7 @@ public class MainConversationListAdapter extends ConversationListAdapter { private int listHashCode = 0; - @Override - public synchronized void setDataCollection(List data) { + public synchronized void setDataCollectionV2(List data, boolean isSearch) { if (data.hashCode() == listHashCode) return; listHashCode = data.hashCode(); List tmp = new ArrayList<>(); @@ -335,15 +332,21 @@ public class MainConversationListAdapter extends ConversationListAdapter { tmp.add(item); } allDataList = tmp; - if(mFilter!=FILTER_OFFLINE){ + if (mFilter != FILTER_OFFLINE || isSearch == true) { List showData = UiConversationCodeUtil.FilterData(mFilter, tmp); - if(!UiConversationCodeUtil.checkIsSame(showData,mDataList)){ + if (!UiConversationCodeUtil.checkIsSame(showData, mDataList)) { super.setDataCollection(showData); } } } + @Override + public void setDataCollection(List data) { + setDataCollectionV2(data, false); + } + + private List tmpUids = new ArrayList<>(); public void clear() { diff --git a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java index fbd7bb028..e6dcc4810 100644 --- a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java @@ -76,6 +76,11 @@ public class MainMessageChatFragment extends ConversationListFragment { } + public void refreshData() { + mRefreshLayout.autoRefresh(); + //onConversationListRefresh(mRefreshLayout) + } + public void search(String search) { ((MainConversationListAdapter) mAdapter).setSearch(); getContactsList(search); @@ -150,7 +155,7 @@ public class MainMessageChatFragment extends ConversationListFragment { list.remove(list.size() - 1); } list.addAll(data); - mAdapter.setDataCollection(list); + ((MainConversationListAdapter) mAdapter).setDataCollectionV2(list,true); } @Override @@ -172,9 +177,9 @@ public class MainMessageChatFragment extends ConversationListFragment { @Override protected ConversationListAdapter onResolveAdapter() { - MainConversationListAdapter adapter= new MainConversationListAdapter(getContext()); + MainConversationListAdapter adapter = new MainConversationListAdapter(getContext()); // adapter.setFilter(chatViewModel.getChatFilter()); - this.mAdapter =adapter; + this.mAdapter = adapter; return this.mAdapter; } } diff --git a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java index 35f9a6f70..b85ed04ac 100644 --- a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java @@ -175,6 +175,7 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment public void setFilter(int mFilter) { mAdapter.setFilter(mFilter); chatViewModel.setChatFilter(mFilter); + conversationListFragment.refreshData(); } diff --git a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java index ff8e5df8c..10a092bb6 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -491,7 +491,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabTexts.get(0).setText(WordUtil.getNewString(chatViewModel.getTitleTextId())); ViewGroup.LayoutParams params = tabLayouts.getLayoutParams(); params.width = LinearLayout.LayoutParams.WRAP_CONTENT; - tabExpend.get(0).setVisibility(View.VISIBLE); + //tabExpend.get(0).setVisibility(View.VISIBLE); tabLayouts.setLayoutParams(params); } else if (userType == 1) {//主播A tab_icon.setVisibility(View.VISIBLE); @@ -512,7 +512,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_recommend)); relativeLayouts.get(1).setVisibility(View.VISIBLE); tabTexts.get(1).setText(WordUtil.getNewString(chatViewModel.getTitleTextId())); - tabExpend.get(1).setVisibility(View.VISIBLE); + // tabExpend.get(1).setVisibility(View.VISIBLE); } else { //主播B tabExpend.get(0).setVisibility(View.VISIBLE); relativeLayouts.get(0).setVisibility(View.VISIBLE); diff --git a/main/src/main/res/layout/view_main_message.xml b/main/src/main/res/layout/view_main_message.xml index 5bc51d7be..d1c11947c 100644 --- a/main/src/main/res/layout/view_main_message.xml +++ b/main/src/main/res/layout/view_main_message.xml @@ -367,7 +367,7 @@ android:layout_height="wrap_content" android:visibility="gone" tools:visibility="visible" - app:constraint_referenced_ids="tab1,tab_icon,tab_line1"/> + app:constraint_referenced_ids="tab1,tab_line1"/> Date: Thu, 29 Aug 2024 15:28:40 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E5=83=85=E5=B1=95=E7=A4=BA=E5=B0=8D?= =?UTF-8?q?=E6=96=B9=E5=B7=B2=E8=AE=80=20=20=E5=83=85=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=B0=8D=E6=96=B9=E6=9C=AA=E8=AE=80=20=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/MainConversationListAdapter.java | 28 ++++++++----------- .../common/utils/UiConversationCodeUtil.java | 23 +++++---------- .../res/layout/rc_conversationlist_item2.xml | 10 +++---- common/src/main/res/values-zh/strings.xml | 4 +-- 4 files changed, 26 insertions(+), 39 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java index 79f0c0892..086719b46 100644 --- a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -188,23 +188,19 @@ public class MainConversationListAdapter extends ConversationListAdapter { holder.setVisible(R.id.rc_conversation_unread_count, false); } - boolean isRead = false; - Message message = conversation.mCore.getMessage(); - if (message != null) { - Message.MessageDirection direction = message.getMessageDirection(); - if (direction != null && direction == Message.MessageDirection.SEND) { - isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); - } else { - isRead = conversation.mCore.getReceivedStatus().isRead(); - } - } - if (isRead) { - holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.rc_secondary_color)); - holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_read_tip)); - } else { - holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.red)); - holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_unread_tip)); + Message message = conversation.mCore.getMessage(); + if (message != null && message.getMessageDirection()==Message.MessageDirection.SEND){ + holder.setVisible(R.id.rc_conversation_unread_tv, true); + if (conversation.mCore.getSentStatus() == Message.SentStatus.READ){ + holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.rc_secondary_color)); + holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_read_tip)); + }else { + holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.red)); + holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_unread_tip)); + } + }else { + holder.setVisible(R.id.rc_conversation_unread_tv, false); } diff --git a/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java index bdd2ac8de..31b9244ee 100644 --- a/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java @@ -95,19 +95,13 @@ public class UiConversationCodeUtil { } break; case FILTER_READ: - for (BaseUiConversation conversation : data) { - boolean isRead; + for (BaseUiConversation conversation : data) if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { - isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); - } else { - isRead = conversation.mCore.getReceivedStatus().isRead(); + if (conversation.mCore.getSentStatus() == Message.SentStatus.READ) { + showData.add(conversation); + } } - if (isRead) { - showData.add(conversation); - } - } - } break; case FILTER_UNREAD: @@ -115,12 +109,9 @@ public class UiConversationCodeUtil { boolean isRead; if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { - isRead = (conversation.mCore.getSentStatus() == Message.SentStatus.READ); - } else { - isRead = conversation.mCore.getReceivedStatus().isRead(); - } - if (!isRead) { - showData.add(conversation); + if (conversation.mCore.getSentStatus() != Message.SentStatus.READ) { + showData.add(conversation); + } } } } diff --git a/common/src/main/res/layout/rc_conversationlist_item2.xml b/common/src/main/res/layout/rc_conversationlist_item2.xml index 188c1721b..36d2b5cf9 100644 --- a/common/src/main/res/layout/rc_conversationlist_item2.xml +++ b/common/src/main/res/layout/rc_conversationlist_item2.xml @@ -84,8 +84,8 @@ android:id="@+id/rc_conversation_unread_tv" android:layout_width="wrap_content" android:layout_marginBottom="4dp" - android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="@+id/rc_conversation_portrait" + android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="@+id/rc_conversation_title" android:ellipsize="end" android:maxLines="1" @@ -105,17 +105,17 @@ android:maxLines="1" android:textColor="@color/rc_secondary_color" android:textSize="13dp" - app:layout_constraintBottom_toBottomOf="@+id/rc_conversation_unread_tv" app:layout_constraintEnd_toStartOf="@+id/rc_conversation_read_receipt" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toEndOf="@+id/rc_conversation_unread_tv" - app:layout_constraintTop_toTopOf="@+id/rc_conversation_unread_tv" + android:layout_marginBottom="4dp" + app:layout_constraintBottom_toBottomOf="@+id/rc_conversation_portrait" tools:text="你好,朋友!111111111111111111111" /> 全部聊天 僅展示在線 僅展示離線 - 僅展示已讀 - 僅展示未讀 + 僅展示對方已讀 + 僅展示對方未讀 From b4574f730dadf33823ab98c77f811f0624548424 Mon Sep 17 00:00:00 2001 From: ningwenqiang Date: Fri, 30 Aug 2024 17:37:05 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E6=90=9C=E7=B4=A2=E8=BF=9B=E8=A1=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/tmp/full-r8-config.txt | 2 + .../adapter/MainConversationListAdapter.java | 56 ++++++++------ .../com/yunbao/common/http/PDLiveApi.java | 2 +- .../common/utils/UiConversationCodeUtil.java | 73 ++++++++++++++++++- .../res/layout/rc_conversationlist_item2.xml | 5 +- common/src/main/res/values-zh/strings.xml | 4 +- .../main/views/MainMessageViewHolder.java | 2 +- 7 files changed, 117 insertions(+), 27 deletions(-) diff --git a/app/tmp/full-r8-config.txt b/app/tmp/full-r8-config.txt index 9986f7a7c..f80ae5cc7 100644 --- a/app/tmp/full-r8-config.txt +++ b/app/tmp/full-r8-config.txt @@ -674,6 +674,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class androidx.constraintlayout.widget.ConstraintLayout { (android.content.Context, android.util.AttributeSet); } +-keep class androidx.constraintlayout.widget.Group { (android.content.Context, android.util.AttributeSet); } + -keep class androidx.constraintlayout.widget.Guideline { (android.content.Context, android.util.AttributeSet); } -keep class androidx.coordinatorlayout.widget.CoordinatorLayout { (android.content.Context, android.util.AttributeSet); } diff --git a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java index 086719b46..57dd4836e 100644 --- a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -81,9 +81,7 @@ public class MainConversationListAdapter extends ConversationListAdapter { if (this.mFilter == mFilter) return; this.mFilter = mFilter; -// if (allDataList !=null && !allDataList.isEmpty()){ -// super.setDataCollection(UiConversationCodeUtil.FilterData(mFilter, allDataList)); -// } + } @@ -93,8 +91,11 @@ public class MainConversationListAdapter extends ConversationListAdapter { public void setSrcList(List srcList) { this.srcList = srcList; - super.setDataCollection(UiConversationCodeUtil.FilterData(mFilter, allDataList)); - // notifyDataSetChanged(); + if (mFilter== FILTER_OFFLINE || mFilter == FILTER_ONLINE) { + super.setDataCollection(UiConversationCodeUtil.FilterData(mFilter, allDataList)); + }else { + notifyDataSetChanged(); + } } public void setOnRefreshListener(OnRecyclerListRefreshListener> onRefreshListener) { @@ -190,16 +191,16 @@ public class MainConversationListAdapter extends ConversationListAdapter { Message message = conversation.mCore.getMessage(); - if (message != null && message.getMessageDirection()==Message.MessageDirection.SEND){ - holder.setVisible(R.id.rc_conversation_unread_tv, true); - if (conversation.mCore.getSentStatus() == Message.SentStatus.READ){ - holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.rc_secondary_color)); - holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_read_tip)); - }else { - holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.red)); - holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_unread_tip)); - } - }else { + if (message != null && message.getMessageDirection() == Message.MessageDirection.SEND) { + holder.setVisible(R.id.rc_conversation_unread_tv, true); + if (conversation.mCore.getSentStatus() == Message.SentStatus.READ) { + holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.rc_secondary_color)); + holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_read_tip)); + } else { + holder.setTextColor(R.id.rc_conversation_unread_tv, ContextCompat.getColor(holder.itemView.getContext(), R.color.red)); + holder.setText(R.id.rc_conversation_unread_tv, WordUtil.getNewString(R.string.message_chat_msg_unread_tip)); + } + } else { holder.setVisible(R.id.rc_conversation_unread_tv, false); } @@ -285,7 +286,8 @@ public class MainConversationListAdapter extends ConversationListAdapter { if (data.hashCode() == listHashCode) return; listHashCode = data.hashCode(); List tmp = new ArrayList<>(); - Log.i("聊天数据源", "setDataCollection: " + data.hashCode()); + Log.i("聊天数据源", "size()" + data.size() + " setDataCollection: " + data.hashCode()); + List urls = new ArrayList<>(); if (srcList == null) { srcList = new ArrayList<>(); @@ -327,13 +329,24 @@ public class MainConversationListAdapter extends ConversationListAdapter { } tmp.add(item); } - allDataList = tmp; - if (mFilter != FILTER_OFFLINE || isSearch == true) { - List showData = UiConversationCodeUtil.FilterData(mFilter, tmp); - if (!UiConversationCodeUtil.checkIsSame(showData, mDataList)) { - super.setDataCollection(showData); + List showData = null; + if (isSearch) { + Log.i("聊天数据源", "FilterData isSearch"); + showData = UiConversationCodeUtil.FilterData(mFilter, tmp, allDataList); + } else { + allDataList = tmp; + if (mFilter != FILTER_OFFLINE) + { + Log.i("聊天数据源", "FilterData notSearch"); + showData = UiConversationCodeUtil.FilterData(mFilter, allDataList); } } + if (showData != null && !UiConversationCodeUtil.checkIsSame(showData, mDataList)) { + Log.i("聊天数据源", "数据源有变化" + showData.size()); + super.setDataCollection(showData); + } else { + Log.i("聊天数据源", "数据源无变化"); + } } @@ -346,6 +359,7 @@ public class MainConversationListAdapter extends ConversationListAdapter { private List tmpUids = new ArrayList<>(); public void clear() { + Log.i("聊天数据源", "clear: " + mDataList.size()); mDataList.clear(); if (srcList != null) { srcList.clear(); 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 aa7831883..93119834f 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -1295,7 +1295,7 @@ public interface PDLiveApi { @Query("open_off") int status ); - @GET("/api/public/?service=Pdlmsg.sendBefore") + @GET("/api/public/?service=Pdlmsg.sendBefore&new_pop=1") Observable> getMessageSayHiTimer( ); diff --git a/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java index 31b9244ee..a22e6e12a 100644 --- a/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java @@ -71,6 +71,77 @@ public class UiConversationCodeUtil { } +private static boolean isContains(List list, BaseUiConversation item) { + // 根据 item.mCore.getChannelId() 判断 list 是否包含 + if (list == null || list.isEmpty() || item == null || item.mCore == null) { + return false; + } + for (BaseUiConversation conversation : list) { + // 增加空值检查 + if (conversation != null && conversation.mCore != null + && conversation.mCore.getTargetId() != null + && conversation.mCore.getTargetId().equals(item.mCore.getTargetId())) { + return true; + } + } + return false; +} + + + + public static List FilterData(int filterType, List keyList,List srcList) { + List showData = new ArrayList<>(); + if (keyList == null || keyList.isEmpty()) + return showData; + Log.i("MainConversationListAdapter", "FilterData: 源" + keyList.size()); + switch (filterType) { + case FILTER_ALL: + showData = keyList; + break; + case FILTER_ONLINE: + for (BaseUiConversation conversation : srcList) { + if ("0".equals(conversation.mCore.getDraft()) && isContains(keyList, conversation)) { + showData.add(conversation); + } + } + break; + case FILTER_OFFLINE: + for (BaseUiConversation conversation : keyList) { + if (!"0".equals(conversation.mCore.getDraft())) { + showData.add(conversation); + } + } + break; + case FILTER_READ: + for (BaseUiConversation conversation : keyList) + if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { + if (conversation.mCore.getSentStatus() == Message.SentStatus.READ) { + showData.add(conversation); + } + } + } + break; + case FILTER_UNREAD: + for (BaseUiConversation conversation : keyList) { + boolean isRead; + if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { + if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { + if (conversation.mCore.getSentStatus() != Message.SentStatus.READ) { + showData.add(conversation); + } + } + } + } + break; + } + Log.i("MainConversationListAdapter", "FilterData: 结果" + showData.size()); + return showData; + } + + + + public static List FilterData(int filterType, List data) { List showData = new ArrayList<>(); if (data == null || data.isEmpty()) @@ -106,7 +177,6 @@ public class UiConversationCodeUtil { break; case FILTER_UNREAD: for (BaseUiConversation conversation : data) { - boolean isRead; if (conversation.mCore.getMessage() != null && conversation.mCore.getMessage().getMessageDirection() != null) { if (conversation.mCore.getMessage().getMessageDirection() == Message.MessageDirection.SEND) { if (conversation.mCore.getSentStatus() != Message.SentStatus.READ) { @@ -117,6 +187,7 @@ public class UiConversationCodeUtil { } break; } + Log.i("MainConversationListAdapter", "FilterData: 结果" + showData.size()); return showData; } diff --git a/common/src/main/res/layout/rc_conversationlist_item2.xml b/common/src/main/res/layout/rc_conversationlist_item2.xml index 36d2b5cf9..1d65f5c7f 100644 --- a/common/src/main/res/layout/rc_conversationlist_item2.xml +++ b/common/src/main/res/layout/rc_conversationlist_item2.xml @@ -90,6 +90,10 @@ android:ellipsize="end" android:maxLines="1" tools:text="[已读]" + app:layout_constraintEnd_toStartOf="@id/rc_conversation_content" + android:layout_marginEnd="6dp" + android:visibility="gone" + tools:visibility="visible" android:textColor="@color/rc_secondary_color" android:textSize="13dp" /> @@ -99,7 +103,6 @@ style="@style/TextStyle.Alignment" android:layout_width="0dp" android:layout_height="wrap_content" - android:paddingStart="6dp" android:paddingEnd="6dp" android:ellipsize="end" android:maxLines="1" diff --git a/common/src/main/res/values-zh/strings.xml b/common/src/main/res/values-zh/strings.xml index c1ebbf176..803281b67 100644 --- a/common/src/main/res/values-zh/strings.xml +++ b/common/src/main/res/values-zh/strings.xml @@ -1609,6 +1609,6 @@ 全部聊天 僅展示在線 僅展示離線 - 僅展示對方已讀 - 僅展示對方未讀 + 展示對方已讀 + 展示對方未讀 diff --git a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java index 10a092bb6..75e703b7f 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -512,7 +512,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_recommend)); relativeLayouts.get(1).setVisibility(View.VISIBLE); tabTexts.get(1).setText(WordUtil.getNewString(chatViewModel.getTitleTextId())); - // tabExpend.get(1).setVisibility(View.VISIBLE); + tabExpend.get(1).setVisibility(View.VISIBLE); } else { //主播B tabExpend.get(0).setVisibility(View.VISIBLE); relativeLayouts.get(0).setVisibility(View.VISIBLE); From 0e69ea1732792fc9f6b3f99871b6b87c9fa0fe48 Mon Sep 17 00:00:00 2001 From: ningwenqiang Date: Tue, 3 Sep 2024 09:51:57 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E5=87=86=E5=A4=87=E6=8D=A2=E4=B8=AA?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yunbao/common/adapter/MainConversationListAdapter.java | 3 ++- .../com/yunbao/common/utils/UiConversationCodeUtil.java | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java index 57dd4836e..bc31d942c 100644 --- a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -264,6 +264,7 @@ public class MainConversationListAdapter extends ConversationListAdapter { private void bindEmpty(ViewHolder holder, int position) { + Log.i("聊天数据源", "bindEmpty: "); if (isChat) { ViewUtils.findViewById(holder.itemView, R.id.imageView, ImageView.class).setImageResource(R.mipmap.ic_message_not_chat_list); ViewUtils.findViewById(holder.itemView, R.id.textView, TextView.class).setText(R.string.not_data_message_chat_list); @@ -335,7 +336,7 @@ public class MainConversationListAdapter extends ConversationListAdapter { showData = UiConversationCodeUtil.FilterData(mFilter, tmp, allDataList); } else { allDataList = tmp; - if (mFilter != FILTER_OFFLINE) + if (mFilter != FILTER_OFFLINE && mFilter != FILTER_ONLINE ) { Log.i("聊天数据源", "FilterData notSearch"); showData = UiConversationCodeUtil.FilterData(mFilter, allDataList); diff --git a/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java index a22e6e12a..6662ceefb 100644 --- a/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/UiConversationCodeUtil.java @@ -51,7 +51,7 @@ public class UiConversationCodeUtil { Conversation mCore = item.mCore; result = prime * result + ((mCore.getPortraitUrl() == null) ? 0 : mCore.getPortraitUrl().hashCode()); result = prime * result + ((mCore.getConversationTitle() == null) ? 0 : mCore.getConversationTitle().hashCode()); - result = prime * result + ((item.mConversationContent == null) ? 0 : item.mConversationContent.hashCode()); + // result = prime * result + ((item.mConversationContent == null) ? 0 : item.mConversationContent.hashCode()); result = prime * result + (int) (mCore.getSentTime() ^ (mCore.getSentTime() >>> 32)); result = prime * result + ((mCore.getDraft() == null) ? 0 : mCore.getDraft().hashCode()); result = prime * result + mCore.getUnreadMessageCount(); @@ -146,7 +146,7 @@ private static boolean isContains(List list, BaseUiConversat List showData = new ArrayList<>(); if (data == null || data.isEmpty()) return showData; - Log.i("MainConversationListAdapter", "FilterData: 源" + data.size()); + Log.i("MainConversationListAdapter", "设置数据源 FilterData: 源" + data.size()); switch (filterType) { case FILTER_ALL: showData = data; @@ -187,7 +187,7 @@ private static boolean isContains(List list, BaseUiConversat } break; } - Log.i("MainConversationListAdapter", "FilterData: 结果" + showData.size()); + Log.i("MainConversationListAdapter", " 设置数据源 FilterData: 结果" + showData.size()); return showData; } From 9c117e2752352226c942a3ea359695b1783dc009 Mon Sep 17 00:00:00 2001 From: ningwenqiang Date: Wed, 4 Sep 2024 18:24:22 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E4=B8=BB=E6=92=ADA=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/main/views/MainMessageViewHolder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java index 75e703b7f..10a092bb6 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -512,7 +512,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_recommend)); relativeLayouts.get(1).setVisibility(View.VISIBLE); tabTexts.get(1).setText(WordUtil.getNewString(chatViewModel.getTitleTextId())); - tabExpend.get(1).setVisibility(View.VISIBLE); + // tabExpend.get(1).setVisibility(View.VISIBLE); } else { //主播B tabExpend.get(0).setVisibility(View.VISIBLE); relativeLayouts.get(0).setVisibility(View.VISIBLE);