From 5d0f29db425e5a2fa5b2be2ebfa43d9096689ea7 Mon Sep 17 00:00:00 2001 From: Martin <13046765170@163.com> Date: Tue, 23 Jul 2024 17:46:35 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E7=9B=B4=E6=92=AD=E9=97=B4=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/build.gradle | 2 +- .../adapter/MainConversationListAdapter.java | 14 +- .../AbsMainMessageChatListFragment.java | 21 +-- .../fragment/MainMessageChatFragment.java | 15 +- .../fragment/MainMessageChatListFragment.java | 18 +- .../MainMessageRecommendFragment.java | 51 ++++++ .../main/res/drawable/bg_msg_list_item.xml | 0 .../res/drawable/bg_msg_list_item_bottom.xml | 0 .../res/drawable/bg_msg_list_item_centre.xml | 0 .../res/drawable/bg_msg_list_item_top.xml | 0 .../fragment_main_message_chat_list.xml | 0 .../res/layout/item_main_msg_search_chat.xml | 0 .../res/layout/item_main_msg_search_title.xml | 0 .../res/layout/item_main_msg_search_user.xml | 0 .../res/layout/msg_main_recommend_item.xml | 90 ++++++++++ .../msg_main_recommend_list_fragment.xml | 23 +++ .../layout/rc_conversationlist_fragment.xml | 0 .../res/layout/rc_conversationlist_item.xml | 0 common/src/main/res/layout/view_live_open.xml | 3 +- .../main/res/mipmap-mdpi/beauty_jingbai.png | Bin common/src/main/res/values-en-rUS/string.xml | 6 + common/src/main/res/values-zh-rHK/strings.xml | 5 + common/src/main/res/values-zh-rTW/strings.xml | 5 + common/src/main/res/values-zh/strings.xml | 5 + common/src/main/res/values/strings.xml | 5 + gradle.properties | 4 +- .../yunbao/live/activity/LiveActivity.java | 8 + .../dialog/LiveUserAnchorMsgPopDialog.java | 159 ++++++++++++++++++ .../yunbao/live/views/AbsLiveViewHolder.java | 10 +- .../live/views/PortraitLiveManager.java | 6 +- .../main/res/layout/dialog_live_user_msg.xml | 21 +++ .../main/res/layout/view_audience_page.xml | 2 +- .../main/res/layout/view_live_audience.xml | 1 + .../main/res/layout/view_new_live_ready.xml | 1 + .../MainMessageChatListSystemFragment.java | 7 +- .../MainMessageChatListUserFragment.java | 5 +- .../main/views/MainMessageViewHolder.java | 13 +- .../src/main/res/layout/view_main_message.xml | 1 - main/src/main/res/values-zh/strings.xml | 2 - main/src/main/res/values/strings.xml | 2 - 40 files changed, 425 insertions(+), 80 deletions(-) rename {main/src/main/java/com/yunbao/main => common/src/main/java/com/yunbao/common}/adapter/MainConversationListAdapter.java (96%) rename {main/src/main/java/com/yunbao/main => common/src/main/java/com/yunbao/common}/fragment/AbsMainMessageChatListFragment.java (85%) rename {main/src/main/java/com/yunbao/main => common/src/main/java/com/yunbao/common}/fragment/MainMessageChatFragment.java (96%) rename {main/src/main/java/com/yunbao/main => common/src/main/java/com/yunbao/common}/fragment/MainMessageChatListFragment.java (87%) create mode 100644 common/src/main/java/com/yunbao/common/fragment/MainMessageRecommendFragment.java rename {main => common}/src/main/res/drawable/bg_msg_list_item.xml (100%) rename {main => common}/src/main/res/drawable/bg_msg_list_item_bottom.xml (100%) rename {main => common}/src/main/res/drawable/bg_msg_list_item_centre.xml (100%) rename {main => common}/src/main/res/drawable/bg_msg_list_item_top.xml (100%) rename {live => common}/src/main/res/layout/fragment_main_message_chat_list.xml (100%) rename {main => common}/src/main/res/layout/item_main_msg_search_chat.xml (100%) rename {main => common}/src/main/res/layout/item_main_msg_search_title.xml (100%) rename {main => common}/src/main/res/layout/item_main_msg_search_user.xml (100%) create mode 100644 common/src/main/res/layout/msg_main_recommend_item.xml create mode 100644 common/src/main/res/layout/msg_main_recommend_list_fragment.xml rename {main => common}/src/main/res/layout/rc_conversationlist_fragment.xml (100%) rename {live => common}/src/main/res/layout/rc_conversationlist_item.xml (100%) rename {live => common}/src/main/res/mipmap-mdpi/beauty_jingbai.png (100%) create mode 100644 live/src/main/java/com/yunbao/live/dialog/LiveUserAnchorMsgPopDialog.java create mode 100644 live/src/main/res/layout/dialog_live_user_msg.xml diff --git a/common/build.gradle b/common/build.gradle index baf45358f..758311bf3 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -176,7 +176,7 @@ dependencies { //腾讯im api 'com.tencent.imsdk:imsdk-plus:5.4.666' api 'com.google.code.gson:gson:2.8.8' - api 'cn.rongcloud.sdk:rtc_lib:5.6.9' // 音视频通话基础能力库 + api 'cn.rongcloud.sdk:rtc_lib:5.7.0' // 音视频通话基础能力库 //此处以集成 5.1.2 版本为例 api 'cn.rongcloud.sdk:im_lib:5.7.0' diff --git a/main/src/main/java/com/yunbao/main/adapter/MainConversationListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java similarity index 96% rename from main/src/main/java/com/yunbao/main/adapter/MainConversationListAdapter.java rename to common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java index 6d4231eb0..c746da32d 100644 --- a/main/src/main/java/com/yunbao/main/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -1,10 +1,9 @@ -package com.yunbao.main.adapter; +package com.yunbao.common.adapter; import android.content.Context; import android.text.Html; import android.text.SpannableString; import android.text.Spanned; -import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -14,26 +13,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; -import com.yunbao.common.bean.MainMessageChatListTimer; -import com.yunbao.common.dialog.DebugDialog; +import com.yunbao.common.R; import com.yunbao.common.glide.ImgLoader; -import com.yunbao.common.http.base.HttpCallback; -import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.interfaces.OnRecyclerListRefreshListener; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.message.content.MessageChatCardContent; import com.yunbao.common.utils.AppManager; import com.yunbao.common.utils.DateFormatUtil; -import com.yunbao.common.utils.ListUtils; import com.yunbao.common.utils.StringUtil; -import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ViewUtils; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; -import com.yunbao.main.R; import java.util.ArrayList; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,11 +36,9 @@ import io.rong.imkit.conversationlist.model.BaseUiConversation; import io.rong.imkit.conversationlist.model.SingleConversation; import io.rong.imkit.utils.RouteUtils; import io.rong.imkit.widget.adapter.ViewHolder; -import io.rong.imkit.widget.refresh.listener.OnRefreshListener; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; import io.rong.imlib.model.Message; -import io.rong.imlib.model.MessageContent; import io.rong.message.TextMessage; public class MainConversationListAdapter extends ConversationListAdapter { diff --git a/main/src/main/java/com/yunbao/main/fragment/AbsMainMessageChatListFragment.java b/common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java similarity index 85% rename from main/src/main/java/com/yunbao/main/fragment/AbsMainMessageChatListFragment.java rename to common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java index 9fb577525..6cc8c97ae 100644 --- a/main/src/main/java/com/yunbao/main/fragment/AbsMainMessageChatListFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java @@ -1,4 +1,4 @@ -package com.yunbao.main.fragment; +package com.yunbao.common.fragment; import android.os.Bundle; import android.view.View; @@ -9,15 +9,10 @@ import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.RecyclerView; import com.yunbao.common.bean.MainMessageChatListTimer; -import com.yunbao.common.dialog.DebugDialog; -import com.yunbao.common.event.MessageIMEvent; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.interfaces.OnRecyclerListRefreshListener; -import com.yunbao.common.manager.base.ACache; -import com.yunbao.common.manager.imrongcloud.RongcloudIMManager; -import com.yunbao.common.utils.SpUtil; -import com.yunbao.main.adapter.MainConversationListAdapter; +import com.yunbao.common.adapter.MainConversationListAdapter; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -27,21 +22,15 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import io.rong.imkit.conversationlist.model.BaseUiConversation; import io.rong.imkit.widget.refresh.SmartRefreshLayout; -import io.rong.imlib.RongCoreClient; -import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; -import io.rong.imlib.model.Message; -import io.rong.imlib.model.ReceivedProfile; -import io.rong.message.TextMessage; public abstract class AbsMainMessageChatListFragment extends Fragment { - RecyclerView recyclerView; - MainConversationListAdapter mAdapter; - SmartRefreshLayout refreshLayout; + public RecyclerView recyclerView; + public MainConversationListAdapter mAdapter; + public SmartRefreshLayout refreshLayout; public void setAdapter(MainConversationListAdapter mAdapter) { this.mAdapter = mAdapter; diff --git a/main/src/main/java/com/yunbao/main/fragment/MainMessageChatFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java similarity index 96% rename from main/src/main/java/com/yunbao/main/fragment/MainMessageChatFragment.java rename to common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java index 64369d4b6..5cafa6dcc 100644 --- a/main/src/main/java/com/yunbao/main/fragment/MainMessageChatFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatFragment.java @@ -1,4 +1,4 @@ -package com.yunbao.main.fragment; +package com.yunbao.common.fragment; import android.os.Bundle; import android.util.Log; @@ -10,16 +10,18 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Observer; +import com.google.gson.Gson; +import com.yunbao.common.R; +import com.yunbao.common.adapter.MainConversationListAdapter; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.L; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; -import com.yunbao.main.R; -import com.yunbao.main.adapter.MainConversationListAdapter; import java.util.ArrayList; import java.util.List; -import io.rong.common.rlog.RLog; import io.rong.imkit.conversationlist.ConversationListAdapter; import io.rong.imkit.conversationlist.ConversationListFragment; import io.rong.imkit.conversationlist.model.BaseUiConversation; @@ -45,8 +47,6 @@ public class MainMessageChatFragment extends ConversationListFragment { super.onViewCreated(view, savedInstanceState); Log.i(TAG, "onViewCreated:创建融云页面"); mConversationListViewModel.getConversationListLiveData().observe(this.getViewLifecycleOwner(), new Observer>() { - - @Override public void onChanged(List uiConversations) { if (listHashCode != uiConversations.hashCode()) { @@ -119,6 +119,7 @@ public class MainMessageChatFragment extends ConversationListFragment { } list.addAll(data); getChatRecordList(list, search); + L.eSw(new Gson().toJson(list)); } private void getChatRecordList(List list, String search) { @@ -156,8 +157,6 @@ public class MainMessageChatFragment extends ConversationListFragment { mAdapter.setDataCollection(list); } }); - - } public void onChatList() { diff --git a/main/src/main/java/com/yunbao/main/fragment/MainMessageChatListFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java similarity index 87% rename from main/src/main/java/com/yunbao/main/fragment/MainMessageChatListFragment.java rename to common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java index 8b24e9695..3d8da397d 100644 --- a/main/src/main/java/com/yunbao/main/fragment/MainMessageChatListFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java @@ -1,4 +1,4 @@ -package com.yunbao.main.fragment; +package com.yunbao.common.fragment; import android.content.Context; import android.os.Bundle; @@ -6,21 +6,18 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.FrameLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import com.yunbao.common.R; import com.yunbao.common.interfaces.OnRecyclerListRefreshListener; import com.yunbao.common.manager.InstructorRemarkManager; -import com.yunbao.common.utils.AppManager; -import com.yunbao.common.utils.ToastUtil; -import com.yunbao.live.R; -import java.util.Arrays; import java.util.List; import java.util.Map; @@ -29,9 +26,8 @@ import io.rong.imkit.conversationlist.model.BaseUiConversation; public class MainMessageChatListFragment extends AbsMainMessageChatListFragment { private static final String TAG = "MainMessageChatListFragment"; private Context mContext; - - public MainMessageChatListFragment() { - this.mContext = AppManager.getInstance().getMainActivity(); + public MainMessageChatListFragment(Context mContext) { + this.mContext =mContext; } @Nullable @@ -50,8 +46,8 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment setAdapter(conversationListFragment.getAdapter()); FragmentManager manager = ((FragmentActivity) mContext).getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); - transaction.replace(R.id.container, conversationListFragment); - transaction.commit(); + transaction.replace(view.findViewById(R.id.container).getId(), conversationListFragment); + transaction.commitAllowingStateLoss(); //自定义空数据背景View //conversationListFragment.setEmptyView(emptyView); conversationListFragment.setEmptyView(R.layout.view_layout_msg); diff --git a/common/src/main/java/com/yunbao/common/fragment/MainMessageRecommendFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageRecommendFragment.java new file mode 100644 index 000000000..0c72d07a3 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageRecommendFragment.java @@ -0,0 +1,51 @@ +package com.yunbao.common.fragment; + +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.lifecycle.Observer; + +import com.google.gson.Gson; +import com.yunbao.common.R; +import com.yunbao.common.adapter.MainConversationListAdapter; +import com.yunbao.common.utils.L; +import com.yunbao.common.utils.StringUtil; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; + +import java.util.ArrayList; +import java.util.List; + +import io.rong.imkit.conversationlist.ConversationListAdapter; +import io.rong.imkit.conversationlist.ConversationListFragment; +import io.rong.imkit.conversationlist.model.BaseUiConversation; +import io.rong.imkit.conversationlist.model.SingleConversation; +import io.rong.imkit.event.Event; +import io.rong.imlib.RongIMClient; +import io.rong.imlib.model.Conversation; +import io.rong.imlib.model.SearchConversationResult; + +public class MainMessageRecommendFragment extends ConversationListFragment { + + @Nullable + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.msg_main_recommend_list_fragment, container, false); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + } + + + + + + +} diff --git a/main/src/main/res/drawable/bg_msg_list_item.xml b/common/src/main/res/drawable/bg_msg_list_item.xml similarity index 100% rename from main/src/main/res/drawable/bg_msg_list_item.xml rename to common/src/main/res/drawable/bg_msg_list_item.xml diff --git a/main/src/main/res/drawable/bg_msg_list_item_bottom.xml b/common/src/main/res/drawable/bg_msg_list_item_bottom.xml similarity index 100% rename from main/src/main/res/drawable/bg_msg_list_item_bottom.xml rename to common/src/main/res/drawable/bg_msg_list_item_bottom.xml diff --git a/main/src/main/res/drawable/bg_msg_list_item_centre.xml b/common/src/main/res/drawable/bg_msg_list_item_centre.xml similarity index 100% rename from main/src/main/res/drawable/bg_msg_list_item_centre.xml rename to common/src/main/res/drawable/bg_msg_list_item_centre.xml diff --git a/main/src/main/res/drawable/bg_msg_list_item_top.xml b/common/src/main/res/drawable/bg_msg_list_item_top.xml similarity index 100% rename from main/src/main/res/drawable/bg_msg_list_item_top.xml rename to common/src/main/res/drawable/bg_msg_list_item_top.xml diff --git a/live/src/main/res/layout/fragment_main_message_chat_list.xml b/common/src/main/res/layout/fragment_main_message_chat_list.xml similarity index 100% rename from live/src/main/res/layout/fragment_main_message_chat_list.xml rename to common/src/main/res/layout/fragment_main_message_chat_list.xml diff --git a/main/src/main/res/layout/item_main_msg_search_chat.xml b/common/src/main/res/layout/item_main_msg_search_chat.xml similarity index 100% rename from main/src/main/res/layout/item_main_msg_search_chat.xml rename to common/src/main/res/layout/item_main_msg_search_chat.xml diff --git a/main/src/main/res/layout/item_main_msg_search_title.xml b/common/src/main/res/layout/item_main_msg_search_title.xml similarity index 100% rename from main/src/main/res/layout/item_main_msg_search_title.xml rename to common/src/main/res/layout/item_main_msg_search_title.xml diff --git a/main/src/main/res/layout/item_main_msg_search_user.xml b/common/src/main/res/layout/item_main_msg_search_user.xml similarity index 100% rename from main/src/main/res/layout/item_main_msg_search_user.xml rename to common/src/main/res/layout/item_main_msg_search_user.xml diff --git a/common/src/main/res/layout/msg_main_recommend_item.xml b/common/src/main/res/layout/msg_main_recommend_item.xml new file mode 100644 index 000000000..2594d56a9 --- /dev/null +++ b/common/src/main/res/layout/msg_main_recommend_item.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/msg_main_recommend_list_fragment.xml b/common/src/main/res/layout/msg_main_recommend_list_fragment.xml new file mode 100644 index 000000000..2844c7f9a --- /dev/null +++ b/common/src/main/res/layout/msg_main_recommend_list_fragment.xml @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/main/src/main/res/layout/rc_conversationlist_fragment.xml b/common/src/main/res/layout/rc_conversationlist_fragment.xml similarity index 100% rename from main/src/main/res/layout/rc_conversationlist_fragment.xml rename to common/src/main/res/layout/rc_conversationlist_fragment.xml diff --git a/live/src/main/res/layout/rc_conversationlist_item.xml b/common/src/main/res/layout/rc_conversationlist_item.xml similarity index 100% rename from live/src/main/res/layout/rc_conversationlist_item.xml rename to common/src/main/res/layout/rc_conversationlist_item.xml diff --git a/common/src/main/res/layout/view_live_open.xml b/common/src/main/res/layout/view_live_open.xml index 54aba0a57..18c987669 100644 --- a/common/src/main/res/layout/view_live_open.xml +++ b/common/src/main/res/layout/view_live_open.xml @@ -2,7 +2,7 @@ @@ -248,6 +248,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="29dp" + android:visibility="gone" android:layout_marginTop="20dp" android:layout_marginEnd="29dp" android:gravity="center_vertical"> diff --git a/live/src/main/res/mipmap-mdpi/beauty_jingbai.png b/common/src/main/res/mipmap-mdpi/beauty_jingbai.png similarity index 100% rename from live/src/main/res/mipmap-mdpi/beauty_jingbai.png rename to common/src/main/res/mipmap-mdpi/beauty_jingbai.png diff --git a/common/src/main/res/values-en-rUS/string.xml b/common/src/main/res/values-en-rUS/string.xml index 89417111e..51b015de3 100644 --- a/common/src/main/res/values-en-rUS/string.xml +++ b/common/src/main/res/values-en-rUS/string.xml @@ -1468,4 +1468,10 @@ Limited ride And limited avatar frame Online Offline Personal updates + + Contacts + [In-app sharing] + Include: + 看直播%dmin + Chat Records diff --git a/common/src/main/res/values-zh-rHK/strings.xml b/common/src/main/res/values-zh-rHK/strings.xml index d46a0ba17..5f22f4eb4 100644 --- a/common/src/main/res/values-zh-rHK/strings.xml +++ b/common/src/main/res/values-zh-rHK/strings.xml @@ -1550,4 +1550,9 @@ 主播正在PK,稍後再試 您將花費%s鑽石,為主播開通 完成*1 + 聯繫人 + [站内分享] + 包含: + 看直播%dmin + 聊天記錄 diff --git a/common/src/main/res/values-zh-rTW/strings.xml b/common/src/main/res/values-zh-rTW/strings.xml index 1c038f7c4..adcacec34 100644 --- a/common/src/main/res/values-zh-rTW/strings.xml +++ b/common/src/main/res/values-zh-rTW/strings.xml @@ -1550,4 +1550,9 @@ 主播正在PK,稍後再試 您將花費%s鑽石,為主播開通 完成*1 + 聯繫人 + [站内分享] + 包含: + 看直播%dmin + 聊天記錄 diff --git a/common/src/main/res/values-zh/strings.xml b/common/src/main/res/values-zh/strings.xml index a30e61716..8dee54329 100644 --- a/common/src/main/res/values-zh/strings.xml +++ b/common/src/main/res/values-zh/strings.xml @@ -1548,4 +1548,9 @@ 主播正在PK,稍後再試 您將花費%s鑽石,為主播開通 完成*1 + 聯繫人 + [站内分享] + 包含: + 看直播%dmin + 聊天記錄 diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 37e0c9595..804b365a5 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1572,4 +1572,9 @@ Limited ride And limited avatar frame Theater The anchor is in PK, please try again later once + Contacts + [In-app sharing] + Include: + 看直播%dmin + Chat Records diff --git a/gradle.properties b/gradle.properties index c41a7a913..5547a2720 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=10809 +systemProp.http.proxyPort=10809 #android.enableR8.fullMode=true \ No newline at end of file diff --git a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java index a5f335d3e..e130bbd06 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java @@ -77,6 +77,7 @@ import com.yunbao.live.dialog.LiveRedPackListDialogFragment; import com.yunbao.live.dialog.LiveRedPackSendDialogFragment; import com.yunbao.live.dialog.LiveShareDialogFragment; import com.yunbao.live.dialog.LiveUserAnchorMailBoxPopDialog; +import com.yunbao.live.dialog.LiveUserAnchorMsgPopDialog; import com.yunbao.live.dialog.LiveUserDialogFragment; import com.yunbao.live.dialog.LiveUserMoreDialogFragment; import com.yunbao.live.presenter.LiveLinkMicAnchorPresenter; @@ -989,6 +990,13 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL new LiveUserAnchorMailBoxPopDialog(mContext).showDialog(); } + /** + * 用户端打开聊天列表页面 + */ + public void openLiveMsgWindow() { + LiveUserAnchorMsgPopDialog fragment = new LiveUserAnchorMsgPopDialog(); + fragment.show(((LiveActivity) mContext).getSupportFragmentManager(), "LiveUserAnchorMsgPopDialog"); + } /** * 发 弹幕 消息 diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveUserAnchorMsgPopDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveUserAnchorMsgPopDialog.java new file mode 100644 index 000000000..2172f9d31 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/dialog/LiveUserAnchorMsgPopDialog.java @@ -0,0 +1,159 @@ +package com.yunbao.live.dialog; + +import android.content.Context; +import android.graphics.Color; +import android.os.Bundle; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; +import androidx.viewpager2.adapter.FragmentStateAdapter; +import androidx.viewpager2.widget.ViewPager2; + +import com.yunbao.common.dialog.AbsDialogFragment; +import com.yunbao.common.fragment.AbsMainMessageChatListFragment; +import com.yunbao.common.fragment.MainMessageChatListFragment; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.manager.imrongcloud.MessageIMManager; +import com.yunbao.common.utils.AppManager; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.ScreenDimenUtil; +import com.yunbao.common.utils.ViewPageIndicatorUtils; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.live.R; + +import net.lucode.hackware.magicindicator.MagicIndicator; +import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator; +import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter; +import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator; +import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView; +import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator; +import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ColorTransitionPagerTitleView; +import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.SimplePagerTitleView; + +import java.util.ArrayList; +import java.util.List; + +/** + * 直播间用户消息列表 + */ +public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment { + private ViewPager2 viewPager; + private MagicIndicator mIndicator; + private List fragmentList; + + @Override + protected int getLayoutId() { + return R.layout.dialog_live_user_msg; + } + + @Override + protected int getDialogStyle() { + return R.style.dialog2; + } + + @Override + protected boolean canCancel() { + return true; + } + + @Override + protected void setWindowAttributes(Window window) { + window.setWindowAnimations(R.style.bottomToTopAnim); + WindowManager.LayoutParams params = window.getAttributes(); + window.setWindowAnimations(R.style.bottomToTopAnim); + params.width = WindowManager.LayoutParams.MATCH_PARENT; + params.height = (int) (ScreenDimenUtil.getInstance().getScreenHeight()*0.6); + params.gravity = Gravity.BOTTOM; + window.setAttributes(params); + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mIndicator = (MagicIndicator) findViewById(R.id.indicator); + viewPager = (ViewPager2) findViewById(R.id.viewPager); + fragmentList = new ArrayList<>(); + fragmentList.add(new MainMessageChatListFragment(AppManager.getInstance().getLiveActivity())); + viewPager.setAdapter(new FragmentStateAdapter((FragmentActivity) AppManager.getInstance().getLiveActivity()) { + + @Override + public int getItemCount() { + return fragmentList.size(); + } + + @NonNull + @Override + public Fragment createFragment(int i) { + return fragmentList.get(i); + } + }); + viewPager.setCurrentItem(0); + viewPager.setUserInputEnabled(false); + initIndicator(); + initData(); + } + /** + * 初始化数据 + */ + private void initData() { + IMLoginManager.get(mContext).checkInstructor(); + MessageIMManager.get(mContext).getSystemMessages(); + } + private void initIndicator() { + final String[] titles = new String[]{ + WordUtil.getNewString(R.string.message_chat_msg_all), + }; + CommonNavigator commonNavigator = new CommonNavigator(AppManager.getInstance().getLiveActivity()); + commonNavigator.setAdjustMode(true); + commonNavigator.setAdapter(new CommonNavigatorAdapter() { + + @Override + public int getCount() { + return titles.length; + } + + @Override + public IPagerTitleView getTitleView(Context context, final int index) { + SimplePagerTitleView simplePagerTitleView = new ColorTransitionPagerTitleView(context); + simplePagerTitleView.setNormalColor(Color.parseColor("#777777")); + simplePagerTitleView.setSelectedColor(Color.parseColor("#333333")); + simplePagerTitleView.setText(titles[index]); + simplePagerTitleView.setTextSize(18); + simplePagerTitleView.getPaint().setFakeBoldText(true); + simplePagerTitleView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (viewPager != null) { + viewPager.setCurrentItem(index); + + } + } + }); + return simplePagerTitleView; + } + + @Override + public IPagerIndicator getIndicator(Context context) { + LinePagerIndicator linePagerIndicator = new LinePagerIndicator(context); + linePagerIndicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT); + linePagerIndicator.setXOffset(DpUtil.dp2px(5)); + linePagerIndicator.setRoundRadius(DpUtil.dp2px(2)); + linePagerIndicator.setColors(Color.parseColor("#EB6FFF"), Color.parseColor("#FF83C6")); + return linePagerIndicator; + } + }); + mIndicator.setNavigator(commonNavigator); + ViewPageIndicatorUtils.bind(mIndicator, viewPager, new ViewPager2.OnPageChangeCallback() { + @Override + public void onPageSelected(int position) { + super.onPageSelected(position); + } + }); + } +} diff --git a/live/src/main/java/com/yunbao/live/views/AbsLiveViewHolder.java b/live/src/main/java/com/yunbao/live/views/AbsLiveViewHolder.java index 036739a01..8fd5702fa 100644 --- a/live/src/main/java/com/yunbao/live/views/AbsLiveViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/AbsLiveViewHolder.java @@ -9,6 +9,7 @@ import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.views.AbsViewHolder; import com.yunbao.live.R; import com.yunbao.live.activity.LiveActivity; +import com.yunbao.live.activity.LiveAudienceActivity; import org.greenrobot.eventbus.EventBus; @@ -38,8 +39,13 @@ public abstract class AbsLiveViewHolder extends AbsViewHolder implements View.On public void onClick(View v) { int i = v.getId(); if (i == R.id.btn_msg) { - MobclickAgent.onEvent(mContext, "live_room_envelope", "直播间信封按钮"); - ((LiveActivity) mContext).openChatListWindow(); + if(mContext instanceof LiveAudienceActivity){ + //MobclickAgent.onEvent(mContext, "live_room_envelope", "直播间信封按钮"); + ((LiveActivity) mContext).openLiveMsgWindow(); + }else{ + MobclickAgent.onEvent(mContext, "live_room_envelope", "直播间信封按钮"); + ((LiveActivity) mContext).openChatListWindow(); + } } else if (i == R.id.et_input) { MobclickAgent.onEvent(mContext, "live_room_chat_btn", "直播间点开最下面的聊天按钮"); ((LiveActivity) mContext).openChatWindow(); diff --git a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java index 7fd444ca1..bf75a8e8d 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -303,7 +303,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe ivLoading = mRootContainer.findViewById(R.id.iv_loading); mSecondPage = (ViewGroup) LayoutInflater.from(mContext).inflate(R.layout.view_audience_page, mViewPager, false); mContainerWrap = mSecondPage.findViewById(R.id.container_wrap); - mContainer = mSecondPage.findViewById(R.id.container); + mContainer = mSecondPage.findViewById(R.id.container11); btnSmallScreen.setOnClickListener(v -> { mViewPager.setCurrentItem(1); btnSmallScreen.setVisibility(View.GONE); @@ -637,8 +637,8 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe //心愿单顶部bannner mLiveRoomViewHolder.setWishListProgress(data.getWishListProgress()); //初始化顶部banner - mLiveRoomViewHolder.initTopBanner(); - mLiveRoomViewHolder.updateTopBanner(); + //mLiveRoomViewHolder.initTopBanner(); + //mLiveRoomViewHolder.updateTopBanner(); mLiveRoomViewHolder.setVoteData(data.getEnterRoomInfo().getVoteModel()); mLiveRoomViewHolder.updateFansMessageRed(); mLiveRoomViewHolder.setFansGroup(data.getEnterRoomInfo().getIsFans()); diff --git a/live/src/main/res/layout/dialog_live_user_msg.xml b/live/src/main/res/layout/dialog_live_user_msg.xml new file mode 100644 index 000000000..3883d576c --- /dev/null +++ b/live/src/main/res/layout/dialog_live_user_msg.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/view_audience_page.xml b/live/src/main/res/layout/view_audience_page.xml index 97f9b9331..6e0204bc8 100644 --- a/live/src/main/res/layout/view_audience_page.xml +++ b/live/src/main/res/layout/view_audience_page.xml @@ -12,7 +12,7 @@ android:layout_height="match_parent"> diff --git a/live/src/main/res/layout/view_live_audience.xml b/live/src/main/res/layout/view_live_audience.xml index f3e474019..4d76af3ef 100644 --- a/live/src/main/res/layout/view_live_audience.xml +++ b/live/src/main/res/layout/view_live_audience.xml @@ -290,6 +290,7 @@ diff --git a/live/src/main/res/layout/view_new_live_ready.xml b/live/src/main/res/layout/view_new_live_ready.xml index 5b6a1682d..f0122898b 100644 --- a/live/src/main/res/layout/view_new_live_ready.xml +++ b/live/src/main/res/layout/view_new_live_ready.xml @@ -240,6 +240,7 @@ android:layout_width="wrap_content" android:layout_height="25dp" android:layout_marginTop="10dp" + android:visibility="gone" android:layout_marginEnd="16dp" android:gravity="center" android:orientation="horizontal" diff --git a/main/src/main/java/com/yunbao/main/fragment/MainMessageChatListSystemFragment.java b/main/src/main/java/com/yunbao/main/fragment/MainMessageChatListSystemFragment.java index d0a37f0aa..58f48eedb 100644 --- a/main/src/main/java/com/yunbao/main/fragment/MainMessageChatListSystemFragment.java +++ b/main/src/main/java/com/yunbao/main/fragment/MainMessageChatListSystemFragment.java @@ -10,10 +10,9 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import com.alibaba.fastjson.JSONArray; import com.yunbao.common.bean.MessageChatUserBean; +import com.yunbao.common.fragment.AbsMainMessageChatListFragment; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.interfaces.OnRecyclerListRefreshListener; @@ -23,7 +22,7 @@ import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.main.R; -import com.yunbao.main.adapter.MainConversationListAdapter; +import com.yunbao.common.adapter.MainConversationListAdapter; import java.util.ArrayList; import java.util.List; @@ -32,11 +31,9 @@ import java.util.Map; import io.rong.imkit.conversationlist.model.BaseUiConversation; import io.rong.imkit.conversationlist.model.SingleConversation; import io.rong.imkit.userinfo.RongUserInfoManager; -import io.rong.imkit.userinfo.UserDataProvider; import io.rong.imkit.utils.RouteUtils; import io.rong.imkit.widget.adapter.BaseAdapter; import io.rong.imkit.widget.adapter.ViewHolder; -import io.rong.imkit.widget.refresh.SmartRefreshLayout; import io.rong.imkit.widget.refresh.api.RefreshLayout; import io.rong.imkit.widget.refresh.listener.OnLoadMoreListener; import io.rong.imkit.widget.refresh.listener.OnRefreshListener; diff --git a/main/src/main/java/com/yunbao/main/fragment/MainMessageChatListUserFragment.java b/main/src/main/java/com/yunbao/main/fragment/MainMessageChatListUserFragment.java index 1d5d7ba4d..cb992dbb2 100644 --- a/main/src/main/java/com/yunbao/main/fragment/MainMessageChatListUserFragment.java +++ b/main/src/main/java/com/yunbao/main/fragment/MainMessageChatListUserFragment.java @@ -10,9 +10,9 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import com.yunbao.common.bean.MessageChatUserBean; +import com.yunbao.common.fragment.AbsMainMessageChatListFragment; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.interfaces.OnRecyclerListRefreshListener; @@ -21,7 +21,7 @@ import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.main.R; -import com.yunbao.main.adapter.MainConversationListAdapter; +import com.yunbao.common.adapter.MainConversationListAdapter; import java.util.ArrayList; import java.util.List; @@ -33,7 +33,6 @@ import io.rong.imkit.userinfo.RongUserInfoManager; import io.rong.imkit.utils.RouteUtils; import io.rong.imkit.widget.adapter.BaseAdapter; import io.rong.imkit.widget.adapter.ViewHolder; -import io.rong.imkit.widget.refresh.SmartRefreshLayout; import io.rong.imkit.widget.refresh.api.RefreshLayout; import io.rong.imkit.widget.refresh.listener.OnLoadMoreListener; import io.rong.imkit.widget.refresh.listener.OnRefreshListener; 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 21ef7593d..8398e4e7b 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -6,8 +6,6 @@ import android.content.Intent; import android.graphics.Color; import android.os.Handler; import android.text.Editable; -import android.text.InputFilter; -import android.text.Spanned; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; @@ -35,10 +33,6 @@ import com.opensource.svgaplayer.SVGADrawable; import com.opensource.svgaplayer.SVGAImageView; import com.opensource.svgaplayer.SVGAParser; import com.opensource.svgaplayer.SVGAVideoEntity; -import com.yunbao.common.CommonAppConfig; -import com.yunbao.common.dialog.DebugDialog; -import com.yunbao.common.manager.base.ACache; -import com.yunbao.common.utils.DateFormatUtil; import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.bean.ImUserInfoModel; @@ -68,8 +62,8 @@ import com.yunbao.main.R; import com.yunbao.main.activity.MainActivity; import com.yunbao.main.adapter.SystemMessageAdapter; import com.yunbao.main.dialog.MsgMoreDialog; -import com.yunbao.main.fragment.AbsMainMessageChatListFragment; -import com.yunbao.main.fragment.MainMessageChatListFragment; +import com.yunbao.common.fragment.AbsMainMessageChatListFragment; +import com.yunbao.common.fragment.MainMessageChatListFragment; import com.yunbao.main.fragment.MainMessageChatListSystemFragment; import com.yunbao.main.fragment.MainMessageChatListUserFragment; import com.yunbao.main.manager.imrongcloud.ConversationIMListManager; @@ -89,7 +83,6 @@ import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; import java.util.List; @@ -207,7 +200,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { private void initFragment() { fragmentList = new ArrayList<>(); - fragmentList.add(new MainMessageChatListFragment()); + fragmentList.add(new MainMessageChatListFragment(AppManager.getInstance().getMainActivity())); fragmentList.add(new MainMessageChatListSystemFragment()); fragmentList.add(new MainMessageChatListUserFragment()); diff --git a/main/src/main/res/layout/view_main_message.xml b/main/src/main/res/layout/view_main_message.xml index 8c0a5280d..4e2b23189 100644 --- a/main/src/main/res/layout/view_main_message.xml +++ b/main/src/main/res/layout/view_main_message.xml @@ -301,7 +301,6 @@ android:id="@+id/indicator" android:layout_width="match_parent" android:layout_height="37dp" - android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/line" /> diff --git a/main/src/main/res/values-zh/strings.xml b/main/src/main/res/values-zh/strings.xml index 2f6a5b752..b06dc17c5 100644 --- a/main/src/main/res/values-zh/strings.xml +++ b/main/src/main/res/values-zh/strings.xml @@ -27,8 +27,6 @@ 互動消息 在線客服 搜索 - 包含: - 聯繫人 聊天記錄 通訊錄 搜索昵稱 diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml index dc3079726..177b07e29 100644 --- a/main/src/main/res/values/strings.xml +++ b/main/src/main/res/values/strings.xml @@ -27,8 +27,6 @@ Chats Service Search - Include: - Contacts Chat Records Address Book Search From 47a8e7f473c25005c9f3c3395ea1b981fd591c9d Mon Sep 17 00:00:00 2001 From: 18142669586 <1669783059@qq.com> Date: Fri, 26 Jul 2024 15:37:45 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=BC=80=E6=92=AD=E6=8F=90=E7=A4=BA=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=9C=AA=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/shayu/phonelive/AppContext.java | 2 +- .../yunbao/main/activity/MainActivity.java | 22 +++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/shayu/phonelive/AppContext.java b/app/src/main/java/com/shayu/phonelive/AppContext.java index 2beb5a4b8..5fdd43c17 100644 --- a/app/src/main/java/com/shayu/phonelive/AppContext.java +++ b/app/src/main/java/com/shayu/phonelive/AppContext.java @@ -220,7 +220,7 @@ public class AppContext extends CommonAppContext { } CrashSaveBean.getInstance().setStartTime(System.currentTimeMillis()); //注册全局异常捕获 - registerError(); + registerE性格rror(); registerFirebaseCrash(); LogUtils.start(this); sInstance = this; diff --git a/main/src/main/java/com/yunbao/main/activity/MainActivity.java b/main/src/main/java/com/yunbao/main/activity/MainActivity.java index 44f2620ba..1895107f0 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainActivity.java @@ -1,6 +1,7 @@ package com.yunbao.main.activity; import static com.yunbao.common.CommonAppContext.isReady; +import static com.yunbao.common.manager.imrongcloud.RongcloudIMManager.connectIM; import android.Manifest; import android.animation.Animator; @@ -51,6 +52,7 @@ import com.tencent.imsdk.v2.V2TIMManager; import com.tencent.imsdk.v2.V2TIMSDKConfig; import com.tencent.imsdk.v2.V2TIMSDKListener; import com.tencent.imsdk.v2.V2TIMUserFullInfo; +import com.yunbao.common.utils.AppManager; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; @@ -877,13 +879,29 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene } private void showStartDialog() { - if (isReady == true) { MainStartDialogFragment dialogFragment = new MainStartDialogFragment(); dialogFragment.setMainStartChooseCallback(true, this); dialogFragment.show(getSupportFragmentManager(), "MainStartDialogFragment"); } else { - ToastUtil.show("正在初始化,請稍等...."); + connectIM(AppManager.getInstance().getMainActivity(), new RongIMClient.ConnectCallback() { + @Override + public void onSuccess(String t) { + MainStartDialogFragment dialogFragment = new MainStartDialogFragment(); + dialogFragment.setMainStartChooseCallback(true, MainActivity.this); + dialogFragment.show(getSupportFragmentManager(), "MainStartDialogFragment"); + } + + @Override + public void onError(RongIMClient.ConnectionErrorCode e) { + ToastUtil.show(R.string.net_error + "" + e.toString()); + } + + @Override + public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus code) { + ToastUtil.show(R.string.net_error + "" + code); + } + }); } } From f9b0d33f6e07589c2b0821f8ef660c175eac324b Mon Sep 17 00:00:00 2001 From: 18142669586 <1669783059@qq.com> Date: Fri, 26 Jul 2024 15:39:14 +0800 Subject: [PATCH 03/14] =?UTF-8?q?=E5=8D=87=E7=BA=A734=E7=89=88=E6=9C=AC?= =?UTF-8?q?=EF=BC=8C=E4=BB=A5=E5=8F=8A=E8=B0=B7=E6=AD=8C=E5=86=85=E8=B4=AD?= =?UTF-8?q?7.0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/shayu/phonelive/AppContext.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/shayu/phonelive/AppContext.java b/app/src/main/java/com/shayu/phonelive/AppContext.java index 5fdd43c17..55e1bb468 100644 --- a/app/src/main/java/com/shayu/phonelive/AppContext.java +++ b/app/src/main/java/com/shayu/phonelive/AppContext.java @@ -220,7 +220,8 @@ public class AppContext extends CommonAppContext { } CrashSaveBean.getInstance().setStartTime(System.currentTimeMillis()); //注册全局异常捕获 - registerE性格rror(); + + registerError(); registerFirebaseCrash(); LogUtils.start(this); sInstance = this; From d167ae82b44d2380fb765c8ddb60441b26b7d118 Mon Sep 17 00:00:00 2001 From: Martin <13046765170@163.com> Date: Fri, 26 Jul 2024 18:38:53 +0800 Subject: [PATCH 04/14] 6.9.0 --- .../adapter/MainConversationListAdapter.java | 20 +- .../common/adapter/MsgRecommendAdapter.java | 101 +++++ .../yunbao/common/bean/HomeUserInfoBean.java | 10 + .../common/bean/MsgOnlineStatusBean.java | 24 ++ .../yunbao/common/bean/MsgRecommendBean.java | 70 +++ .../event/LiveMsgWindowsCloseEvent.java | 6 + .../common/event/MessageIMLiveEvent.java | 33 ++ .../AbsMainMessageChatListFragment.java | 57 +++ .../fragment/MainMessageChatFragment.java | 4 - .../fragment/MainMessageChatListFragment.java | 116 ++++- .../MainMessageRecommendFragment.java | 114 ++++- .../yunbao/common/http/CommonHttpUtil.java | 33 ++ .../common/views/MsgCommemdViewHolder.java | 49 +++ .../common/views/MsgRecommendPopupView.java | 40 ++ .../res/drawable/backgroud_user_home_msg.xml | 8 + .../main/res/drawable/bg_msg_recommend.xml | 11 + .../main/res/drawable/bg_msg_recommended.xml | 11 + .../main/res/layout/activity_user_home.xml | 74 +++- .../res/layout/dialog_live_new_function.xml | 40 +- .../res/layout/msg_main_recommend_item.xml | 59 +-- .../msg_main_recommend_list_fragment.xml | 3 +- .../res/layout/rc_conversationlist_item.xml | 57 ++- .../main/res/layout/view_msg_recommend.xml | 14 + .../res/mipmap-b+en+us/recommed_msg_bg.png | Bin 0 -> 43052 bytes common/src/main/res/mipmap-mdpi/msg_off.png | Bin 0 -> 222 bytes .../src/main/res/mipmap-mdpi/msg_online.png | Bin 0 -> 221 bytes .../res/mipmap-xxhdpi/recommed_msg_bg.png | Bin 0 -> 39478 bytes config.gradle | 4 +- .../yunbao/live/activity/LiveActivity.java | 24 +- .../live/activity/LiveAudienceActivity.java | 19 +- .../dialog/LiveUserAnchorMsgPopDialog.java | 23 +- .../live/dialog/LiveUserDialogFragment.java | 31 +- .../live/presenter/AbsLinkMicPkPresenter.java | 19 +- .../live/views/LiveAudienceViewHolder.java | 8 +- .../live/views/LivePlaySwViewHolder.java | 1 + .../live/views/PortraitLiveManager.java | 2 + .../res/layout/dialog_live_user_bottom_1.xml | 57 ++- .../main/res/layout/dialog_live_user_msg.xml | 18 +- live/src/main/res/values-en/strings.xml | 10 +- live/src/main/res/values/strings.xml | 2 + .../activity/PDLiveConversationActivity.java | 4 +- .../main/activity/RegisterActivity.java | 36 +- .../main/activity/UserHomeActivity.java | 32 ++ .../main/dialog/MainStartDialogFragment.java | 2 +- .../ConversationIMListManager.java | 4 + .../main/views/MainMessageViewHolder.java | 404 ++++++++++++------ .../src/main/res/layout/view_main_message.xml | 192 ++++++++- .../res/mipmap-xxhdpi/icon_msg_recommend.png | Bin 0 -> 2136 bytes 48 files changed, 1506 insertions(+), 340 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/adapter/MsgRecommendAdapter.java create mode 100644 common/src/main/java/com/yunbao/common/bean/MsgOnlineStatusBean.java create mode 100644 common/src/main/java/com/yunbao/common/bean/MsgRecommendBean.java create mode 100644 common/src/main/java/com/yunbao/common/event/LiveMsgWindowsCloseEvent.java create mode 100644 common/src/main/java/com/yunbao/common/event/MessageIMLiveEvent.java create mode 100644 common/src/main/java/com/yunbao/common/views/MsgCommemdViewHolder.java create mode 100644 common/src/main/java/com/yunbao/common/views/MsgRecommendPopupView.java create mode 100644 common/src/main/res/drawable/backgroud_user_home_msg.xml create mode 100644 common/src/main/res/drawable/bg_msg_recommend.xml create mode 100644 common/src/main/res/drawable/bg_msg_recommended.xml create mode 100644 common/src/main/res/layout/view_msg_recommend.xml create mode 100644 common/src/main/res/mipmap-b+en+us/recommed_msg_bg.png create mode 100644 common/src/main/res/mipmap-mdpi/msg_off.png create mode 100644 common/src/main/res/mipmap-mdpi/msg_online.png create mode 100644 common/src/main/res/mipmap-xxhdpi/recommed_msg_bg.png create mode 100644 main/src/main/res/mipmap-xxhdpi/icon_msg_recommend.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 c746da32d..91f9417cf 100644 --- a/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/MainConversationListAdapter.java @@ -39,6 +39,7 @@ import io.rong.imkit.widget.adapter.ViewHolder; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; import io.rong.imlib.model.Message; +import io.rong.message.SightMessage; import io.rong.message.TextMessage; public class MainConversationListAdapter extends ConversationListAdapter { @@ -55,6 +56,11 @@ public class MainConversationListAdapter extends ConversationListAdapter { this.mContext = mContext; } + public void setSrcList(List srcList) { + this.srcList = srcList; + notifyDataSetChanged(); + } + public void setOnRefreshListener(OnRecyclerListRefreshListener> onRefreshListener) { this.onRefreshListener = onRefreshListener; } @@ -134,6 +140,13 @@ public class MainConversationListAdapter extends ConversationListAdapter { } else if (holder.getView(R.id.rc_conversation_date) != null) { holder.getView(R.id.rc_conversation_date).setVisibility(View.GONE); } + if("0".equals(conversation.mCore.getDraft())){ + holder.setImageDrawable(R.id.rc_conversation_live_online_icon,mContext.getResources().getDrawable(R.mipmap.msg_online)); + holder.setText(R.id.rc_conversation_live_online,WordUtil.isNewZh()?"在線":"Online"); + }else{ + holder.setImageDrawable(R.id.rc_conversation_live_online_icon,mContext.getResources().getDrawable(R.mipmap.msg_off)); + holder.setText(R.id.rc_conversation_live_online,WordUtil.isNewZh()?"離線":"Offline"); + } if (holder.getView(R.id.rc_conversation_live_status) == null || IMLoginManager.get(holder.getContext()).getAnchorB() != 1) { return; } @@ -322,7 +335,12 @@ public class MainConversationListAdapter extends ConversationListAdapter { BaseUiConversation conversation = mDataList.get(id); conversation.mCore.setSentTime(bean.getSentTime()); conversation.mCore.setUnreadMessageCount(integer); - conversation.mConversationContent = new SpannableString(((TextMessage) bean.getContent()).getContent()); + if(bean.getContent() instanceof SightMessage){ + conversation.mConversationContent = new SpannableString(WordUtil.isNewZh()?"[小視頻]":"[Video]"); + }else{ + conversation.mConversationContent = new SpannableString(((TextMessage) bean.getContent()).getContent()); + } + mDataList.set(id, conversation); notifyItemChanged(id); } diff --git a/common/src/main/java/com/yunbao/common/adapter/MsgRecommendAdapter.java b/common/src/main/java/com/yunbao/common/adapter/MsgRecommendAdapter.java new file mode 100644 index 000000000..a216f47e1 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/adapter/MsgRecommendAdapter.java @@ -0,0 +1,101 @@ +package com.yunbao.common.adapter; + +import static com.yunbao.common.utils.StringUtil.isEmpty; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.R; +import com.yunbao.common.bean.MessageChatUserBean; +import com.yunbao.common.bean.MsgRecommendBean; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ClipPathCircleImage; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by cxf on 2019/4/22. + */ + +public class MsgRecommendAdapter extends RecyclerView.Adapter { + + private Context mContext; + private List mList; + private LayoutInflater mInflater; + + public MsgRecommendAdapter.onItemSayHi onItemSayHi; + + public void setOnItemSayHi(onItemSayHi onItemSayHi) { + this.onItemSayHi = onItemSayHi; + } + + public MsgRecommendAdapter(Context context, List list) { + mContext = context; + mInflater = LayoutInflater.from(context); + mList = list; + } + + public void setDataCollection(List data) { + if (data == null) { + data = new ArrayList(); + } + this.mList = data; + this.notifyDataSetChanged(); + } + + @NonNull + @Override + public Vh onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new Vh(mInflater.inflate(R.layout.msg_main_recommend_item, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull Vh holder, @SuppressLint("RecyclerView") int position) { + if (isEmpty() || mList.isEmpty()) { + return; + } + ImgLoader.display(holder.itemView.getContext(), mList.get(position).getAvatar(), holder.mAvatar); + holder.rc_conversation_title.setText(mList.get(position).getUser_nicename()); + holder.sayHi.setText(mList.get(position).isSayHi()? (WordUtil.isNewZh()?"已打招呼":"Said Hallo"):(WordUtil.isNewZh()?"打招呼":"Greet")); + holder.sayHi.setBackground(mList.get(position).isSayHi()? mContext.getDrawable(R.drawable.bg_msg_recommended):mContext.getDrawable(R.drawable.bg_msg_recommend)); + holder.sayHi.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(onItemSayHi!=null){ + onItemSayHi.onSayHi(mList.get(position),position); + } + } + }); + } + + @Override + public int getItemCount() { + return mList.size(); + } + + class Vh extends RecyclerView.ViewHolder { + private ClipPathCircleImage mAvatar; + private TextView rc_conversation_title; + private TextView sayHi; + + public Vh(@NonNull View itemView) { + super(itemView); + mAvatar = itemView.findViewById(R.id.avatar); + rc_conversation_title = itemView.findViewById(R.id.rc_conversation_title); + sayHi = itemView.findViewById(R.id.sayHi); + } + } + + public interface onItemSayHi{ + void onSayHi(MsgRecommendBean model,int position); + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/HomeUserInfoBean.java b/common/src/main/java/com/yunbao/common/bean/HomeUserInfoBean.java index e27e9b7da..12dde677b 100644 --- a/common/src/main/java/com/yunbao/common/bean/HomeUserInfoBean.java +++ b/common/src/main/java/com/yunbao/common/bean/HomeUserInfoBean.java @@ -54,6 +54,16 @@ public class HomeUserInfoBean extends BaseModel { private String rong_online; + private String type; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + public String getRong_online() { return rong_online; } diff --git a/common/src/main/java/com/yunbao/common/bean/MsgOnlineStatusBean.java b/common/src/main/java/com/yunbao/common/bean/MsgOnlineStatusBean.java new file mode 100644 index 000000000..df8af0547 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/MsgOnlineStatusBean.java @@ -0,0 +1,24 @@ +package com.yunbao.common.bean; +/** + * 消息列表用户在线状态 + */ +public class MsgOnlineStatusBean { + private String id; + private String online; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getOnline() { + return online; + } + + public void setOnline(String online) { + this.online = online; + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/MsgRecommendBean.java b/common/src/main/java/com/yunbao/common/bean/MsgRecommendBean.java new file mode 100644 index 000000000..57dfec7c8 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/MsgRecommendBean.java @@ -0,0 +1,70 @@ +package com.yunbao.common.bean; + +/** + * 消息-推荐消息 + */ +public class MsgRecommendBean { + private String id; + private String avatar; + private String user_login; + private String user_nicename; + private String langue; + private String online; + private boolean sayHi = false; + + public boolean isSayHi() { + return sayHi; + } + + public void setSayHi(boolean sayHi) { + this.sayHi = sayHi; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getUser_login() { + return user_login; + } + + public void setUser_login(String user_login) { + this.user_login = user_login; + } + + public String getUser_nicename() { + return user_nicename; + } + + public void setUser_nicename(String user_nicename) { + this.user_nicename = user_nicename; + } + + public String getLangue() { + return langue; + } + + public void setLangue(String langue) { + this.langue = langue; + } + + public String getOnline() { + return online; + } + + public void setOnline(String online) { + this.online = online; + } +} diff --git a/common/src/main/java/com/yunbao/common/event/LiveMsgWindowsCloseEvent.java b/common/src/main/java/com/yunbao/common/event/LiveMsgWindowsCloseEvent.java new file mode 100644 index 000000000..56761a285 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/event/LiveMsgWindowsCloseEvent.java @@ -0,0 +1,6 @@ +package com.yunbao.common.event; + +public class LiveMsgWindowsCloseEvent { + public LiveMsgWindowsCloseEvent() { + } +} diff --git a/common/src/main/java/com/yunbao/common/event/MessageIMLiveEvent.java b/common/src/main/java/com/yunbao/common/event/MessageIMLiveEvent.java new file mode 100644 index 000000000..4ab2fa6ca --- /dev/null +++ b/common/src/main/java/com/yunbao/common/event/MessageIMLiveEvent.java @@ -0,0 +1,33 @@ +package com.yunbao.common.event; + +import com.yunbao.common.bean.BaseModel; + +/** + * 未读消息整合 + */ +public class MessageIMLiveEvent extends BaseModel { + private int number = 0; + private int message = 0; + + public int getMessage() { + return message; + } + + public MessageIMLiveEvent setMessage(int message) { + this.message = message; + return this; + } + + public MessageIMLiveEvent(int number) { + this.number = number; + } + + public int getNumber() { + return number; + } + + public MessageIMLiveEvent setNumber(int number) { + this.number = number; + return this; + } +} diff --git a/common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java b/common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java index 6cc8c97ae..e17e9d1af 100644 --- a/common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java @@ -1,33 +1,51 @@ package com.yunbao.common.fragment; +import android.net.Uri; import android.os.Bundle; +import android.util.Log; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.alibaba.fastjson.JSON; +import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.bean.MainMessageChatListTimer; +import com.yunbao.common.bean.MessageChatUserBean; +import com.yunbao.common.bean.MsgOnlineStatusBean; +import com.yunbao.common.http.CommonHttpUtil; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.interfaces.OnRecyclerListRefreshListener; import com.yunbao.common.adapter.MainConversationListAdapter; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.manager.InstructorRemarkManager; +import com.yunbao.common.utils.StringUtil; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import java.lang.reflect.Array; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import io.rong.imkit.conversationlist.model.BaseUiConversation; +import io.rong.imkit.conversationlist.model.SingleConversation; +import io.rong.imkit.userinfo.RongUserInfoManager; import io.rong.imkit.widget.refresh.SmartRefreshLayout; import io.rong.imlib.model.Conversation; +import io.rong.imlib.model.Message; +import io.rong.imlib.model.UserInfo; public abstract class AbsMainMessageChatListFragment extends Fragment { + private static final String TAG = "全部聊天"; public RecyclerView recyclerView; public MainConversationListAdapter mAdapter; public SmartRefreshLayout refreshLayout; @@ -118,6 +136,45 @@ public abstract class AbsMainMessageChatListFragment extends Fragment { }); } + public void loadLiveOnlineStatus(List srcList, OnRecyclerListRefreshListener> onRefreshListener){ + List uids = new ArrayList<>(); + isNet = true; + for (BaseUiConversation conversation : srcList) { + map.put(conversation.mCore.getTargetId(), conversation); + if (conversation.mCore.getConversationType() == Conversation.ConversationType.PRIVATE) { + uids.add(conversation.mCore.getTargetId()); + } + } + CommonHttpUtil.getUserOnline(String.join(",", uids), new com.yunbao.common.http.HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if(code==0&&info!=null){ + List listUserBean = JSON.parseArray(Arrays.toString(info), MsgOnlineStatusBean.class); + for (int i = 0; i list, String search) { 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 3d8da397d..064807c63 100644 --- a/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageChatListFragment.java @@ -1,27 +1,44 @@ package com.yunbao.common.fragment; import android.content.Context; +import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.FrameLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import androidx.recyclerview.widget.LinearLayoutManager; import com.yunbao.common.R; +import com.yunbao.common.bean.MessageChatUserBean; +import com.yunbao.common.event.MessageIMLiveEvent; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.interfaces.OnRecyclerListRefreshListener; +import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.InstructorRemarkManager; +import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.L; +import com.yunbao.common.utils.StringUtil; +import java.util.ArrayList; import java.util.List; import java.util.Map; import io.rong.imkit.conversationlist.model.BaseUiConversation; +import io.rong.imkit.conversationlist.model.SingleConversation; +import io.rong.imkit.userinfo.RongUserInfoManager; +import io.rong.imkit.widget.refresh.api.RefreshLayout; +import io.rong.imkit.widget.refresh.listener.OnLoadMoreListener; +import io.rong.imkit.widget.refresh.listener.OnRefreshListener; +import io.rong.imlib.model.Conversation; +import io.rong.imlib.model.Message; +import io.rong.imlib.model.UserInfo; public class MainMessageChatListFragment extends AbsMainMessageChatListFragment { private static final String TAG = "MainMessageChatListFragment"; @@ -33,20 +50,20 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + L.eSw("111111"); return inflater.inflate(R.layout.fragment_main_message_chat_list, container, false); } MainMessageChatFragment conversationListFragment; @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - Log.i(TAG, "onViewCreated: 准备创建融云"); + public void onResume() { + super.onResume(); conversationListFragment = new MainMessageChatFragment(); setAdapter(conversationListFragment.getAdapter()); - FragmentManager manager = ((FragmentActivity) mContext).getSupportFragmentManager(); + FragmentManager manager = getChildFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); - transaction.replace(view.findViewById(R.id.container).getId(), conversationListFragment); + transaction.replace(R.id.container, conversationListFragment); transaction.commitAllowingStateLoss(); //自定义空数据背景View //conversationListFragment.setEmptyView(emptyView); @@ -60,10 +77,95 @@ public class MainMessageChatListFragment extends AbsMainMessageChatListFragment public void onFinish(Map stringIntegerMap) { conversationListFragment.getAdapter().setTimerMap(stringIntegerMap); updateList(); + loadLiveOnlineStatus(baseUiConversations, new OnRecyclerListRefreshListener>() { + @Override + public void onFinish(List baseUiConversations) { + conversationListFragment.getAdapter().setSrcList(baseUiConversations); + } + }); + int count=0; + for (int i = 0; i uids = new ArrayList<>(); + for (BaseUiConversation conversation : baseUiConversations) { + map.put(conversation.mCore.getTargetId(), conversation); + if (conversation.mCore.getConversationType() == Conversation.ConversationType.PRIVATE) { + uids.add(conversation.mCore.getTargetId()); + } + } + getUserInfo(uids); } }); + } + + private void getUserInfo(List uidList) { + String uids = String.join(",", uidList); + LiveNetManager.get(getContext()) + .getOtherList(uids, new HttpCallback>() { + @Override + public void onSuccess(List data) { + List list = new ArrayList<>(); + for (MessageChatUserBean datum : data) { + Conversation conversation = new Conversation(); + BaseUiConversation baseUiConversation = new SingleConversation(getContext(), conversation); + baseUiConversation.mCore.setTargetId(datum.getId()); + baseUiConversation.mCore.setSenderUserId(IMLoginManager.get(getContext()).getUserInfo().getId() + ""); + baseUiConversation.mCore.setSentStatus(Message.SentStatus.CANCELED); + baseUiConversation.mCore.setSentTime(-1); + baseUiConversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE); + baseUiConversation.mCore.setPortraitUrl(datum.getAvatar()); + String remark = InstructorRemarkManager.get(getContext()).getInstructorRemark().get(datum.getId()); + baseUiConversation.mCore.setConversationTitle(StringUtil.isEmpty(remark) ? datum.getUserNiceName() : remark); + + list.add(baseUiConversation); + + UserInfo userInfo = new UserInfo(baseUiConversation.mCore.getTargetId(), + baseUiConversation.mCore.getConversationTitle(), + Uri.parse(baseUiConversation.mCore.getPortraitUrl())); + RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo); + } + if (!list.isEmpty()) { + List srcList = new ArrayList<>(mAdapter.getSrcList()); + srcList.addAll(list); + Log.i(TAG, "onSuccess: 增加用户数:" + list.size() + "||总用户数:" + srcList.size()); + for (BaseUiConversation conversation : srcList) { + Log.i(TAG, "onSuccess: 用户id:" + conversation.mCore.getTargetId() + "||用户名:" + conversation.mCore.getConversationTitle() + "||用户头像:" + conversation.mCore.getPortraitUrl()); + } + int position = 0; + try { + position = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition(); + } catch (Exception e) { + + } + mAdapter.setDataCollection(srcList); + //mAdapter.onFinish(); + recyclerView.scrollToPosition(position); + } + onRefreshFinished(); + onLoadMoreFinished(); + } + + @Override + public void onError(String error) { + onLoadMoreFinished(); + onRefreshFinished(); + } + }); + + } + + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + L.eSw("222222"); + Log.i(TAG, "onViewCreated: 准备创建融云"); + } diff --git a/common/src/main/java/com/yunbao/common/fragment/MainMessageRecommendFragment.java b/common/src/main/java/com/yunbao/common/fragment/MainMessageRecommendFragment.java index 0c72d07a3..2fa8ea33a 100644 --- a/common/src/main/java/com/yunbao/common/fragment/MainMessageRecommendFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/MainMessageRecommendFragment.java @@ -1,51 +1,131 @@ package com.yunbao.common.fragment; +import android.content.Context; import android.os.Bundle; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.lifecycle.Observer; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; -import com.google.gson.Gson; +import com.alibaba.fastjson.JSON; import com.yunbao.common.R; -import com.yunbao.common.adapter.MainConversationListAdapter; -import com.yunbao.common.utils.L; -import com.yunbao.common.utils.StringUtil; +import com.yunbao.common.adapter.MsgRecommendAdapter; +import com.yunbao.common.bean.MsgRecommendBean; +import com.yunbao.common.http.CommonHttpUtil; +import com.yunbao.common.http.HttpCallback; import com.yunbao.common.utils.ToastUtil; -import com.yunbao.common.utils.WordUtil; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -import io.rong.imkit.conversationlist.ConversationListAdapter; -import io.rong.imkit.conversationlist.ConversationListFragment; -import io.rong.imkit.conversationlist.model.BaseUiConversation; -import io.rong.imkit.conversationlist.model.SingleConversation; -import io.rong.imkit.event.Event; -import io.rong.imlib.RongIMClient; -import io.rong.imlib.model.Conversation; -import io.rong.imlib.model.SearchConversationResult; +import io.rong.imkit.widget.refresh.SmartRefreshLayout; +import io.rong.imkit.widget.refresh.api.RefreshLayout; +import io.rong.imkit.widget.refresh.listener.OnLoadMoreListener; +import io.rong.imkit.widget.refresh.listener.OnRefreshListener; +import io.rong.imkit.widget.refresh.wrapper.RongRefreshHeader; -public class MainMessageRecommendFragment extends ConversationListFragment { +public class MainMessageRecommendFragment extends AbsMainMessageChatListFragment { + SmartRefreshLayout mRefreshLayout; + RecyclerView mList; + Context mContext; + MsgRecommendAdapter adapter; + List list = new ArrayList<>(); @Nullable public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.msg_main_recommend_list_fragment, container, false); } + public MainMessageRecommendFragment(Context context) { + this.mContext = context; + } + @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + initView(view); + initRefreshView(); + initData(); + } + + private void initView(View view) { + mRefreshLayout = view.findViewById(R.id.rc_refresh); + mList = view.findViewById(R.id.rc_conversation_list); + LinearLayoutManager layoutManager = new LinearLayoutManager(this.getActivity()); + mList.setLayoutManager(layoutManager); + mList.setItemViewCacheSize(0); + } + + protected void initRefreshView() { + mRefreshLayout.setNestedScrollingEnabled(false); + mRefreshLayout.setRefreshHeader(new RongRefreshHeader(getContext())); + mRefreshLayout.setRefreshFooter(new RongRefreshHeader(getContext())); + mRefreshLayout.setEnableLoadMore(false); + mRefreshLayout.setOnRefreshListener(new OnRefreshListener() { + public void onRefresh(@NonNull RefreshLayout refreshLayout) { + initData(); + } + }); + mRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + public void onLoadMore(@NonNull RefreshLayout refreshLayout) { + + } + }); + adapter = new MsgRecommendAdapter(mContext,list); + mList.setAdapter(adapter); + adapter.setOnItemSayHi(new MsgRecommendAdapter.onItemSayHi() { + @Override + public void onSayHi(MsgRecommendBean model,int position) { + if (model.isSayHi()) { + return; + } + CommonHttpUtil.sayHi(model.getId(), new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0) { + list.get(position).setSayHi(true); + adapter.notifyItemChanged(position); + } + ToastUtil.show(msg); + } + }); + } + }); + } + + private void initData() { + CommonHttpUtil.getMainMsgRecommend(new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0 && info != null) { + list = JSON.parseArray(Arrays.toString(info), MsgRecommendBean.class); + adapter.setDataCollection(list); + mRefreshLayout.finishRefresh(true); + } else { + ToastUtil.show(msg); + } + } + }); + } + + @Override + public void onChatList() { } + @Override + public void search(String string) { + } + @Override + public void updateList() { - + } } diff --git a/common/src/main/java/com/yunbao/common/http/CommonHttpUtil.java b/common/src/main/java/com/yunbao/common/http/CommonHttpUtil.java index 8c30a1cb4..9b6b8d3f0 100644 --- a/common/src/main/java/com/yunbao/common/http/CommonHttpUtil.java +++ b/common/src/main/java/com/yunbao/common/http/CommonHttpUtil.java @@ -685,6 +685,39 @@ public class CommonHttpUtil { .params("dynamic_id", dynamic_id) .execute(callback); } + + /** + * 获取打招呼推荐列表 + */ + public static void getMainMsgRecommend(HttpCallback callback) { + HttpClient.getInstance().get("Pdluser.getRecommendUser", "Pdluser.getRecommendUser") + .execute(callback); + } + + /** + * 打招呼 + * @param toUid + * @param callback + */ + public static void sayHi(String toUid,HttpCallback callback) { + HttpClient.getInstance().get("Pdluser.liveCall", "Pdluser.liveCall") + .params("target_uid",toUid) + .params("behavior_type","5") + .execute(callback); + } + + /** + *获取聊天列表用户在线状态 + * @param toUid + * @param callback + */ + public static void getUserOnline(String toUid,HttpCallback callback) { + HttpClient.getInstance().get("Pdluser.getUserOnline", "Pdluser.getUserOnline") + .params("uids",toUid) + .execute(callback); + } + + } diff --git a/common/src/main/java/com/yunbao/common/views/MsgCommemdViewHolder.java b/common/src/main/java/com/yunbao/common/views/MsgCommemdViewHolder.java new file mode 100644 index 000000000..6e8297e3b --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/MsgCommemdViewHolder.java @@ -0,0 +1,49 @@ +package com.yunbao.common.views; + +import android.content.Context; +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.google.android.exoplayer2.C; +import com.makeramen.roundedimageview.RoundedImageView; +import com.yunbao.common.R; +import com.yunbao.common.bean.MsgRecommendBean; +import com.yunbao.common.bean.playerObject; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ClipPathCircleImage; + +public class MsgCommemdViewHolder extends RecyclerView.ViewHolder { + private ClipPathCircleImage mAvatar; + private TextView rc_conversation_title; + private TextView sayHi; + + public MsgCommemdViewHolder(@NonNull View itemView) { + super(itemView); + mAvatar = itemView.findViewById(R.id.avatar); + rc_conversation_title = itemView.findViewById(R.id.rc_conversation_title); + sayHi = itemView.findViewById(R.id.sayHi); + } + + public void setData(MsgRecommendBean model, Context mContext,onItemSayHi onItemSayHi) { + ImgLoader.display(itemView.getContext(), model.getAvatar(), mAvatar); + rc_conversation_title.setText(model.getUser_nicename()); + sayHi.setText(model.isSayHi()? (WordUtil.isNewZh()?"已打招呼":"Said Hallo"):(WordUtil.isNewZh()?"打招呼":"Greet")); + sayHi.setBackground(model.isSayHi()? mContext.getDrawable(R.drawable.bg_msg_recommended):mContext.getDrawable(R.drawable.bg_msg_recommend)); + sayHi.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(onItemSayHi!=null){ + onItemSayHi.onSayHi(model); + } + } + }); + } + + public interface onItemSayHi{ + void onSayHi(MsgRecommendBean model); + } +} diff --git a/common/src/main/java/com/yunbao/common/views/MsgRecommendPopupView.java b/common/src/main/java/com/yunbao/common/views/MsgRecommendPopupView.java new file mode 100644 index 000000000..cff035874 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/MsgRecommendPopupView.java @@ -0,0 +1,40 @@ +package com.yunbao.common.views; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import com.lxj.xpopup.core.AttachPopupView; +import com.yunbao.common.R; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +public class MsgRecommendPopupView extends AttachPopupView { + + ItemDelListener itemDelListener; + + public MsgRecommendPopupView(@NonNull Context context, ItemDelListener itemDelListener) { + super(context); + this.itemDelListener = itemDelListener; + } + + @Override + protected int getImplLayoutId() { + return R.layout.view_msg_recommend; + } + + @Override + protected void onCreate() { + //特效设置 + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.close), new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + dismiss(); + itemDelListener.onItemDel(); + } + }); + } + + public interface ItemDelListener { + void onItemDel(); + } +} diff --git a/common/src/main/res/drawable/backgroud_user_home_msg.xml b/common/src/main/res/drawable/backgroud_user_home_msg.xml new file mode 100644 index 000000000..1d5b3309d --- /dev/null +++ b/common/src/main/res/drawable/backgroud_user_home_msg.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/bg_msg_recommend.xml b/common/src/main/res/drawable/bg_msg_recommend.xml new file mode 100644 index 000000000..718443abb --- /dev/null +++ b/common/src/main/res/drawable/bg_msg_recommend.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/bg_msg_recommended.xml b/common/src/main/res/drawable/bg_msg_recommended.xml new file mode 100644 index 000000000..f093ebea8 --- /dev/null +++ b/common/src/main/res/drawable/bg_msg_recommended.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/activity_user_home.xml b/common/src/main/res/layout/activity_user_home.xml index af0023e3c..1024df10f 100644 --- a/common/src/main/res/layout/activity_user_home.xml +++ b/common/src/main/res/layout/activity_user_home.xml @@ -213,30 +213,62 @@ + android:orientation="vertical" + android:gravity="center_horizontal" + android:layout_height="wrap_content"> - - - + android:layout_height="35dp" + android:minWidth="90dp" + android:background="@drawable/bg_main_com_type" + android:gravity="center" + android:paddingStart="10dp" + android:paddingEnd="10dp"> + + + + + + + + + + + + diff --git a/common/src/main/res/layout/dialog_live_new_function.xml b/common/src/main/res/layout/dialog_live_new_function.xml index c3f4f3f5b..5f56e7029 100644 --- a/common/src/main/res/layout/dialog_live_new_function.xml +++ b/common/src/main/res/layout/dialog_live_new_function.xml @@ -529,11 +529,32 @@ android:textColor="#FF9A9A9A" android:textSize="12sp" /> + + + + + @@ -566,26 +587,7 @@ android:layout_marginStart="16dp" android:layout_marginBottom="20dp"> - - - - - diff --git a/common/src/main/res/layout/msg_main_recommend_item.xml b/common/src/main/res/layout/msg_main_recommend_item.xml index 2594d56a9..9cbc6b4be 100644 --- a/common/src/main/res/layout/msg_main_recommend_item.xml +++ b/common/src/main/res/layout/msg_main_recommend_item.xml @@ -16,36 +16,12 @@ > - - - - - - + tools:text="" /> - - + android:id="@+id/sayHi" + android:layout_width="51dp" + android:layout_height="26dp" + android:ellipsize="end" + android:background="@drawable/bg_msg_recommend" + android:maxWidth="120dp" + android:gravity="center" + android:layout_gravity="center_vertical" + android:maxLines="1" + android:textColor="@color/white" + android:textSize="11dp" + tools:text="打招呼" /> diff --git a/common/src/main/res/layout/msg_main_recommend_list_fragment.xml b/common/src/main/res/layout/msg_main_recommend_list_fragment.xml index 2844c7f9a..5927df3a3 100644 --- a/common/src/main/res/layout/msg_main_recommend_list_fragment.xml +++ b/common/src/main/res/layout/msg_main_recommend_list_fragment.xml @@ -2,7 +2,6 @@ @@ -11,7 +10,7 @@ android:layout_marginStart="16dp" android:layout_marginEnd="16dp" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="match_parent"> + + + + + + + - @@ -131,7 +142,7 @@ android:maxLines="1" android:text="你好,朋友!11111111111111111111111111111111111111111" android:textColor="@color/rc_secondary_color" - android:textSize="@dimen/rc_font_text_third_size" + android:textSize="13dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toEndOf="@+id/rc_conversation_portrait_rl" diff --git a/common/src/main/res/layout/view_msg_recommend.xml b/common/src/main/res/layout/view_msg_recommend.xml new file mode 100644 index 000000000..f3fc22927 --- /dev/null +++ b/common/src/main/res/layout/view_msg_recommend.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/common/src/main/res/mipmap-b+en+us/recommed_msg_bg.png b/common/src/main/res/mipmap-b+en+us/recommed_msg_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..92929e199d1063078b396058c9599f4b3dc30e26 GIT binary patch literal 43052 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 Q0Nu#o>FVdQ&MBb@0B}J~m;e9( literal 0 HcmV?d00001 diff --git a/common/src/main/res/mipmap-mdpi/msg_online.png b/common/src/main/res/mipmap-mdpi/msg_online.png new file mode 100644 index 0000000000000000000000000000000000000000..6d27acad7df7dce3b26e344e85e35d61ebd1d0b2 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}(>+}rLn7SY zPT9!YVj#d$F1={7dV|>lCYf1W3wSwx`0ZO*ZK>es@nX)L3D;KY-ml23b@`A~P|M-K zmI6czZXL+DeEh(&o}xo_+|TpRMyzL&(9LDo<$bU=@!ej5yoOIj4aaL0v-hgqVQ603 z>9CL4Kw<5f&BqV@W;hfb@TINo!<+mU=3iRgyj)}5;xAtHomGL^2#7wgKgcyuT=~Ia QInap=p00i_>zopr0Ow3rM*si- literal 0 HcmV?d00001 diff --git a/common/src/main/res/mipmap-xxhdpi/recommed_msg_bg.png b/common/src/main/res/mipmap-xxhdpi/recommed_msg_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..f07598cdd4cbca587443c32e22b971ddd4f43fe6 GIT binary patch literal 39478 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 N<|fw0wGcP#zW}tHWSam0 literal 0 HcmV?d00001 diff --git a/config.gradle b/config.gradle index 1272389ce..66f4bf4f3 100644 --- a/config.gradle +++ b/config.gradle @@ -4,8 +4,8 @@ ext { buildToolsVersion: "29.0.2", minSdkVersion : 23, targetSdkVersion : 34, - versionCode : 536, - versionName : "6.7.1", + versionCode : 538, + versionName : "6.7.2", namespace : "com.pandoralive.shayu" ] manifestPlaceholders = [ diff --git a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java index e130bbd06..1ba93ce68 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java @@ -21,6 +21,10 @@ import com.alibaba.android.arouter.launcher.ARouter; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.blankj.utilcode.util.GsonUtils; +import com.yunbao.common.event.LiveMsgWindowsCloseEvent; +import com.yunbao.common.event.MessageIMEvent; +import com.yunbao.common.event.MessageIMLiveEvent; +import com.yunbao.common.manager.imrongcloud.MessageIMManager; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; @@ -232,6 +236,9 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL } } } + if(fragment!=null){ + fragment.dismiss(); + } } @@ -990,14 +997,29 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL new LiveUserAnchorMailBoxPopDialog(mContext).showDialog(); } + LiveUserAnchorMsgPopDialog fragment; /** * 用户端打开聊天列表页面 */ public void openLiveMsgWindow() { - LiveUserAnchorMsgPopDialog fragment = new LiveUserAnchorMsgPopDialog(); + fragment = new LiveUserAnchorMsgPopDialog(); fragment.show(((LiveActivity) mContext).getSupportFragmentManager(), "LiveUserAnchorMsgPopDialog"); } + @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) + public void onMessageIMEvent(LiveMsgWindowsCloseEvent event) { + if(fragment!=null){ + fragment.dismiss(); + } + } + + @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) + public void onMessageIMEvent(MessageIMLiveEvent event) { + if(fragment!=null){ + fragment.refreshMsgCount(event.getNumber()); + } + } + /** * 发 弹幕 消息 */ diff --git a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java index 59018127d..fe0eaa2d0 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -39,6 +39,7 @@ import com.lxj.xpopup.interfaces.XPopupCallback; import com.lzf.easyfloat.EasyFloat; import com.lzf.easyfloat.enums.ShowPattern; import com.yunbao.common.dialog.DebugDialog; +import com.yunbao.common.event.MessageIMEvent; import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.CommonAppConfig; @@ -1860,7 +1861,7 @@ public class LiveAudienceActivity extends LiveActivity { @SuppressLint("SetTextI18n") public void showMsgRed(int num) { - if (manager == null || manager.mLiveAudienceViewHolder == null || manager.mLiveAudienceViewHolder.mRedPoint == null) { + /*if (manager == null || manager.mLiveAudienceViewHolder == null || manager.mLiveAudienceViewHolder.mRedPoint == null) { return; } if (num == -1) { @@ -1869,7 +1870,21 @@ public class LiveAudienceActivity extends LiveActivity { } else if (num > 0) { manager.mLiveAudienceViewHolder.mRedPoint.setText(num + ""); } - manager.mLiveAudienceViewHolder.mRedPoint.setVisibility(View.VISIBLE); + manager.mLiveAudienceViewHolder.mRedPoint.setVisibility(View.VISIBLE);*/ + } + + //消息中心 + @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) + public void onMessageIMEvent(MessageIMEvent event) { + if (manager == null || manager.mLiveAudienceViewHolder == null || manager.mLiveAudienceViewHolder.mRedPoint == null) { + return; + } + if(event.getNumber()>0){ + manager.mLiveAudienceViewHolder.mRedPoint.setVisibility(View.VISIBLE); + }else{ + manager.mLiveAudienceViewHolder.mRedPoint.setVisibility(View.GONE); + } + } public void setShowCrownRed(boolean isShow) { diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveUserAnchorMsgPopDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveUserAnchorMsgPopDialog.java index 2172f9d31..171591a07 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveUserAnchorMsgPopDialog.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveUserAnchorMsgPopDialog.java @@ -1,12 +1,14 @@ package com.yunbao.live.dialog; import android.content.Context; +import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -45,6 +47,8 @@ import java.util.List; public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment { private ViewPager2 viewPager; private MagicIndicator mIndicator; + private TextView titleCount; + private List fragmentList; @Override @@ -68,7 +72,7 @@ public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment { WindowManager.LayoutParams params = window.getAttributes(); window.setWindowAnimations(R.style.bottomToTopAnim); params.width = WindowManager.LayoutParams.MATCH_PARENT; - params.height = (int) (ScreenDimenUtil.getInstance().getScreenHeight()*0.6); + params.height = (int) (ScreenDimenUtil.getInstance().getScreenHeight() * 0.6); params.gravity = Gravity.BOTTOM; window.setAttributes(params); } @@ -78,10 +82,10 @@ public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment { super.onActivityCreated(savedInstanceState); mIndicator = (MagicIndicator) findViewById(R.id.indicator); viewPager = (ViewPager2) findViewById(R.id.viewPager); + titleCount= (TextView) findViewById(R.id.titleCount); fragmentList = new ArrayList<>(); fragmentList.add(new MainMessageChatListFragment(AppManager.getInstance().getLiveActivity())); viewPager.setAdapter(new FragmentStateAdapter((FragmentActivity) AppManager.getInstance().getLiveActivity()) { - @Override public int getItemCount() { return fragmentList.size(); @@ -98,6 +102,18 @@ public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment { initIndicator(); initData(); } + + public void refreshMsgCount(int num){ + if(titleCount!=null){ + titleCount.setText(getResources().getString(R.string.message_chat_msg_all_an_a)+"("+num+")"); + } + } + + @Override + public void onDismiss(DialogInterface dialog) { + super.onDismiss(dialog); + } + /** * 初始化数据 */ @@ -105,6 +121,7 @@ public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment { IMLoginManager.get(mContext).checkInstructor(); MessageIMManager.get(mContext).getSystemMessages(); } + private void initIndicator() { final String[] titles = new String[]{ WordUtil.getNewString(R.string.message_chat_msg_all), @@ -148,6 +165,8 @@ public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment { return linePagerIndicator; } }); + LinePagerIndicator linePagerIndicator = new LinePagerIndicator(mContext); + linePagerIndicator.setLineHeight(0); mIndicator.setNavigator(commonNavigator); ViewPageIndicatorUtils.bind(mIndicator, viewPager, new ViewPager2.OnPageChangeCallback() { @Override diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java index da6d5452b..1deb21138 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java @@ -1,5 +1,6 @@ package com.yunbao.live.dialog; +import android.app.Activity; import android.app.Dialog; import android.graphics.Color; import android.graphics.drawable.Drawable; @@ -22,6 +23,7 @@ import com.opensource.svgaplayer.SVGADrawable; import com.opensource.svgaplayer.SVGAImageView; import com.opensource.svgaplayer.SVGAParser; import com.opensource.svgaplayer.SVGAVideoEntity; +import com.yunbao.common.event.MainHomeCommunityToChatEvent; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; @@ -48,6 +50,7 @@ import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.SVGAViewUtils; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; import com.yunbao.live.R; import com.yunbao.live.activity.LiveActivity; @@ -129,6 +132,7 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On GifImageView btn_live; SVGAImageView gift_svga; + String userType; @Override protected int getLayoutId() { @@ -347,6 +351,8 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On isAnchor = obj.getInteger("is_anchor") == 1; mUserBean = JSON.toJavaObject(obj, UserBean.class); + userType = obj.getString("type"); + mToName = obj.getString("user_nicename"); mAvatarUrl = obj.getString("avatar"); mAction = obj.getIntValue("action"); @@ -663,7 +669,7 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class); new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() { @Override - public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk,boolean isSw) { + public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk, boolean isSw) { if (liveBean == null) { return; } @@ -738,9 +744,32 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On } else if (i == R.id.btn_setting) { if (TextUtils.equals(mLiveUid, "uid")) return; setting(); + } else if (i == R.id.btn_pri_msg) { + //私聊 + if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("C") && userType.equals("C")) { + showMsgError(); + return; + } + if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("A") && userType.equals("A")) { + showMsgError(); + return; + } + if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("A") && userType.equals("B")) { + showMsgError(); + return; + } + if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("B") && userType.equals("A")) { + showMsgError(); + return; + } + EventBus.getDefault().post(new MainHomeCommunityToChatEvent().setTargetId(mToUid)); } } + public void showMsgError() { + ToastUtil.show(WordUtil.isNewZh()?"無法聊天,待開發":"Unable to chat, awaiting development"); + } + /** * 设置 diff --git a/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java b/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java index c99610974..110acedd9 100644 --- a/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java @@ -11,6 +11,8 @@ import com.yunbao.common.http.LiveHttpUtil; import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.utils.AppManager; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.live.R; import com.yunbao.live.views.LiveRoomViewHolder; public abstract class AbsLinkMicPkPresenter { @@ -115,7 +117,22 @@ public abstract class AbsLinkMicPkPresenter { } protected void isPKTmp(UserBean u) { - isPK(u); + LiveHttpUtil.livePkCheckLive(IMLoginManager.get(AppManager.getInstance().getMainActivity()).getUserInfo().getId()+"", "", "", new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0 && info.length > 0) { + JSONObject obj = JSON.parseObject(info[0]); + if (obj != null) { + if (obj.getString("ispk").equals("0")) { + isPK(u); + } else { + ToastUtil.show(AppManager.getInstance().getMainActivity().getString(R.string.pking_over)); + } + } + } + } + }); + } protected void onDRPkApplyTmp(UserBean u) { diff --git a/live/src/main/java/com/yunbao/live/views/LiveAudienceViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveAudienceViewHolder.java index fdf3883ba..9a1723c46 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveAudienceViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveAudienceViewHolder.java @@ -25,6 +25,7 @@ import android.widget.ViewFlipper; import androidx.fragment.app.FragmentActivity; import com.lxj.xpopup.XPopup; +import com.yunbao.common.manager.imrongcloud.MessageIMManager; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; @@ -374,6 +375,11 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder { } else { findViewById(R.id.total_image_red_point).setVisibility(View.GONE); } + getMsgCount(); + } + + private void getMsgCount() { + MessageIMManager.get(mContext).resetImUnReadMessageCount(mContext); } public void onGuardRed() { @@ -768,7 +774,7 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder { @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) public void onMessageIMEvent(MessageIMEvent event) { //判断消息中心红点是否已经展示,如果已经展示并且未读消息大于0则不再执行之后的逻辑 - int number = event.getMessage(); + int number = event.getNumber(); if (v_msg_redpoint.getVisibility() == View.VISIBLE && number > 0 || SpUtil.getInstance().getBooleanValue("private_chat_message_switch")) return; if (number > 0) { diff --git a/live/src/main/java/com/yunbao/live/views/LivePlaySwViewHolder.java b/live/src/main/java/com/yunbao/live/views/LivePlaySwViewHolder.java index d72767c8e..d29fb747e 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePlaySwViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePlaySwViewHolder.java @@ -184,6 +184,7 @@ public class LivePlaySwViewHolder extends LiveRoomPlayViewHolder { } public void initSwEngine(String liveUid) { + dr_pk_view.setVisibility(View.GONE); this.liveUid = liveUid; //初始化声网SDK swAuManager = SWAuManager.get(); diff --git a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java index bf75a8e8d..64aeda683 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -31,6 +31,7 @@ import com.lzf.easyfloat.EasyFloat; import com.lzf.easyfloat.enums.ShowPattern; import com.lzf.easyfloat.permission.PermissionUtils; import com.lzf.easyfloat.utils.LifecycleUtils; +import com.yunbao.common.event.LiveMsgWindowsCloseEvent; import com.yunbao.common.manager.imrongcloud.RongcloudIMManager; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.CommonAppConfig; @@ -1556,6 +1557,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe @Override public void onLiveEnd() { + Bus.get().post(new LiveMsgWindowsCloseEvent()); MicStatusManager.getInstance().clear(); endPlay(); if (!CommonAppConfig.LIVE_ROOM_SCROLL) { diff --git a/live/src/main/res/layout/dialog_live_user_bottom_1.xml b/live/src/main/res/layout/dialog_live_user_bottom_1.xml index f3a185349..a70f32bfb 100644 --- a/live/src/main/res/layout/dialog_live_user_bottom_1.xml +++ b/live/src/main/res/layout/dialog_live_user_bottom_1.xml @@ -14,38 +14,6 @@ android:layout_height="50dp" android:orientation="horizontal"> - - - - - - - - - - - - - + + + + + + + + + android:visibility="gone" /> + + diff --git a/live/src/main/res/values-en/strings.xml b/live/src/main/res/values-en/strings.xml index 75ff980bd..843734054 100644 --- a/live/src/main/res/values-en/strings.xml +++ b/live/src/main/res/values-en/strings.xml @@ -117,13 +117,15 @@ Fan group level Of Lv%s Can send this gift Join the fan group can be opened [Join] Join the fan group to open - 全部聊天 - 系統匹配 - 對方主動 + Chat All + Chat All + Suggest chat + System matching + User initiated 看直播%dmin [Read] [Unread] - 發起聊天 + Initiate a chat Progress To do diff --git a/live/src/main/res/values/strings.xml b/live/src/main/res/values/strings.xml index 6e72a609d..fbd77e73b 100644 --- a/live/src/main/res/values/strings.xml +++ b/live/src/main/res/values/strings.xml @@ -116,6 +116,8 @@ 加入粉絲團可開啟【加入】 加入粉絲團可開啟 全部聊天 + 全部聊天 + 推荐聊天 系統匹配 對方主動 看直播%dmin diff --git a/main/src/main/java/com/yunbao/main/activity/PDLiveConversationActivity.java b/main/src/main/java/com/yunbao/main/activity/PDLiveConversationActivity.java index aa9ed9314..3469deb3e 100644 --- a/main/src/main/java/com/yunbao/main/activity/PDLiveConversationActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/PDLiveConversationActivity.java @@ -535,7 +535,8 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl if (!TextUtils.isEmpty(content)) { IMCenter.getInstance().saveTextMessageDraft(Conversation.ConversationType.PRIVATE, targetId, content, null); } - + //关闭对话框后,刷新未读数量 + MessageIMManager.get(mContext).resetImUnReadMessageCount(mContext); EventBus.getDefault().unregister(this); } @@ -560,4 +561,5 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl hideUserCard(); } } + } diff --git a/main/src/main/java/com/yunbao/main/activity/RegisterActivity.java b/main/src/main/java/com/yunbao/main/activity/RegisterActivity.java index 70768fd69..8e6a13fbc 100644 --- a/main/src/main/java/com/yunbao/main/activity/RegisterActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/RegisterActivity.java @@ -471,8 +471,9 @@ public class RegisterActivity extends AbsActivity { mDialog.dismiss(); } if (bean != null) { - netHandler.post(getRandJoinAnchor); -// EventBus.getDefault().post(new RegSuccessEvent()); + //netHandler.post(getRandJoinAnchor); + jumpMain(false, null); + EventBus.getDefault().post(new RegSuccessEvent()); } } }); @@ -488,22 +489,27 @@ public class RegisterActivity extends AbsActivity { HttpClient.getInstance().post("Home.getRandJoinAnchor", "Home.getRandJoinAnchor").params("uid", userInfo.getId()).params("token", userInfo.getToken()).execute(new HttpCallback() { @Override public void onSuccess(int code, String msg, String[] info) { - if (info[0] != null) { - JSONObject obj = JSON.parseObject(info[0]); - IMLoginManager.get(activity).setisNewUserOne(true); - IMLoginManager.get(activity).setNewUserGif(true); - if (obj.containsKey("home_zdy_img_us")) { - home_zdy_img_us = obj.getString("home_zdy_img_us"); - home_zdy_img_cn = obj.getString("home_zdy_img_cn"); + if(info!=null){ + if (info[0] != null) { + JSONObject obj = JSON.parseObject(info[0]); + IMLoginManager.get(activity).setisNewUserOne(true); + IMLoginManager.get(activity).setNewUserGif(true); + if (obj.containsKey("home_zdy_img_us")) { + home_zdy_img_us = obj.getString("home_zdy_img_us"); + home_zdy_img_cn = obj.getString("home_zdy_img_cn"); + } + // gotoLive(obj.getString("anchor_id")); + if (obj.containsKey("home_zdy_pop")) { + NoviceInstructorManager.get(mContext).setHomeZdyPop(obj.getString("home_zdy_pop")); + } + jumpMain(false, obj.getString("anchor_id")); + } else { + jumpMain(false, null); } - // gotoLive(obj.getString("anchor_id")); - if (obj.containsKey("home_zdy_pop")) { - NoviceInstructorManager.get(mContext).setHomeZdyPop(obj.getString("home_zdy_pop")); - } - jumpMain(false, obj.getString("anchor_id")); - } else { + }else{ jumpMain(false, null); } + EventBus.getDefault().post(new RegSuccessEvent()); } }); diff --git a/main/src/main/java/com/yunbao/main/activity/UserHomeActivity.java b/main/src/main/java/com/yunbao/main/activity/UserHomeActivity.java index 6415edf00..527544e9d 100644 --- a/main/src/main/java/com/yunbao/main/activity/UserHomeActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/UserHomeActivity.java @@ -52,6 +52,7 @@ import com.yunbao.common.bean.NewLevelModel; import com.yunbao.common.bean.UserHomeImgBean; import com.yunbao.common.dialog.ImagePreviewDialog; import com.yunbao.common.event.LiveRoomChangeEvent; +import com.yunbao.common.event.MainHomeCommunityToChatEvent; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.CommonHttpUtil; import com.yunbao.common.http.LiveHttpUtil; @@ -167,6 +168,7 @@ public class UserHomeActivity extends AbsActivity { private TextView authorNum; private TextView levelNum; private View top_bg; + private LinearLayout msgLayout; @Override protected int getLayoutId() { @@ -586,6 +588,31 @@ public class UserHomeActivity extends AbsActivity { communityRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false)); communityRecyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER); + msgLayout = findViewById(R.id.msgLayout); + msgLayout.setVisibility(uid.equals(CommonAppConfig.getInstance().getUid())?View.GONE:View.VISIBLE); + msgLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //私聊 + if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("C") && userInfo.getUserHomeTopInfo().getType().equals("C")) { + showMsgError(); + return; + } + if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("A") && userInfo.getUserHomeTopInfo().getType().equals("A")) { + showMsgError(); + return; + } + if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("A") && userInfo.getUserHomeTopInfo().getType().equals("B")) { + showMsgError(); + return; + } + if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("B") && userInfo.getUserHomeTopInfo().getType().equals("A")) { + showMsgError(); + return; + } + EventBus.getDefault().post(new MainHomeCommunityToChatEvent().setTargetId(String.valueOf(userInfo.getUserHomeTopInfo().getUser_id()))); + } + }); findViewById(R.id.back).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -815,6 +842,11 @@ public class UserHomeActivity extends AbsActivity { }); } + public void showMsgError() { + ToastUtil.show(WordUtil.isNewZh()?"無法聊天,待開發":"Unable to chat, awaiting development"); + } + + private void selectImg() { String permission1 = Manifest.permission.READ_EXTERNAL_STORAGE; String permission2 = Manifest.permission.WRITE_EXTERNAL_STORAGE; diff --git a/main/src/main/java/com/yunbao/main/dialog/MainStartDialogFragment.java b/main/src/main/java/com/yunbao/main/dialog/MainStartDialogFragment.java index 755fcf47b..37192a33e 100644 --- a/main/src/main/java/com/yunbao/main/dialog/MainStartDialogFragment.java +++ b/main/src/main/java/com/yunbao/main/dialog/MainStartDialogFragment.java @@ -289,7 +289,7 @@ public class MainStartDialogFragment extends AbsDialogFragment implements View.O @Override public void run() { Intent intent = new Intent(mContext, CommunitySendActivity.class); - startActivity(intent); + mContext.startActivity(intent); /*String mBeautySdkType = CommonAppConfig.getInstance().getBeautySdkType(); if ("2".equals(mBeautySdkType)) { Constants.myIntoIndex = 2; diff --git a/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java b/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java index 5502b9cd2..080ee9794 100644 --- a/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java +++ b/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java @@ -21,17 +21,20 @@ import com.google.gson.Gson; import com.lxj.xpopup.XPopup; import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.bean.VipModel; +import com.yunbao.common.event.LiveMsgWindowsCloseEvent; import com.yunbao.common.http.CommonHttpUtil; import com.yunbao.common.http.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.manager.InstructorRemarkManager; +import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.live.activity.PDLIiveChatActivity; import com.yunbao.live.bean.SearchUserBean; import com.yunbao.live.dialog.PDLIiveChatConversationFragment; +import com.yunbao.live.event.LiveOpenSuccessEvent; import com.yunbao.main.R; import com.yunbao.main.activity.PDLiveConversationActivity; import com.yunbao.main.activity.PDLiveConversationListActivity; @@ -231,6 +234,7 @@ public class ConversationIMListManager { context.runOnUiThread(() -> { Conversation.ConversationType type = Conversation.ConversationType.PRIVATE; RouteUtils.routeToConversationActivity(context, type, userId, null); + Bus.get().post(new LiveMsgWindowsCloseEvent()); }); } conversationIMListHandler.post(getUserBaseinfoRunnable); 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 8398e4e7b..41459f6a9 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java @@ -1,13 +1,23 @@ package com.yunbao.main.views; import android.app.Activity; +import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.graphics.Color; +import android.graphics.drawable.Drawable; import android.os.Handler; import android.text.Editable; +import android.text.Layout; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.TextPaint; import android.text.TextUtils; import android.text.TextWatcher; +import android.text.method.LinkMovementMethod; +import android.text.style.ClickableSpan; +import android.text.style.ImageSpan; import android.util.Log; import android.util.TypedValue; import android.view.KeyEvent; @@ -16,9 +26,13 @@ import android.view.ViewGroup; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; @@ -29,10 +43,14 @@ import com.binioter.guideview.Guide; import com.binioter.guideview.GuideBuilder; import com.facebook.appevents.AppEventsLogger; import com.lxj.xpopup.XPopup; +import com.lxj.xpopup.enums.PopupPosition; import com.opensource.svgaplayer.SVGADrawable; 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.MainMessageRecommendFragment; +import com.yunbao.common.utils.DialogUitl; import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.bean.ImUserInfoModel; @@ -48,11 +66,14 @@ import com.yunbao.common.utils.DeviceUtils; import com.yunbao.common.utils.LiveRoomCheckLivePresenter; import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.SVGAViewUtils; +import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.StringUtil; 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.MsgRecommendPopupView; +import com.yunbao.common.views.MsgSysDelPopupView; import com.yunbao.common.views.weight.ViewClicksAntiShake; import com.yunbao.live.activity.SystemMessageActivity; import com.yunbao.live.bean.ImUserBean; @@ -110,6 +131,18 @@ public class MainMessageViewHolder extends AbsMainViewHolder { private MagicIndicator mIndicator; private List fragmentList; + private ConstraintLayout tabLayout1, tabLayout2, tabLayout3; + private TextView tab1, tab2, tab3; + 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 LinearLayout tabLayouts; + + private int userType = 0; // (0)普通用户 (1)主播A (2)主播B + public MainMessageViewHolder setHomeZdyPop(String homeZdyPop) { this.homeZdyPop = homeZdyPop; if (TextUtils.equals(homeZdyPop, "1")) { @@ -156,6 +189,21 @@ public class MainMessageViewHolder extends AbsMainViewHolder { contacts = findViewById(R.id.news_icon_contacts); more = findViewById(R.id.news_icon_more); search = findViewById(R.id.search); + 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); + + tab1 = findViewById(R.id.tab1); + tab2 = findViewById(R.id.tab2); + tab3 = findViewById(R.id.tab3); + + tab_line1 = findViewById(R.id.tab_line1); + tab_line2 = findViewById(R.id.tab_line2); + tab_line3 = findViewById(R.id.tab_line3); + contacts.setOnClickListener(view -> { //通讯录 RouteUtil.forwardActivity(RouteUtil.PATH_ADDRESSBOOK); @@ -168,6 +216,133 @@ public class MainMessageViewHolder extends AbsMainViewHolder { return i == KeyEvent.KEYCODE_ENTER || i == KeyEvent.KEYCODE_NUMPAD_ENTER; } }); + netHandler = new Handler(); + moreXPopup = new XPopup.Builder(mContext).atView(more); + more.setOnClickListener(view -> { + moreXPopup.asCustom(new MsgMoreDialog(mContext)).show(); + }); + } + + private void initFragment() { + final String[] titles; + fragmentList = new ArrayList<>(); + ViewGroup.LayoutParams params = mIndicator.getLayoutParams(); + if (userType == 0) { //普通用户 + params.width = ViewGroup.LayoutParams.WRAP_CONTENT; + mIndicator.setLayoutParams(params); + titles = new String[]{WordUtil.getNewString(R.string.message_chat_msg_all_an_a)}; + fragmentList.add(new MainMessageChatListFragment(AppManager.getInstance().getMainActivity())); + } else if (userType == 1) {//主播A + params.width = ViewGroup.LayoutParams.MATCH_PARENT; + mIndicator.setLayoutParams(params); + titles = new String[]{WordUtil.getNewString(R.string.message_chat_msg_recommend), WordUtil.getNewString(R.string.message_chat_msg_all_an_a)}; + fragmentList.add(new MainMessageRecommendFragment(AppManager.getInstance().getMainActivity())); + fragmentList.add(new MainMessageChatListFragment(AppManager.getInstance().getMainActivity())); + } else { //主播B + params.width = ViewGroup.LayoutParams.MATCH_PARENT; + mIndicator.setLayoutParams(params); + fragmentList.add(new MainMessageChatListFragment(AppManager.getInstance().getMainActivity())); + fragmentList.add(new MainMessageChatListSystemFragment()); + fragmentList.add(new MainMessageChatListUserFragment()); + titles = new String[]{WordUtil.getNewString(R.string.message_chat_msg_all), WordUtil.getNewString(R.string.message_chat_msg_system), WordUtil.getNewString(R.string.message_chat_msg_user)}; + } + initTabView(); + ToastUtil.showDebug("列表数量x" + fragmentList.size()); + viewPager.setAdapter(new FragmentStateAdapter((FragmentActivity) AppManager.getInstance().getMainActivity()) { + + @Override + public int getItemCount() { + Log.i(TAG, "viewpage 列表 getItemCount: " + fragmentList.size()); + return fragmentList.size(); + } + + @NonNull + @Override + public Fragment createFragment(int i) { + Log.i(TAG, "createFragment: 创建fragment :" + i + " | " + fragmentList.get(i)); + return fragmentList.get(i); + } + }); + if(userType==1){ + viewPager.setCurrentItem(1); + }else{ + viewPager.setCurrentItem(0); + } + viewPager.setUserInputEnabled(false); + ConversationIMListManager.get(mContext).addUserInfoProvider(); + + CommonNavigator commonNavigator = new CommonNavigator(AppManager.getInstance().getMainActivity()); + commonNavigator.setAdjustMode(true); + commonNavigator.setAdapter(new CommonNavigatorAdapter() { + + @Override + public int getCount() { + return titles.length; + } + + @Override + public IPagerTitleView getTitleView(Context context, final int index) { + SimplePagerTitleView simplePagerTitleView = new ColorTransitionPagerTitleView(context); + simplePagerTitleView.setNormalColor(Color.parseColor("#777777")); + simplePagerTitleView.setSelectedColor(Color.parseColor("#333333")); + if (titles.length == 2 && index == 0) { + Drawable drawable = ContextCompat.getDrawable(context, R.mipmap.icon_msg_recommend); + drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); // 设置Drawable的边界 + SpannableString spannableString = new SpannableString(" " + titles[index] + " "); + ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE); + spannableString.setSpan(imageSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + spannableString.setSpan(new ClickableSpan() { + @Override + public void onClick(View widget) { + // 点击事件的处理逻辑 + /*XPopup.Builder builder = new XPopup.Builder(mContext).atView(simplePagerTitleView); + builder.hasShadowBg(false).isLightStatusBar(false).popupPosition(PopupPosition.Top).asCustom(new MsgRecommendPopupView(mContext).show());*/ + } + + @Override + public void updateDrawState(TextPaint ds) { + //super.updateDrawState(ds); + //ds.setUnderlineText(false); + } + }, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + simplePagerTitleView.setText(spannableString); + simplePagerTitleView.setMovementMethod(LinkMovementMethod.getInstance()); // 必须调用此方法 + } else { + simplePagerTitleView.setText(titles[index]); + } + + simplePagerTitleView.setTextSize(15); + simplePagerTitleView.getPaint().setFakeBoldText(true); + simplePagerTitleView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (viewPager != null) { + viewPager.setCurrentItem(index); + } + } + }); + return simplePagerTitleView; + } + + @Override + public IPagerIndicator getIndicator(Context context) { + LinePagerIndicator linePagerIndicator = new LinePagerIndicator(context); + linePagerIndicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT); + linePagerIndicator.setXOffset(DpUtil.dp2px(5)); + linePagerIndicator.setRoundRadius(DpUtil.dp2px(2)); + linePagerIndicator.setColors(Color.parseColor("#EB6FFF"), Color.parseColor("#FF83C6")); + return linePagerIndicator; + } + }); + mIndicator.setNavigator(commonNavigator); + ViewPageIndicatorUtils.bind(mIndicator, viewPager, new ViewPager2.OnPageChangeCallback() { + @Override + public void onPageSelected(int position) { + super.onPageSelected(position); + search.setText(""); + selectTab(position); + } + }); search.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { @@ -189,96 +364,84 @@ public class MainMessageViewHolder extends AbsMainViewHolder { } } }); - netHandler = new Handler(); - moreXPopup = new XPopup.Builder(mContext).atView(more); - more.setOnClickListener(view -> { - moreXPopup.asCustom(new MsgMoreDialog(mContext)).show(); - }); - initFragment(); - initIndicator(); } - private void initFragment() { - fragmentList = new ArrayList<>(); - fragmentList.add(new MainMessageChatListFragment(AppManager.getInstance().getMainActivity())); - fragmentList.add(new MainMessageChatListSystemFragment()); - fragmentList.add(new MainMessageChatListUserFragment()); + private void initTabView() { + relativeLayouts = new ArrayList<>(); + tabTexts = new ArrayList<>(); + tabLine = new ArrayList<>(); - ToastUtil.showDebug("列表数量x" + fragmentList.size()); - viewPager.setAdapter(new FragmentStateAdapter((FragmentActivity) AppManager.getInstance().getMainActivity()) { + relativeLayouts.add(tabLayout1); + relativeLayouts.add(tabLayout2); + relativeLayouts.add(tabLayout3); - @Override - public int getItemCount() { - Log.i(TAG, "viewpage 列表 getItemCount: " + fragmentList.size()); - return fragmentList.size(); - } - - @NonNull - @Override - public Fragment createFragment(int i) { - Log.i(TAG, "createFragment: 创建fragment :" + i + " | " + fragmentList.get(i)); - return fragmentList.get(i); - } - }); - viewPager.setCurrentItem(0); - viewPager.setUserInputEnabled(false); - ConversationIMListManager.get(mContext).addUserInfoProvider(); - } - - private void initIndicator() { - final String[] titles = new String[]{ - WordUtil.getNewString(R.string.message_chat_msg_all), - WordUtil.getNewString(R.string.message_chat_msg_system), - WordUtil.getNewString(R.string.message_chat_msg_user) - }; - CommonNavigator commonNavigator = new CommonNavigator(AppManager.getInstance().getMainActivity()); - commonNavigator.setAdjustMode(true); - commonNavigator.setAdapter(new CommonNavigatorAdapter() { - - @Override - public int getCount() { - return titles.length; - } - - - @Override - public IPagerTitleView getTitleView(Context context, final int index) { - SimplePagerTitleView simplePagerTitleView = new ColorTransitionPagerTitleView(context); - simplePagerTitleView.setNormalColor(Color.parseColor("#777777")); - simplePagerTitleView.setSelectedColor(Color.parseColor("#333333")); - simplePagerTitleView.setText(titles[index]); - simplePagerTitleView.setTextSize(18); - simplePagerTitleView.getPaint().setFakeBoldText(true); - simplePagerTitleView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (viewPager != null) { - viewPager.setCurrentItem(index); + tabTexts.add(tab1); + tabTexts.add(tab2); + tabTexts.add(tab3); + tabLine.add(tab_line1); + tabLine.add(tab_line2); + 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)); + ViewGroup.LayoutParams params = tabLayouts.getLayoutParams(); + params.width = LinearLayout.LayoutParams.WRAP_CONTENT; + tabLayouts.setLayoutParams(params); + } else if (userType == 1) {//主播A + tab_icon.setVisibility(View.VISIBLE); + tab_icon.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + /*XPopup.Builder builder = new XPopup.Builder(mContext).atView(v); + builder.hasShadowBg(false).isLightStatusBar(false).popupPosition(PopupPosition.Top).asCustom(new MsgRecommendPopupView(mContext).show());*/ + XPopup.Builder builder = new XPopup.Builder(mContext).atView(v); + builder.hasShadowBg(false).isDestroyOnDismiss(true).isLightStatusBar(false).popupPosition(PopupPosition.Bottom).asCustom(new MsgRecommendPopupView(mContext, new MsgRecommendPopupView.ItemDelListener() { + @Override + public void onItemDel() { } - } - }); - return simplePagerTitleView; - } + })).show(); + } + }); + 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)); + } else { //主播B + relativeLayouts.get(0).setVisibility(View.VISIBLE); + tabTexts.get(0).setText(WordUtil.getNewString(R.string.message_chat_msg_all)); + relativeLayouts.get(1).setVisibility(View.VISIBLE); + tabTexts.get(1).setText(WordUtil.getNewString(R.string.message_chat_msg_system)); + relativeLayouts.get(2).setVisibility(View.VISIBLE); + tabTexts.get(2).setText(WordUtil.getNewString(R.string.message_chat_msg_user)); + } + for (int i = 0; i < relativeLayouts.size(); i++) { + int finalI = i; + relativeLayouts.get(i).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + selectTab(finalI); + viewPager.setCurrentItem(finalI); + } + }); + } + if(userType==1){ + selectTab(1); + }else{ + selectTab(0); + } + } - @Override - public IPagerIndicator getIndicator(Context context) { - LinePagerIndicator linePagerIndicator = new LinePagerIndicator(context); - linePagerIndicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT); - linePagerIndicator.setXOffset(DpUtil.dp2px(5)); - linePagerIndicator.setRoundRadius(DpUtil.dp2px(2)); - linePagerIndicator.setColors(Color.parseColor("#EB6FFF"), Color.parseColor("#FF83C6")); - return linePagerIndicator; + public void selectTab(int position) { + for (int i = 0; i < relativeLayouts.size(); i++) { + if (position == i) { + tabTexts.get(i).setTextColor(Color.parseColor("#333333")); + tabLine.get(i).setVisibility(View.VISIBLE); + } else { + tabTexts.get(i).setTextColor(Color.parseColor("#777777")); + tabLine.get(i).setVisibility(View.INVISIBLE); } - }); - mIndicator.setNavigator(commonNavigator); - ViewPageIndicatorUtils.bind(mIndicator, viewPager, new ViewPager2.OnPageChangeCallback() { - @Override - public void onPageSelected(int position) { - super.onPageSelected(position); - search.setText(""); - } - }); + } } @Override @@ -292,10 +455,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { MessageGuideView guideView = new MessageGuideView((Activity) mContext); //top_noback GuideBuilder builder = new GuideBuilder(); - builder.setTargetView(topLayout) - .setAlpha(180) - .setHighTargetCorner(20) - .setHighTargetPadding(10); + builder.setTargetView(topLayout).setAlpha(180).setHighTargetCorner(20).setHighTargetPadding(10); builder.setOverlayTarget(true); builder.setAutoDismiss(false); @@ -345,27 +505,31 @@ public class MainMessageViewHolder extends AbsMainViewHolder { Log.i(TAG, "initData: 初始化数据"); //获取一下系统通知 MessageIMManager.get(mContext).getSystemMessages(); - LiveNetManager.get(mContext) - .getIsAnchor(new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(MessageChatIsAnchor data) { - AppManager.runDebugCode(() -> { - more.setVisibility(View.VISIBLE); - }); - if (data.getIsAnchor() == 1) { - more.setVisibility(View.VISIBLE); - viewPager.setUserInputEnabled(true); - mIndicator.setVisibility(View.VISIBLE); - } - IMLoginManager.get(mContext) - .setAnchorB(data.getIsAnchor()); - } - - @Override - public void onError(String error) { - - } + LiveNetManager.get(mContext).getIsAnchor(new com.yunbao.common.http.base.HttpCallback() { + @Override + public void onSuccess(MessageChatIsAnchor data) { + AppManager.runDebugCode(() -> { + more.setVisibility(View.VISIBLE); }); + if (data.getIsAnchor() == 1 && CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("C")) { + userType = 2;//主播B + more.setVisibility(View.VISIBLE); + viewPager.setUserInputEnabled(true); + //mIndicator.setVisibility(View.VISIBLE); + } else if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("C")) { + userType = 1;//主播A + } else { + userType = 0; + } + IMLoginManager.get(mContext).setAnchorB(data.getIsAnchor()); + initFragment(); + } + + @Override + public void onError(String error) { + + } + }); } @@ -405,11 +569,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { MobclickAgent.onEvent(mContext, "information_official_notice", "官方通知"); type = userBean.getType(); netHandler.post(systemNumberRunnable); - mContext.startActivity(new Intent(mContext, SystemMessageActivity.class) - .putExtra("type", userBean.getType()) - .putExtra("uid", "") - .putExtra("title", userBean.getTitle()) - .putExtra("headImg", "")); + mContext.startActivity(new Intent(mContext, SystemMessageActivity.class).putExtra("type", userBean.getType()).putExtra("uid", "").putExtra("title", userBean.getTitle()).putExtra("headImg", "")); }); break; //互動消息 @@ -432,11 +592,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { MobclickAgent.onEvent(mContext, "information_system_interactive", "互動消息"); type = userBean.getType(); netHandler.post(systemNumberRunnable); - mContext.startActivity(new Intent(mContext, SystemMessageActivity.class) - .putExtra("type", userBean.getType()) - .putExtra("uid", "") - .putExtra("title", userBean.getTitle()) - .putExtra("headImg", "")); + mContext.startActivity(new Intent(mContext, SystemMessageActivity.class).putExtra("type", userBean.getType()).putExtra("uid", "").putExtra("title", userBean.getTitle()).putExtra("headImg", "")); }); break; //在線客服 @@ -464,11 +620,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { // WebViewActivity.forward(mContext, userBean.getLink()); RouteUtil.forwardCustomerService(userBean.getLink()); } else { - mContext.startActivity(new Intent(mContext, SystemMessageActivity.class) - .putExtra("type", userBean.getType()) - .putExtra("uid", "") - .putExtra("title", userBean.getTitle()) - .putExtra("headImg", "")); + mContext.startActivity(new Intent(mContext, SystemMessageActivity.class).putExtra("type", userBean.getType()).putExtra("uid", "").putExtra("title", userBean.getTitle()).putExtra("headImg", "")); } }); break; @@ -492,11 +644,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder { MobclickAgent.onEvent(mContext, "information_system_notice", "系统消息"); type = userBean.getType(); netHandler.post(systemNumberRunnable); - mContext.startActivity(new Intent(mContext, SystemMessageActivity.class) - .putExtra("type", userBean.getType()) - .putExtra("uid", "") - .putExtra("title", userBean.getTitle()) - .putExtra("headImg", "")); + mContext.startActivity(new Intent(mContext, SystemMessageActivity.class).putExtra("type", userBean.getType()).putExtra("uid", "").putExtra("title", userBean.getTitle()).putExtra("headImg", "")); }); break; } @@ -675,8 +823,8 @@ public class MainMessageViewHolder extends AbsMainViewHolder { LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class); new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() { @Override - public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk,boolean isSw) { - RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal),isSw); + public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk, boolean isSw) { + RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal), isSw); } @Override diff --git a/main/src/main/res/layout/view_main_message.xml b/main/src/main/res/layout/view_main_message.xml index 4e2b23189..47097b605 100644 --- a/main/src/main/res/layout/view_main_message.xml +++ b/main/src/main/res/layout/view_main_message.xml @@ -301,22 +301,196 @@ android:id="@+id/indicator" android:layout_width="match_parent" android:layout_height="37dp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/line" /> + android:visibility="gone" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> diff --git a/main/src/main/res/mipmap-xxhdpi/icon_msg_recommend.png b/main/src/main/res/mipmap-xxhdpi/icon_msg_recommend.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d9072914e49cd1f4a14658a80ca58f66898be4 GIT binary patch literal 2136 zcmV-e2&eanP)Px-5=lfsR9Hu?SbL0IWfec?+{Zk2OS_>o8ZE*~v)!iDL@P>s5)kW>w%cXzz0+=K zt(q2mBvfPKA4G@nkBWcGV}ES&;bAh z0Mm##6-Cjr0PqA6O_WNdGdp(dm|5s+aDf}KP$+ECT5lnu&!tkSML`gN*1F+wA_B{@ zpi-%v1Ar%^DEfo%`@i0{ZCk0;`&t50O7#Q4PXJ&!B3fe5FbptFvu3+eshmQ@cbORx z(X?&5TL6V&2vHQ(_As*`e+>Y>@49ZW8K_u5!^6W@Boc`%5$zVkh$tQ@A>zN7c^DCM zuIo-UGOm>B0ss#HwgbS2h$tc66t9J0xR;p)*mR?_4FMI4#g$s?hi%)wQ9>gg34%Zo z(L;{oJk`qWbJz3vyo-oCEX!IaUK3E&YIWSQtZ()8^-a#VbqS!+(b4WO4381f)v{S@ z?Q5-jiRcN}b>EA@Wj+%V6V}w!)R!#FdW4AVy4}}^=*#{6{U_#{y9kg{s-2k+8-{Tc zGfV7W4}#$4fq{XSFB3zfV7(~QZqbSN}GMUGk{fWA#UPMG&Dl!NHH#u?4!a;pu)cr=knbV|}oc_?Vwt%N{J7+uKRQo8(*<)`=~eo z08YBDd!2NM8lYS*cQ+#b+%OE%S|97|?A)++?b;xwq;EsSLqxPl)&;=K%#3v6N-CA= z@O{5_Oly4(5jVwErBcdZ=7U7!GIPMpU-LX~829blmuzcmJ1B>lxr&H)IF3_u-~4BA zaM0@L=

W>+ydc0KNeLZH7xva0R?@S|mg+k$Gt@Wcs z)TXsQdiLyD2M--OwA?U^lhS3GSzPzgCTpurUaLe5OG52LMb}Y+!oQOWn%%=gM+jZTyW59PMlgSejV&C`o$`qdnfZB>g9fqT{aXeykOs`RjFN@N_zzzOtSN7q)1vJA5h$TY(xI8)NZK6h(g#KzmHn zyt7r=#~GEp0f1qdi_9z`icR)LHbzE9K53ffbJ9es)#|SV(8g3MH6}CYJj$%&II)c} z4%E=l(6zR0Co`GMB@D2Yca%~;G)?o~x+vI)BO@ap)LIKSUc}6=xURdRm67*zT`Bbs zMC@edFp8p16s@&n$&vyQ^$3Y4qK%iso0*x0hK4#)sg&rlw=ak0*7^1jA|{ymky5F& zrIy6`e17ZsuKKXZ9A?hfxlBv`oXuvJ4*>Wr z5v`N{!_42yWHP^~0g?(S6bi2ZK&OT`2QhF6UU5r6k)IN@4f!-+yH)m3kHtYm|kV{|x|Z z;#j~ept^2*9ubpuUggXR$oVAye#^3UFO=j<{wSsHLd1JS*E91^CnqQOWwY5DFKzS) z{UxGtp(avUK@jY99Otgty%zxz+F;wZXtEm@DuX1CR;^kkmkp8QIPV~0!#O7}JaFK^ z3d^!YXf79WA4QP>+b~zfUecL!xtwV8i-ckj1e?0Lx_%eOvs<-+@$qr<^y$;LBH~3t z(KO9<^VMs^Q6cIz2!aO_iNsC9Q|fU(CY2b+w;O>{N{LGSEHi)Gw(U)`Qrh?ZXU^-s zuQzI>v9n85EF%6)#)^Ov7i+DBWW7m5`?c2jW|s{_HEHni%@chnXgDDlQsT4?>a^#l_=pK%nHJ|Ft-FG z2SrGhN~N7d^mzbSpGu|7dL=frJ9}YOE|^q%*Y2w*>*3H6pw^nM_`V zh#v=lTZ!mX%-kg*5p4(nQe`h_txquXu^1e=ElctM O0000 Date: Sat, 27 Jul 2024 11:14:30 +0800 Subject: [PATCH 05/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=BA=E5=B0=91?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=E8=AF=B7=E6=B1=82=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E4=B8=8B=E6=A0=87=E8=B6=8A=E7=95=8C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbsMainMessageChatListFragment.java | 21 ++++++++++++------- .../yunbao/common/http/CommonHttpUtil.java | 6 ++++++ config.gradle | 2 +- .../live/dialog/LiveUserDialogFragment.java | 7 +++++++ .../main/activity/UserHomeActivity.java | 15 +++++++++---- 5 files changed, 39 insertions(+), 12 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java b/common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java index e17e9d1af..41f81862a 100644 --- a/common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java +++ b/common/src/main/java/com/yunbao/common/fragment/AbsMainMessageChatListFragment.java @@ -46,9 +46,9 @@ import io.rong.imlib.model.UserInfo; public abstract class AbsMainMessageChatListFragment extends Fragment { private static final String TAG = "全部聊天"; - public RecyclerView recyclerView; - public MainConversationListAdapter mAdapter; - public SmartRefreshLayout refreshLayout; + public RecyclerView recyclerView; + public MainConversationListAdapter mAdapter; + public SmartRefreshLayout refreshLayout; public void setAdapter(MainConversationListAdapter mAdapter) { this.mAdapter = mAdapter; @@ -136,7 +136,7 @@ public abstract class AbsMainMessageChatListFragment extends Fragment { }); } - public void loadLiveOnlineStatus(List srcList, OnRecyclerListRefreshListener> onRefreshListener){ + public void loadLiveOnlineStatus(List srcList, OnRecyclerListRefreshListener> onRefreshListener) { List uids = new ArrayList<>(); isNet = true; for (BaseUiConversation conversation : srcList) { @@ -148,10 +148,17 @@ public abstract class AbsMainMessageChatListFragment extends Fragment { CommonHttpUtil.getUserOnline(String.join(",", uids), new com.yunbao.common.http.HttpCallback() { @Override public void onSuccess(int code, String msg, String[] info) { - if(code==0&&info!=null){ + if (code == 0 && info != null) { List listUserBean = JSON.parseArray(Arrays.toString(info), MsgOnlineStatusBean.class); - for (int i = 0; i Date: Sat, 27 Jul 2024 12:13:23 +0800 Subject: [PATCH 06/14] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=A1=B5=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/src/main/java/com/yunbao/main/activity/MainActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/main/src/main/java/com/yunbao/main/activity/MainActivity.java b/main/src/main/java/com/yunbao/main/activity/MainActivity.java index 1895107f0..b4eef41fa 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainActivity.java @@ -160,6 +160,7 @@ import io.reactivex.disposables.Disposable; import io.rong.imkit.RongIM; import io.rong.imkit.config.RongConfigCenter; import io.rong.imkit.notification.NotificationConfig; +import io.rong.imkit.utils.RouteUtils; import io.rong.imlib.RongCoreClient; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; @@ -1542,7 +1543,8 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene */ @Subscribe(threadMode = ThreadMode.MAIN) public void onMainHomeCommunityToChatEvent(MainHomeCommunityToChatEvent model) { - ConversationIMListManager.get(mContext).jumpConversation(mContext, model.getTargetId()); + // ConversationIMListManager.get(mContext).jumpConversation(mContext, model.getTargetId()); + RouteUtils.routeToConversationActivity(mContext, Conversation.ConversationType.PRIVATE,model.getTargetId()); } /** From b37d278ae43fb9296e4bdab1a91bef22d7313726 Mon Sep 17 00:00:00 2001 From: Martin <13046765170@163.com> Date: Mon, 29 Jul 2024 13:28:50 +0800 Subject: [PATCH 07/14] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=85=B3=E6=92=AD?= =?UTF-8?q?=E9=97=AA=E9=80=80=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/live/activity/LiveActivity.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java index 1ba93ce68..4e5e7d611 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java @@ -1759,7 +1759,6 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL protected void release() { EventBus.getDefault().unregister(this); LiveHttpUtil.cancel(LiveHttpConsts.SEND_DANMU); - LoadDian9TuUtil.clearBitmap(); if (mKeyBoardHeightUtil != null) { mKeyBoardHeightUtil.release(); } @@ -1808,6 +1807,11 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL Constants.isSend = "0"; } + private void claerBitmap(){ + LoadDian9TuUtil.clearBitmap(); + } + + /** * 显示个人资料弹窗 */ @@ -1865,6 +1869,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL @Override protected void onDestroy() { release(); + claerBitmap(); super.onDestroy(); } From 60e82fa8e4478d97defaf63dc9e02c651532227b Mon Sep 17 00:00:00 2001 From: Martin <13046765170@163.com> Date: Mon, 29 Jul 2024 13:45:24 +0800 Subject: [PATCH 08/14] =?UTF-8?q?=E4=B8=BB=E6=92=AD=E7=AB=AF=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E5=A4=A9=E6=A2=AF=E8=B5=9B=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/live/activity/LiveRyAnchorActivity.java | 3 +++ .../java/com/yunbao/live/activity/LiveSwAnchorActivity.java | 3 +++ .../main/java/com/yunbao/live/views/PortraitLiveManager.java | 3 +++ 3 files changed, 9 insertions(+) diff --git a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java index f7ed22632..5c5aed430 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java @@ -883,6 +883,9 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl if(mLiveRoomViewHolder!=null){ mLiveRoomViewHolder.initPrankProgress(2); mLiveRoomViewHolder.sendMsgPrank(); + + //初始化天梯数据 + mLiveRoomViewHolder.initRankPKInfo(mLiveUid,""); } } diff --git a/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java index c5ac1a517..255b0acc4 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java @@ -877,6 +877,9 @@ public class LiveSwAnchorActivity extends LiveActivity implements LiveFunctionCl if(mLiveRoomViewHolder!=null){ mLiveRoomViewHolder.initPrankProgress(2); mLiveRoomViewHolder.sendMsgPrank(); + + //初始化天梯数据 + mLiveRoomViewHolder.initRankPKInfo(mLiveUid,""); } mLiveSwLinkMicPkPresenter.setmLiveRoomViewHolder(mLiveRoomViewHolder); } diff --git a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java index 64aeda683..c36165831 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -815,6 +815,9 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe upDataPkScore(pkInfo.getJSONArray("userlist"), pkInfo.getIntValue("drpk_time")); isShowPrank = false; + }else{ + //初始化天梯赛数据(不在pk过程中) + mLiveRoomViewHolder.initRankPKInfo(mLiveUid,""); } if (data.getEnterRoomInfo().getGuard() != null) { if (mLiveRoomViewHolder != null) { From 59712d0da9899cf08f651199310860b6931dd20c Mon Sep 17 00:00:00 2001 From: Martin <13046765170@163.com> Date: Mon, 29 Jul 2024 14:04:44 +0800 Subject: [PATCH 09/14] =?UTF-8?q?=E4=BC=98=E5=8C=96PK=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E4=B8=AD=E5=85=B3=E6=92=AD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/live/activity/LiveSwAnchorActivity.java | 1 + .../java/com/yunbao/live/views/LivePushSwViewHolder.java | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java index 255b0acc4..850153473 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java @@ -1000,6 +1000,7 @@ public class LiveSwAnchorActivity extends LiveActivity implements LiveFunctionCl } if (mLivePushViewHolder != null) { + mLivePushViewHolder.closeLive(); mLivePushViewHolder.release(); } if (mLiveLinkMicPresenter != null) { diff --git a/live/src/main/java/com/yunbao/live/views/LivePushSwViewHolder.java b/live/src/main/java/com/yunbao/live/views/LivePushSwViewHolder.java index 2c124fad2..d281ec6a8 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePushSwViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePushSwViewHolder.java @@ -666,6 +666,13 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX } } + public void closeLive(){ + if (swManager != null) { + swManager.exitChannelAll(); + } + } + + public interface onDrPkJoinSuccessListener{ void joinSuccess1(); void joinSuccess2(); From 807827564be35df043236b46cd187eded504f392 Mon Sep 17 00:00:00 2001 From: Martin <13046765170@163.com> Date: Mon, 29 Jul 2024 16:52:57 +0800 Subject: [PATCH 10/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8D=95=E4=BA=BAPK?= =?UTF-8?q?=EF=BC=8C=E5=BC=B9=E5=87=BA=E5=A4=9A=E4=B8=AA=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java | 1 + 1 file changed, 1 insertion(+) diff --git a/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java b/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java index 110acedd9..f5785d45e 100644 --- a/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java @@ -59,6 +59,7 @@ public abstract class AbsLinkMicPkPresenter { if (u.isRandomPk()) { showPkDialogTmp(u); } else { + mIsApplyDialogShow = true; showApplyDialogTmp(u); } } From c3ffb658c8189ad2476e72fc4498541dc151d5b1 Mon Sep 17 00:00:00 2001 From: Martin <13046765170@163.com> Date: Mon, 29 Jul 2024 18:28:35 +0800 Subject: [PATCH 11/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8D=95=E4=BA=BAPK?= =?UTF-8?q?=EF=BC=8C=E5=BC=B9=E5=87=BA=E5=A4=9A=E4=B8=AA=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../live/adapter/FreePkRecyclerAdapter.java | 156 +++++++++--------- .../live/presenter/AbsLinkMicPkPresenter.java | 1 - .../presenter/LiveSwLinkMicPkPresenter.java | 3 - 3 files changed, 79 insertions(+), 81 deletions(-) diff --git a/live/src/main/java/com/yunbao/live/adapter/FreePkRecyclerAdapter.java b/live/src/main/java/com/yunbao/live/adapter/FreePkRecyclerAdapter.java index 4e255eded..24633465c 100644 --- a/live/src/main/java/com/yunbao/live/adapter/FreePkRecyclerAdapter.java +++ b/live/src/main/java/com/yunbao/live/adapter/FreePkRecyclerAdapter.java @@ -25,6 +25,7 @@ import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.utils.AppManager; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; import com.yunbao.live.R; import com.yunbao.live.activity.LiveRyAnchorActivity; import com.yunbao.live.activity.LiveSwAnchorActivity; @@ -129,85 +130,54 @@ public class FreePkRecyclerAdapter extends RefreshAdapter { mAvatar = itemView.findViewById(R.id.item_avatar); mPkStatus = itemView.findViewById(R.id.item_pk); mFollow = itemView.findViewById(R.id.item_follow); - mPkStatus.setOnClickListener(v -> { - RandomPkUserBean bean = (RandomPkUserBean) itemView.getTag(); - if (bean.isPk()) { - ToastUtil.show(mContext.getString(R.string.free_pk_user_pking)); - return; - } - if (freePkNum == 0 && mDrPkNum == -1) { - ToastUtil.show(mContext.getString(R.string.free_pk_num_null)); - return; - } - //检查自己是不是在PK中 - LiveHttpUtil.livePkCheckLive(IMLoginManager.get(AppManager.getInstance().getMainActivity()).getUserInfo().getId() + "", "", "", new com.yunbao.common.http.HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0 && info.length > 0) { - JSONObject obj = JSON.parseObject(info[0]); - if (obj != null) { - if(mDrPkNum!=-1){ - LiveHttpUtil.getMicList(liveUid, 0, new com.yunbao.common.http.HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - System.out.println("code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); - //非0认为未开通连麦权限 - if (code != 0) { - if (mDrPkNum <= 0) { - if (WordUtil.isNewZh()) { - ToastUtil.show("多人次數已用完"); - } else { - ToastUtil.show("Multiple times have been used up"); - } - return; - } - yaoqing.put(bean.getId(), bean.getId()); - if (yaoqing.size() < 5) { - if(mContext instanceof LiveSwAnchorActivity){ - ((LiveSwAnchorActivity) mContext).linkDrMicAnchorApply(bean.getId(), bean.getId()); - }else{ - ((LiveRyAnchorActivity) mContext).linkDrMicAnchorApply(bean.getId(), bean.getId()); - } - } else { - ToastUtil.show(WordUtil.isNewZh() ? "多人PK最大參與人數為4人" : "The maximum number of participants in a multiplayer PK is 4 people"); - } - if (freePkRecyclerListener != null) { - freePkRecyclerListener.onClose(); - } - - } else { - if (WordUtil.isNewZh()) { - ToastUtil.show("請先關閉語音連麥"); - } else { - ToastUtil.show("Please disable the voice connection first"); - } - } - } - }); - }else{ - if (TextUtils.equals(obj.getString("ispk"), "0")) {//自己不在PK,可以发起邀请 + ViewClicksAntiShake.clicksAntiShake(mPkStatus, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + RandomPkUserBean bean = (RandomPkUserBean) itemView.getTag(); + if (bean.isPk()) { + ToastUtil.show(mContext.getString(R.string.free_pk_user_pking)); + return; + } + if (freePkNum == 0 && mDrPkNum == -1) { + ToastUtil.show(mContext.getString(R.string.free_pk_num_null)); + return; + } + //检查自己是不是在PK中 + LiveHttpUtil.livePkCheckLive(IMLoginManager.get(AppManager.getInstance().getMainActivity()).getUserInfo().getId() + "", "", "", new com.yunbao.common.http.HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0 && info.length > 0) { + JSONObject obj = JSON.parseObject(info[0]); + if (obj != null) { + if(mDrPkNum!=-1){ LiveHttpUtil.getMicList(liveUid, 0, new com.yunbao.common.http.HttpCallback() { @Override public void onSuccess(int code, String msg, String[] info) { System.out.println("code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); //非0认为未开通连麦权限 if (code != 0) { - if (mDrPkNum == -1) { + if (mDrPkNum <= 0) { if (WordUtil.isNewZh()) { - ToastUtil.show("邀请 " + bean.getUserNiceName() + " 发送成功"); + ToastUtil.show("多人次數已用完"); } else { - ToastUtil.show("invite " + bean.getUserNiceName() + " successful"); - } - mOnItemClickListener.onItemClick(bean, -1); - if(mContext instanceof LiveSwAnchorActivity){ - ((LiveSwAnchorActivity) mContext).linkMicAnchorApply(bean.getId(), bean.getId(), - false); - }else{ - ((LiveRyAnchorActivity) mContext).linkMicAnchorApply(bean.getId(), bean.getId(), - ((LiveRyAnchorActivity) mContext).buildLinkMicJSON().toString() - ); + ToastUtil.show("Multiple times have been used up"); } + return; } + yaoqing.put(bean.getId(), bean.getId()); + if (yaoqing.size() < 5) { + if(mContext instanceof LiveSwAnchorActivity){ + ((LiveSwAnchorActivity) mContext).linkDrMicAnchorApply(bean.getId(), bean.getId()); + }else{ + ((LiveRyAnchorActivity) mContext).linkDrMicAnchorApply(bean.getId(), bean.getId()); + } + } else { + ToastUtil.show(WordUtil.isNewZh() ? "多人PK最大參與人數為4人" : "The maximum number of participants in a multiplayer PK is 4 people"); + } + if (freePkRecyclerListener != null) { + freePkRecyclerListener.onClose(); + } + } else { if (WordUtil.isNewZh()) { ToastUtil.show("請先關閉語音連麥"); @@ -218,19 +188,51 @@ public class FreePkRecyclerAdapter extends RefreshAdapter { } }); }else{ - if (WordUtil.isNewZh()) { - ToastUtil.show("請先關閉PK"); - } else { - ToastUtil.show("Please disable the PK"); + if (TextUtils.equals(obj.getString("ispk"), "0")) {//自己不在PK,可以发起邀请 + LiveHttpUtil.getMicList(liveUid, 0, new com.yunbao.common.http.HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + System.out.println("code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); + //非0认为未开通连麦权限 + if (code != 0) { + if (mDrPkNum == -1) { + if (WordUtil.isNewZh()) { + ToastUtil.show("邀请 " + bean.getUserNiceName() + " 发送成功"); + } else { + ToastUtil.show("invite " + bean.getUserNiceName() + " successful"); + } + mOnItemClickListener.onItemClick(bean, -1); + if(mContext instanceof LiveSwAnchorActivity){ + ((LiveSwAnchorActivity) mContext).linkMicAnchorApply(bean.getId(), bean.getId(), + false); + }else{ + ((LiveRyAnchorActivity) mContext).linkMicAnchorApply(bean.getId(), bean.getId(), + ((LiveRyAnchorActivity) mContext).buildLinkMicJSON().toString() + ); + } + } + } else { + if (WordUtil.isNewZh()) { + ToastUtil.show("請先關閉語音連麥"); + } else { + ToastUtil.show("Please disable the voice connection first"); + } + } + } + }); + }else{ + if (WordUtil.isNewZh()) { + ToastUtil.show("請先關閉PK"); + } else { + ToastUtil.show("Please disable the PK"); + } } } } } } - } - }); - - + }); + } }); mFollow.setOnClickListener(v -> { RandomPkUserBean bean = (RandomPkUserBean) itemView.getTag(); diff --git a/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java b/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java index f5785d45e..110acedd9 100644 --- a/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java @@ -59,7 +59,6 @@ public abstract class AbsLinkMicPkPresenter { if (u.isRandomPk()) { showPkDialogTmp(u); } else { - mIsApplyDialogShow = true; showApplyDialogTmp(u); } } diff --git a/live/src/main/java/com/yunbao/live/presenter/LiveSwLinkMicPkPresenter.java b/live/src/main/java/com/yunbao/live/presenter/LiveSwLinkMicPkPresenter.java index ee7cf0d6e..5504ffff0 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveSwLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveSwLinkMicPkPresenter.java @@ -767,7 +767,6 @@ public class LiveSwLinkMicPkPresenter extends AbsLinkMicPkPresenter implements V @Override public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { Log.e("tx", "aaa" + errorCode.toString()); - ToastUtil.show(errorCode.code + ":" + errorCode.msg); } }); @@ -801,7 +800,6 @@ public class LiveSwLinkMicPkPresenter extends AbsLinkMicPkPresenter implements V @Override public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { Log.e("tx", "aaa" + errorCode.toString()); - ToastUtil.show(errorCode.code + ":" + errorCode.msg); } }); } @@ -829,7 +827,6 @@ public class LiveSwLinkMicPkPresenter extends AbsLinkMicPkPresenter implements V @Override public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { Log.e("tx", "aaa" + errorCode.toString()); - ToastUtil.show(errorCode.code + ":" + errorCode.msg); } }); } From f157a5862d0d753836e7898a0090b2fe29882e4e Mon Sep 17 00:00:00 2001 From: Martin <13046765170@163.com> Date: Thu, 1 Aug 2024 13:08:08 +0800 Subject: [PATCH 12/14] =?UTF-8?q?=E5=90=88=E5=B9=B66.8.0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FaceUnity/src/main/res/values/strings.xml | 3 + IAP6Helper/src/main/AndroidManifest.xml | 1 + SVGAlibrary/build.gradle | 37 + SVGAlibrary/proguard-rules.pro | 17 + SVGAlibrary/src/main/AndroidManifest.xml | 8 + .../svgaplayer/IClickAreaListener.kt | 9 + .../com/opensource/svgaplayer/SVGACache.kt | 119 + .../com/opensource/svgaplayer/SVGACallback.kt | 13 + .../svgaplayer/SVGAClickAreaListener.kt | 9 + .../com/opensource/svgaplayer/SVGADrawable.kt | 106 + .../svgaplayer/SVGADynamicEntity.kt | 153 ++ .../opensource/svgaplayer/SVGAImageView.kt | 329 +++ .../com/opensource/svgaplayer/SVGAParser.kt | 565 +++++ .../com/opensource/svgaplayer/SVGAPlayer.kt | 19 + .../opensource/svgaplayer/SVGASoundManager.kt | 194 ++ .../opensource/svgaplayer/SVGAVideoEntity.kt | 347 +++ .../bitmap/BitmapSampleSizeCalculator.kt | 33 + .../bitmap/SVGABitmapByteArrayDecoder.kt | 16 + .../svgaplayer/bitmap/SVGABitmapDecoder.kt | 35 + .../bitmap/SVGABitmapFileDecoder.kt | 16 + .../svgaplayer/drawer/SGVADrawer.kt | 53 + .../svgaplayer/drawer/SVGACanvasDrawer.kt | 559 +++++ .../svgaplayer/entities/SVGAAudioEntity.kt | 24 + .../svgaplayer/entities/SVGAPathEntity.kt | 100 + .../entities/SVGAVideoShapeEntity.kt | 356 +++ .../entities/SVGAVideoSpriteEntity.kt | 60 + .../entities/SVGAVideoSpriteFrameEntity.kt | 94 + .../svgaplayer/proto/AudioEntity.java | 258 +++ .../svgaplayer/proto/FrameEntity.java | 259 +++ .../opensource/svgaplayer/proto/Layout.java | 205 ++ .../svgaplayer/proto/MovieEntity.java | 265 +++ .../svgaplayer/proto/MovieParams.java | 230 ++ .../svgaplayer/proto/ShapeEntity.java | 1503 ++++++++++++ .../svgaplayer/proto/SpriteEntity.java | 202 ++ .../svgaplayer/proto/Transform.java | 251 ++ .../com/opensource/svgaplayer/utils/Pools.kt | 102 + .../svgaplayer/utils/SVGAScaleInfo.kt | 146 ++ .../svgaplayer/utils/SVGAStructs.kt | 11 + .../svgaplayer/utils/log/DefaultLogCat.kt | 28 + .../svgaplayer/utils/log/ILogger.kt | 12 + .../svgaplayer/utils/log/LogUtils.kt | 57 + .../svgaplayer/utils/log/SVGALogger.kt | 40 + SVGAlibrary/src/main/res/values/attrs.xml | 16 + SVGAlibrary/src/main/res/values/strings.xml | 3 + Share/src/main/res/values-en/strings.xml | 16 - Share/src/main/res/values-zh/strings.xml | 18 + Share/src/main/res/values/strings.xml | 2 + TabLayout/build.gradle | 37 + TabLayout/consumer-rules.pro | 0 TabLayout/proguard-rules.pro | 21 + TabLayout/src/main/AndroidManifest.xml | 2 + .../com/angcyo/tablayout/AbsDslDrawable.kt | 200 ++ .../com/angcyo/tablayout/DslBadgeDrawable.kt | 275 +++ .../angcyo/tablayout/DslGradientDrawable.kt | 306 +++ .../java/com/angcyo/tablayout/DslGravity.kt | 215 ++ .../java/com/angcyo/tablayout/DslSelector.kt | 438 ++++ .../java/com/angcyo/tablayout/DslTabBadge.kt | 222 ++ .../java/com/angcyo/tablayout/DslTabBorder.kt | 279 +++ .../com/angcyo/tablayout/DslTabDivider.kt | 153 ++ .../com/angcyo/tablayout/DslTabHighlight.kt | 118 + .../com/angcyo/tablayout/DslTabIndicator.kt | 931 ++++++++ .../java/com/angcyo/tablayout/DslTabLayout.kt | 2042 +++++++++++++++++ .../angcyo/tablayout/DslTabLayoutConfig.kt | 526 +++++ .../com/angcyo/tablayout/ITabIndicatorDraw.kt | 22 + .../main/java/com/angcyo/tablayout/LibEx.kt | 334 +++ .../com/angcyo/tablayout/ViewPagerDelegate.kt | 21 + .../main/res/values/attr_dsl_tab_layout.xml | 299 +++ app/build.gradle | 9 +- app/proguard-rules.pro | 4 + app/src/main/AndroidManifest.xml | 3 + .../java/com/shayu/phonelive/AppContext.java | 2 + .../com/shayu/phonelive/NeverCrashUtils.java | 2 - .../phonelive/activity/LauncherActivity.java | 1 + common/build.gradle | 10 +- common/proguard-rules.pro | 3 + .../src/main/assets/gift_live_naming_bg.svga | Bin 0 -> 145208 bytes .../assets/gift_live_naming_title_cn.svga | Bin 0 -> 6935 bytes .../assets/gift_live_naming_title_en.svga | Bin 0 -> 6432 bytes .../assets/gift_wall_gift_info_light.svga | Bin 0 -> 1145793 bytes .../src/main/assets/gift_wall_light_up.svga | Bin 0 -> 221514 bytes .../java/com/yunbao/common/Constants.java | 2 + .../yunbao/common/activity/AbsActivity.java | 24 + .../common/activity/WebViewActivity.java | 4 +- .../yunbao/common/adapter/BaseAdapter.java | 6 +- .../adapter/GiftWallAchieveAdapter.java | 88 + .../GiftWallGiftInfoListItemAdapter.java | 159 ++ .../adapter/GiftWallMainTab1List2Adapter.java | 213 ++ .../adapter/GiftWallMainTab2ListAdapter.java | 271 +++ .../GiftWallTab2GiftInfoListItemAdapter.java | 91 + .../adapter/InteractionGamesAdapter.java | 6 +- .../adapter/LiveNewRoleFunGamesAdapter.java | 7 +- .../LiveNewRoleInteractionGamesAdapter.java | 15 +- .../adapter/LiveNewRolerPopupAdapter.java | 7 +- .../adapter/NewRoleFunGamesAdapter.java | 6 +- .../yunbao/common/adapter/SudGameAdapter.java | 70 + .../yunbao/common/bean/BanDownLiveEvent.java | 47 + .../yunbao/common/bean/CheckLiveModel.java | 1 - .../com/yunbao/common/bean/ConfigBean.java | 1 - .../common/bean/GiftNamingInfoModel.java | 33 +- .../com/yunbao/common/bean/GiftWallBean.java | 261 +++ .../common/bean/GiftWallForUserBean.java | 114 + .../yunbao/common/bean/GiftWallInfoBean.java | 331 +++ .../bean/GiftWallMainTab2ClassicInfoBean.java | 448 ++++ .../yunbao/common/bean/GiftWallTab2Bean.java | 312 +++ .../yunbao/common/bean/GuardPriceModel.java | 24 + .../common/bean/LiveAnchorCallMeModel.java | 12 +- .../com/yunbao/common/bean/LiveGiftBean.java | 33 +- .../com/yunbao/common/bean/OpenAdModel.java | 3 +- .../yunbao/common/bean/SudGameInfoBean.java | 60 + .../yunbao/common/bean/SudGameScoreBean.java | 60 + .../com/yunbao/common/bean/SudSettleBean.java | 71 + .../yunbao/common/bean/UserMedalModel.java | 30 +- .../LiveGifWallAchieveWearTransformer.java | 75 + .../dialog/AbsDialogCenterPopupWindow.java | 25 + .../common/dialog/AbsDialogPopupWindow.java | 25 + .../common/dialog/GiftWallAchieveDialog.java | 166 ++ .../dialog/GiftWallAchieveWearDialog.java | 210 ++ .../yunbao/common/dialog/GiftWallDialog.java | 228 ++ .../common/dialog/GiftWallGiftInfoDialog.java | 478 ++++ .../GiftWallMainTab1List2SpinnerDialog.java | 60 + .../dialog/GiftWallMainTab1TipsDialog.java | 48 + .../GiftWallMainTab2ClassicInfoDialog.java | 229 ++ .../common/dialog/GiftWallRuleDialog.java | 106 + .../dialog/GiftWallTab2List2Dialog.java | 98 + .../dialog/GuardBuyCouponTipsDialog.java | 80 + .../common/dialog/GuardBuyTipsNewDialog.java | 44 + .../common/dialog/OrderLevelPopupWindow.java | 113 +- .../common/dialog/SudGameDoubleDialog.java | 187 ++ .../common/dialog/SudGameMultipleDialog.java | 124 + .../yunbao/common/dialog/SudLoadDialog.java | 96 + .../event/CheckRemainingBalanceEvent.java | 21 + .../common/event/ClosePopupDialogEvent.java | 22 + .../fragment/GiftWallMainTab1Fragment.java | 268 +++ .../fragment/GiftWallMainTab2Fragment.java | 278 +++ .../com/yunbao/common/http/LiveHttpUtil.java | 3 +- .../com/yunbao/common/http/PDLiveApi.java | 83 +- .../common/http/live/LiveNetManager.java | 258 ++- .../yunbao/common/manager/IMLoginManager.java | 4 +- .../com/yunbao/common/pay/hw/HwBuilder.java | 8 +- .../yunbao/common/sud/BaseGameViewModel.java | 15 + .../common/sud/QuickStartGameViewModel.java | 105 +- .../sud/decorator/SudFSMMGDecorator.java | 7 +- .../common/sud/state/SudMGPMGState.java | 22 + .../utils/AndroidBug5497Workaround.java | 1 - .../com/yunbao/common/utils/AppManager.java | 2 +- .../com/yunbao/common/utils/GoogleUtils.java | 31 +- .../utils/JavascriptInterfaceUtils.java | 6 +- .../main/java/com/yunbao/common/utils/L.java | 6 + .../yunbao/common/utils/SVGAViewUtils.java | 9 +- .../java/com/yunbao/common/utils/SpUtil.java | 43 +- .../common/views/CustomEllipsizeTextView.java | 46 + ...InteractionGamesChildBottomViewHolder.java | 67 + .../InteractionGamesChildViewHolder.java | 24 +- .../views/LiveNewRoleFunGamesViewHolder.java | 9 +- ...LiveNewRoleInteractionGamesViewHolder.java | 8 +- .../LiveNewRoleRigtsInterestsViewHolder.java | 11 +- .../yunbao/common/views/LiveSudGamePopup.java | 88 +- .../views/NewRoleFunGamesChildViewHolder.java | 6 +- .../views/RigtsInterestsViewHolder.java | 2 +- .../views/SudGameUserListViewHolder.java | 10 +- .../common/views/weight/NobleNoticeView.java | 19 +- .../main/res/drawable/anim_loading_double.xml | 6 + .../res/drawable/anim_loading_multiple.xml | 6 + .../res/drawable/bg_live_sud_game_top_new.xml | 2 +- .../main/res/drawable/bg_live_sud_list.xml | 2 +- .../drawable/dialog_live_sud_game_name_bg.xml | 5 + .../gift_wall_achieve_wear_disable.xml | 5 + .../drawable/gift_wall_achieve_wear_sure.xml | 5 + .../gift_wall_gift_info_bottom_btn_tips.xml | 14 + .../res/drawable/gift_wall_gift_info_btn.xml | 13 + .../drawable/gift_wall_gift_info_btn_un.xml | 13 + .../drawable/gift_wall_gift_info_lighten.xml | 13 + .../gift_wall_gift_info_list_btn_down.xml | 13 + .../gift_wall_gift_info_list_btn_up.xml | 13 + .../drawable/gift_wall_gift_info_progres.xml | 23 + .../gift_wall_gift_info_un_lighten.xml | 13 + .../gift_wall_main_tab_list_item_progres.xml | 23 + .../res/drawable/gift_wall_man_tab2_dsl.xml | 11 + .../drawable/gift_wall_man_tab_list_title.xml | 8 + .../res/drawable/order_level_progress_bg.xml | 2 +- .../src/main/res/drawable/shape_sub_rank.xml | 6 + .../src/main/res/layout/activity_sud_game.xml | 47 +- .../src/main/res/layout/dialog_gift_wall.xml | 134 ++ .../res/layout/dialog_gift_wall_achieve.xml | 93 + .../layout/dialog_gift_wall_achieve_wear.xml | 98 + .../dialog_gift_wall_achieve_wear_item.xml | 37 + .../res/layout/dialog_gift_wall_gift_info.xml | 385 ++++ ...alog_gift_wall_main_tab1_list2_spinner.xml | 39 + .../dialog_gift_wall_main_tab1_tips.xml | 23 + .../main/res/layout/dialog_gift_wall_rule.xml | 53 + .../dialog_gift_wall_tab2_classic_info.xml | 490 ++++ .../layout/dialog_gift_wall_tab2_list2.xml | 126 + .../layout/dialog_guard_buy_coupon_tips.xml | 88 + .../main/res/layout/dialog_live_sud_game.xml | 180 +- .../src/main/res/layout/dialog_sub_double.xml | 201 ++ .../main/res/layout/dialog_sub_multiple.xml | 82 + .../src/main/res/layout/dialog_sud_load.xml | 65 + .../layout/fragment_gift_wall_man_tab_1.xml | 296 +++ .../layout/fragment_gift_wall_man_tab_2.xml | 215 ++ .../item_dialog_gift_wall_gift_info.xml | 101 + .../item_dialog_gift_wall_tab2_gift_info.xml | 84 + .../layout/item_gift_wall_man_tab1_list_1.xml | 71 + .../layout/item_gift_wall_man_tab1_list_2.xml | 79 + .../layout/item_gift_wall_man_tab2_list_1.xml | 130 ++ .../layout/item_gift_wall_man_tab2_list_2.xml | 130 ++ .../src/main/res/layout/order_level_popup.xml | 35 +- .../src/main/res/layout/view_flaot_live.xml | 2 + .../res/layout/view_fun_games_child_view.xml | 12 +- .../main/res/layout/view_fun_games_view.xml | 3 +- .../layout/view_gift_wall_achieve_item.xml | 33 + .../layout/view_interaction_games_view.xml | 5 +- ...iew_live_new_role_fun_games_child_view.xml | 7 +- ...ew_live_new_role_fun_games_child_view2.xml | 9 +- ...ew_live_new_role_fun_games_child_view3.xml | 103 +- ...w_live_new_role_interaction_games_view.xml | 2 +- .../view_live_new_roler_ights_interests.xml | 6 +- .../layout/view_new_roler_fun_games_view.xml | 7 +- .../main/res/layout/view_rights_interests.xml | 1 + common/src/main/res/layout/view_sub_rank.xml | 75 + .../layout/view_sud_game_user_list_holder.xml | 69 +- .../dialog_gift_wall_achieve_top_icon.png | Bin 0 -> 19335 bytes .../main/res/mipmap-mdpi/achieve_img_lock.png | Bin 0 -> 7759 bytes common/src/main/res/mipmap-xhdpi/sub_1.png | Bin 0 -> 2268 bytes common/src/main/res/mipmap-xhdpi/sub_2.png | Bin 0 -> 2489 bytes common/src/main/res/mipmap-xhdpi/sub_3.png | Bin 0 -> 2855 bytes .../main/res/mipmap-xhdpi/sub_again_en.png | Bin 0 -> 22550 bytes .../main/res/mipmap-xhdpi/sub_again_zh.png | Bin 0 -> 21449 bytes common/src/main/res/mipmap-xhdpi/sub_bg.png | Bin 0 -> 218931 bytes common/src/main/res/mipmap-xhdpi/sub_bg2.png | Bin 0 -> 218624 bytes .../src/main/res/mipmap-xhdpi/sub_draw_en.png | Bin 0 -> 58661 bytes .../src/main/res/mipmap-xhdpi/sub_draw_zh.png | Bin 0 -> 57633 bytes .../main/res/mipmap-xhdpi/sub_leave_en.png | Bin 0 -> 17388 bytes .../main/res/mipmap-xhdpi/sub_leave_zh.png | Bin 0 -> 17649 bytes .../src/main/res/mipmap-xhdpi/sub_loss_en.png | Bin 0 -> 43446 bytes .../src/main/res/mipmap-xhdpi/sub_loss_zh.png | Bin 0 -> 43748 bytes .../src/main/res/mipmap-xhdpi/sub_over_en.png | Bin 0 -> 76400 bytes .../src/main/res/mipmap-xhdpi/sub_over_zh.png | Bin 0 -> 78902 bytes common/src/main/res/mipmap-xhdpi/sub_vs.png | Bin 0 -> 6075 bytes .../src/main/res/mipmap-xhdpi/sub_win_en.png | Bin 0 -> 78508 bytes .../src/main/res/mipmap-xhdpi/sub_win_hat.png | Bin 0 -> 14042 bytes .../src/main/res/mipmap-xhdpi/sub_win_zh.png | Bin 0 -> 78639 bytes .../res/mipmap-xhdpi/sud_load_bg_double.png | Bin 0 -> 172055 bytes .../res/mipmap-xhdpi/sud_load_bg_multiple.png | Bin 0 -> 156239 bytes .../main/res/mipmap-xhdpi/sud_load_double.png | Bin 0 -> 6829 bytes .../src/main/res/mipmap-xhdpi/sud_load_en.png | Bin 0 -> 5455 bytes .../res/mipmap-xhdpi/sud_load_multiple.png | Bin 0 -> 8051 bytes .../res/mipmap-xhdpi/sud_load_skip_en.png | Bin 0 -> 17406 bytes .../res/mipmap-xhdpi/sud_load_skip_zh.png | Bin 0 -> 17911 bytes .../src/main/res/mipmap-xhdpi/sud_load_zh.png | Bin 0 -> 4262 bytes .../bg_dialog_gift_wall_main_tab1_tips.png | Bin 0 -> 1561 bytes .../bg_gift_wall_main_achievement.png | Bin 0 -> 12059 bytes .../mipmap-xxhdpi/bg_gift_wall_main_root.png | Bin 0 -> 2143612 bytes .../mipmap-xxhdpi/bg_gift_wall_main_root2.png | Bin 0 -> 2102427 bytes .../bg_live_sud_game_back_new2.png | Bin 0 -> 5740 bytes .../dialog_gift_wall_achieve.png | Bin 0 -> 499840 bytes .../dialog_gift_wall_achieve_top_bg.png | Bin 0 -> 121838 bytes .../dialog_gift_wall_achieve_top_icon.png | Bin 0 -> 15530 bytes .../dialog_gift_wall_achieve_wear_bg.png | Bin 0 -> 496700 bytes .../dialog_gift_wall_achieve_wear_cancel.png | Bin 0 -> 1430 bytes .../dialog_gift_wall_achieve_wear_item_bg.png | Bin 0 -> 42142 bytes ...log_gift_wall_achieve_wear_item_unlock.png | Bin 0 -> 7218 bytes .../mipmap-xxhdpi/dialog_gift_wall_back.png | Bin 0 -> 824 bytes .../mipmap-xxhdpi/dialog_gift_wall_more.png | Bin 0 -> 871 bytes .../dialog_gift_wall_tab2_list2_bg.png | Bin 0 -> 600301 bytes .../mipmap-xxhdpi/gift_wall_gift_info_bg.png | Bin 0 -> 1782491 bytes .../gift_wall_gift_info_botton.png | Bin 0 -> 24165 bytes .../gift_wall_gift_info_light.png | Bin 0 -> 526685 bytes .../gift_wall_gift_info_list.9.png | Bin 0 -> 124373 bytes .../gift_wall_gift_info_list_time.png | Bin 0 -> 1710 bytes .../main/res/mipmap-xxhdpi/gift_wall_hide.png | Bin 0 -> 36848 bytes .../mipmap-xxhdpi/gift_wall_main_item_bg.png | Bin 0 -> 28352 bytes .../mipmap-xxhdpi/gift_wall_main_item_bg1.png | Bin 0 -> 20248 bytes .../gift_wall_main_item_select.png | Bin 0 -> 7152 bytes .../gift_wall_main_item_select1.png | Bin 0 -> 6079 bytes .../gift_wall_main_item_unselect.png | Bin 0 -> 9824 bytes .../gift_wall_main_item_unselect1.png | Bin 0 -> 6520 bytes .../gift_wall_main_list_bg.9.png | Bin 0 -> 881142 bytes .../gift_wall_main_list_bottom.png | Bin 0 -> 29204 bytes .../mipmap-xxhdpi/gift_wall_main_list_top.png | Bin 0 -> 30394 bytes .../gift_wall_main_tab1_down_bg.png | Bin 0 -> 1802 bytes .../gift_wall_main_tab1_down_ic.png | Bin 0 -> 597 bytes .../gift_wall_tab2_classic_info_avatar1.png | Bin 0 -> 12160 bytes .../gift_wall_tab2_classic_info_avatar2.png | Bin 0 -> 10030 bytes .../gift_wall_tab2_classic_info_bg.png | Bin 0 -> 2209060 bytes .../gift_wall_tab2_classic_info_bg_one.png | Bin 0 -> 53453 bytes .../gift_wall_tab2_classic_info_bg_three.png | Bin 0 -> 35844 bytes .../gift_wall_tab2_classic_info_bg_two.png | Bin 0 -> 41909 bytes .../gift_wall_tab2_classic_info_list_bg.9.png | Bin 0 -> 42192 bytes .../gift_wall_tab2_classic_info_one.png | Bin 0 -> 7520 bytes .../gift_wall_tab2_classic_info_star.png | Bin 0 -> 2838 bytes .../gift_wall_tab2_classic_info_three.png | Bin 0 -> 8216 bytes .../gift_wall_tab2_classic_info_tips.png | Bin 0 -> 20140 bytes .../gift_wall_tab2_classic_info_twwo.png | Bin 0 -> 7874 bytes .../mipmap-xxhdpi/gift_wall_tab2_item_bg1.png | Bin 0 -> 120394 bytes .../mipmap-xxhdpi/gift_wall_tab2_item_bg2.png | Bin 0 -> 120173 bytes .../gift_wall_tab2_item_icon1.png | Bin 0 -> 3812 bytes .../guard_buy_tips_cancel_bg.png | Bin 0 -> 27055 bytes .../res/mipmap-xxhdpi/ic_gift_wall_time.png | Bin 0 -> 2009 bytes .../res/mipmap-xxhdpi/ic_gift_wall_time2.png | Bin 0 -> 2170 bytes .../icon_gift_wall_main_switch_full.png | Bin 0 -> 49922 bytes .../icon_gift_wall_main_switch_main.png | Bin 0 -> 48718 bytes .../icon_gift_wall_main_tips.png | Bin 0 -> 2843 bytes .../icon_gift_wall_main_tips2.png | Bin 0 -> 3125 bytes .../res/mipmap-xxhdpi/icon_min_game_new.png | Bin 3786 -> 4796 bytes .../icon_sud_history_live_new.png | Bin 6035 -> 5780 bytes .../live_dialog_top_game_icon.png | Bin 0 -> 2398 bytes common/src/main/res/mipmap-xxhdpi/sub_1.png | Bin 0 -> 4673 bytes common/src/main/res/mipmap-xxhdpi/sub_2.png | Bin 0 -> 4845 bytes common/src/main/res/mipmap-xxhdpi/sub_3.png | Bin 0 -> 5755 bytes .../main/res/mipmap-xxhdpi/sub_again_en.png | Bin 0 -> 44058 bytes .../main/res/mipmap-xxhdpi/sub_again_zh.png | Bin 0 -> 41938 bytes common/src/main/res/mipmap-xxhdpi/sub_bg.png | Bin 0 -> 563202 bytes common/src/main/res/mipmap-xxhdpi/sub_bg2.png | Bin 0 -> 565334 bytes .../main/res/mipmap-xxhdpi/sub_draw_en.png | Bin 0 -> 111650 bytes .../main/res/mipmap-xxhdpi/sub_draw_zh.png | Bin 0 -> 109837 bytes .../main/res/mipmap-xxhdpi/sub_leave_en.png | Bin 0 -> 34647 bytes .../main/res/mipmap-xxhdpi/sub_leave_zh.png | Bin 0 -> 35244 bytes .../main/res/mipmap-xxhdpi/sub_loss_en.png | Bin 0 -> 84314 bytes .../main/res/mipmap-xxhdpi/sub_loss_zh.png | Bin 0 -> 85510 bytes .../main/res/mipmap-xxhdpi/sub_over_en.png | Bin 0 -> 155157 bytes .../main/res/mipmap-xxhdpi/sub_over_zh.png | Bin 0 -> 157254 bytes common/src/main/res/mipmap-xxhdpi/sub_vs.png | Bin 0 -> 11262 bytes .../src/main/res/mipmap-xxhdpi/sub_win_en.png | Bin 0 -> 159579 bytes .../main/res/mipmap-xxhdpi/sub_win_hat.png | Bin 0 -> 28791 bytes .../src/main/res/mipmap-xxhdpi/sub_win_zh.png | Bin 0 -> 160221 bytes .../res/mipmap-xxhdpi/sud_load_bg_double.png | Bin 0 -> 442162 bytes .../mipmap-xxhdpi/sud_load_bg_multiple.png | Bin 0 -> 404813 bytes .../res/mipmap-xxhdpi/sud_load_double.png | Bin 0 -> 12647 bytes .../main/res/mipmap-xxhdpi/sud_load_en.png | Bin 0 -> 10328 bytes .../res/mipmap-xxhdpi/sud_load_multiple.png | Bin 0 -> 14769 bytes .../res/mipmap-xxhdpi/sud_load_skip_en.png | Bin 0 -> 34606 bytes .../res/mipmap-xxhdpi/sud_load_skip_zh.png | Bin 0 -> 35801 bytes .../main/res/mipmap-xxhdpi/sud_load_zh.png | Bin 0 -> 8684 bytes .../src/main/res/mipmap-xxxhdpi/hide.png | Bin common/src/main/res/values-en-rUS/string.xml | 1477 ------------ common/src/main/res/values-zh-rHK/strings.xml | 1558 ------------- common/src/main/res/values-zh-rTW/strings.xml | 1558 ------------- common/src/main/res/values-zh/strings.xml | 56 +- common/src/main/res/values/colors.xml | 1 + common/src/main/res/values/strings.xml | 60 +- gradle.properties | 4 +- .../faceunity/agora/SWAuManager.java | 2 +- .../lib_google/utils/GoogleBillingManage.java | 11 +- .../lib_huawei/utils/HuaWeiPayManage.java | 2 +- live/build.gradle | 2 +- .../live/activity/LiveAudienceActivity.java | 9 + .../live/activity/LiveReportActivity.java | 2 +- .../live/activity/LiveRyAnchorActivity.java | 3 +- .../live/activity/LiveSwAnchorActivity.java | 73 +- .../live/activity/SudRyGameActivity.java | 74 +- .../live/activity/SudSwGameActivity.java | 81 +- .../yunbao/live/bean/LiveReceiveGiftBean.java | 18 + .../live/dialog/LiveBuyGuardDialog.java | 424 ++-- .../com/yunbao/live/dialog/LiveGiftPopup.java | 11 +- .../yunbao/live/dialog/LiveGuardDialog.java | 16 +- .../dialog/LiveNewGuardDialogFragment.java | 17 +- .../live/dialog/LiveUserDialogFragment.java | 4 +- .../live/dialog/RandomPkDialogFragment.java | 4 +- .../live/presenter/LiveGiftAnimPresenter.java | 47 +- .../presenter/LiveLinkMicPkPresenter.java | 59 +- .../presenter/LiveRyLinkMicPkPresenter.java | 12 +- .../presenter/LiveSwLinkMicPkPresenter.java | 13 +- .../com/yunbao/live/socket/SocketClient.java | 14 +- .../yunbao/live/socket/SocketRyClient.java | 5 +- .../yunbao/live/socket/SocketSwClient.java | 88 +- .../live/views/FrameGiftViewHolder.java | 26 +- .../yunbao/live/views/LiveEndViewHolder.java | 25 +- .../yunbao/live/views/LiveGiftViewHolder.java | 77 +- .../live/views/LiveNewReadySwViewHolder.java | 2 +- .../yunbao/live/views/LiveParcelFragment.java | 3 + .../live/views/LivePlaySwViewHolder.java | 2 +- .../yunbao/live/views/LiveRoomViewHolder.java | 293 ++- .../live/views/PortraitLiveManager.java | 4 + .../res/drawable/background_live_sud_hint.xml | 5 + .../res/drawable/bg_live_room_sud_hint.xml | 9 + .../drawable/bg_live_room_sud_hint_join.xml | 13 + .../main/res/drawable/guard_buy_bottom_bg.png | Bin 0 -> 192440 bytes .../main/res/drawable/guard_buy_bottom_bg.xml | 12 - .../main/res/drawable/guard_buy_center_bg.png | Bin 0 -> 614122 bytes .../main/res/drawable/guard_buy_center_bg.xml | 13 - .../main/res/drawable/guard_buy_top_bg.png | Bin 0 -> 1260741 bytes .../main/res/drawable/guard_buy_top_bg.xml | 13 - .../live_dialog_top_guardian_tasks_bg.png | Bin 0 -> 6668 bytes .../src/main/res/layout/dialog_live_guard.xml | 46 +- live/src/main/res/layout/dialog_new_guard.xml | 49 +- live/src/main/res/layout/item_frame_gift.xml | 52 +- .../main/res/layout/view_live_audience.xml | 2 +- live/src/main/res/layout/view_live_end.xml | 127 +- live/src/main/res/layout/view_live_gift.xml | 35 +- .../src/main/res/layout/view_live_push_sw.xml | 3 +- live/src/main/res/layout/view_live_room.xml | 166 +- .../main/res/layout/view_new_guard_item.xml | 2 +- .../res/mipmap-b+en+us/gift_naming_icon.png | Bin 0 -> 4967 bytes .../guard_btn_buy_first_icon.png | Bin 0 -> 49567 bytes .../res/mipmap-b+en+us/guard_btn_buy_icon.png | Bin 0 -> 49640 bytes .../res/mipmap-b+en+us/guardian_img_wings.png | Bin 135582 -> 354328 bytes .../main/res/mipmap-mdpi/day_list_no_1.png | Bin 3529 -> 5821 bytes .../main/res/mipmap-mdpi/day_list_no_2.png | Bin 3959 -> 6071 bytes .../main/res/mipmap-mdpi/day_list_no_3.png | Bin 3849 -> 6208 bytes .../main/res/mipmap-mdpi/gift_naming_icon.png | Bin 0 -> 4917 bytes .../mipmap-mdpi/icon_live_gift_anim_11.png | Bin 0 -> 51904 bytes .../full_service_notice_new_tmp_bg.png | Bin 0 -> 125369 bytes .../full_service_notice_new_tmp_icon.png | Bin 0 -> 47928 bytes .../mipmap-xhdpi/guard_btn_buy_first_icon.png | Bin 0 -> 47210 bytes .../mipmap-xhdpi/icon_live_room_sud_close.png | Bin 0 -> 1031 bytes .../item_frame_gift_naming_bg.png | Bin 0 -> 16438 bytes .../mipmap-xhdpi/live_room_sud_hint_icon.png | Bin 0 -> 5588 bytes .../res/mipmap-xxxhdpi/guard_btn_buy_icon.png | Bin 0 -> 47820 bytes .../res/mipmap-xxxhdpi/guardian_img_wings.png | Bin 70461 -> 354328 bytes .../res/mipmap-xxxhdpi/icon_one_guard.png | Bin 7126 -> 5821 bytes .../res/mipmap-xxxhdpi/icon_three_guard.png | Bin 7297 -> 6209 bytes .../res/mipmap-xxxhdpi/icon_two_guard.png | Bin 7042 -> 6071 bytes live/src/main/res/values-en/strings.xml | 159 -- live/src/main/res/values-zh/strings.xml | 148 ++ live/src/main/res/values/strings.xml | 5 + main/build.gradle | 1 + main/src/main/AndroidManifest.xml | 23 +- .../yunbao/main/activity/EntryActivity.java | 297 ++- .../activity/LanguageSettingActivity.java | 6 +- .../main/activity/MyWalletActivity.java | 6 +- .../main/activity/ZhuangBanActivity.java | 118 +- .../main/views/MainHomeLiveViewHolder.java | 16 +- .../yunbao/main/views/MainHomeViewHolder.java | 1 - .../yunbao/main/views/TestWebViewClient.java | 6 + main/src/main/res/layout/activity_entry.xml | 43 + main/src/main/res/values-zh/strings.xml | 1 + main/src/main/res/values/strings.xml | 2 + package_config.gradle | 7 + settings.gradle | 3 +- 429 files changed, 25508 insertions(+), 5888 deletions(-) create mode 100644 SVGAlibrary/build.gradle create mode 100644 SVGAlibrary/proguard-rules.pro create mode 100644 SVGAlibrary/src/main/AndroidManifest.xml create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/IClickAreaListener.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGACache.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGACallback.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAClickAreaListener.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGADrawable.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAParser.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAPlayer.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGASoundManager.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAVideoEntity.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/BitmapSampleSizeCalculator.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapByteArrayDecoder.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapDecoder.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapFileDecoder.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/drawer/SGVADrawer.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/drawer/SVGACanvasDrawer.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAAudioEntity.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAPathEntity.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoShapeEntity.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoSpriteEntity.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoSpriteFrameEntity.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/Layout.java create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/Transform.java create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/Pools.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/SVGAScaleInfo.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/SVGAStructs.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/DefaultLogCat.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/ILogger.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/LogUtils.kt create mode 100644 SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/SVGALogger.kt create mode 100644 SVGAlibrary/src/main/res/values/attrs.xml create mode 100644 SVGAlibrary/src/main/res/values/strings.xml delete mode 100644 Share/src/main/res/values-en/strings.xml create mode 100644 Share/src/main/res/values-zh/strings.xml create mode 100644 TabLayout/build.gradle create mode 100644 TabLayout/consumer-rules.pro create mode 100644 TabLayout/proguard-rules.pro create mode 100644 TabLayout/src/main/AndroidManifest.xml create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/AbsDslDrawable.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslBadgeDrawable.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslGradientDrawable.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslGravity.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslSelector.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslTabBadge.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslTabBorder.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslTabDivider.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslTabHighlight.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslTabIndicator.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslTabLayout.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/DslTabLayoutConfig.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/ITabIndicatorDraw.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/LibEx.kt create mode 100644 TabLayout/src/main/java/com/angcyo/tablayout/ViewPagerDelegate.kt create mode 100644 TabLayout/src/main/res/values/attr_dsl_tab_layout.xml create mode 100644 common/src/main/assets/gift_live_naming_bg.svga create mode 100644 common/src/main/assets/gift_live_naming_title_cn.svga create mode 100644 common/src/main/assets/gift_live_naming_title_en.svga create mode 100644 common/src/main/assets/gift_wall_gift_info_light.svga create mode 100644 common/src/main/assets/gift_wall_light_up.svga create mode 100644 common/src/main/java/com/yunbao/common/adapter/GiftWallAchieveAdapter.java create mode 100644 common/src/main/java/com/yunbao/common/adapter/GiftWallGiftInfoListItemAdapter.java create mode 100644 common/src/main/java/com/yunbao/common/adapter/GiftWallMainTab1List2Adapter.java create mode 100644 common/src/main/java/com/yunbao/common/adapter/GiftWallMainTab2ListAdapter.java create mode 100644 common/src/main/java/com/yunbao/common/adapter/GiftWallTab2GiftInfoListItemAdapter.java create mode 100644 common/src/main/java/com/yunbao/common/adapter/SudGameAdapter.java create mode 100644 common/src/main/java/com/yunbao/common/bean/BanDownLiveEvent.java create mode 100644 common/src/main/java/com/yunbao/common/bean/GiftWallBean.java create mode 100644 common/src/main/java/com/yunbao/common/bean/GiftWallForUserBean.java create mode 100644 common/src/main/java/com/yunbao/common/bean/GiftWallInfoBean.java create mode 100644 common/src/main/java/com/yunbao/common/bean/GiftWallMainTab2ClassicInfoBean.java create mode 100644 common/src/main/java/com/yunbao/common/bean/GiftWallTab2Bean.java create mode 100644 common/src/main/java/com/yunbao/common/bean/SudGameInfoBean.java create mode 100644 common/src/main/java/com/yunbao/common/bean/SudGameScoreBean.java create mode 100644 common/src/main/java/com/yunbao/common/bean/SudSettleBean.java create mode 100644 common/src/main/java/com/yunbao/common/custom/LiveGifWallAchieveWearTransformer.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GiftWallAchieveDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GiftWallAchieveWearDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GiftWallDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GiftWallGiftInfoDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab1List2SpinnerDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab1TipsDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab2ClassicInfoDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GiftWallRuleDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GiftWallTab2List2Dialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GuardBuyCouponTipsDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/GuardBuyTipsNewDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/SudGameDoubleDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/SudGameMultipleDialog.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/SudLoadDialog.java create mode 100644 common/src/main/java/com/yunbao/common/event/ClosePopupDialogEvent.java create mode 100644 common/src/main/java/com/yunbao/common/fragment/GiftWallMainTab1Fragment.java create mode 100644 common/src/main/java/com/yunbao/common/fragment/GiftWallMainTab2Fragment.java create mode 100644 common/src/main/java/com/yunbao/common/views/CustomEllipsizeTextView.java create mode 100644 common/src/main/java/com/yunbao/common/views/InteractionGamesChildBottomViewHolder.java create mode 100644 common/src/main/res/drawable/anim_loading_double.xml create mode 100644 common/src/main/res/drawable/anim_loading_multiple.xml create mode 100644 common/src/main/res/drawable/dialog_live_sud_game_name_bg.xml create mode 100644 common/src/main/res/drawable/gift_wall_achieve_wear_disable.xml create mode 100644 common/src/main/res/drawable/gift_wall_achieve_wear_sure.xml create mode 100644 common/src/main/res/drawable/gift_wall_gift_info_bottom_btn_tips.xml create mode 100644 common/src/main/res/drawable/gift_wall_gift_info_btn.xml create mode 100644 common/src/main/res/drawable/gift_wall_gift_info_btn_un.xml create mode 100644 common/src/main/res/drawable/gift_wall_gift_info_lighten.xml create mode 100644 common/src/main/res/drawable/gift_wall_gift_info_list_btn_down.xml create mode 100644 common/src/main/res/drawable/gift_wall_gift_info_list_btn_up.xml create mode 100644 common/src/main/res/drawable/gift_wall_gift_info_progres.xml create mode 100644 common/src/main/res/drawable/gift_wall_gift_info_un_lighten.xml create mode 100644 common/src/main/res/drawable/gift_wall_main_tab_list_item_progres.xml create mode 100644 common/src/main/res/drawable/gift_wall_man_tab2_dsl.xml create mode 100644 common/src/main/res/drawable/gift_wall_man_tab_list_title.xml create mode 100644 common/src/main/res/drawable/shape_sub_rank.xml create mode 100644 common/src/main/res/layout/dialog_gift_wall.xml create mode 100644 common/src/main/res/layout/dialog_gift_wall_achieve.xml create mode 100644 common/src/main/res/layout/dialog_gift_wall_achieve_wear.xml create mode 100644 common/src/main/res/layout/dialog_gift_wall_achieve_wear_item.xml create mode 100644 common/src/main/res/layout/dialog_gift_wall_gift_info.xml create mode 100644 common/src/main/res/layout/dialog_gift_wall_main_tab1_list2_spinner.xml create mode 100644 common/src/main/res/layout/dialog_gift_wall_main_tab1_tips.xml create mode 100644 common/src/main/res/layout/dialog_gift_wall_rule.xml create mode 100644 common/src/main/res/layout/dialog_gift_wall_tab2_classic_info.xml create mode 100644 common/src/main/res/layout/dialog_gift_wall_tab2_list2.xml create mode 100644 common/src/main/res/layout/dialog_guard_buy_coupon_tips.xml create mode 100644 common/src/main/res/layout/dialog_sub_double.xml create mode 100644 common/src/main/res/layout/dialog_sub_multiple.xml create mode 100644 common/src/main/res/layout/dialog_sud_load.xml create mode 100644 common/src/main/res/layout/fragment_gift_wall_man_tab_1.xml create mode 100644 common/src/main/res/layout/fragment_gift_wall_man_tab_2.xml create mode 100644 common/src/main/res/layout/item_dialog_gift_wall_gift_info.xml create mode 100644 common/src/main/res/layout/item_dialog_gift_wall_tab2_gift_info.xml create mode 100644 common/src/main/res/layout/item_gift_wall_man_tab1_list_1.xml create mode 100644 common/src/main/res/layout/item_gift_wall_man_tab1_list_2.xml create mode 100644 common/src/main/res/layout/item_gift_wall_man_tab2_list_1.xml create mode 100644 common/src/main/res/layout/item_gift_wall_man_tab2_list_2.xml create mode 100644 common/src/main/res/layout/view_gift_wall_achieve_item.xml create mode 100644 common/src/main/res/layout/view_sub_rank.xml create mode 100644 common/src/main/res/mipmap-b+en+us/dialog_gift_wall_achieve_top_icon.png create mode 100644 common/src/main/res/mipmap-mdpi/achieve_img_lock.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_1.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_2.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_3.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_again_en.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_again_zh.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_bg.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_bg2.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_draw_en.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_draw_zh.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_leave_en.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_leave_zh.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_loss_en.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_loss_zh.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_over_en.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_over_zh.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_vs.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_win_en.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_win_hat.png create mode 100644 common/src/main/res/mipmap-xhdpi/sub_win_zh.png create mode 100644 common/src/main/res/mipmap-xhdpi/sud_load_bg_double.png create mode 100644 common/src/main/res/mipmap-xhdpi/sud_load_bg_multiple.png create mode 100644 common/src/main/res/mipmap-xhdpi/sud_load_double.png create mode 100644 common/src/main/res/mipmap-xhdpi/sud_load_en.png create mode 100644 common/src/main/res/mipmap-xhdpi/sud_load_multiple.png create mode 100644 common/src/main/res/mipmap-xhdpi/sud_load_skip_en.png create mode 100644 common/src/main/res/mipmap-xhdpi/sud_load_skip_zh.png create mode 100644 common/src/main/res/mipmap-xhdpi/sud_load_zh.png create mode 100644 common/src/main/res/mipmap-xxhdpi/bg_dialog_gift_wall_main_tab1_tips.png create mode 100644 common/src/main/res/mipmap-xxhdpi/bg_gift_wall_main_achievement.png create mode 100644 common/src/main/res/mipmap-xxhdpi/bg_gift_wall_main_root.png create mode 100644 common/src/main/res/mipmap-xxhdpi/bg_gift_wall_main_root2.png create mode 100644 common/src/main/res/mipmap-xxhdpi/bg_live_sud_game_back_new2.png create mode 100644 common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve.png create mode 100644 common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_top_bg.png create mode 100644 common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_top_icon.png create mode 100644 common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_wear_bg.png create mode 100644 common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_wear_cancel.png create mode 100644 common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_wear_item_bg.png create mode 100644 common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_achieve_wear_item_unlock.png create mode 100644 common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_back.png create mode 100644 common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_more.png create mode 100644 common/src/main/res/mipmap-xxhdpi/dialog_gift_wall_tab2_list2_bg.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_gift_info_bg.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_gift_info_botton.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_gift_info_light.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_gift_info_list.9.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_gift_info_list_time.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_hide.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_bg.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_bg1.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_select.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_select1.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_unselect.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_item_unselect1.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_list_bg.9.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_list_bottom.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_list_top.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_tab1_down_bg.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_main_tab1_down_ic.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_avatar1.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_avatar2.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_bg.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_bg_one.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_bg_three.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_bg_two.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_list_bg.9.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_one.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_star.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_three.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_tips.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_classic_info_twwo.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_item_bg1.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_item_bg2.png create mode 100644 common/src/main/res/mipmap-xxhdpi/gift_wall_tab2_item_icon1.png create mode 100644 common/src/main/res/mipmap-xxhdpi/guard_buy_tips_cancel_bg.png create mode 100644 common/src/main/res/mipmap-xxhdpi/ic_gift_wall_time.png create mode 100644 common/src/main/res/mipmap-xxhdpi/ic_gift_wall_time2.png create mode 100644 common/src/main/res/mipmap-xxhdpi/icon_gift_wall_main_switch_full.png create mode 100644 common/src/main/res/mipmap-xxhdpi/icon_gift_wall_main_switch_main.png create mode 100644 common/src/main/res/mipmap-xxhdpi/icon_gift_wall_main_tips.png create mode 100644 common/src/main/res/mipmap-xxhdpi/icon_gift_wall_main_tips2.png create mode 100644 common/src/main/res/mipmap-xxhdpi/live_dialog_top_game_icon.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_1.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_2.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_3.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_again_en.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_again_zh.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_bg.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_bg2.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_draw_en.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_draw_zh.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_leave_en.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_leave_zh.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_loss_en.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_loss_zh.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_over_en.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_over_zh.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_vs.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_win_en.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_win_hat.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sub_win_zh.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sud_load_bg_double.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sud_load_bg_multiple.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sud_load_double.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sud_load_en.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sud_load_multiple.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sud_load_skip_en.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sud_load_skip_zh.png create mode 100644 common/src/main/res/mipmap-xxhdpi/sud_load_zh.png rename {main => common}/src/main/res/mipmap-xxxhdpi/hide.png (100%) delete mode 100644 common/src/main/res/values-en-rUS/string.xml delete mode 100644 common/src/main/res/values-zh-rHK/strings.xml delete mode 100644 common/src/main/res/values-zh-rTW/strings.xml create mode 100644 live/src/main/res/drawable/background_live_sud_hint.xml create mode 100644 live/src/main/res/drawable/bg_live_room_sud_hint.xml create mode 100644 live/src/main/res/drawable/bg_live_room_sud_hint_join.xml create mode 100644 live/src/main/res/drawable/guard_buy_bottom_bg.png delete mode 100644 live/src/main/res/drawable/guard_buy_bottom_bg.xml create mode 100644 live/src/main/res/drawable/guard_buy_center_bg.png delete mode 100644 live/src/main/res/drawable/guard_buy_center_bg.xml create mode 100644 live/src/main/res/drawable/guard_buy_top_bg.png delete mode 100644 live/src/main/res/drawable/guard_buy_top_bg.xml create mode 100644 live/src/main/res/drawable/live_dialog_top_guardian_tasks_bg.png create mode 100644 live/src/main/res/mipmap-b+en+us/gift_naming_icon.png create mode 100644 live/src/main/res/mipmap-b+en+us/guard_btn_buy_first_icon.png create mode 100644 live/src/main/res/mipmap-b+en+us/guard_btn_buy_icon.png create mode 100644 live/src/main/res/mipmap-mdpi/gift_naming_icon.png create mode 100644 live/src/main/res/mipmap-mdpi/icon_live_gift_anim_11.png create mode 100644 live/src/main/res/mipmap-xhdpi/full_service_notice_new_tmp_bg.png create mode 100644 live/src/main/res/mipmap-xhdpi/full_service_notice_new_tmp_icon.png create mode 100644 live/src/main/res/mipmap-xhdpi/guard_btn_buy_first_icon.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_live_room_sud_close.png create mode 100644 live/src/main/res/mipmap-xhdpi/item_frame_gift_naming_bg.png create mode 100644 live/src/main/res/mipmap-xhdpi/live_room_sud_hint_icon.png create mode 100644 live/src/main/res/mipmap-xxxhdpi/guard_btn_buy_icon.png delete mode 100644 live/src/main/res/values-en/strings.xml create mode 100644 live/src/main/res/values-zh/strings.xml diff --git a/FaceUnity/src/main/res/values/strings.xml b/FaceUnity/src/main/res/values/strings.xml index 050818a37..73f44cd05 100644 --- a/FaceUnity/src/main/res/values/strings.xml +++ b/FaceUnity/src/main/res/values/strings.xml @@ -334,4 +334,7 @@ Exquisite sticker Reset Custom + + No face tracking + No face or body tracking diff --git a/IAP6Helper/src/main/AndroidManifest.xml b/IAP6Helper/src/main/AndroidManifest.xml index 7f20d0919..4bd6f3126 100644 --- a/IAP6Helper/src/main/AndroidManifest.xml +++ b/IAP6Helper/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ diff --git a/SVGAlibrary/build.gradle b/SVGAlibrary/build.gradle new file mode 100644 index 000000000..6c6415e5e --- /dev/null +++ b/SVGAlibrary/build.gradle @@ -0,0 +1,37 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + + +android { + compileSdkVersion 28 + defaultConfig { + minSdkVersion 14 + targetSdkVersion 28 + } + compileOptions { + kotlinOptions.freeCompilerArgs += ['-module-name', "com.opensource.svgaplayer"] + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + packagingOptions { + exclude 'META-INF/ASL2.0' + exclude 'META-INF/LICENSE' + exclude 'META-INF/NOTICE' + exclude 'META-INF/NOTICE.txt' + exclude 'META-INF/LICENSE.txt' + exclude 'META-INF/MANIFEST.MF' + } +} + + +dependencies { + implementation 'com.squareup.wire:wire-runtime:4.4.1' +} diff --git a/SVGAlibrary/proguard-rules.pro b/SVGAlibrary/proguard-rules.pro new file mode 100644 index 000000000..5e9d5acdf --- /dev/null +++ b/SVGAlibrary/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/PonyCui_Home/Library/Android/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/SVGAlibrary/src/main/AndroidManifest.xml b/SVGAlibrary/src/main/AndroidManifest.xml new file mode 100644 index 000000000..4edd510b0 --- /dev/null +++ b/SVGAlibrary/src/main/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/IClickAreaListener.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/IClickAreaListener.kt new file mode 100644 index 000000000..f600a33fc --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/IClickAreaListener.kt @@ -0,0 +1,9 @@ +package com.opensource.svgaplayer + +/** + * Created by miaojun on 2019/6/21. + * mail:1290846731@qq.com + */ +interface IClickAreaListener{ + fun onResponseArea(key : String,x0 : Int, y0 : Int, x1 : Int, y1 : Int) +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGACache.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGACache.kt new file mode 100644 index 000000000..8e7b50361 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGACache.kt @@ -0,0 +1,119 @@ +package com.opensource.svgaplayer + +import android.content.Context +import com.opensource.svgaplayer.utils.log.LogUtils +import java.io.File +import java.net.URL +import java.security.MessageDigest + +/** + * SVGA 缓存管理 + */ +object SVGACache { + enum class Type { + DEFAULT, + FILE + } + + private const val TAG = "SVGACache" + private var type: Type = Type.DEFAULT + private var cacheDir: String = "/" + get() { + if (field != "/") { + val dir = File(field) + if (!dir.exists()) { + dir.mkdirs() + } + } + return field + } + + + fun onCreate(context: Context?) { + onCreate(context, Type.DEFAULT) + } + + fun onCreate(context: Context?, type: Type) { + if (isInitialized()) return + context ?: return + cacheDir = "${context.cacheDir.absolutePath}/svga/" + File(cacheDir).takeIf { !it.exists() }?.mkdirs() + this.type = type + } + + /** + * 清理缓存 + */ + fun clearCache() { + if (!isInitialized()) { + LogUtils.error(TAG, "SVGACache is not init!") + return + } + SVGAParser.threadPoolExecutor.execute { + clearDir(cacheDir) + LogUtils.info(TAG, "Clear svga cache done!") + } + } + + // 清除目录下的所有文件 + internal fun clearDir(path: String) { + try { + val dir = File(path) + dir.takeIf { it.exists() }?.let { parentDir -> + parentDir.listFiles()?.forEach { file -> + if (!file.exists()) { + return@forEach + } + if (file.isDirectory) { + clearDir(file.absolutePath) + } + file.delete() + } + } + } catch (e: Exception) { + LogUtils.error(TAG, "Clear svga cache path: $path fail", e) + } + } + + fun isInitialized(): Boolean { + return "/" != cacheDir && File(cacheDir).exists() + } + + fun isDefaultCache(): Boolean = type == Type.DEFAULT + + fun isCached(cacheKey: String): Boolean { + return if (isDefaultCache()) { + buildCacheDir(cacheKey) + } else { + buildSvgaFile( + cacheKey + ) + }.exists() + } + + fun buildCacheKey(str: String): String { + val messageDigest = MessageDigest.getInstance("MD5") + messageDigest.update(str.toByteArray(charset("UTF-8"))) + val digest = messageDigest.digest() + var sb = "" + for (b in digest) { + sb += String.format("%02x", b) + } + return sb + } + + fun buildCacheKey(url: URL): String = buildCacheKey(url.toString()) + + fun buildCacheDir(cacheKey: String): File { + return File("$cacheDir$cacheKey/") + } + + fun buildSvgaFile(cacheKey: String): File { + return File("$cacheDir$cacheKey.svga") + } + + fun buildAudioFile(audio: String): File { + return File("$cacheDir$audio.mp3") + } + +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGACallback.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGACallback.kt new file mode 100644 index 000000000..0e5a1c317 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGACallback.kt @@ -0,0 +1,13 @@ +package com.opensource.svgaplayer + +/** + * Created by cuiminghui on 2017/3/30. + */ +interface SVGACallback { + + fun onPause() + fun onFinished() + fun onRepeat() + fun onStep(frame: Int, percentage: Double) + +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAClickAreaListener.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAClickAreaListener.kt new file mode 100644 index 000000000..ccdb6e488 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAClickAreaListener.kt @@ -0,0 +1,9 @@ +package com.opensource.svgaplayer + +/** + * Created by miaojun on 2019/6/21. + * mail:1290846731@qq.com + */ +interface SVGAClickAreaListener{ + fun onClick(clickKey : String) +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGADrawable.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGADrawable.kt new file mode 100644 index 000000000..22cb8c0bf --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGADrawable.kt @@ -0,0 +1,106 @@ +package com.opensource.svgaplayer + +import android.graphics.Canvas +import android.graphics.ColorFilter +import android.graphics.PixelFormat +import android.graphics.drawable.Drawable +import android.widget.ImageView +import com.opensource.svgaplayer.drawer.SVGACanvasDrawer + +class SVGADrawable(val videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicEntity): Drawable() { + + constructor(videoItem: SVGAVideoEntity): this(videoItem, SVGADynamicEntity()) + + var cleared = true + internal set (value) { + if (field == value) { + return + } + field = value + invalidateSelf() + } + + var currentFrame = 0 + internal set (value) { + if (field == value) { + return + } + field = value + invalidateSelf() + } + + var scaleType: ImageView.ScaleType = ImageView.ScaleType.MATRIX + + private val drawer = SVGACanvasDrawer(videoItem, dynamicItem) + + override fun draw(canvas: Canvas?) { + if (cleared) { + return + } + canvas?.let { + drawer.drawFrame(it,currentFrame, scaleType) + } + } + + override fun setAlpha(alpha: Int) { + + } + + override fun getOpacity(): Int { + return PixelFormat.TRANSPARENT + } + + override fun setColorFilter(colorFilter: ColorFilter?) { + + } + + fun resume() { + videoItem.audioList.forEach { audio -> + audio.playID?.let { + if (SVGASoundManager.isInit()){ + SVGASoundManager.resume(it) + }else{ + videoItem.soundPool?.resume(it) + } + } + } + } + + fun pause() { + videoItem.audioList.forEach { audio -> + audio.playID?.let { + if (SVGASoundManager.isInit()){ + SVGASoundManager.pause(it) + }else{ + videoItem.soundPool?.pause(it) + } + } + } + } + + fun stop() { + videoItem.audioList.forEach { audio -> + audio.playID?.let { + if (SVGASoundManager.isInit()){ + SVGASoundManager.stop(it) + }else{ + videoItem.soundPool?.stop(it) + } + } + } + } + + fun clear() { + videoItem.audioList.forEach { audio -> + audio.playID?.let { + if (SVGASoundManager.isInit()){ + SVGASoundManager.stop(it) + }else{ + videoItem.soundPool?.stop(it) + } + } + audio.playID = null + } + videoItem.clear() + } +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt new file mode 100644 index 000000000..f578c479c --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt @@ -0,0 +1,153 @@ +package com.opensource.svgaplayer + +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Canvas +import android.text.BoringLayout +import android.text.StaticLayout +import android.text.TextPaint +import java.net.HttpURLConnection +import java.net.URL + +/** + * Created by cuiminghui on 2017/3/30. + */ +class SVGADynamicEntity { + + internal var dynamicHidden: HashMap = hashMapOf() + + internal var dynamicImage: HashMap = hashMapOf() + + internal var dynamicText: HashMap = hashMapOf() + + internal var dynamicTextPaint: HashMap = hashMapOf() + + internal var dynamicStaticLayoutText: HashMap = hashMapOf() + + internal var dynamicBoringLayoutText: HashMap = hashMapOf() + + internal var dynamicDrawer: HashMap Boolean> = hashMapOf() + + //点击事件回调map + internal var mClickMap : HashMap = hashMapOf() + internal var dynamicIClickArea: HashMap = hashMapOf() + + internal var dynamicDrawerSized: HashMap Boolean> = hashMapOf() + + + internal var isTextDirty = false + + fun setHidden(value: Boolean, forKey: String) { + this.dynamicHidden.put(forKey, value) + } + + fun setDynamicImage(bitmap: Bitmap, forKey: String) { + this.dynamicImage.put(forKey, bitmap) + } + + fun setDynamicImage(url: String, forKey: String) { + val handler = android.os.Handler() + SVGAParser.threadPoolExecutor.execute { + (URL(url).openConnection() as? HttpURLConnection)?.let { + try { + it.connectTimeout = 20 * 1000 + it.requestMethod = "GET" + it.connect() + it.inputStream.use { stream -> + BitmapFactory.decodeStream(stream)?.let { + handler.post { setDynamicImage(it, forKey) } + } + } + } catch (e: Exception) { + e.printStackTrace() + } finally { + try { + it.disconnect() + } catch (disconnectException: Throwable) { + // ignored here + } + } + } + } + } + + fun setDynamicText(text: String, textPaint: TextPaint, forKey: String) { + this.isTextDirty = true + this.dynamicText.put(forKey, text) + this.dynamicTextPaint.put(forKey, textPaint) + } + + fun setDynamicText(layoutText: StaticLayout, forKey: String) { + this.isTextDirty = true + this.dynamicStaticLayoutText.put(forKey, layoutText) + } + + fun setDynamicText(layoutText: BoringLayout, forKey: String) { + this.isTextDirty = true + BoringLayout.isBoring(layoutText.text,layoutText.paint)?.let { + this.dynamicBoringLayoutText.put(forKey,layoutText) + } + } + + fun setDynamicDrawer(drawer: (canvas: Canvas, frameIndex: Int) -> Boolean, forKey: String) { + this.dynamicDrawer.put(forKey, drawer) + } + + fun setClickArea(clickKey: List) { + for(itemKey in clickKey){ + dynamicIClickArea.put(itemKey,object : IClickAreaListener { + override fun onResponseArea(key: String, x0: Int, y0: Int, x1: Int, y1: Int) { + mClickMap.let { + if(it.get(key) == null){ + it.put(key, intArrayOf(x0,y0,x1,y1)) + }else{ + it.get(key)?.let { + it[0] = x0 + it[1] = y0 + it[2] = x1 + it[3] = y1 + } + } + } + } + }) + } + } + + fun setClickArea(clickKey: String) { + dynamicIClickArea.put(clickKey, object : IClickAreaListener { + override fun onResponseArea(key: String, x0: Int, y0: Int, x1: Int, y1: Int) { + mClickMap.let { + if (it.get(key) == null) { + it.put(key, intArrayOf(x0, y0, x1, y1)) + } else { + it.get(key)?.let { + it[0] = x0 + it[1] = y0 + it[2] = x1 + it[3] = y1 + } + } + } + } + }) + } + + fun setDynamicDrawerSized(drawer: (canvas: Canvas, frameIndex: Int, width: Int, height: Int) -> Boolean, forKey: String) { + this.dynamicDrawerSized.put(forKey, drawer) + } + + fun clearDynamicObjects() { + this.isTextDirty = true + this.dynamicHidden.clear() + this.dynamicImage.clear() + this.dynamicText.clear() + this.dynamicTextPaint.clear() + this.dynamicStaticLayoutText.clear() + this.dynamicBoringLayoutText.clear() + this.dynamicDrawer.clear() + this.dynamicIClickArea.clear() + this.mClickMap.clear() + this.dynamicDrawerSized.clear() + } +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt new file mode 100644 index 000000000..c188ccf7f --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt @@ -0,0 +1,329 @@ +package com.opensource.svgaplayer + +import android.animation.Animator +import android.animation.ValueAnimator +import android.annotation.SuppressLint +import android.content.Context +import android.os.Build +import android.util.AttributeSet +import android.view.MotionEvent +import android.view.View +import android.view.animation.LinearInterpolator +import android.widget.ImageView +import com.opensource.svgaplayer.utils.SVGARange +import com.opensource.svgaplayer.utils.log.LogUtils +import java.lang.ref.WeakReference +import java.net.URL + +/** + * Created by PonyCui on 2017/3/29. + */ +open class SVGAImageView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ImageView(context, attrs, defStyleAttr) { + + private val TAG = "SVGAImageView" + + enum class FillMode { + Backward, + Forward, + Clear, + } + + var isAnimating = false + private set + + var loops = 0 + + @Deprecated( + "It is recommended to use clearAfterDetached, or manually call to SVGAVideoEntity#clear." + + "If you just consider cleaning up the canvas after playing, you can use FillMode#Clear.", + level = DeprecationLevel.WARNING + ) + var clearsAfterStop = false + var clearsAfterDetached = false + var fillMode: FillMode = FillMode.Forward + var callback: SVGACallback? = null + + private var mAnimator: ValueAnimator? = null + private var mItemClickAreaListener: SVGAClickAreaListener? = null + private var mAntiAlias = true + private var mAutoPlay = true + private val mAnimatorListener = AnimatorListener(this) + private val mAnimatorUpdateListener = AnimatorUpdateListener(this) + private var mStartFrame = 0 + private var mEndFrame = 0 + + init { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { + this.setLayerType(View.LAYER_TYPE_SOFTWARE, null) + } + attrs?.let { loadAttrs(it) } + } + + private fun loadAttrs(attrs: AttributeSet) { + val typedArray = context.theme.obtainStyledAttributes(attrs, R.styleable.SVGAImageView, 0, 0) + loops = typedArray.getInt(R.styleable.SVGAImageView_loopCount, 0) + clearsAfterStop = typedArray.getBoolean(R.styleable.SVGAImageView_clearsAfterStop, false) + clearsAfterDetached = typedArray.getBoolean(R.styleable.SVGAImageView_clearsAfterDetached, false) + mAntiAlias = typedArray.getBoolean(R.styleable.SVGAImageView_antiAlias, true) + mAutoPlay = typedArray.getBoolean(R.styleable.SVGAImageView_autoPlay, true) + typedArray.getString(R.styleable.SVGAImageView_fillMode)?.let { + when (it) { + "0" -> { + fillMode = FillMode.Backward + } + "1" -> { + fillMode = FillMode.Forward + } + "2" -> { + fillMode = FillMode.Clear + } + } + } + typedArray.getString(R.styleable.SVGAImageView_source)?.let { + parserSource(it) + } + typedArray.recycle() + } + + private fun parserSource(source: String) { + val refImgView = WeakReference(this) + val parser = SVGAParser(context) + if (source.startsWith("http://") || source.startsWith("https://")) { + parser.decodeFromURL(URL(source), createParseCompletion(refImgView)) + } else { + parser.decodeFromAssets(source, createParseCompletion(refImgView)) + } + } + + private fun createParseCompletion(ref: WeakReference): SVGAParser.ParseCompletion { + return object : SVGAParser.ParseCompletion { + override fun onComplete(videoItem: SVGAVideoEntity) { + ref.get()?.startAnimation(videoItem) + } + + override fun onError() {} + } + } + + private fun startAnimation(videoItem: SVGAVideoEntity) { + this@SVGAImageView.post { + videoItem.antiAlias = mAntiAlias + setVideoItem(videoItem) + getSVGADrawable()?.scaleType = scaleType + if (mAutoPlay) { + startAnimation() + } + } + } + + fun startAnimation() { + startAnimation(null, false) + } + + fun startAnimation(range: SVGARange?, reverse: Boolean = false) { + stopAnimation(false) + play(range, reverse) + } + + private fun play(range: SVGARange?, reverse: Boolean) { + LogUtils.info(TAG, "================ start animation ================") + val drawable = getSVGADrawable() ?: return + setupDrawable() + mStartFrame = Math.max(0, range?.location ?: 0) + val videoItem = drawable.videoItem + mEndFrame = Math.min(videoItem.frames - 1, ((range?.location ?: 0) + (range?.length ?: Int.MAX_VALUE) - 1)) + val animator = ValueAnimator.ofInt(mStartFrame, mEndFrame) + animator.interpolator = LinearInterpolator() + animator.duration = ((mEndFrame - mStartFrame + 1) * (1000 / videoItem.FPS) / generateScale()).toLong() + animator.repeatCount = if (loops <= 0) 99999 else loops - 1 + animator.addUpdateListener(mAnimatorUpdateListener) + animator.addListener(mAnimatorListener) + if (reverse) { + animator.reverse() + } else { + animator.start() + } + mAnimator = animator + } + + private fun setupDrawable() { + val drawable = getSVGADrawable() ?: return + drawable.cleared = false + drawable.scaleType = scaleType + } + + private fun getSVGADrawable(): SVGADrawable? { + return drawable as? SVGADrawable + } + + @Suppress("UNNECESSARY_SAFE_CALL") + private fun generateScale(): Double { + var scale = 1.0 + try { + val animatorClass = Class.forName("android.animation.ValueAnimator") ?: return scale + val getMethod = animatorClass.getDeclaredMethod("getDurationScale") ?: return scale + scale = (getMethod.invoke(animatorClass) as Float).toDouble() + if (scale == 0.0) { + val setMethod = animatorClass.getDeclaredMethod("setDurationScale",Float::class.java) ?: return scale + setMethod.isAccessible = true + setMethod.invoke(animatorClass,1.0f) + scale = 1.0 + LogUtils.info(TAG, + "The animation duration scale has been reset to" + + " 1.0x, because you closed it on developer options.") + } + } catch (ignore: Exception) { + ignore.printStackTrace() + } + return scale + } + + private fun onAnimatorUpdate(animator: ValueAnimator?) { + val drawable = getSVGADrawable() ?: return + drawable.currentFrame = animator?.animatedValue as Int + val percentage = (drawable.currentFrame + 1).toDouble() / drawable.videoItem.frames.toDouble() + callback?.onStep(drawable.currentFrame, percentage) + } + + private fun onAnimationEnd(animation: Animator?) { + isAnimating = false + stopAnimation() + val drawable = getSVGADrawable() + if (drawable != null) { + when (fillMode) { + FillMode.Backward -> { + drawable.currentFrame = mStartFrame + } + FillMode.Forward -> { + drawable.currentFrame = mEndFrame + } + FillMode.Clear -> { + drawable.cleared = true + } + } + } + callback?.onFinished() + } + + fun clear() { + getSVGADrawable()?.cleared = true + getSVGADrawable()?.clear() + // 清除对 drawable 的引用 + setImageDrawable(null) + } + + fun pauseAnimation() { + stopAnimation(false) + callback?.onPause() + } + + fun stopAnimation() { + stopAnimation(clear = clearsAfterStop) + } + + fun stopAnimation(clear: Boolean) { + mAnimator?.cancel() + mAnimator?.removeAllListeners() + mAnimator?.removeAllUpdateListeners() + getSVGADrawable()?.stop() + getSVGADrawable()?.cleared = clear + } + + fun setVideoItem(videoItem: SVGAVideoEntity?) { + setVideoItem(videoItem, SVGADynamicEntity()) + } + + fun setVideoItem(videoItem: SVGAVideoEntity?, dynamicItem: SVGADynamicEntity?) { + if (videoItem == null) { + setImageDrawable(null) + } else { + val drawable = SVGADrawable(videoItem, dynamicItem ?: SVGADynamicEntity()) + drawable.cleared = true + setImageDrawable(drawable) + } + } + + fun stepToFrame(frame: Int, andPlay: Boolean) { + pauseAnimation() + val drawable = getSVGADrawable() ?: return + drawable.currentFrame = frame + if (andPlay) { + startAnimation() + mAnimator?.let { + it.currentPlayTime = (Math.max(0.0f, Math.min(1.0f, (frame.toFloat() / drawable.videoItem.frames.toFloat()))) * it.duration).toLong() + } + } + } + + fun stepToPercentage(percentage: Double, andPlay: Boolean) { + val drawable = drawable as? SVGADrawable ?: return + var frame = (drawable.videoItem.frames * percentage).toInt() + if (frame >= drawable.videoItem.frames && frame > 0) { + frame = drawable.videoItem.frames - 1 + } + stepToFrame(frame, andPlay) + } + + fun setOnAnimKeyClickListener(clickListener : SVGAClickAreaListener){ + mItemClickAreaListener = clickListener + } + + @SuppressLint("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent?): Boolean { + if (event?.action != MotionEvent.ACTION_DOWN) { + return super.onTouchEvent(event) + } + val drawable = getSVGADrawable() ?: return super.onTouchEvent(event) + for ((key, value) in drawable.dynamicItem.mClickMap) { + if (event.x >= value[0] && event.x <= value[2] && event.y >= value[1] && event.y <= value[3]) { + mItemClickAreaListener?.let { + it.onClick(key) + return true + } + } + } + + return super.onTouchEvent(event) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + stopAnimation(clearsAfterDetached) + if (clearsAfterDetached) { + clear() + } + } + + private class AnimatorListener(view: SVGAImageView) : Animator.AnimatorListener { + private val weakReference = WeakReference(view) + + override fun onAnimationRepeat(animation: Animator?) { + weakReference.get()?.callback?.onRepeat() + } + + override fun onAnimationEnd(animation: Animator?) { + weakReference.get()?.onAnimationEnd(animation) + } + + override fun onAnimationCancel(animation: Animator?) { + weakReference.get()?.isAnimating = false + } + + override fun onAnimationStart(animation: Animator?) { + weakReference.get()?.isAnimating = true + } + } // end of AnimatorListener + + + private class AnimatorUpdateListener(view: SVGAImageView) : ValueAnimator.AnimatorUpdateListener { + private val weakReference = WeakReference(view) + + override fun onAnimationUpdate(animation: ValueAnimator?) { + weakReference.get()?.onAnimatorUpdate(animation) + } + } // end of AnimatorUpdateListener +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAParser.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAParser.kt new file mode 100644 index 000000000..2b711ef33 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAParser.kt @@ -0,0 +1,565 @@ +package com.opensource.svgaplayer + +import android.content.Context +import android.net.http.HttpResponseCache +import android.os.Handler +import android.os.Looper +import com.opensource.svgaplayer.proto.MovieEntity +import com.opensource.svgaplayer.utils.log.LogUtils +import org.json.JSONObject +import java.io.* +import java.net.HttpURLConnection +import java.net.URL +import java.util.concurrent.Executors +import java.util.concurrent.ThreadPoolExecutor +import java.util.concurrent.atomic.AtomicInteger +import java.util.zip.Inflater +import java.util.zip.ZipInputStream + +/** + * Created by PonyCui 16/6/18. + */ +private var fileLock: Int = 0 +private var isUnzipping = false + +class SVGAParser(context: Context?) { + private var mContext = context?.applicationContext + + init { + SVGACache.onCreate(context) + } + + @Volatile + private var mFrameWidth: Int = 0 + + @Volatile + private var mFrameHeight: Int = 0 + + interface ParseCompletion { + fun onComplete(videoItem: SVGAVideoEntity) + fun onError() + } + + interface PlayCallback{ + fun onPlay(file: List) + } + + open class FileDownloader { + + var noCache = false + + open fun resume(url: URL, complete: (inputStream: InputStream) -> Unit, failure: (e: Exception) -> Unit): () -> Unit { + var cancelled = false + val cancelBlock = { + cancelled = true + } + threadPoolExecutor.execute { + try { + LogUtils.info(TAG, "================ svga file download start ================") + if (HttpResponseCache.getInstalled() == null && !noCache) { + LogUtils.error(TAG, "SVGAParser can not handle cache before install HttpResponseCache. see https://github.com/yyued/SVGAPlayer-Android#cache") + LogUtils.error(TAG, "在配置 HttpResponseCache 前 SVGAParser 无法缓存. 查看 https://github.com/yyued/SVGAPlayer-Android#cache ") + } + (url.openConnection() as? HttpURLConnection)?.let { + it.connectTimeout = 20 * 1000 + it.requestMethod = "GET" + it.setRequestProperty("Connection", "close") + it.connect() + it.inputStream.use { inputStream -> + ByteArrayOutputStream().use { outputStream -> + val buffer = ByteArray(4096) + var count: Int + while (true) { + if (cancelled) { + LogUtils.warn(TAG, "================ svga file download canceled ================") + break + } + count = inputStream.read(buffer, 0, 4096) + if (count == -1) { + break + } + outputStream.write(buffer, 0, count) + } + if (cancelled) { + LogUtils.warn(TAG, "================ svga file download canceled ================") + return@execute + } + ByteArrayInputStream(outputStream.toByteArray()).use { + LogUtils.info(TAG, "================ svga file download complete ================") + complete(it) + } + } + } + } + } catch (e: Exception) { + LogUtils.error(TAG, "================ svga file download fail ================") + LogUtils.error(TAG, "error: ${e.message}") + e.printStackTrace() + failure(e) + } + } + return cancelBlock + } + } + + var fileDownloader = FileDownloader() + + companion object { + private const val TAG = "SVGAParser" + + private val threadNum = AtomicInteger(0) + private var mShareParser = SVGAParser(null) + + internal var threadPoolExecutor = Executors.newCachedThreadPool { r -> + Thread(r, "SVGAParser-Thread-${threadNum.getAndIncrement()}") + } + + fun setThreadPoolExecutor(executor: ThreadPoolExecutor) { + threadPoolExecutor = executor + } + + fun shareParser(): SVGAParser { + return mShareParser + } + } + + fun init(context: Context) { + mContext = context.applicationContext + SVGACache.onCreate(mContext) + } + + fun setFrameSize(frameWidth: Int, frameHeight: Int) { + mFrameWidth = frameWidth + mFrameHeight = frameHeight + } + + fun decodeFromAssets( + name: String, + callback: ParseCompletion?, + playCallback: PlayCallback? = null + ) { + if (mContext == null) { + LogUtils.error(TAG, "在配置 SVGAParser context 前, 无法解析 SVGA 文件。") + return + } + LogUtils.info(TAG, "================ decode $name from assets ================") + threadPoolExecutor.execute { + try { + mContext?.assets?.open(name)?.let { + this.decodeFromInputStream( + it, + SVGACache.buildCacheKey("file:///assets/$name"), + callback, + true, + playCallback, + alias = name + ) + } + } catch (e: Exception) { + this.invokeErrorCallback(e, callback, name) + } + } + + } + + fun decodeFromURL( + url: URL, + callback: ParseCompletion?, + playCallback: PlayCallback? = null + ): (() -> Unit)? { + if (mContext == null) { + LogUtils.error(TAG, "在配置 SVGAParser context 前, 无法解析 SVGA 文件。") + return null + } + val urlPath = url.toString() + LogUtils.info(TAG, "================ decode from url: $urlPath ================") + val cacheKey = SVGACache.buildCacheKey(url); + return if (SVGACache.isCached(cacheKey)) { + LogUtils.info(TAG, "this url cached") + threadPoolExecutor.execute { + if (SVGACache.isDefaultCache()) { + this.decodeFromCacheKey(cacheKey, callback, alias = urlPath) + } else { + this.decodeFromSVGAFileCacheKey(cacheKey, callback, playCallback, alias = urlPath) + } + } + return null + } else { + LogUtils.info(TAG, "no cached, prepare to download") + fileDownloader.resume(url, { + this.decodeFromInputStream( + it, + cacheKey, + callback, + false, + playCallback, + alias = urlPath + ) + }, { + LogUtils.error( + TAG, + "================ svga file: $url download fail ================" + ) + this.invokeErrorCallback(it, callback, alias = urlPath) + }) + } + } + + /** + * 读取解析本地缓存的 svga 文件. + */ + fun decodeFromSVGAFileCacheKey( + cacheKey: String, + callback: ParseCompletion?, + playCallback: PlayCallback?, + alias: String? = null + ) { + threadPoolExecutor.execute { + try { + LogUtils.info(TAG, "================ decode $alias from svga cachel file to entity ================") + FileInputStream(SVGACache.buildSvgaFile(cacheKey)).use { inputStream -> + readAsBytes(inputStream)?.let { bytes -> + if (isZipFile(bytes)) { + this.decodeFromCacheKey(cacheKey, callback, alias) + } else { + LogUtils.info(TAG, "inflate start") + inflate(bytes)?.let { + LogUtils.info(TAG, "inflate complete") + val videoItem = SVGAVideoEntity( + MovieEntity.ADAPTER.decode(it), + File(cacheKey), + mFrameWidth, + mFrameHeight + ) + LogUtils.info(TAG, "SVGAVideoEntity prepare start") + videoItem.prepare({ + LogUtils.info(TAG, "SVGAVideoEntity prepare success") + this.invokeCompleteCallback(videoItem, callback, alias) + },playCallback) + + } ?: this.invokeErrorCallback( + Exception("inflate(bytes) cause exception"), + callback, + alias + ) + } + } ?: this.invokeErrorCallback( + Exception("readAsBytes(inputStream) cause exception"), + callback, + alias + ) + } + } catch (e: java.lang.Exception) { + this.invokeErrorCallback(e, callback, alias) + } finally { + LogUtils.info(TAG, "================ decode $alias from svga cachel file to entity end ================") + } + } + } + + fun decodeFromInputStream( + inputStream: InputStream, + cacheKey: String, + callback: ParseCompletion?, + closeInputStream: Boolean = false, + playCallback: PlayCallback? = null, + alias: String? = null + ) { + if (mContext == null) { + LogUtils.error(TAG, "在配置 SVGAParser context 前, 无法解析 SVGA 文件。") + return + } + LogUtils.info(TAG, "================ decode $alias from input stream ================") + threadPoolExecutor.execute { + try { + readAsBytes(inputStream)?.let { bytes -> + if (isZipFile(bytes)) { + LogUtils.info(TAG, "decode from zip file") + if (!SVGACache.buildCacheDir(cacheKey).exists() || isUnzipping) { + synchronized(fileLock) { + if (!SVGACache.buildCacheDir(cacheKey).exists()) { + isUnzipping = true + LogUtils.info(TAG, "no cached, prepare to unzip") + ByteArrayInputStream(bytes).use { + unzip(it, cacheKey) + isUnzipping = false + LogUtils.info(TAG, "unzip success") + } + } + } + } + this.decodeFromCacheKey(cacheKey, callback, alias) + } else { + if (!SVGACache.isDefaultCache()) { + // 如果 SVGACache 设置类型为 FILE + threadPoolExecutor.execute { + SVGACache.buildSvgaFile(cacheKey).let { cacheFile -> + try { + cacheFile.takeIf { !it.exists() }?.createNewFile() + FileOutputStream(cacheFile).write(bytes) + } catch (e: Exception) { + LogUtils.error(TAG, "create cache file fail.", e) + cacheFile.delete() + } + } + } + } + LogUtils.info(TAG, "inflate start") + inflate(bytes)?.let { + LogUtils.info(TAG, "inflate complete") + val videoItem = SVGAVideoEntity( + MovieEntity.ADAPTER.decode(it), + File(cacheKey), + mFrameWidth, + mFrameHeight + ) + LogUtils.info(TAG, "SVGAVideoEntity prepare start") + videoItem.prepare({ + LogUtils.info(TAG, "SVGAVideoEntity prepare success") + this.invokeCompleteCallback(videoItem, callback, alias) + },playCallback) + + } ?: this.invokeErrorCallback( + Exception("inflate(bytes) cause exception"), + callback, + alias + ) + } + } ?: this.invokeErrorCallback( + Exception("readAsBytes(inputStream) cause exception"), + callback, + alias + ) + } catch (e: java.lang.Exception) { + this.invokeErrorCallback(e, callback, alias) + } finally { + if (closeInputStream) { + inputStream.close() + } + LogUtils.info(TAG, "================ decode $alias from input stream end ================") + } + } + } + + /** + * @deprecated from 2.4.0 + */ + @Deprecated("This method has been deprecated from 2.4.0.", ReplaceWith("this.decodeFromAssets(assetsName, callback)")) + fun parse(assetsName: String, callback: ParseCompletion?) { + this.decodeFromAssets(assetsName, callback,null) + } + + /** + * @deprecated from 2.4.0 + */ + @Deprecated("This method has been deprecated from 2.4.0.", ReplaceWith("this.decodeFromURL(url, callback)")) + fun parse(url: URL, callback: ParseCompletion?) { + this.decodeFromURL(url, callback,null) + } + + /** + * @deprecated from 2.4.0 + */ + @Deprecated("This method has been deprecated from 2.4.0.", ReplaceWith("this.decodeFromInputStream(inputStream, cacheKey, callback, closeInputStream)")) + fun parse( + inputStream: InputStream, + cacheKey: String, + callback: ParseCompletion?, + closeInputStream: Boolean = false + ) { + this.decodeFromInputStream(inputStream, cacheKey, callback, closeInputStream,null) + } + + private fun invokeCompleteCallback( + videoItem: SVGAVideoEntity, + callback: ParseCompletion?, + alias: String? + ) { + Handler(Looper.getMainLooper()).post { + LogUtils.info(TAG, "================ $alias parser complete ================") + callback?.onComplete(videoItem) + } + } + + private fun invokeErrorCallback( + e: Exception, + callback: ParseCompletion?, + alias: String? + ) { + e.printStackTrace() + LogUtils.error(TAG, "================ $alias parser error ================") + LogUtils.error(TAG, "$alias parse error", e) + Handler(Looper.getMainLooper()).post { + callback?.onError() + } + } + + private fun decodeFromCacheKey( + cacheKey: String, + callback: ParseCompletion?, + alias: String? + ) { + LogUtils.info(TAG, "================ decode $alias from cache ================") + LogUtils.debug(TAG, "decodeFromCacheKey called with cacheKey : $cacheKey") + if (mContext == null) { + LogUtils.error(TAG, "在配置 SVGAParser context 前, 无法解析 SVGA 文件。") + return + } + try { + val cacheDir = SVGACache.buildCacheDir(cacheKey) + File(cacheDir, "movie.binary").takeIf { it.isFile }?.let { binaryFile -> + try { + LogUtils.info(TAG, "binary change to entity") + FileInputStream(binaryFile).use { + LogUtils.info(TAG, "binary change to entity success") + this.invokeCompleteCallback( + SVGAVideoEntity( + MovieEntity.ADAPTER.decode(it), + cacheDir, + mFrameWidth, + mFrameHeight + ), + callback, + alias + ) + } + + } catch (e: Exception) { + LogUtils.error(TAG, "binary change to entity fail", e) + cacheDir.delete() + binaryFile.delete() + throw e + } + } + File(cacheDir, "movie.spec").takeIf { it.isFile }?.let { jsonFile -> + try { + LogUtils.info(TAG, "spec change to entity") + FileInputStream(jsonFile).use { fileInputStream -> + ByteArrayOutputStream().use { byteArrayOutputStream -> + val buffer = ByteArray(2048) + while (true) { + val size = fileInputStream.read(buffer, 0, buffer.size) + if (size == -1) { + break + } + byteArrayOutputStream.write(buffer, 0, size) + } + byteArrayOutputStream.toString().let { + JSONObject(it).let { + LogUtils.info(TAG, "spec change to entity success") + this.invokeCompleteCallback( + SVGAVideoEntity( + it, + cacheDir, + mFrameWidth, + mFrameHeight + ), + callback, + alias + ) + } + } + } + } + } catch (e: Exception) { + LogUtils.error(TAG, "$alias movie.spec change to entity fail", e) + cacheDir.delete() + jsonFile.delete() + throw e + } + } + } catch (e: Exception) { + this.invokeErrorCallback(e, callback, alias) + } + } + + private fun readAsBytes(inputStream: InputStream): ByteArray? { + ByteArrayOutputStream().use { byteArrayOutputStream -> + val byteArray = ByteArray(2048) + while (true) { + val count = inputStream.read(byteArray, 0, 2048) + if (count <= 0) { + break + } else { + byteArrayOutputStream.write(byteArray, 0, count) + } + } + return byteArrayOutputStream.toByteArray() + } + } + + private fun inflate(byteArray: ByteArray): ByteArray? { + val inflater = Inflater() + inflater.setInput(byteArray, 0, byteArray.size) + val inflatedBytes = ByteArray(2048) + ByteArrayOutputStream().use { inflatedOutputStream -> + while (true) { + val count = inflater.inflate(inflatedBytes, 0, 2048) + if (count <= 0) { + break + } else { + inflatedOutputStream.write(inflatedBytes, 0, count) + } + } + inflater.end() + return inflatedOutputStream.toByteArray() + } + } + + // 是否是 zip 文件 + private fun isZipFile(bytes: ByteArray): Boolean { + return bytes.size > 4 && bytes[0].toInt() == 80 && bytes[1].toInt() == 75 && bytes[2].toInt() == 3 && bytes[3].toInt() == 4 + } + + // 解压 + private fun unzip(inputStream: InputStream, cacheKey: String) { + LogUtils.info(TAG, "================ unzip prepare ================") + val cacheDir = SVGACache.buildCacheDir(cacheKey) + cacheDir.mkdirs() + try { + BufferedInputStream(inputStream).use { + ZipInputStream(it).use { zipInputStream -> + while (true) { + val zipItem = zipInputStream.nextEntry ?: break + if (zipItem.name.contains("../")) { + // 解压路径存在路径穿越问题,直接过滤 + continue + } + if (zipItem.name.contains("/")) { + continue + } + val file = File(cacheDir, zipItem.name) + ensureUnzipSafety(file, cacheDir.absolutePath) + FileOutputStream(file).use { fileOutputStream -> + val buff = ByteArray(2048) + while (true) { + val readBytes = zipInputStream.read(buff) + if (readBytes <= 0) { + break + } + fileOutputStream.write(buff, 0, readBytes) + } + } + LogUtils.error(TAG, "================ unzip complete ================") + zipInputStream.closeEntry() + } + } + } + } catch (e: Exception) { + LogUtils.error(TAG, "================ unzip error ================") + LogUtils.error(TAG, "error", e) + SVGACache.clearDir(cacheDir.absolutePath) + cacheDir.delete() + throw e + } + } + + // 检查 zip 路径穿透 + private fun ensureUnzipSafety(outputFile: File, dstDirPath: String) { + val dstDirCanonicalPath = File(dstDirPath).canonicalPath + val outputFileCanonicalPath = outputFile.canonicalPath + if (!outputFileCanonicalPath.startsWith(dstDirCanonicalPath)) { + throw IOException("Found Zip Path Traversal Vulnerability with $dstDirCanonicalPath") + } + } +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAPlayer.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAPlayer.kt new file mode 100644 index 000000000..57ade038b --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAPlayer.kt @@ -0,0 +1,19 @@ +package com.opensource.svgaplayer + +import android.content.Context +import android.util.AttributeSet + +/** + * Created by cuiminghui on 2017/3/30. + * @deprecated from 2.4.0 + */ +@Deprecated("This class has been deprecated from 2.4.0. We don't recommend you to use it.") +class SVGAPlayer: SVGAImageView { + + constructor(context: Context) : super(context) {} + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {} + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {} + +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGASoundManager.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGASoundManager.kt new file mode 100644 index 000000000..18719df02 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGASoundManager.kt @@ -0,0 +1,194 @@ +package com.opensource.svgaplayer + +/** + * @author Devin + * + * Created on 2/24/21. + */ +import android.media.AudioAttributes +import android.media.AudioManager +import android.media.SoundPool +import android.os.Build +import com.opensource.svgaplayer.utils.log.LogUtils +import java.io.FileDescriptor + +/** + * Author : llk + * Time : 2020/10/24 + * Description : svga 音频加载管理类 + * 将 SoundPool 抽取到单例里边,规避 load 资源之后不回调 onLoadComplete 的问题。 + * + * 需要对 SVGASoundManager 进行初始化 + * + * 相关文章:Android SoundPool 崩溃问题研究 + * https://zhuanlan.zhihu.com/p/29985198 + */ +object SVGASoundManager { + + private val TAG = SVGASoundManager::class.java.simpleName + + private var soundPool: SoundPool? = null + + private val soundCallBackMap: MutableMap = mutableMapOf() + + /** + * 音量设置,范围在 [0, 1] 之间 + */ + private var volume: Float = 1f + + /** + * 音频回调 + */ + internal interface SVGASoundCallBack { + + // 音量发生变化 + fun onVolumeChange(value: Float) + + // 音频加载完成 + fun onComplete() + } + + fun init() { + init(20) + } + + fun init(maxStreams: Int) { + LogUtils.debug(TAG, "**************** init **************** $maxStreams") + if (soundPool != null) { + return + } + soundPool = getSoundPool(maxStreams) + soundPool?.setOnLoadCompleteListener { _, soundId, status -> + LogUtils.debug(TAG, "SoundPool onLoadComplete soundId=$soundId status=$status") + if (status == 0) { //加载该声音成功 + if (soundCallBackMap.containsKey(soundId)) { + soundCallBackMap[soundId]?.onComplete() + } + } + } + } + + fun release() { + LogUtils.debug(TAG, "**************** release ****************") + if (soundCallBackMap.isNotEmpty()) { + soundCallBackMap.clear() + } + } + + /** + * 根据当前播放实体,设置音量 + * + * @param volume 范围在 [0, 1] + * @param entity 根据需要控制对应 entity 音量大小,若为空则控制所有正在播放的音频音量 + */ + fun setVolume(volume: Float, entity: SVGAVideoEntity? = null) { + if (!checkInit()) { + return + } + + if (volume < 0f || volume > 1f) { + LogUtils.error(TAG, "The volume level is in the range of 0 to 1 ") + return + } + + if (entity == null) { + this.volume = volume + val iterator = soundCallBackMap.entries.iterator() + while (iterator.hasNext()) { + val e = iterator.next() + e.value.onVolumeChange(volume) + } + return + } + + val soundPool = soundPool ?: return + + entity.audioList.forEach { audio -> + val streamId = audio.playID ?: return + soundPool.setVolume(streamId, volume, volume) + } + } + + /** + * 是否初始化 + * 如果没有初始化,就使用原来SvgaPlayer库的音频加载逻辑。 + * @return true 则已初始化, 否则为 false + */ + internal fun isInit(): Boolean { + return soundPool != null + } + + private fun checkInit(): Boolean { + val isInit = isInit() + if (!isInit) { + LogUtils.error(TAG, "soundPool is null, you need call init() !!!") + } + return isInit + } + + private fun getSoundPool(maxStreams: Int) = if (Build.VERSION.SDK_INT >= 21) { + val attributes = AudioAttributes.Builder() + .setUsage(AudioAttributes.USAGE_MEDIA) + .build() + SoundPool.Builder().setAudioAttributes(attributes) + .setMaxStreams(maxStreams) + .build() + } else { + SoundPool(maxStreams, AudioManager.STREAM_MUSIC, 0) + } + + internal fun load(callBack: SVGASoundCallBack?, + fd: FileDescriptor?, + offset: Long, + length: Long, + priority: Int): Int { + if (!checkInit()) return -1 + + val soundId = soundPool!!.load(fd, offset, length, priority) + + LogUtils.debug(TAG, "load soundId=$soundId callBack=$callBack") + + if (callBack != null && !soundCallBackMap.containsKey(soundId)) { + soundCallBackMap[soundId] = callBack + } + return soundId + } + + internal fun unload(soundId: Int) { + if (!checkInit()) return + + LogUtils.debug(TAG, "unload soundId=$soundId") + + soundPool!!.unload(soundId) + + soundCallBackMap.remove(soundId) + } + + internal fun play(soundId: Int): Int { + if (!checkInit()) return -1 + + LogUtils.debug(TAG, "play soundId=$soundId") + return soundPool!!.play(soundId, volume, volume, 1, 0, 1.0f) + } + + internal fun stop(soundId: Int) { + if (!checkInit()) return + + LogUtils.debug(TAG, "stop soundId=$soundId") + soundPool!!.stop(soundId) + } + + internal fun resume(soundId: Int) { + if (!checkInit()) return + + LogUtils.debug(TAG, "stop soundId=$soundId") + soundPool!!.resume(soundId) + } + + internal fun pause(soundId: Int) { + if (!checkInit()) return + + LogUtils.debug(TAG, "pause soundId=$soundId") + soundPool!!.pause(soundId) + } +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAVideoEntity.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAVideoEntity.kt new file mode 100644 index 000000000..49cb83027 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/SVGAVideoEntity.kt @@ -0,0 +1,347 @@ +package com.opensource.svgaplayer + +import android.graphics.Bitmap +import android.media.AudioAttributes +import android.media.AudioManager +import android.media.SoundPool +import android.os.Build +import com.opensource.svgaplayer.bitmap.SVGABitmapByteArrayDecoder +import com.opensource.svgaplayer.bitmap.SVGABitmapFileDecoder +import com.opensource.svgaplayer.entities.SVGAAudioEntity +import com.opensource.svgaplayer.entities.SVGAVideoSpriteEntity +import com.opensource.svgaplayer.proto.AudioEntity +import com.opensource.svgaplayer.proto.MovieEntity +import com.opensource.svgaplayer.proto.MovieParams +import com.opensource.svgaplayer.utils.SVGARect +import com.opensource.svgaplayer.utils.log.LogUtils +import org.json.JSONObject +import java.io.File +import java.io.FileInputStream +import java.io.FileOutputStream +import java.util.* +import kotlin.collections.ArrayList + +/** + * Created by PonyCui on 16/6/18. + */ +class SVGAVideoEntity { + + private val TAG = "SVGAVideoEntity" + + var antiAlias = true + var movieItem: MovieEntity? = null + + var videoSize = SVGARect(0.0, 0.0, 0.0, 0.0) + private set + + var FPS = 15 + private set + + var frames: Int = 0 + private set + + internal var spriteList: List = emptyList() + internal var audioList: List = emptyList() + internal var soundPool: SoundPool? = null + private var soundCallback: SVGASoundManager.SVGASoundCallBack? = null + internal var imageMap = HashMap() + private var mCacheDir: File + private var mFrameHeight = 0 + private var mFrameWidth = 0 + private var mPlayCallback: SVGAParser.PlayCallback?=null + private lateinit var mCallback: () -> Unit + + constructor(json: JSONObject, cacheDir: File) : this(json, cacheDir, 0, 0) + + constructor(json: JSONObject, cacheDir: File, frameWidth: Int, frameHeight: Int) { + mFrameWidth = frameWidth + mFrameHeight = frameHeight + mCacheDir = cacheDir + val movieJsonObject = json.optJSONObject("movie") ?: return + setupByJson(movieJsonObject) + try { + parserImages(json) + } catch (e: Exception) { + e.printStackTrace() + } catch (e: OutOfMemoryError) { + e.printStackTrace() + } + resetSprites(json) + } + + private fun setupByJson(movieObject: JSONObject) { + movieObject.optJSONObject("viewBox")?.let { viewBoxObject -> + val width = viewBoxObject.optDouble("width", 0.0) + val height = viewBoxObject.optDouble("height", 0.0) + videoSize = SVGARect(0.0, 0.0, width, height) + } + FPS = movieObject.optInt("fps", 20) + frames = movieObject.optInt("frames", 0) + } + + constructor(entity: MovieEntity, cacheDir: File) : this(entity, cacheDir, 0, 0) + + constructor(entity: MovieEntity, cacheDir: File, frameWidth: Int, frameHeight: Int) { + this.mFrameWidth = frameWidth + this.mFrameHeight = frameHeight + this.mCacheDir = cacheDir + this.movieItem = entity + entity.params?.let(this::setupByMovie) + try { + parserImages(entity) + } catch (e: Exception) { + e.printStackTrace() + } catch (e: OutOfMemoryError) { + e.printStackTrace() + } + resetSprites(entity) + } + + private fun setupByMovie(movieParams: MovieParams) { + val width = (movieParams.viewBoxWidth ?: 0.0f).toDouble() + val height = (movieParams.viewBoxHeight ?: 0.0f).toDouble() + videoSize = SVGARect(0.0, 0.0, width, height) + FPS = movieParams.fps ?: 20 + frames = movieParams.frames ?: 0 + } + + internal fun prepare(callback: () -> Unit, playCallback: SVGAParser.PlayCallback?) { + mCallback = callback + mPlayCallback = playCallback + if (movieItem == null) { + mCallback() + } else { + setupAudios(movieItem!!) { + mCallback() + } + } + } + + private fun parserImages(json: JSONObject) { + val imgJson = json.optJSONObject("images") ?: return + imgJson.keys().forEach { imgKey -> + val filePath = generateBitmapFilePath(imgJson[imgKey].toString(), imgKey) + if (filePath.isEmpty()) { + return + } + val bitmapKey = imgKey.replace(".matte", "") + val bitmap = createBitmap(filePath) + if (bitmap != null) { + imageMap[bitmapKey] = bitmap + } + } + } + + private fun generateBitmapFilePath(imgName: String, imgKey: String): String { + val path = mCacheDir.absolutePath + "/" + imgName + val path1 = "$path.png" + val path2 = mCacheDir.absolutePath + "/" + imgKey + ".png" + + return when { + File(path).exists() -> path + File(path1).exists() -> path1 + File(path2).exists() -> path2 + else -> "" + } + } + + private fun createBitmap(filePath: String): Bitmap? { + return SVGABitmapFileDecoder.decodeBitmapFrom(filePath, mFrameWidth, mFrameHeight) + } + + private fun parserImages(obj: MovieEntity) { + obj.images?.entries?.forEach { entry -> + val byteArray = entry.value.toByteArray() + if (byteArray.count() < 4) { + return@forEach + } + val fileTag = byteArray.slice(IntRange(0, 3)) + if (fileTag[0].toInt() == 73 && fileTag[1].toInt() == 68 && fileTag[2].toInt() == 51) { + return@forEach + } + val filePath = generateBitmapFilePath(entry.value.utf8(), entry.key) + createBitmap(byteArray, filePath)?.let { bitmap -> + imageMap[entry.key] = bitmap + } + } + } + + private fun createBitmap(byteArray: ByteArray, filePath: String): Bitmap? { + val bitmap = SVGABitmapByteArrayDecoder.decodeBitmapFrom(byteArray, mFrameWidth, mFrameHeight) + return bitmap ?: createBitmap(filePath) + } + + private fun resetSprites(json: JSONObject) { + val mutableList: MutableList = mutableListOf() + json.optJSONArray("sprites")?.let { item -> + for (i in 0 until item.length()) { + item.optJSONObject(i)?.let { entryJson -> + mutableList.add(SVGAVideoSpriteEntity(entryJson)) + } + } + } + spriteList = mutableList.toList() + } + + private fun resetSprites(entity: MovieEntity) { + spriteList = entity.sprites?.map { + return@map SVGAVideoSpriteEntity(it) + } ?: listOf() + } + + private fun setupAudios(entity: MovieEntity, completionBlock: () -> Unit) { + if (entity.audios == null || entity.audios.isEmpty()) { + run(completionBlock) + return + } + setupSoundPool(entity, completionBlock) + val audiosFileMap = generateAudioFileMap(entity) + //repair when audioEntity error can not callback + //如果audiosFileMap为空 soundPool?.load 不会走 导致 setOnLoadCompleteListener 不会回调 导致外层prepare不回调卡住 + if (audiosFileMap.size == 0) { + run(completionBlock) + return + } + this.audioList = entity.audios.map { audio -> + return@map createSvgaAudioEntity(audio, audiosFileMap) + } + } + + private fun createSvgaAudioEntity(audio: AudioEntity, audiosFileMap: HashMap): SVGAAudioEntity { + val item = SVGAAudioEntity(audio) + val startTime = (audio.startTime ?: 0).toDouble() + val totalTime = (audio.totalTime ?: 0).toDouble() + if (totalTime.toInt() == 0) { + // 除数不能为 0 + return item + } + // 直接回调文件,后续播放都不走 + mPlayCallback?.let { + val fileList: MutableList = ArrayList() + audiosFileMap.forEach { entity -> + fileList.add(entity.value) + } + it.onPlay(fileList) + mCallback() + return item + } + + audiosFileMap[audio.audioKey]?.let { file -> + FileInputStream(file).use { + val length = it.available().toDouble() + val offset = ((startTime / totalTime) * length).toLong() + if (SVGASoundManager.isInit()) { + item.soundID = SVGASoundManager.load(soundCallback, + it.fd, + offset, + length.toLong(), + 1) + } else { + item.soundID = soundPool?.load(it.fd, offset, length.toLong(), 1) + } + } + } + return item + } + + private fun generateAudioFile(audioCache: File, value: ByteArray): File { + audioCache.createNewFile() + FileOutputStream(audioCache).write(value) + return audioCache + } + + private fun generateAudioFileMap(entity: MovieEntity): HashMap { + val audiosDataMap = generateAudioMap(entity) + val audiosFileMap = HashMap() + if (audiosDataMap.count() > 0) { + audiosDataMap.forEach { + val audioCache = SVGACache.buildAudioFile(it.key) + audiosFileMap[it.key] = + audioCache.takeIf { file -> file.exists() } ?: generateAudioFile( + audioCache, + it.value + ) + } + } + return audiosFileMap + } + + private fun generateAudioMap(entity: MovieEntity): HashMap { + val audiosDataMap = HashMap() + entity.images?.entries?.forEach { + val imageKey = it.key + val byteArray = it.value.toByteArray() + if (byteArray.count() < 4) { + return@forEach + } + val fileTag = byteArray.slice(IntRange(0, 3)) + if (fileTag[0].toInt() == 73 && fileTag[1].toInt() == 68 && fileTag[2].toInt() == 51) { + audiosDataMap[imageKey] = byteArray + }else if(fileTag[0].toInt() == -1 && fileTag[1].toInt() == -5 && fileTag[2].toInt() == -108){ + audiosDataMap[imageKey] = byteArray + } + } + return audiosDataMap + } + + private fun setupSoundPool(entity: MovieEntity, completionBlock: () -> Unit) { + var soundLoaded = 0 + if (SVGASoundManager.isInit()) { + soundCallback = object : SVGASoundManager.SVGASoundCallBack { + override fun onVolumeChange(value: Float) { + SVGASoundManager.setVolume(value, this@SVGAVideoEntity) + } + + override fun onComplete() { + soundLoaded++ + if (soundLoaded >= entity.audios.count()) { + completionBlock() + } + } + } + return + } + soundPool = generateSoundPool(entity) + LogUtils.info("SVGAParser", "pool_start") + soundPool?.setOnLoadCompleteListener { _, _, _ -> + LogUtils.info("SVGAParser", "pool_complete") + soundLoaded++ + if (soundLoaded >= entity.audios.count()) { + completionBlock() + } + } + } + + private fun generateSoundPool(entity: MovieEntity): SoundPool? { + return try { + if (Build.VERSION.SDK_INT >= 21) { + val attributes = AudioAttributes.Builder() + .setUsage(AudioAttributes.USAGE_MEDIA) + .build() + SoundPool.Builder().setAudioAttributes(attributes) + .setMaxStreams(12.coerceAtMost(entity.audios.count())) + .build() + } else { + SoundPool(12.coerceAtMost(entity.audios.count()), AudioManager.STREAM_MUSIC, 0) + } + } catch (e: Exception) { + LogUtils.error(TAG, e) + null + } + } + + fun clear() { + if (SVGASoundManager.isInit()) { + this.audioList.forEach { + it.soundID?.let { id -> SVGASoundManager.unload(id) } + } + soundCallback = null + } + soundPool?.release() + soundPool = null + audioList = emptyList() + spriteList = emptyList() + imageMap.clear() + } +} + diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/BitmapSampleSizeCalculator.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/BitmapSampleSizeCalculator.kt new file mode 100644 index 000000000..e1ea015eb --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/BitmapSampleSizeCalculator.kt @@ -0,0 +1,33 @@ +package com.opensource.svgaplayer.bitmap + +import android.graphics.BitmapFactory + +/** + * + * Create by im_dsd 2020/7/7 17:59 + */ +internal object BitmapSampleSizeCalculator { + + fun calculate(options: BitmapFactory.Options, reqWidth: Int, reqHeight: Int): Int { + // Raw height and width of image + val (height: Int, width: Int) = options.run { outHeight to outWidth } + var inSampleSize = 1 + + if (reqHeight <= 0 || reqWidth <= 0) { + return inSampleSize + } + if (height > reqHeight || width > reqWidth) { + + val halfHeight: Int = height / 2 + val halfWidth: Int = width / 2 + + // Calculate the largest inSampleSize value that is a power of 2 and keeps both + // height and width larger than the requested height and width. + while (halfHeight / inSampleSize >= reqHeight && halfWidth / inSampleSize >= reqWidth) { + inSampleSize *= 2 + } + } + + return inSampleSize + } +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapByteArrayDecoder.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapByteArrayDecoder.kt new file mode 100644 index 000000000..0c1dba648 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapByteArrayDecoder.kt @@ -0,0 +1,16 @@ +package com.opensource.svgaplayer.bitmap + +import android.graphics.Bitmap +import android.graphics.BitmapFactory + +/** + * 通过字节码解码 Bitmap + * + * Create by im_dsd 2020/7/7 17:50 + */ +internal object SVGABitmapByteArrayDecoder : SVGABitmapDecoder() { + + override fun onDecode(data: ByteArray, ops: BitmapFactory.Options): Bitmap? { + return BitmapFactory.decodeByteArray(data, 0, data.count(), ops) + } +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapDecoder.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapDecoder.kt new file mode 100644 index 000000000..8816fbb01 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapDecoder.kt @@ -0,0 +1,35 @@ +package com.opensource.svgaplayer.bitmap + +import android.graphics.Bitmap +import android.graphics.BitmapFactory + +/** + * Bitmap 解码器 + * + * 需要加载的数据类型 + * + * Create by im_dsd 2020/7/7 17:39 + */ +internal abstract class SVGABitmapDecoder { + + fun decodeBitmapFrom(data: T, reqWidth: Int, reqHeight: Int): Bitmap? { + return BitmapFactory.Options().run { + // 如果期望的宽高是合法的, 则开启检测尺寸模式 + inJustDecodeBounds = (reqWidth > 0 && reqHeight > 0) + inPreferredConfig = Bitmap.Config.RGB_565 + + val bitmap = onDecode(data, this) + if (!inJustDecodeBounds) { + return bitmap + } + + // Calculate inSampleSize + inSampleSize = BitmapSampleSizeCalculator.calculate(this, reqWidth, reqHeight) + // Decode bitmap with inSampleSize set + inJustDecodeBounds = false + onDecode(data, this) + } + } + + abstract fun onDecode(data: T, ops: BitmapFactory.Options): Bitmap? +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapFileDecoder.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapFileDecoder.kt new file mode 100644 index 000000000..edca5bcd9 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/bitmap/SVGABitmapFileDecoder.kt @@ -0,0 +1,16 @@ +package com.opensource.svgaplayer.bitmap + +import android.graphics.Bitmap +import android.graphics.BitmapFactory + +/** + * 通过文件解码 Bitmap + * + * Create by im_dsd 2020/7/7 17:50 + */ +internal object SVGABitmapFileDecoder : SVGABitmapDecoder() { + + override fun onDecode(data: String, ops: BitmapFactory.Options): Bitmap? { + return BitmapFactory.decodeFile(data, ops) + } +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/drawer/SGVADrawer.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/drawer/SGVADrawer.kt new file mode 100644 index 000000000..93ad38468 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/drawer/SGVADrawer.kt @@ -0,0 +1,53 @@ +package com.opensource.svgaplayer.drawer + +import android.graphics.Canvas +import android.widget.ImageView +import com.opensource.svgaplayer.SVGAVideoEntity +import com.opensource.svgaplayer.entities.SVGAVideoSpriteFrameEntity +import com.opensource.svgaplayer.utils.Pools +import com.opensource.svgaplayer.utils.SVGAScaleInfo +import kotlin.math.max + +/** + * Created by cuiminghui on 2017/3/29. + */ + +open internal class SGVADrawer(val videoItem: SVGAVideoEntity) { + + val scaleInfo = SVGAScaleInfo() + + private val spritePool = Pools.SimplePool(max(1, videoItem.spriteList.size)) + + inner class SVGADrawerSprite(var _matteKey: String? = null, var _imageKey: String? = null, var _frameEntity: SVGAVideoSpriteFrameEntity? = null) { + val matteKey get() = _matteKey + val imageKey get() = _imageKey + val frameEntity get() = _frameEntity!! + } + + internal fun requestFrameSprites(frameIndex: Int): List { + return videoItem.spriteList.mapNotNull { + if (frameIndex >= 0 && frameIndex < it.frames.size) { + it.imageKey?.let { imageKey -> + if (!imageKey.endsWith(".matte") && it.frames[frameIndex].alpha <= 0.0) { + return@mapNotNull null + } + return@mapNotNull (spritePool.acquire() ?: SVGADrawerSprite()).apply { + _matteKey = it.matteKey + _imageKey = it.imageKey + _frameEntity = it.frames[frameIndex] + } + } + } + return@mapNotNull null + } + } + + internal fun releaseFrameSprites(sprites: List) { + sprites.forEach { spritePool.release(it) } + } + + open fun drawFrame(canvas : Canvas, frameIndex: Int, scaleType: ImageView.ScaleType) { + scaleInfo.performScaleType(canvas.width.toFloat(),canvas.height.toFloat(), videoItem.videoSize.width.toFloat(), videoItem.videoSize.height.toFloat(), scaleType) + } + +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/drawer/SVGACanvasDrawer.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/drawer/SVGACanvasDrawer.kt new file mode 100644 index 000000000..42a0fbdee --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/drawer/SVGACanvasDrawer.kt @@ -0,0 +1,559 @@ +package com.opensource.svgaplayer.drawer + +import android.graphics.* +import android.os.Build +import android.text.StaticLayout +import android.text.TextUtils +import android.widget.ImageView +import com.opensource.svgaplayer.SVGADynamicEntity +import com.opensource.svgaplayer.SVGASoundManager +import com.opensource.svgaplayer.SVGAVideoEntity +import com.opensource.svgaplayer.entities.SVGAVideoShapeEntity + +/** + * Created by cuiminghui on 2017/3/29. + */ + +internal class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicEntity) : SGVADrawer(videoItem) { + + private val sharedValues = ShareValues() + private val drawTextCache: HashMap = hashMapOf() + private val pathCache = PathCache() + + private var beginIndexList: Array? = null + private var endIndexList: Array? = null + + override fun drawFrame(canvas: Canvas, frameIndex: Int, scaleType: ImageView.ScaleType) { + super.drawFrame(canvas, frameIndex, scaleType) + playAudio(frameIndex) + this.pathCache.onSizeChanged(canvas) + val sprites = requestFrameSprites(frameIndex) + // Filter null sprites + if (sprites.count() <= 0) return + val matteSprites = mutableMapOf() + var saveID = -1 + beginIndexList = null + endIndexList = null + + // Filter no matte layer + var hasMatteLayer = false + sprites.get(0).imageKey?.let { + if (it.endsWith(".matte")) { + hasMatteLayer = true + } + } + sprites.forEachIndexed { index, svgaDrawerSprite -> + + // Save matte sprite + svgaDrawerSprite.imageKey?.let { + /// No matte layer included or VERSION Unsopport matte + if (!hasMatteLayer || Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + // Normal sprite + drawSprite(svgaDrawerSprite, canvas, frameIndex) + // Continue + return@forEachIndexed + } + /// Cache matte sprite + if (it.endsWith(".matte")) { + matteSprites.put(it, svgaDrawerSprite) + // Continue + return@forEachIndexed + } + } + /// Is matte begin + if (isMatteBegin(index, sprites)) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + saveID = canvas.saveLayer(0f, 0f, canvas.width.toFloat(), canvas.height.toFloat(), null) + } else { + canvas.save() + } + } + /// Normal matte + drawSprite(svgaDrawerSprite, canvas, frameIndex) + + /// Is matte end + if (isMatteEnd(index, sprites)) { + matteSprites.get(svgaDrawerSprite.matteKey)?.let { + drawSprite(it, this.sharedValues.shareMatteCanvas(canvas.width, canvas.height), frameIndex) + canvas.drawBitmap(this.sharedValues.sharedMatteBitmap(), 0f, 0f, this.sharedValues.shareMattePaint()) + if (saveID != -1) { + canvas.restoreToCount(saveID) + } else { + canvas.restore() + } + // Continue + return@forEachIndexed + } + } + } + releaseFrameSprites(sprites) + } + + private fun isMatteBegin(spriteIndex: Int, sprites: List): Boolean { + if (beginIndexList == null) { + val boolArray = Array(sprites.count()) { false } + sprites.forEachIndexed { index, svgaDrawerSprite -> + svgaDrawerSprite.imageKey?.let { + /// Filter matte sprite + if (it.endsWith(".matte")) { + // Continue + return@forEachIndexed + } + } + svgaDrawerSprite.matteKey?.let { + if (it.length > 0) { + sprites.get(index - 1)?.let { lastSprite -> + if (lastSprite.matteKey.isNullOrEmpty()) { + boolArray[index] = true + } else { + if (lastSprite.matteKey != svgaDrawerSprite.matteKey) { + boolArray[index] = true + } + } + } + } + } + } + beginIndexList = boolArray + } + return beginIndexList?.get(spriteIndex) ?: false + } + + private fun isMatteEnd(spriteIndex: Int, sprites: List): Boolean { + if (endIndexList == null) { + val boolArray = Array(sprites.count()) { false } + sprites.forEachIndexed { index, svgaDrawerSprite -> + svgaDrawerSprite.imageKey?.let { + /// Filter matte sprite + if (it.endsWith(".matte")) { + // Continue + return@forEachIndexed + } + } + svgaDrawerSprite.matteKey?.let { + if (it.length > 0) { + // Last one + if (index == sprites.count() - 1) { + boolArray[index] = true + } else { + sprites.get(index + 1)?.let { nextSprite -> + if (nextSprite.matteKey.isNullOrEmpty()) { + boolArray[index] = true + } else { + if (nextSprite.matteKey != svgaDrawerSprite.matteKey) { + boolArray[index] = true + } + } + } + } + } + } + } + endIndexList = boolArray + } + return endIndexList?.get(spriteIndex) ?: false + } + + private fun playAudio(frameIndex: Int) { + this.videoItem.audioList.forEach { audio -> + if (audio.startFrame == frameIndex) { + if (SVGASoundManager.isInit()) { + audio.soundID?.let { soundID -> + audio.playID = SVGASoundManager.play(soundID) + } + } else { + this.videoItem.soundPool?.let { soundPool -> + audio.soundID?.let { soundID -> + audio.playID = soundPool.play(soundID, 1.0f, 1.0f, 1, 0, 1.0f) + } + } + } + + } + if (audio.endFrame <= frameIndex) { + audio.playID?.let { + if (SVGASoundManager.isInit()) { + SVGASoundManager.stop(it) + } else { + this.videoItem.soundPool?.stop(it) + } + } + audio.playID = null + } + } + } + + private fun shareFrameMatrix(transform: Matrix): Matrix { + val matrix = this.sharedValues.sharedMatrix() + matrix.postScale(scaleInfo.scaleFx, scaleInfo.scaleFy) + matrix.postTranslate(scaleInfo.tranFx, scaleInfo.tranFy) + matrix.preConcat(transform) + return matrix + } + + private fun drawSprite(sprite: SVGADrawerSprite, canvas: Canvas, frameIndex: Int) { + drawImage(sprite, canvas) + drawShape(sprite, canvas) + drawDynamic(sprite, canvas, frameIndex) + } + + private fun drawImage(sprite: SVGADrawerSprite, canvas: Canvas) { + val imageKey = sprite.imageKey ?: return + val isHidden = dynamicItem.dynamicHidden[imageKey] == true + if (isHidden) { + return + } + val bitmapKey = if (imageKey.endsWith(".matte")) imageKey.substring(0, imageKey.length - 6) else imageKey + val drawingBitmap = (dynamicItem.dynamicImage[bitmapKey] ?: videoItem.imageMap[bitmapKey]) + ?: return + val frameMatrix = shareFrameMatrix(sprite.frameEntity.transform) + val paint = this.sharedValues.sharedPaint() + paint.isAntiAlias = videoItem.antiAlias + paint.isFilterBitmap = videoItem.antiAlias + paint.alpha = (sprite.frameEntity.alpha * 255).toInt() + if (sprite.frameEntity.maskPath != null) { + val maskPath = sprite.frameEntity.maskPath ?: return + canvas.save() + val path = this.sharedValues.sharedPath() + maskPath.buildPath(path) + path.transform(frameMatrix) + canvas.clipPath(path) + frameMatrix.preScale((sprite.frameEntity.layout.width / drawingBitmap.width).toFloat(), (sprite.frameEntity.layout.height / drawingBitmap.height).toFloat()) + if (!drawingBitmap.isRecycled) { + canvas.drawBitmap(drawingBitmap, frameMatrix, paint) + } + canvas.restore() + } else { + frameMatrix.preScale((sprite.frameEntity.layout.width / drawingBitmap.width).toFloat(), (sprite.frameEntity.layout.height / drawingBitmap.height).toFloat()) + if (!drawingBitmap.isRecycled) { + canvas.drawBitmap(drawingBitmap, frameMatrix, paint) + } + } + dynamicItem.dynamicIClickArea.let { + it.get(imageKey)?.let { listener -> + val matrixArray = floatArrayOf(0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f) + frameMatrix.getValues(matrixArray) + listener.onResponseArea(imageKey, matrixArray[2].toInt() + , matrixArray[5].toInt() + , (drawingBitmap.width * matrixArray[0] + matrixArray[2]).toInt() + , (drawingBitmap.height * matrixArray[4] + matrixArray[5]).toInt()) + } + } + drawTextOnBitmap(canvas, drawingBitmap, sprite, frameMatrix) + } + + private fun drawTextOnBitmap(canvas: Canvas, drawingBitmap: Bitmap, sprite: SVGADrawerSprite, frameMatrix: Matrix) { + if (dynamicItem.isTextDirty) { + this.drawTextCache.clear() + dynamicItem.isTextDirty = false + } + val imageKey = sprite.imageKey ?: return + var textBitmap: Bitmap? = null + dynamicItem.dynamicText[imageKey]?.let { drawingText -> + dynamicItem.dynamicTextPaint[imageKey]?.let { drawingTextPaint -> + drawTextCache[imageKey]?.let { + textBitmap = it + } ?: kotlin.run { + textBitmap = Bitmap.createBitmap(drawingBitmap.width, drawingBitmap.height, Bitmap.Config.ARGB_8888) + val drawRect = Rect(0, 0, drawingBitmap.width, drawingBitmap.height) + val textCanvas = Canvas(textBitmap) + drawingTextPaint.isAntiAlias = true + val fontMetrics = drawingTextPaint.getFontMetrics(); + val top = fontMetrics.top + val bottom = fontMetrics.bottom + val baseLineY = drawRect.centerY() - top / 2 - bottom / 2 + textCanvas.drawText(drawingText, drawRect.centerX().toFloat(), baseLineY, drawingTextPaint); + drawTextCache.put(imageKey, textBitmap as Bitmap) + } + } + } + + dynamicItem.dynamicBoringLayoutText[imageKey]?.let { + drawTextCache[imageKey]?.let { + textBitmap = it + } ?: kotlin.run { + it.paint.isAntiAlias = true + + textBitmap = Bitmap.createBitmap(drawingBitmap.width, drawingBitmap.height, Bitmap.Config.ARGB_8888) + val textCanvas = Canvas(textBitmap) + textCanvas.translate(0f, ((drawingBitmap.height - it.height) / 2).toFloat()) + it.draw(textCanvas) + drawTextCache.put(imageKey, textBitmap as Bitmap) + } + } + + dynamicItem.dynamicStaticLayoutText[imageKey]?.let { + drawTextCache[imageKey]?.let { + textBitmap = it + } ?: kotlin.run { + it.paint.isAntiAlias = true + var layout = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + var lineMax = try { + val field = StaticLayout::class.java.getDeclaredField("mMaximumVisibleLineCount") + field.isAccessible = true + field.getInt(it) + } catch (e: Exception) { + Int.MAX_VALUE + } + StaticLayout.Builder + .obtain(it.text, 0, it.text.length, it.paint, drawingBitmap.width) + .setAlignment(it.alignment) + .setMaxLines(lineMax) + .setEllipsize(TextUtils.TruncateAt.END) + .build() + } else { + StaticLayout(it.text, 0, it.text.length, it.paint, drawingBitmap.width, it.alignment, it.spacingMultiplier, it.spacingAdd, false) + } + textBitmap = Bitmap.createBitmap(drawingBitmap.width, drawingBitmap.height, Bitmap.Config.ARGB_8888) + val textCanvas = Canvas(textBitmap) + textCanvas.translate(0f, ((drawingBitmap.height - layout.height) / 2).toFloat()) + layout.draw(textCanvas) + drawTextCache.put(imageKey, textBitmap as Bitmap) + } + } + textBitmap?.let { textBitmap -> + val paint = this.sharedValues.sharedPaint() + paint.isAntiAlias = videoItem.antiAlias + paint.alpha = (sprite.frameEntity.alpha * 255).toInt() + if (sprite.frameEntity.maskPath != null) { + val maskPath = sprite.frameEntity.maskPath ?: return@let + canvas.save() + canvas.concat(frameMatrix) + canvas.clipRect(0, 0, drawingBitmap.width, drawingBitmap.height) + val bitmapShader = BitmapShader(textBitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT) + paint.shader = bitmapShader + val path = this.sharedValues.sharedPath() + maskPath.buildPath(path) + canvas.drawPath(path, paint) + canvas.restore() + } else { + paint.isFilterBitmap = videoItem.antiAlias + canvas.drawBitmap(textBitmap, frameMatrix, paint) + } + } + } + + private fun drawShape(sprite: SVGADrawerSprite, canvas: Canvas) { + val frameMatrix = shareFrameMatrix(sprite.frameEntity.transform) + sprite.frameEntity.shapes.forEach { shape -> + shape.buildPath() + shape.shapePath?.let { + val paint = this.sharedValues.sharedPaint() + paint.reset() + paint.isAntiAlias = videoItem.antiAlias + paint.alpha = (sprite.frameEntity.alpha * 255).toInt() + val path = this.sharedValues.sharedPath() + path.reset() + path.addPath(this.pathCache.buildPath(shape)) + val shapeMatrix = this.sharedValues.sharedMatrix2() + shapeMatrix.reset() + shape.transform?.let { + shapeMatrix.postConcat(it) + } + shapeMatrix.postConcat(frameMatrix) + path.transform(shapeMatrix) + shape.styles?.fill?.let { + if (it != 0x00000000) { + paint.style = Paint.Style.FILL + paint.color = it + val alpha = Math.min(255, Math.max(0, (sprite.frameEntity.alpha * 255).toInt())) + if (alpha != 255) { + paint.alpha = alpha + } + if (sprite.frameEntity.maskPath !== null) canvas.save() + sprite.frameEntity.maskPath?.let { maskPath -> + val path2 = this.sharedValues.sharedPath2() + maskPath.buildPath(path2) + path2.transform(frameMatrix) + canvas.clipPath(path2) + } + canvas.drawPath(path, paint) + if (sprite.frameEntity.maskPath !== null) canvas.restore() + } + } + shape.styles?.strokeWidth?.let { + if (it > 0) { + paint.alpha = (sprite.frameEntity.alpha * 255).toInt() + paint.style = Paint.Style.STROKE + shape.styles?.stroke?.let { + paint.color = it + val alpha = Math.min(255, Math.max(0, (sprite.frameEntity.alpha * 255).toInt())) + if (alpha != 255) { + paint.alpha = alpha + } + } + val scale = matrixScale(frameMatrix) + shape.styles?.strokeWidth?.let { + paint.strokeWidth = it * scale + } + shape.styles?.lineCap?.let { + when { + it.equals("butt", true) -> paint.strokeCap = Paint.Cap.BUTT + it.equals("round", true) -> paint.strokeCap = Paint.Cap.ROUND + it.equals("square", true) -> paint.strokeCap = Paint.Cap.SQUARE + } + } + shape.styles?.lineJoin?.let { + when { + it.equals("miter", true) -> paint.strokeJoin = Paint.Join.MITER + it.equals("round", true) -> paint.strokeJoin = Paint.Join.ROUND + it.equals("bevel", true) -> paint.strokeJoin = Paint.Join.BEVEL + } + } + shape.styles?.miterLimit?.let { + paint.strokeMiter = it.toFloat() * scale + } + shape.styles?.lineDash?.let { + if (it.size == 3 && (it[0] > 0 || it[1] > 0)) { + paint.pathEffect = DashPathEffect(floatArrayOf( + (if (it[0] < 1.0f) 1.0f else it[0]) * scale, + (if (it[1] < 0.1f) 0.1f else it[1]) * scale + ), it[2] * scale) + } + } + if (sprite.frameEntity.maskPath !== null) canvas.save() + sprite.frameEntity.maskPath?.let { maskPath -> + val path2 = this.sharedValues.sharedPath2() + maskPath.buildPath(path2) + path2.transform(frameMatrix) + canvas.clipPath(path2) + } + canvas.drawPath(path, paint) + if (sprite.frameEntity.maskPath !== null) canvas.restore() + } + } + } + + } + } + + private val matrixScaleTempValues = FloatArray(16) + + private fun matrixScale(matrix: Matrix): Float { + matrix.getValues(matrixScaleTempValues) + if (matrixScaleTempValues[0] == 0f) { + return 0f + } + var A = matrixScaleTempValues[0].toDouble() + var B = matrixScaleTempValues[3].toDouble() + var C = matrixScaleTempValues[1].toDouble() + var D = matrixScaleTempValues[4].toDouble() + if (A * D == B * C) return 0f + var scaleX = Math.sqrt(A * A + B * B) + A /= scaleX + B /= scaleX + var skew = A * C + B * D + C -= A * skew + D -= B * skew + var scaleY = Math.sqrt(C * C + D * D) + C /= scaleY + D /= scaleY + skew /= scaleY + if (A * D < B * C) { + scaleX = -scaleX + } + return if (scaleInfo.ratioX) Math.abs(scaleX.toFloat()) else Math.abs(scaleY.toFloat()) + } + + private fun drawDynamic(sprite: SVGADrawerSprite, canvas: Canvas, frameIndex: Int) { + val imageKey = sprite.imageKey ?: return + dynamicItem.dynamicDrawer[imageKey]?.let { + val frameMatrix = shareFrameMatrix(sprite.frameEntity.transform) + canvas.save() + canvas.concat(frameMatrix) + it.invoke(canvas, frameIndex) + canvas.restore() + } + dynamicItem.dynamicDrawerSized[imageKey]?.let { + val frameMatrix = shareFrameMatrix(sprite.frameEntity.transform) + canvas.save() + canvas.concat(frameMatrix) + it.invoke(canvas, frameIndex, sprite.frameEntity.layout.width.toInt(), sprite.frameEntity.layout.height.toInt()) + canvas.restore() + } + } + + class ShareValues { + + private val sharedPaint = Paint() + private val sharedPath = Path() + private val sharedPath2 = Path() + private val sharedMatrix = Matrix() + private val sharedMatrix2 = Matrix() + + private val shareMattePaint = Paint() + private var shareMatteCanvas: Canvas? = null + private var sharedMatteBitmap: Bitmap? = null + + fun sharedPaint(): Paint { + sharedPaint.reset() + return sharedPaint + } + + fun sharedPath(): Path { + sharedPath.reset() + return sharedPath + } + + fun sharedPath2(): Path { + sharedPath2.reset() + return sharedPath2 + } + + fun sharedMatrix(): Matrix { + sharedMatrix.reset() + return sharedMatrix + } + + fun sharedMatrix2(): Matrix { + sharedMatrix2.reset() + return sharedMatrix2 + } + + fun shareMattePaint(): Paint { + shareMattePaint.setXfermode(PorterDuffXfermode(PorterDuff.Mode.DST_IN)) + return shareMattePaint + } + + fun sharedMatteBitmap(): Bitmap { + return sharedMatteBitmap as Bitmap + } + + fun shareMatteCanvas(width: Int, height: Int): Canvas { + if (shareMatteCanvas == null) { + sharedMatteBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ALPHA_8) +// shareMatteCanvas = Canvas(sharedMatteBitmap) + } +// val matteCanvas = shareMatteCanvas as Canvas +// matteCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR) +// return matteCanvas + return Canvas(sharedMatteBitmap) + } + } + + class PathCache { + + private var canvasWidth: Int = 0 + private var canvasHeight: Int = 0 + private val cache = HashMap() + + fun onSizeChanged(canvas: Canvas) { + if (this.canvasWidth != canvas.width || this.canvasHeight != canvas.height) { + this.cache.clear() + } + this.canvasWidth = canvas.width + this.canvasHeight = canvas.height + } + + fun buildPath(shape: SVGAVideoShapeEntity): Path { + if (!this.cache.containsKey(shape)) { + val path = Path() + path.set(shape.shapePath) + this.cache[shape] = path + } + return this.cache[shape]!! + } + + } + +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAAudioEntity.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAAudioEntity.kt new file mode 100644 index 000000000..4788cc033 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAAudioEntity.kt @@ -0,0 +1,24 @@ +package com.opensource.svgaplayer.entities + +import com.opensource.svgaplayer.proto.AudioEntity +import java.io.FileInputStream + +internal class SVGAAudioEntity { + + val audioKey: String? + val startFrame: Int + val endFrame: Int + val startTime: Int + val totalTime: Int + var soundID: Int? = null + var playID: Int? = null + + constructor(audioItem: AudioEntity) { + this.audioKey = audioItem.audioKey + this.startFrame = audioItem.startFrame ?: 0 + this.endFrame = audioItem.endFrame ?: 0 + this.startTime = audioItem.startTime ?: 0 + this.totalTime = audioItem.totalTime ?: 0 + } + +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAPathEntity.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAPathEntity.kt new file mode 100644 index 000000000..d6f582c3c --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAPathEntity.kt @@ -0,0 +1,100 @@ +package com.opensource.svgaplayer.entities + +import android.graphics.Path +import com.opensource.svgaplayer.utils.SVGAPoint +import java.util.* + +private val VALID_METHODS: Set = setOf("M", "L", "H", "V", "C", "S", "Q", "R", "A", "Z", "m", "l", "h", "v", "c", "s", "q", "r", "a", "z") + +class SVGAPathEntity(originValue: String) { + + private val replacedValue: String = if (originValue.contains(",")) originValue.replace(",", " ") else originValue + + private var cachedPath: Path? = null + + fun buildPath(toPath: Path) { + cachedPath?.let { + toPath.set(it) + return + } + val cachedPath = Path() + val segments = StringTokenizer(this.replacedValue, "MLHVCSQRAZmlhvcsqraz", true) + var currentMethod = "" + while (segments.hasMoreTokens()) { + val segment = segments.nextToken() + if (segment.isEmpty()) { continue } + if (VALID_METHODS.contains(segment)) { + currentMethod = segment + if (currentMethod == "Z" || currentMethod == "z") { operate(cachedPath, currentMethod, StringTokenizer("", "")) } + } + else { + operate(cachedPath, currentMethod, StringTokenizer(segment, " ")) + } + } + this.cachedPath = cachedPath + toPath.set(cachedPath) + } + + private fun operate(finalPath: Path, method: String, args: StringTokenizer) { + var x0 = 0.0f + var y0 = 0.0f + var x1 = 0.0f + var y1 = 0.0f + var x2 = 0.0f + var y2 = 0.0f + try { + var index = 0 + while (args.hasMoreTokens()) { + val s = args.nextToken() + if (s.isEmpty()) {continue} + if (index == 0) { x0 = s.toFloat() } + if (index == 1) { y0 = s.toFloat() } + if (index == 2) { x1 = s.toFloat() } + if (index == 3) { y1 = s.toFloat() } + if (index == 4) { x2 = s.toFloat() } + if (index == 5) { y2 = s.toFloat() } + index++ + } + } catch (e: Exception) {} + var currentPoint = SVGAPoint(0.0f, 0.0f, 0.0f) + if (method == "M") { + finalPath.moveTo(x0, y0) + currentPoint = SVGAPoint(x0, y0, 0.0f) + } else if (method == "m") { + finalPath.rMoveTo(x0, y0) + currentPoint = SVGAPoint(currentPoint.x + x0, currentPoint.y + y0, 0.0f) + } + if (method == "L") { + finalPath.lineTo(x0, y0) + } else if (method == "l") { + finalPath.rLineTo(x0, y0) + } + if (method == "C") { + finalPath.cubicTo(x0, y0, x1, y1, x2, y2) + } else if (method == "c") { + finalPath.rCubicTo(x0, y0, x1, y1, x2, y2) + } + if (method == "Q") { + finalPath.quadTo(x0, y0, x1, y1) + } else if (method == "q") { + finalPath.rQuadTo(x0, y0, x1, y1) + } + if (method == "H") { + finalPath.lineTo(x0, currentPoint.y) + } else if (method == "h") { + finalPath.rLineTo(x0, 0f) + } + if (method == "V") { + finalPath.lineTo(currentPoint.x, x0) + } else if (method == "v") { + finalPath.rLineTo(0f, x0) + } + if (method == "Z") { + finalPath.close() + } + else if (method == "z") { + finalPath.close() + } + } + +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoShapeEntity.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoShapeEntity.kt new file mode 100644 index 000000000..1f4cbb94d --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoShapeEntity.kt @@ -0,0 +1,356 @@ +package com.opensource.svgaplayer.entities + +import android.graphics.Color +import android.graphics.Matrix +import android.graphics.Path +import android.graphics.RectF +import com.opensource.svgaplayer.proto.ShapeEntity +import org.json.JSONArray +import org.json.JSONObject +import java.util.* + +/** + * Created by cuiminghui on 2017/2/22. + */ + +val sharedPath = Path() + +internal class SVGAVideoShapeEntity { + + enum class Type { + shape, + rect, + ellipse, + keep + } + + class Styles { + + var fill = 0x00000000 + internal set + + var stroke = 0x00000000 + internal set + + var strokeWidth = 0.0f + internal set + + var lineCap = "butt" + internal set + + var lineJoin = "miter" + internal set + + var miterLimit = 0 + internal set + + var lineDash = FloatArray(0) + internal set + + } + + var type = Type.shape + private set + + var args: Map? = null + private set + + var styles: Styles? = null + private set + + var transform: Matrix? = null + private set + + constructor(obj: JSONObject) { + parseType(obj) + parseArgs(obj) + parseStyles(obj) + parseTransform(obj) + } + + constructor(obj: ShapeEntity) { + parseType(obj) + parseArgs(obj) + parseStyles(obj) + parseTransform(obj) + } + + val isKeep: Boolean + get() = type == Type.keep + + var shapePath: Path? = null + + private fun parseType(obj: JSONObject) { + obj.optString("type")?.let { + when { + it.equals("shape", ignoreCase = true) -> type = Type.shape + it.equals("rect", ignoreCase = true) -> type = Type.rect + it.equals("ellipse", ignoreCase = true) -> type = Type.ellipse + it.equals("keep", ignoreCase = true) -> type = Type.keep + } + } + } + + private fun parseType(obj: ShapeEntity) { + obj.type?.let { + type = when (it) { + ShapeEntity.ShapeType.SHAPE -> Type.shape + ShapeEntity.ShapeType.RECT -> Type.rect + ShapeEntity.ShapeType.ELLIPSE -> Type.ellipse + ShapeEntity.ShapeType.KEEP -> Type.keep + } + } + } + + private fun parseArgs(obj: JSONObject) { + val args = HashMap() + obj.optJSONObject("args")?.let { values -> + values.keys().forEach { key -> + values.get(key)?.let { + args.put(key, it) + } + } + this.args = args + } + } + + private fun parseArgs(obj: ShapeEntity) { + val args = HashMap() + obj.shape?.let { + it.d?.let { args.put("d", it) } + } + obj.ellipse?.let { + args.put("x", it.x ?: 0.0f) + args.put("y", it.y ?: 0.0f) + args.put("radiusX", it.radiusX ?: 0.0f) + args.put("radiusY", it.radiusY ?: 0.0f) + } + obj.rect?.let { + args.put("x", it.x ?: 0.0f) + args.put("y", it.y ?: 0.0f) + args.put("width", it.width ?: 0.0f) + args.put("height", it.height ?: 0.0f) + args.put("cornerRadius", it.cornerRadius ?: 0.0f) + } + this.args = args + } + + // 检查色域范围是否是 [0f, 1f],或者是 [0f, 255f] + private fun checkValueRange(obj: JSONArray): Float { + return if ( + obj.optDouble(0) <= 1 && + obj.optDouble(1) <= 1 && + obj.optDouble(2) <= 1 + ) { + 255f + } else { + 1f + } + } + + // 检查 alpha 的范围是否是 [0f, 1f],或者是 [0f, 255f] + private fun checkAlphaValueRange(obj: JSONArray): Float { + return if (obj.optDouble(3) <= 1) { + 255f + } else { + 1f + } + } + + private fun parseStyles(obj: JSONObject) { + obj.optJSONObject("styles")?.let { + val styles = Styles() + it.optJSONArray("fill")?.let { + if (it.length() == 4) { + val mulValue = checkValueRange(it) + val alphaRangeValue = checkAlphaValueRange(it) + styles.fill = Color.argb( + (it.optDouble(3) * alphaRangeValue).toInt(), + (it.optDouble(0) * mulValue).toInt(), + (it.optDouble(1) * mulValue).toInt(), + (it.optDouble(2) * mulValue).toInt() + ) + } + } + it.optJSONArray("stroke")?.let { + if (it.length() == 4) { + val mulValue = checkValueRange(it) + val alphaRangeValue = checkAlphaValueRange(it) + styles.stroke = Color.argb( + (it.optDouble(3) * alphaRangeValue).toInt(), + (it.optDouble(0) * mulValue).toInt(), + (it.optDouble(1) * mulValue).toInt(), + (it.optDouble(2) * mulValue).toInt() + ) + } + } + styles.strokeWidth = it.optDouble("strokeWidth", 0.0).toFloat() + styles.lineCap = it.optString("lineCap", "butt") + styles.lineJoin = it.optString("lineJoin", "miter") + styles.miterLimit = it.optInt("miterLimit", 0) + it.optJSONArray("lineDash")?.let { + styles.lineDash = FloatArray(it.length()) + for (i in 0 until it.length()) { + styles.lineDash[i] = it.optDouble(i, 0.0).toFloat() + } + } + this.styles = styles + } + } + + // 检查色域范围是否是 [0f, 1f],或者是 [0f, 255f] + private fun checkValueRange(color: ShapeEntity.ShapeStyle.RGBAColor): Float { + return if ( + (color.r ?: 0f) <= 1 && + (color.g ?: 0f) <= 1 && + (color.b ?: 0f) <= 1 + ) { + 255f + } else { + 1f + } + } + + // 检查 alpha 范围是否是 [0f, 1f],有可能是 [0f, 255f] + private fun checkAlphaValueRange(color: ShapeEntity.ShapeStyle.RGBAColor): Float { + return if (color.a <= 1f) { + 255f + } else { + 1f + } + } + + private fun parseStyles(obj: ShapeEntity) { + obj.styles?.let { + val styles = Styles() + it.fill?.let { + val mulValue = checkValueRange(it) + val alphaRangeValue = checkAlphaValueRange(it) + styles.fill = Color.argb( + ((it.a ?: 0f) * alphaRangeValue).toInt(), + ((it.r ?: 0f) * mulValue).toInt(), + ((it.g ?: 0f) * mulValue).toInt(), + ((it.b ?: 0f) * mulValue).toInt() + ) + } + it.stroke?.let { + val mulValue = checkValueRange(it) + val alphaRangeValue = checkAlphaValueRange(it) + styles.stroke = Color.argb( + ((it.a ?: 0f) * alphaRangeValue).toInt(), + ((it.r ?: 0f) * mulValue).toInt(), + ((it.g ?: 0f) * mulValue).toInt(), + ((it.b ?: 0f) * mulValue).toInt() + ) + + } + styles.strokeWidth = it.strokeWidth ?: 0.0f + it.lineCap?.let { + when (it) { + ShapeEntity.ShapeStyle.LineCap.LineCap_BUTT -> styles.lineCap = "butt" + ShapeEntity.ShapeStyle.LineCap.LineCap_ROUND -> styles.lineCap = "round" + ShapeEntity.ShapeStyle.LineCap.LineCap_SQUARE -> styles.lineCap = "square" + } + } + it.lineJoin?.let { + when (it) { + ShapeEntity.ShapeStyle.LineJoin.LineJoin_BEVEL -> styles.lineJoin = "bevel" + ShapeEntity.ShapeStyle.LineJoin.LineJoin_MITER -> styles.lineJoin = "miter" + ShapeEntity.ShapeStyle.LineJoin.LineJoin_ROUND -> styles.lineJoin = "round" + } + } + styles.miterLimit = (it.miterLimit ?: 0.0f).toInt() + styles.lineDash = kotlin.FloatArray(3) + it.lineDashI?.let { styles.lineDash[0] = it } + it.lineDashII?.let { styles.lineDash[1] = it } + it.lineDashIII?.let { styles.lineDash[2] = it } + this.styles = styles + } + } + + private fun parseTransform(obj: JSONObject) { + obj.optJSONObject("transform")?.let { + val transform = Matrix() + val arr = FloatArray(9) + val a = it.optDouble("a", 1.0) + val b = it.optDouble("b", 0.0) + val c = it.optDouble("c", 0.0) + val d = it.optDouble("d", 1.0) + val tx = it.optDouble("tx", 0.0) + val ty = it.optDouble("ty", 0.0) + arr[0] = a.toFloat() // a + arr[1] = c.toFloat() // c + arr[2] = tx.toFloat() // tx + arr[3] = b.toFloat() // b + arr[4] = d.toFloat() // d + arr[5] = ty.toFloat() // ty + arr[6] = 0.0.toFloat() + arr[7] = 0.0.toFloat() + arr[8] = 1.0.toFloat() + transform.setValues(arr) + this.transform = transform + } + } + + private fun parseTransform(obj: ShapeEntity) { + obj.transform?.let { + val transform = Matrix() + val arr = FloatArray(9) + val a = it.a ?: 1.0f + val b = it.b ?: 0.0f + val c = it.c ?: 0.0f + val d = it.d ?: 1.0f + val tx = it.tx ?: 0.0f + val ty = it.ty ?: 0.0f + arr[0] = a + arr[1] = c + arr[2] = tx + arr[3] = b + arr[4] = d + arr[5] = ty + arr[6] = 0.0f + arr[7] = 0.0f + arr[8] = 1.0f + transform.setValues(arr) + this.transform = transform + } + } + + + fun buildPath() { + if (this.shapePath != null) { + return + } + sharedPath.reset() + if (this.type == Type.shape) { + (this.args?.get("d") as? String)?.let { + SVGAPathEntity(it).buildPath(sharedPath) + } + } else if (this.type == Type.ellipse) { + val xv = this.args?.get("x") as? Number ?: return + val yv = this.args?.get("y") as? Number ?: return + val rxv = this.args?.get("radiusX") as? Number ?: return + val ryv = this.args?.get("radiusY") as? Number ?: return + val x = xv.toFloat() + val y = yv.toFloat() + val rx = rxv.toFloat() + val ry = ryv.toFloat() + sharedPath.addOval(RectF(x - rx, y - ry, x + rx, y + ry), Path.Direction.CW) + } else if (this.type == Type.rect) { + val xv = this.args?.get("x") as? Number ?: return + val yv = this.args?.get("y") as? Number ?: return + val wv = this.args?.get("width") as? Number ?: return + val hv = this.args?.get("height") as? Number ?: return + val crv = this.args?.get("cornerRadius") as? Number ?: return + val x = xv.toFloat() + val y = yv.toFloat() + val width = wv.toFloat() + val height = hv.toFloat() + val cornerRadius = crv.toFloat() + sharedPath.addRoundRect(RectF(x, y, x + width, y + height), cornerRadius, cornerRadius, Path.Direction.CW) + } + this.shapePath = Path() + this.shapePath?.set(sharedPath) + } + +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoSpriteEntity.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoSpriteEntity.kt new file mode 100644 index 000000000..6e9fbc28e --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoSpriteEntity.kt @@ -0,0 +1,60 @@ +package com.opensource.svgaplayer.entities + +import com.opensource.svgaplayer.proto.SpriteEntity +import org.json.JSONObject + +/** + * Created by cuiminghui on 2016/10/17. + */ +internal class SVGAVideoSpriteEntity { + + val imageKey: String? + + val matteKey: String? + + val frames: List + + constructor(obj: JSONObject) { + this.imageKey = obj.optString("imageKey") + this.matteKey = obj.optString("matteKey") + val mutableFrames: MutableList = mutableListOf() + obj.optJSONArray("frames")?.let { + for (i in 0 until it.length()) { + it.optJSONObject(i)?.let { + val frameItem = SVGAVideoSpriteFrameEntity(it) + if (frameItem.shapes.isNotEmpty()) { + frameItem.shapes.first().let { + if (it.isKeep && mutableFrames.size > 0) { + frameItem.shapes = mutableFrames.last().shapes + } + } + } + mutableFrames.add(frameItem) + } + } + } + frames = mutableFrames.toList() + } + + constructor(obj: SpriteEntity) { + this.imageKey = obj.imageKey + this.matteKey = obj.matteKey + var lastFrame: SVGAVideoSpriteFrameEntity? = null + frames = obj.frames?.map { + val frameItem = SVGAVideoSpriteFrameEntity(it) + if (frameItem.shapes.isNotEmpty()) { + frameItem.shapes.first().let { + if (it.isKeep) { + lastFrame?.let { + frameItem.shapes = it.shapes + } + } + } + } + lastFrame = frameItem + return@map frameItem + } ?: listOf() + + } + +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoSpriteFrameEntity.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoSpriteFrameEntity.kt new file mode 100644 index 000000000..078d91a36 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoSpriteFrameEntity.kt @@ -0,0 +1,94 @@ +package com.opensource.svgaplayer.entities + +import android.graphics.Matrix +import com.opensource.svgaplayer.proto.FrameEntity +import com.opensource.svgaplayer.utils.SVGARect + +import org.json.JSONObject + +/** + * Created by cuiminghui on 2016/10/17. + */ +internal class SVGAVideoSpriteFrameEntity { + + var alpha: Double + var layout = SVGARect(0.0, 0.0, 0.0, 0.0) + var transform = Matrix() + var maskPath: SVGAPathEntity? = null + var shapes: List = listOf() + + constructor(obj: JSONObject) { + this.alpha = obj.optDouble("alpha", 0.0) + obj.optJSONObject("layout")?.let { + layout = SVGARect(it.optDouble("x", 0.0), it.optDouble("y", 0.0), it.optDouble("width", 0.0), it.optDouble("height", 0.0)) + } + obj.optJSONObject("transform")?.let { + val arr = FloatArray(9) + val a = it.optDouble("a", 1.0) + val b = it.optDouble("b", 0.0) + val c = it.optDouble("c", 0.0) + val d = it.optDouble("d", 1.0) + val tx = it.optDouble("tx", 0.0) + val ty = it.optDouble("ty", 0.0) + arr[0] = a.toFloat() + arr[1] = c.toFloat() + arr[2] = tx.toFloat() + arr[3] = b.toFloat() + arr[4] = d.toFloat() + arr[5] = ty.toFloat() + arr[6] = 0.0.toFloat() + arr[7] = 0.0.toFloat() + arr[8] = 1.0.toFloat() + transform.setValues(arr) + } + obj.optString("clipPath")?.let { d -> + if (d.isNotEmpty()) { + maskPath = SVGAPathEntity(d) + } + } + obj.optJSONArray("shapes")?.let { + val mutableList: MutableList = mutableListOf() + for (i in 0 until it.length()) { + it.optJSONObject(i)?.let { + mutableList.add(SVGAVideoShapeEntity(it)) + } + } + shapes = mutableList.toList() + } + } + + constructor(obj: FrameEntity) { + this.alpha = (obj.alpha ?: 0.0f).toDouble() + obj.layout?.let { + this.layout = SVGARect((it.x ?: 0.0f).toDouble(), (it.y + ?: 0.0f).toDouble(), (it.width ?: 0.0f).toDouble(), (it.height + ?: 0.0f).toDouble()) + } + obj.transform?.let { + val arr = FloatArray(9) + val a = it.a ?: 1.0f + val b = it.b ?: 0.0f + val c = it.c ?: 0.0f + val d = it.d ?: 1.0f + val tx = it.tx ?: 0.0f + val ty = it.ty ?: 0.0f + arr[0] = a + arr[1] = c + arr[2] = tx + arr[3] = b + arr[4] = d + arr[5] = ty + arr[6] = 0.0f + arr[7] = 0.0f + arr[8] = 1.0f + transform.setValues(arr) + } + obj.clipPath?.takeIf { it.isNotEmpty() }?.let { + maskPath = SVGAPathEntity(it) + } + this.shapes = obj.shapes.map { + return@map SVGAVideoShapeEntity(it) + } + } + +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java new file mode 100644 index 000000000..d09adce90 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java @@ -0,0 +1,258 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: svga.proto at 19:1 +package com.opensource.svgaplayer.proto; + +import com.squareup.wire.FieldEncoding; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.ProtoReader; +import com.squareup.wire.ProtoWriter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.io.IOException; +import java.lang.Integer; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.lang.StringBuilder; +import okio.ByteString; + +public final class AudioEntity extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_AudioEntity(); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_AUDIOKEY = ""; + + public static final Integer DEFAULT_STARTFRAME = 0; + + public static final Integer DEFAULT_ENDFRAME = 0; + + public static final Integer DEFAULT_STARTTIME = 0; + + public static final Integer DEFAULT_TOTALTIME = 0; + + /** + * 音频文件名 + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String audioKey; + + /** + * 音频播放起始帧 + */ + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#INT32" + ) + public final Integer startFrame; + + /** + * 音频播放结束帧 + */ + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#INT32" + ) + public final Integer endFrame; + + /** + * 音频播放起始时间(相对音频长度) + */ + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#INT32" + ) + public final Integer startTime; + + /** + * 音频总长度 + */ + @WireField( + tag = 5, + adapter = "com.squareup.wire.ProtoAdapter#INT32" + ) + public final Integer totalTime; + + public AudioEntity(String audioKey, Integer startFrame, Integer endFrame, Integer startTime, Integer totalTime) { + this(audioKey, startFrame, endFrame, startTime, totalTime, ByteString.EMPTY); + } + + public AudioEntity(String audioKey, Integer startFrame, Integer endFrame, Integer startTime, Integer totalTime, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.audioKey = audioKey; + this.startFrame = startFrame; + this.endFrame = endFrame; + this.startTime = startTime; + this.totalTime = totalTime; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.audioKey = audioKey; + builder.startFrame = startFrame; + builder.endFrame = endFrame; + builder.startTime = startTime; + builder.totalTime = totalTime; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof AudioEntity)) return false; + AudioEntity o = (AudioEntity) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(audioKey, o.audioKey) + && Internal.equals(startFrame, o.startFrame) + && Internal.equals(endFrame, o.endFrame) + && Internal.equals(startTime, o.startTime) + && Internal.equals(totalTime, o.totalTime); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (audioKey != null ? audioKey.hashCode() : 0); + result = result * 37 + (startFrame != null ? startFrame.hashCode() : 0); + result = result * 37 + (endFrame != null ? endFrame.hashCode() : 0); + result = result * 37 + (startTime != null ? startTime.hashCode() : 0); + result = result * 37 + (totalTime != null ? totalTime.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (audioKey != null) builder.append(", audioKey=").append(audioKey); + if (startFrame != null) builder.append(", startFrame=").append(startFrame); + if (endFrame != null) builder.append(", endFrame=").append(endFrame); + if (startTime != null) builder.append(", startTime=").append(startTime); + if (totalTime != null) builder.append(", totalTime=").append(totalTime); + return builder.replace(0, 2, "AudioEntity{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public String audioKey; + + public Integer startFrame; + + public Integer endFrame; + + public Integer startTime; + + public Integer totalTime; + + public Builder() { + } + + /** + * 音频文件名 + */ + public Builder audioKey(String audioKey) { + this.audioKey = audioKey; + return this; + } + + /** + * 音频播放起始帧 + */ + public Builder startFrame(Integer startFrame) { + this.startFrame = startFrame; + return this; + } + + /** + * 音频播放结束帧 + */ + public Builder endFrame(Integer endFrame) { + this.endFrame = endFrame; + return this; + } + + /** + * 音频播放起始时间(相对音频长度) + */ + public Builder startTime(Integer startTime) { + this.startTime = startTime; + return this; + } + + /** + * 音频总长度 + */ + public Builder totalTime(Integer totalTime) { + this.totalTime = totalTime; + return this; + } + + @Override + public AudioEntity build() { + return new AudioEntity(audioKey, startFrame, endFrame, startTime, totalTime, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_AudioEntity extends ProtoAdapter { + ProtoAdapter_AudioEntity() { + super(FieldEncoding.LENGTH_DELIMITED, AudioEntity.class); + } + + @Override + public int encodedSize(AudioEntity value) { + return (value.audioKey != null ? ProtoAdapter.STRING.encodedSizeWithTag(1, value.audioKey) : 0) + + (value.startFrame != null ? ProtoAdapter.INT32.encodedSizeWithTag(2, value.startFrame) : 0) + + (value.endFrame != null ? ProtoAdapter.INT32.encodedSizeWithTag(3, value.endFrame) : 0) + + (value.startTime != null ? ProtoAdapter.INT32.encodedSizeWithTag(4, value.startTime) : 0) + + (value.totalTime != null ? ProtoAdapter.INT32.encodedSizeWithTag(5, value.totalTime) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, AudioEntity value) throws IOException { + if (value.audioKey != null) ProtoAdapter.STRING.encodeWithTag(writer, 1, value.audioKey); + if (value.startFrame != null) ProtoAdapter.INT32.encodeWithTag(writer, 2, value.startFrame); + if (value.endFrame != null) ProtoAdapter.INT32.encodeWithTag(writer, 3, value.endFrame); + if (value.startTime != null) ProtoAdapter.INT32.encodeWithTag(writer, 4, value.startTime); + if (value.totalTime != null) ProtoAdapter.INT32.encodeWithTag(writer, 5, value.totalTime); + writer.writeBytes(value.unknownFields()); + } + + @Override + public AudioEntity decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.audioKey(ProtoAdapter.STRING.decode(reader)); break; + case 2: builder.startFrame(ProtoAdapter.INT32.decode(reader)); break; + case 3: builder.endFrame(ProtoAdapter.INT32.decode(reader)); break; + case 4: builder.startTime(ProtoAdapter.INT32.decode(reader)); break; + case 5: builder.totalTime(ProtoAdapter.INT32.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public AudioEntity redact(AudioEntity value) { + Builder builder = value.newBuilder(); + builder.clearUnknownFields(); + return builder.build(); + } + } +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java new file mode 100644 index 000000000..ac701bb43 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java @@ -0,0 +1,259 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: svga.proto at 115:1 +package com.opensource.svgaplayer.proto; + +import com.squareup.wire.FieldEncoding; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.ProtoReader; +import com.squareup.wire.ProtoWriter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.io.IOException; +import java.lang.Float; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.lang.StringBuilder; +import java.util.List; +import okio.ByteString; + +public final class FrameEntity extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_FrameEntity(); + + private static final long serialVersionUID = 0L; + + public static final Float DEFAULT_ALPHA = 0.0f; + + public static final String DEFAULT_CLIPPATH = ""; + + /** + * 透明度 + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float alpha; + + /** + * 初始约束大小 + */ + @WireField( + tag = 2, + adapter = "com.opensource.svgaplayer.proto.Layout#ADAPTER" + ) + public final Layout layout; + + /** + * 2D 变换矩阵 + */ + @WireField( + tag = 3, + adapter = "com.opensource.svgaplayer.proto.Transform#ADAPTER" + ) + public final Transform transform; + + /** + * 遮罩路径,使用 SVG 标准 Path 绘制图案进行 Mask 遮罩。 + */ + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String clipPath; + + /** + * 矢量元素列表 + */ + @WireField( + tag = 5, + adapter = "com.opensource.svgaplayer.proto.ShapeEntity#ADAPTER", + label = WireField.Label.REPEATED + ) + public final List shapes; + + public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, List shapes) { + this(alpha, layout, transform, clipPath, shapes, ByteString.EMPTY); + } + + public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, List shapes, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.alpha = alpha; + this.layout = layout; + this.transform = transform; + this.clipPath = clipPath; + this.shapes = Internal.immutableCopyOf("shapes", shapes); + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.alpha = alpha; + builder.layout = layout; + builder.transform = transform; + builder.clipPath = clipPath; + builder.shapes = Internal.copyOf("shapes", shapes); + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof FrameEntity)) return false; + FrameEntity o = (FrameEntity) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(alpha, o.alpha) + && Internal.equals(layout, o.layout) + && Internal.equals(transform, o.transform) + && Internal.equals(clipPath, o.clipPath) + && shapes.equals(o.shapes); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (alpha != null ? alpha.hashCode() : 0); + result = result * 37 + (layout != null ? layout.hashCode() : 0); + result = result * 37 + (transform != null ? transform.hashCode() : 0); + result = result * 37 + (clipPath != null ? clipPath.hashCode() : 0); + result = result * 37 + shapes.hashCode(); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (alpha != null) builder.append(", alpha=").append(alpha); + if (layout != null) builder.append(", layout=").append(layout); + if (transform != null) builder.append(", transform=").append(transform); + if (clipPath != null) builder.append(", clipPath=").append(clipPath); + if (!shapes.isEmpty()) builder.append(", shapes=").append(shapes); + return builder.replace(0, 2, "FrameEntity{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public Float alpha; + + public Layout layout; + + public Transform transform; + + public String clipPath; + + public List shapes; + + public Builder() { + shapes = Internal.newMutableList(); + } + + /** + * 透明度 + */ + public Builder alpha(Float alpha) { + this.alpha = alpha; + return this; + } + + /** + * 初始约束大小 + */ + public Builder layout(Layout layout) { + this.layout = layout; + return this; + } + + /** + * 2D 变换矩阵 + */ + public Builder transform(Transform transform) { + this.transform = transform; + return this; + } + + /** + * 遮罩路径,使用 SVG 标准 Path 绘制图案进行 Mask 遮罩。 + */ + public Builder clipPath(String clipPath) { + this.clipPath = clipPath; + return this; + } + + /** + * 矢量元素列表 + */ + public Builder shapes(List shapes) { + Internal.checkElementsNotNull(shapes); + this.shapes = shapes; + return this; + } + + @Override + public FrameEntity build() { + return new FrameEntity(alpha, layout, transform, clipPath, shapes, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_FrameEntity extends ProtoAdapter { + ProtoAdapter_FrameEntity() { + super(FieldEncoding.LENGTH_DELIMITED, FrameEntity.class); + } + + @Override + public int encodedSize(FrameEntity value) { + return (value.alpha != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.alpha) : 0) + + (value.layout != null ? Layout.ADAPTER.encodedSizeWithTag(2, value.layout) : 0) + + (value.transform != null ? Transform.ADAPTER.encodedSizeWithTag(3, value.transform) : 0) + + (value.clipPath != null ? ProtoAdapter.STRING.encodedSizeWithTag(4, value.clipPath) : 0) + + ShapeEntity.ADAPTER.asRepeated().encodedSizeWithTag(5, value.shapes) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, FrameEntity value) throws IOException { + if (value.alpha != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.alpha); + if (value.layout != null) Layout.ADAPTER.encodeWithTag(writer, 2, value.layout); + if (value.transform != null) Transform.ADAPTER.encodeWithTag(writer, 3, value.transform); + if (value.clipPath != null) ProtoAdapter.STRING.encodeWithTag(writer, 4, value.clipPath); + ShapeEntity.ADAPTER.asRepeated().encodeWithTag(writer, 5, value.shapes); + writer.writeBytes(value.unknownFields()); + } + + @Override + public FrameEntity decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.alpha(ProtoAdapter.FLOAT.decode(reader)); break; + case 2: builder.layout(Layout.ADAPTER.decode(reader)); break; + case 3: builder.transform(Transform.ADAPTER.decode(reader)); break; + case 4: builder.clipPath(ProtoAdapter.STRING.decode(reader)); break; + case 5: builder.shapes.add(ShapeEntity.ADAPTER.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public FrameEntity redact(FrameEntity value) { + Builder builder = value.newBuilder(); + if (builder.layout != null) builder.layout = Layout.ADAPTER.redact(builder.layout); + if (builder.transform != null) builder.transform = Transform.ADAPTER.redact(builder.transform); + Internal.redactElements(builder.shapes, ShapeEntity.ADAPTER); + builder.clearUnknownFields(); + return builder.build(); + } + } +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/Layout.java b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/Layout.java new file mode 100644 index 000000000..6ea7edb6c --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/Layout.java @@ -0,0 +1,205 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: svga.proto at 27:1 +package com.opensource.svgaplayer.proto; + +import com.squareup.wire.FieldEncoding; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.ProtoReader; +import com.squareup.wire.ProtoWriter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.io.IOException; +import java.lang.Float; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.lang.StringBuilder; +import okio.ByteString; + +public final class Layout extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_Layout(); + + private static final long serialVersionUID = 0L; + + public static final Float DEFAULT_X = 0.0f; + + public static final Float DEFAULT_Y = 0.0f; + + public static final Float DEFAULT_WIDTH = 0.0f; + + public static final Float DEFAULT_HEIGHT = 0.0f; + + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float x; + + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float y; + + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float width; + + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float height; + + public Layout(Float x, Float y, Float width, Float height) { + this(x, y, width, height, ByteString.EMPTY); + } + + public Layout(Float x, Float y, Float width, Float height, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.x = x; + builder.y = y; + builder.width = width; + builder.height = height; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof Layout)) return false; + Layout o = (Layout) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(x, o.x) + && Internal.equals(y, o.y) + && Internal.equals(width, o.width) + && Internal.equals(height, o.height); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (x != null ? x.hashCode() : 0); + result = result * 37 + (y != null ? y.hashCode() : 0); + result = result * 37 + (width != null ? width.hashCode() : 0); + result = result * 37 + (height != null ? height.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (x != null) builder.append(", x=").append(x); + if (y != null) builder.append(", y=").append(y); + if (width != null) builder.append(", width=").append(width); + if (height != null) builder.append(", height=").append(height); + return builder.replace(0, 2, "Layout{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public Float x; + + public Float y; + + public Float width; + + public Float height; + + public Builder() { + } + + public Builder x(Float x) { + this.x = x; + return this; + } + + public Builder y(Float y) { + this.y = y; + return this; + } + + public Builder width(Float width) { + this.width = width; + return this; + } + + public Builder height(Float height) { + this.height = height; + return this; + } + + @Override + public Layout build() { + return new Layout(x, y, width, height, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_Layout extends ProtoAdapter { + ProtoAdapter_Layout() { + super(FieldEncoding.LENGTH_DELIMITED, Layout.class); + } + + @Override + public int encodedSize(Layout value) { + return (value.x != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.x) : 0) + + (value.y != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.y) : 0) + + (value.width != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.width) : 0) + + (value.height != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(4, value.height) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, Layout value) throws IOException { + if (value.x != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.x); + if (value.y != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.y); + if (value.width != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.width); + if (value.height != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 4, value.height); + writer.writeBytes(value.unknownFields()); + } + + @Override + public Layout decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.x(ProtoAdapter.FLOAT.decode(reader)); break; + case 2: builder.y(ProtoAdapter.FLOAT.decode(reader)); break; + case 3: builder.width(ProtoAdapter.FLOAT.decode(reader)); break; + case 4: builder.height(ProtoAdapter.FLOAT.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public Layout redact(Layout value) { + Builder builder = value.newBuilder(); + builder.clearUnknownFields(); + return builder.build(); + } + } +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java new file mode 100644 index 000000000..6b720af45 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java @@ -0,0 +1,265 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: svga.proto at 123:1 +package com.opensource.svgaplayer.proto; + +import com.squareup.wire.FieldEncoding; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.ProtoReader; +import com.squareup.wire.ProtoWriter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.io.IOException; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.lang.StringBuilder; +import java.util.List; +import java.util.Map; +import okio.ByteString; + +public final class MovieEntity extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_MovieEntity(); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_VERSION = ""; + + /** + * SVGA 格式版本号 + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String version; + + /** + * 动画参数 + */ + @WireField( + tag = 2, + adapter = "com.opensource.svgaplayer.proto.MovieParams#ADAPTER" + ) + public final MovieParams params; + + /** + * Key 是位图键名,Value 是位图文件名或二进制 PNG 数据。 + */ + @WireField( + tag = 3, + keyAdapter = "com.squareup.wire.ProtoAdapter#STRING", + adapter = "com.squareup.wire.ProtoAdapter#BYTES" + ) + public final Map images; + + /** + * 元素列表 + */ + @WireField( + tag = 4, + adapter = "com.opensource.svgaplayer.proto.SpriteEntity#ADAPTER", + label = WireField.Label.REPEATED + ) + public final List sprites; + + /** + * 音频列表 + */ + @WireField( + tag = 5, + adapter = "com.opensource.svgaplayer.proto.AudioEntity#ADAPTER", + label = WireField.Label.REPEATED + ) + public final List audios; + + public MovieEntity(String version, MovieParams params, Map images, List sprites, List audios) { + this(version, params, images, sprites, audios, ByteString.EMPTY); + } + + public MovieEntity(String version, MovieParams params, Map images, List sprites, List audios, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.version = version; + this.params = params; + this.images = Internal.immutableCopyOf("images", images); + this.sprites = Internal.immutableCopyOf("sprites", sprites); + this.audios = Internal.immutableCopyOf("audios", audios); + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.version = version; + builder.params = params; + builder.images = Internal.copyOf("images", images); + builder.sprites = Internal.copyOf("sprites", sprites); + builder.audios = Internal.copyOf("audios", audios); + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof MovieEntity)) return false; + MovieEntity o = (MovieEntity) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(version, o.version) + && Internal.equals(params, o.params) + && images.equals(o.images) + && sprites.equals(o.sprites) + && audios.equals(o.audios); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (version != null ? version.hashCode() : 0); + result = result * 37 + (params != null ? params.hashCode() : 0); + result = result * 37 + images.hashCode(); + result = result * 37 + sprites.hashCode(); + result = result * 37 + audios.hashCode(); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (version != null) builder.append(", version=").append(version); + if (params != null) builder.append(", params=").append(params); + if (!images.isEmpty()) builder.append(", images=").append(images); + if (!sprites.isEmpty()) builder.append(", sprites=").append(sprites); + if (!audios.isEmpty()) builder.append(", audios=").append(audios); + return builder.replace(0, 2, "MovieEntity{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public String version; + + public MovieParams params; + + public Map images; + + public List sprites; + + public List audios; + + public Builder() { + images = Internal.newMutableMap(); + sprites = Internal.newMutableList(); + audios = Internal.newMutableList(); + } + + /** + * SVGA 格式版本号 + */ + public Builder version(String version) { + this.version = version; + return this; + } + + /** + * 动画参数 + */ + public Builder params(MovieParams params) { + this.params = params; + return this; + } + + /** + * Key 是位图键名,Value 是位图文件名或二进制 PNG 数据。 + */ + public Builder images(Map images) { + Internal.checkElementsNotNull(images); + this.images = images; + return this; + } + + /** + * 元素列表 + */ + public Builder sprites(List sprites) { + Internal.checkElementsNotNull(sprites); + this.sprites = sprites; + return this; + } + + /** + * 音频列表 + */ + public Builder audios(List audios) { + Internal.checkElementsNotNull(audios); + this.audios = audios; + return this; + } + + @Override + public MovieEntity build() { + return new MovieEntity(version, params, images, sprites, audios, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_MovieEntity extends ProtoAdapter { + private final ProtoAdapter> images = ProtoAdapter.newMapAdapter(ProtoAdapter.STRING, ProtoAdapter.BYTES); + + ProtoAdapter_MovieEntity() { + super(FieldEncoding.LENGTH_DELIMITED, MovieEntity.class); + } + + @Override + public int encodedSize(MovieEntity value) { + return (value.version != null ? ProtoAdapter.STRING.encodedSizeWithTag(1, value.version) : 0) + + (value.params != null ? MovieParams.ADAPTER.encodedSizeWithTag(2, value.params) : 0) + + images.encodedSizeWithTag(3, value.images) + + SpriteEntity.ADAPTER.asRepeated().encodedSizeWithTag(4, value.sprites) + + AudioEntity.ADAPTER.asRepeated().encodedSizeWithTag(5, value.audios) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, MovieEntity value) throws IOException { + if (value.version != null) ProtoAdapter.STRING.encodeWithTag(writer, 1, value.version); + if (value.params != null) MovieParams.ADAPTER.encodeWithTag(writer, 2, value.params); + images.encodeWithTag(writer, 3, value.images); + SpriteEntity.ADAPTER.asRepeated().encodeWithTag(writer, 4, value.sprites); + AudioEntity.ADAPTER.asRepeated().encodeWithTag(writer, 5, value.audios); + writer.writeBytes(value.unknownFields()); + } + + @Override + public MovieEntity decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.version(ProtoAdapter.STRING.decode(reader)); break; + case 2: builder.params(MovieParams.ADAPTER.decode(reader)); break; + case 3: builder.images.putAll(images.decode(reader)); break; + case 4: builder.sprites.add(SpriteEntity.ADAPTER.decode(reader)); break; + case 5: builder.audios.add(AudioEntity.ADAPTER.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public MovieEntity redact(MovieEntity value) { + Builder builder = value.newBuilder(); + if (builder.params != null) builder.params = MovieParams.ADAPTER.redact(builder.params); + Internal.redactElements(builder.sprites, SpriteEntity.ADAPTER); + Internal.redactElements(builder.audios, AudioEntity.ADAPTER); + builder.clearUnknownFields(); + return builder.build(); + } + } +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java new file mode 100644 index 000000000..e8a3a98b8 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java @@ -0,0 +1,230 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: svga.proto at 6:1 +package com.opensource.svgaplayer.proto; + +import com.squareup.wire.FieldEncoding; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.ProtoReader; +import com.squareup.wire.ProtoWriter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.io.IOException; +import java.lang.Float; +import java.lang.Integer; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.lang.StringBuilder; +import okio.ByteString; + +public final class MovieParams extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_MovieParams(); + + private static final long serialVersionUID = 0L; + + public static final Float DEFAULT_VIEWBOXWIDTH = 0.0f; + + public static final Float DEFAULT_VIEWBOXHEIGHT = 0.0f; + + public static final Integer DEFAULT_FPS = 0; + + public static final Integer DEFAULT_FRAMES = 0; + + /** + * 画布宽 + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float viewBoxWidth; + + /** + * 画布高 + */ + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float viewBoxHeight; + + /** + * 动画每秒播放帧数,合法值是 [1, 2, 3, 5, 6, 10, 12, 15, 20, 30, 60] 中的任意一个。 + */ + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#INT32" + ) + public final Integer fps; + + /** + * 动画总帧数 + */ + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#INT32" + ) + public final Integer frames; + + public MovieParams(Float viewBoxWidth, Float viewBoxHeight, Integer fps, Integer frames) { + this(viewBoxWidth, viewBoxHeight, fps, frames, ByteString.EMPTY); + } + + public MovieParams(Float viewBoxWidth, Float viewBoxHeight, Integer fps, Integer frames, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.viewBoxWidth = viewBoxWidth; + this.viewBoxHeight = viewBoxHeight; + this.fps = fps; + this.frames = frames; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.viewBoxWidth = viewBoxWidth; + builder.viewBoxHeight = viewBoxHeight; + builder.fps = fps; + builder.frames = frames; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof MovieParams)) return false; + MovieParams o = (MovieParams) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(viewBoxWidth, o.viewBoxWidth) + && Internal.equals(viewBoxHeight, o.viewBoxHeight) + && Internal.equals(fps, o.fps) + && Internal.equals(frames, o.frames); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (viewBoxWidth != null ? viewBoxWidth.hashCode() : 0); + result = result * 37 + (viewBoxHeight != null ? viewBoxHeight.hashCode() : 0); + result = result * 37 + (fps != null ? fps.hashCode() : 0); + result = result * 37 + (frames != null ? frames.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (viewBoxWidth != null) builder.append(", viewBoxWidth=").append(viewBoxWidth); + if (viewBoxHeight != null) builder.append(", viewBoxHeight=").append(viewBoxHeight); + if (fps != null) builder.append(", fps=").append(fps); + if (frames != null) builder.append(", frames=").append(frames); + return builder.replace(0, 2, "MovieParams{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public Float viewBoxWidth; + + public Float viewBoxHeight; + + public Integer fps; + + public Integer frames; + + public Builder() { + } + + /** + * 画布宽 + */ + public Builder viewBoxWidth(Float viewBoxWidth) { + this.viewBoxWidth = viewBoxWidth; + return this; + } + + /** + * 画布高 + */ + public Builder viewBoxHeight(Float viewBoxHeight) { + this.viewBoxHeight = viewBoxHeight; + return this; + } + + /** + * 动画每秒播放帧数,合法值是 [1, 2, 3, 5, 6, 10, 12, 15, 20, 30, 60] 中的任意一个。 + */ + public Builder fps(Integer fps) { + this.fps = fps; + return this; + } + + /** + * 动画总帧数 + */ + public Builder frames(Integer frames) { + this.frames = frames; + return this; + } + + @Override + public MovieParams build() { + return new MovieParams(viewBoxWidth, viewBoxHeight, fps, frames, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_MovieParams extends ProtoAdapter { + ProtoAdapter_MovieParams() { + super(FieldEncoding.LENGTH_DELIMITED, MovieParams.class); + } + + @Override + public int encodedSize(MovieParams value) { + return (value.viewBoxWidth != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.viewBoxWidth) : 0) + + (value.viewBoxHeight != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.viewBoxHeight) : 0) + + (value.fps != null ? ProtoAdapter.INT32.encodedSizeWithTag(3, value.fps) : 0) + + (value.frames != null ? ProtoAdapter.INT32.encodedSizeWithTag(4, value.frames) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, MovieParams value) throws IOException { + if (value.viewBoxWidth != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.viewBoxWidth); + if (value.viewBoxHeight != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.viewBoxHeight); + if (value.fps != null) ProtoAdapter.INT32.encodeWithTag(writer, 3, value.fps); + if (value.frames != null) ProtoAdapter.INT32.encodeWithTag(writer, 4, value.frames); + writer.writeBytes(value.unknownFields()); + } + + @Override + public MovieParams decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.viewBoxWidth(ProtoAdapter.FLOAT.decode(reader)); break; + case 2: builder.viewBoxHeight(ProtoAdapter.FLOAT.decode(reader)); break; + case 3: builder.fps(ProtoAdapter.INT32.decode(reader)); break; + case 4: builder.frames(ProtoAdapter.INT32.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public MovieParams redact(MovieParams value) { + Builder builder = value.newBuilder(); + builder.clearUnknownFields(); + return builder.build(); + } + } +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java new file mode 100644 index 000000000..9017dfb62 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java @@ -0,0 +1,1503 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: svga.proto at 43:1 +package com.opensource.svgaplayer.proto; + +import com.squareup.wire.FieldEncoding; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.ProtoReader; +import com.squareup.wire.ProtoWriter; +import com.squareup.wire.WireEnum; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.io.IOException; +import java.lang.Float; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.lang.StringBuilder; +import okio.ByteString; + +public final class ShapeEntity extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_ShapeEntity(); + + private static final long serialVersionUID = 0L; + + public static final ShapeType DEFAULT_TYPE = ShapeType.SHAPE; + + /** + * 矢量类型 + */ + @WireField( + tag = 1, + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeType#ADAPTER" + ) + public final ShapeType type; + + /** + * 矢量参数 + * 渲染参数 + */ + @WireField( + tag = 10, + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeStyle#ADAPTER" + ) + public final ShapeStyle styles; + + /** + * 矢量图层 2D 变换矩阵 + */ + @WireField( + tag = 11, + adapter = "com.opensource.svgaplayer.proto.Transform#ADAPTER" + ) + public final Transform transform; + + @WireField( + tag = 2, + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeArgs#ADAPTER" + ) + public final ShapeArgs shape; + + @WireField( + tag = 3, + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$RectArgs#ADAPTER" + ) + public final RectArgs rect; + + @WireField( + tag = 4, + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$EllipseArgs#ADAPTER" + ) + public final EllipseArgs ellipse; + + public ShapeEntity(ShapeType type, ShapeStyle styles, Transform transform, ShapeArgs shape, RectArgs rect, EllipseArgs ellipse) { + this(type, styles, transform, shape, rect, ellipse, ByteString.EMPTY); + } + + public ShapeEntity(ShapeType type, ShapeStyle styles, Transform transform, ShapeArgs shape, RectArgs rect, EllipseArgs ellipse, ByteString unknownFields) { + super(ADAPTER, unknownFields); + if (Internal.countNonNull(shape, rect, ellipse) > 1) { + throw new IllegalArgumentException("at most one of shape, rect, ellipse may be non-null"); + } + this.type = type; + this.styles = styles; + this.transform = transform; + this.shape = shape; + this.rect = rect; + this.ellipse = ellipse; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.type = type; + builder.styles = styles; + builder.transform = transform; + builder.shape = shape; + builder.rect = rect; + builder.ellipse = ellipse; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof ShapeEntity)) return false; + ShapeEntity o = (ShapeEntity) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(type, o.type) + && Internal.equals(styles, o.styles) + && Internal.equals(transform, o.transform) + && Internal.equals(shape, o.shape) + && Internal.equals(rect, o.rect) + && Internal.equals(ellipse, o.ellipse); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (type != null ? type.hashCode() : 0); + result = result * 37 + (styles != null ? styles.hashCode() : 0); + result = result * 37 + (transform != null ? transform.hashCode() : 0); + result = result * 37 + (shape != null ? shape.hashCode() : 0); + result = result * 37 + (rect != null ? rect.hashCode() : 0); + result = result * 37 + (ellipse != null ? ellipse.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (type != null) builder.append(", type=").append(type); + if (styles != null) builder.append(", styles=").append(styles); + if (transform != null) builder.append(", transform=").append(transform); + if (shape != null) builder.append(", shape=").append(shape); + if (rect != null) builder.append(", rect=").append(rect); + if (ellipse != null) builder.append(", ellipse=").append(ellipse); + return builder.replace(0, 2, "ShapeEntity{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public ShapeType type; + + public ShapeStyle styles; + + public Transform transform; + + public ShapeArgs shape; + + public RectArgs rect; + + public EllipseArgs ellipse; + + public Builder() { + } + + /** + * 矢量类型 + */ + public Builder type(ShapeType type) { + this.type = type; + return this; + } + + /** + * 矢量参数 + * 渲染参数 + */ + public Builder styles(ShapeStyle styles) { + this.styles = styles; + return this; + } + + /** + * 矢量图层 2D 变换矩阵 + */ + public Builder transform(Transform transform) { + this.transform = transform; + return this; + } + + public Builder shape(ShapeArgs shape) { + this.shape = shape; + this.rect = null; + this.ellipse = null; + return this; + } + + public Builder rect(RectArgs rect) { + this.rect = rect; + this.shape = null; + this.ellipse = null; + return this; + } + + public Builder ellipse(EllipseArgs ellipse) { + this.ellipse = ellipse; + this.shape = null; + this.rect = null; + return this; + } + + @Override + public ShapeEntity build() { + return new ShapeEntity(type, styles, transform, shape, rect, ellipse, super.buildUnknownFields()); + } + } + + public enum ShapeType implements WireEnum { + /** + * 路径 + */ + SHAPE(0), + + /** + * 矩形 + */ + RECT(1), + + /** + * 圆形 + */ + ELLIPSE(2), + + /** + * 与前帧一致 + */ + KEEP(3); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(ShapeType.class); + + private final int value; + + ShapeType(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static ShapeType fromValue(int value) { + switch (value) { + case 0: return SHAPE; + case 1: return RECT; + case 2: return ELLIPSE; + case 3: return KEEP; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } + } + + public static final class ShapeArgs extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_ShapeArgs(); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_D = ""; + + /** + * SVG 路径 + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String d; + + public ShapeArgs(String d) { + this(d, ByteString.EMPTY); + } + + public ShapeArgs(String d, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.d = d; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.d = d; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof ShapeArgs)) return false; + ShapeArgs o = (ShapeArgs) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(d, o.d); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (d != null ? d.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (d != null) builder.append(", d=").append(d); + return builder.replace(0, 2, "ShapeArgs{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public String d; + + public Builder() { + } + + /** + * SVG 路径 + */ + public Builder d(String d) { + this.d = d; + return this; + } + + @Override + public ShapeArgs build() { + return new ShapeArgs(d, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_ShapeArgs extends ProtoAdapter { + ProtoAdapter_ShapeArgs() { + super(FieldEncoding.LENGTH_DELIMITED, ShapeArgs.class); + } + + @Override + public int encodedSize(ShapeArgs value) { + return (value.d != null ? ProtoAdapter.STRING.encodedSizeWithTag(1, value.d) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, ShapeArgs value) throws IOException { + if (value.d != null) ProtoAdapter.STRING.encodeWithTag(writer, 1, value.d); + writer.writeBytes(value.unknownFields()); + } + + @Override + public ShapeArgs decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.d(ProtoAdapter.STRING.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public ShapeArgs redact(ShapeArgs value) { + Builder builder = value.newBuilder(); + builder.clearUnknownFields(); + return builder.build(); + } + } + } + + public static final class RectArgs extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_RectArgs(); + + private static final long serialVersionUID = 0L; + + public static final Float DEFAULT_X = 0.0f; + + public static final Float DEFAULT_Y = 0.0f; + + public static final Float DEFAULT_WIDTH = 0.0f; + + public static final Float DEFAULT_HEIGHT = 0.0f; + + public static final Float DEFAULT_CORNERRADIUS = 0.0f; + + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float x; + + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float y; + + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float width; + + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float height; + + /** + * 圆角半径 + */ + @WireField( + tag = 5, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float cornerRadius; + + public RectArgs(Float x, Float y, Float width, Float height, Float cornerRadius) { + this(x, y, width, height, cornerRadius, ByteString.EMPTY); + } + + public RectArgs(Float x, Float y, Float width, Float height, Float cornerRadius, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.cornerRadius = cornerRadius; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.x = x; + builder.y = y; + builder.width = width; + builder.height = height; + builder.cornerRadius = cornerRadius; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof RectArgs)) return false; + RectArgs o = (RectArgs) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(x, o.x) + && Internal.equals(y, o.y) + && Internal.equals(width, o.width) + && Internal.equals(height, o.height) + && Internal.equals(cornerRadius, o.cornerRadius); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (x != null ? x.hashCode() : 0); + result = result * 37 + (y != null ? y.hashCode() : 0); + result = result * 37 + (width != null ? width.hashCode() : 0); + result = result * 37 + (height != null ? height.hashCode() : 0); + result = result * 37 + (cornerRadius != null ? cornerRadius.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (x != null) builder.append(", x=").append(x); + if (y != null) builder.append(", y=").append(y); + if (width != null) builder.append(", width=").append(width); + if (height != null) builder.append(", height=").append(height); + if (cornerRadius != null) builder.append(", cornerRadius=").append(cornerRadius); + return builder.replace(0, 2, "RectArgs{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public Float x; + + public Float y; + + public Float width; + + public Float height; + + public Float cornerRadius; + + public Builder() { + } + + public Builder x(Float x) { + this.x = x; + return this; + } + + public Builder y(Float y) { + this.y = y; + return this; + } + + public Builder width(Float width) { + this.width = width; + return this; + } + + public Builder height(Float height) { + this.height = height; + return this; + } + + /** + * 圆角半径 + */ + public Builder cornerRadius(Float cornerRadius) { + this.cornerRadius = cornerRadius; + return this; + } + + @Override + public RectArgs build() { + return new RectArgs(x, y, width, height, cornerRadius, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_RectArgs extends ProtoAdapter { + ProtoAdapter_RectArgs() { + super(FieldEncoding.LENGTH_DELIMITED, RectArgs.class); + } + + @Override + public int encodedSize(RectArgs value) { + return (value.x != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.x) : 0) + + (value.y != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.y) : 0) + + (value.width != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.width) : 0) + + (value.height != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(4, value.height) : 0) + + (value.cornerRadius != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(5, value.cornerRadius) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, RectArgs value) throws IOException { + if (value.x != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.x); + if (value.y != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.y); + if (value.width != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.width); + if (value.height != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 4, value.height); + if (value.cornerRadius != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 5, value.cornerRadius); + writer.writeBytes(value.unknownFields()); + } + + @Override + public RectArgs decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.x(ProtoAdapter.FLOAT.decode(reader)); break; + case 2: builder.y(ProtoAdapter.FLOAT.decode(reader)); break; + case 3: builder.width(ProtoAdapter.FLOAT.decode(reader)); break; + case 4: builder.height(ProtoAdapter.FLOAT.decode(reader)); break; + case 5: builder.cornerRadius(ProtoAdapter.FLOAT.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public RectArgs redact(RectArgs value) { + Builder builder = value.newBuilder(); + builder.clearUnknownFields(); + return builder.build(); + } + } + } + + public static final class EllipseArgs extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_EllipseArgs(); + + private static final long serialVersionUID = 0L; + + public static final Float DEFAULT_X = 0.0f; + + public static final Float DEFAULT_Y = 0.0f; + + public static final Float DEFAULT_RADIUSX = 0.0f; + + public static final Float DEFAULT_RADIUSY = 0.0f; + + /** + * 圆中心点 X + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float x; + + /** + * 圆中心点 Y + */ + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float y; + + /** + * 横向半径 + */ + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float radiusX; + + /** + * 纵向半径 + */ + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float radiusY; + + public EllipseArgs(Float x, Float y, Float radiusX, Float radiusY) { + this(x, y, radiusX, radiusY, ByteString.EMPTY); + } + + public EllipseArgs(Float x, Float y, Float radiusX, Float radiusY, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.x = x; + this.y = y; + this.radiusX = radiusX; + this.radiusY = radiusY; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.x = x; + builder.y = y; + builder.radiusX = radiusX; + builder.radiusY = radiusY; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof EllipseArgs)) return false; + EllipseArgs o = (EllipseArgs) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(x, o.x) + && Internal.equals(y, o.y) + && Internal.equals(radiusX, o.radiusX) + && Internal.equals(radiusY, o.radiusY); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (x != null ? x.hashCode() : 0); + result = result * 37 + (y != null ? y.hashCode() : 0); + result = result * 37 + (radiusX != null ? radiusX.hashCode() : 0); + result = result * 37 + (radiusY != null ? radiusY.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (x != null) builder.append(", x=").append(x); + if (y != null) builder.append(", y=").append(y); + if (radiusX != null) builder.append(", radiusX=").append(radiusX); + if (radiusY != null) builder.append(", radiusY=").append(radiusY); + return builder.replace(0, 2, "EllipseArgs{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public Float x; + + public Float y; + + public Float radiusX; + + public Float radiusY; + + public Builder() { + } + + /** + * 圆中心点 X + */ + public Builder x(Float x) { + this.x = x; + return this; + } + + /** + * 圆中心点 Y + */ + public Builder y(Float y) { + this.y = y; + return this; + } + + /** + * 横向半径 + */ + public Builder radiusX(Float radiusX) { + this.radiusX = radiusX; + return this; + } + + /** + * 纵向半径 + */ + public Builder radiusY(Float radiusY) { + this.radiusY = radiusY; + return this; + } + + @Override + public EllipseArgs build() { + return new EllipseArgs(x, y, radiusX, radiusY, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_EllipseArgs extends ProtoAdapter { + ProtoAdapter_EllipseArgs() { + super(FieldEncoding.LENGTH_DELIMITED, EllipseArgs.class); + } + + @Override + public int encodedSize(EllipseArgs value) { + return (value.x != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.x) : 0) + + (value.y != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.y) : 0) + + (value.radiusX != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.radiusX) : 0) + + (value.radiusY != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(4, value.radiusY) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, EllipseArgs value) throws IOException { + if (value.x != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.x); + if (value.y != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.y); + if (value.radiusX != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.radiusX); + if (value.radiusY != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 4, value.radiusY); + writer.writeBytes(value.unknownFields()); + } + + @Override + public EllipseArgs decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.x(ProtoAdapter.FLOAT.decode(reader)); break; + case 2: builder.y(ProtoAdapter.FLOAT.decode(reader)); break; + case 3: builder.radiusX(ProtoAdapter.FLOAT.decode(reader)); break; + case 4: builder.radiusY(ProtoAdapter.FLOAT.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public EllipseArgs redact(EllipseArgs value) { + Builder builder = value.newBuilder(); + builder.clearUnknownFields(); + return builder.build(); + } + } + } + + public static final class ShapeStyle extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_ShapeStyle(); + + private static final long serialVersionUID = 0L; + + public static final Float DEFAULT_STROKEWIDTH = 0.0f; + + public static final LineCap DEFAULT_LINECAP = LineCap.LineCap_BUTT; + + public static final LineJoin DEFAULT_LINEJOIN = LineJoin.LineJoin_MITER; + + public static final Float DEFAULT_MITERLIMIT = 0.0f; + + public static final Float DEFAULT_LINEDASHI = 0.0f; + + public static final Float DEFAULT_LINEDASHII = 0.0f; + + public static final Float DEFAULT_LINEDASHIII = 0.0f; + + /** + * 填充色 + */ + @WireField( + tag = 1, + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeStyle$RGBAColor#ADAPTER" + ) + public final RGBAColor fill; + + /** + * 描边色 + */ + @WireField( + tag = 2, + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeStyle$RGBAColor#ADAPTER" + ) + public final RGBAColor stroke; + + /** + * 描边宽 + */ + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float strokeWidth; + + /** + * 线段端点样式 + */ + @WireField( + tag = 4, + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeStyle$LineCap#ADAPTER" + ) + public final LineCap lineCap; + + /** + * 线段连接样式 + */ + @WireField( + tag = 5, + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeStyle$LineJoin#ADAPTER" + ) + public final LineJoin lineJoin; + + /** + * 尖角限制 + */ + @WireField( + tag = 6, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float miterLimit; + + /** + * 虚线参数 Dash + */ + @WireField( + tag = 7, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float lineDashI; + + /** + * 虚线参数 Gap + */ + @WireField( + tag = 8, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float lineDashII; + + /** + * 虚线参数 Offset + */ + @WireField( + tag = 9, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float lineDashIII; + + public ShapeStyle(RGBAColor fill, RGBAColor stroke, Float strokeWidth, LineCap lineCap, LineJoin lineJoin, Float miterLimit, Float lineDashI, Float lineDashII, Float lineDashIII) { + this(fill, stroke, strokeWidth, lineCap, lineJoin, miterLimit, lineDashI, lineDashII, lineDashIII, ByteString.EMPTY); + } + + public ShapeStyle(RGBAColor fill, RGBAColor stroke, Float strokeWidth, LineCap lineCap, LineJoin lineJoin, Float miterLimit, Float lineDashI, Float lineDashII, Float lineDashIII, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.fill = fill; + this.stroke = stroke; + this.strokeWidth = strokeWidth; + this.lineCap = lineCap; + this.lineJoin = lineJoin; + this.miterLimit = miterLimit; + this.lineDashI = lineDashI; + this.lineDashII = lineDashII; + this.lineDashIII = lineDashIII; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.fill = fill; + builder.stroke = stroke; + builder.strokeWidth = strokeWidth; + builder.lineCap = lineCap; + builder.lineJoin = lineJoin; + builder.miterLimit = miterLimit; + builder.lineDashI = lineDashI; + builder.lineDashII = lineDashII; + builder.lineDashIII = lineDashIII; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof ShapeStyle)) return false; + ShapeStyle o = (ShapeStyle) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(fill, o.fill) + && Internal.equals(stroke, o.stroke) + && Internal.equals(strokeWidth, o.strokeWidth) + && Internal.equals(lineCap, o.lineCap) + && Internal.equals(lineJoin, o.lineJoin) + && Internal.equals(miterLimit, o.miterLimit) + && Internal.equals(lineDashI, o.lineDashI) + && Internal.equals(lineDashII, o.lineDashII) + && Internal.equals(lineDashIII, o.lineDashIII); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (fill != null ? fill.hashCode() : 0); + result = result * 37 + (stroke != null ? stroke.hashCode() : 0); + result = result * 37 + (strokeWidth != null ? strokeWidth.hashCode() : 0); + result = result * 37 + (lineCap != null ? lineCap.hashCode() : 0); + result = result * 37 + (lineJoin != null ? lineJoin.hashCode() : 0); + result = result * 37 + (miterLimit != null ? miterLimit.hashCode() : 0); + result = result * 37 + (lineDashI != null ? lineDashI.hashCode() : 0); + result = result * 37 + (lineDashII != null ? lineDashII.hashCode() : 0); + result = result * 37 + (lineDashIII != null ? lineDashIII.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (fill != null) builder.append(", fill=").append(fill); + if (stroke != null) builder.append(", stroke=").append(stroke); + if (strokeWidth != null) builder.append(", strokeWidth=").append(strokeWidth); + if (lineCap != null) builder.append(", lineCap=").append(lineCap); + if (lineJoin != null) builder.append(", lineJoin=").append(lineJoin); + if (miterLimit != null) builder.append(", miterLimit=").append(miterLimit); + if (lineDashI != null) builder.append(", lineDashI=").append(lineDashI); + if (lineDashII != null) builder.append(", lineDashII=").append(lineDashII); + if (lineDashIII != null) builder.append(", lineDashIII=").append(lineDashIII); + return builder.replace(0, 2, "ShapeStyle{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public RGBAColor fill; + + public RGBAColor stroke; + + public Float strokeWidth; + + public LineCap lineCap; + + public LineJoin lineJoin; + + public Float miterLimit; + + public Float lineDashI; + + public Float lineDashII; + + public Float lineDashIII; + + public Builder() { + } + + /** + * 填充色 + */ + public Builder fill(RGBAColor fill) { + this.fill = fill; + return this; + } + + /** + * 描边色 + */ + public Builder stroke(RGBAColor stroke) { + this.stroke = stroke; + return this; + } + + /** + * 描边宽 + */ + public Builder strokeWidth(Float strokeWidth) { + this.strokeWidth = strokeWidth; + return this; + } + + /** + * 线段端点样式 + */ + public Builder lineCap(LineCap lineCap) { + this.lineCap = lineCap; + return this; + } + + /** + * 线段连接样式 + */ + public Builder lineJoin(LineJoin lineJoin) { + this.lineJoin = lineJoin; + return this; + } + + /** + * 尖角限制 + */ + public Builder miterLimit(Float miterLimit) { + this.miterLimit = miterLimit; + return this; + } + + /** + * 虚线参数 Dash + */ + public Builder lineDashI(Float lineDashI) { + this.lineDashI = lineDashI; + return this; + } + + /** + * 虚线参数 Gap + */ + public Builder lineDashII(Float lineDashII) { + this.lineDashII = lineDashII; + return this; + } + + /** + * 虚线参数 Offset + */ + public Builder lineDashIII(Float lineDashIII) { + this.lineDashIII = lineDashIII; + return this; + } + + @Override + public ShapeStyle build() { + return new ShapeStyle(fill, stroke, strokeWidth, lineCap, lineJoin, miterLimit, lineDashI, lineDashII, lineDashIII, super.buildUnknownFields()); + } + } + + public static final class RGBAColor extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_RGBAColor(); + + private static final long serialVersionUID = 0L; + + public static final Float DEFAULT_R = 0.0f; + + public static final Float DEFAULT_G = 0.0f; + + public static final Float DEFAULT_B = 0.0f; + + public static final Float DEFAULT_A = 0.0f; + + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float r; + + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float g; + + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float b; + + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float a; + + public RGBAColor(Float r, Float g, Float b, Float a) { + this(r, g, b, a, ByteString.EMPTY); + } + + public RGBAColor(Float r, Float g, Float b, Float a, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.r = r; + builder.g = g; + builder.b = b; + builder.a = a; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof RGBAColor)) return false; + RGBAColor o = (RGBAColor) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(r, o.r) + && Internal.equals(g, o.g) + && Internal.equals(b, o.b) + && Internal.equals(a, o.a); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (r != null ? r.hashCode() : 0); + result = result * 37 + (g != null ? g.hashCode() : 0); + result = result * 37 + (b != null ? b.hashCode() : 0); + result = result * 37 + (a != null ? a.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (r != null) builder.append(", r=").append(r); + if (g != null) builder.append(", g=").append(g); + if (b != null) builder.append(", b=").append(b); + if (a != null) builder.append(", a=").append(a); + return builder.replace(0, 2, "RGBAColor{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public Float r; + + public Float g; + + public Float b; + + public Float a; + + public Builder() { + } + + public Builder r(Float r) { + this.r = r; + return this; + } + + public Builder g(Float g) { + this.g = g; + return this; + } + + public Builder b(Float b) { + this.b = b; + return this; + } + + public Builder a(Float a) { + this.a = a; + return this; + } + + @Override + public RGBAColor build() { + return new RGBAColor(r, g, b, a, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_RGBAColor extends ProtoAdapter { + ProtoAdapter_RGBAColor() { + super(FieldEncoding.LENGTH_DELIMITED, RGBAColor.class); + } + + @Override + public int encodedSize(RGBAColor value) { + return (value.r != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.r) : 0) + + (value.g != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.g) : 0) + + (value.b != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.b) : 0) + + (value.a != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(4, value.a) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, RGBAColor value) throws IOException { + if (value.r != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.r); + if (value.g != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.g); + if (value.b != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.b); + if (value.a != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 4, value.a); + writer.writeBytes(value.unknownFields()); + } + + @Override + public RGBAColor decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.r(ProtoAdapter.FLOAT.decode(reader)); break; + case 2: builder.g(ProtoAdapter.FLOAT.decode(reader)); break; + case 3: builder.b(ProtoAdapter.FLOAT.decode(reader)); break; + case 4: builder.a(ProtoAdapter.FLOAT.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public RGBAColor redact(RGBAColor value) { + Builder builder = value.newBuilder(); + builder.clearUnknownFields(); + return builder.build(); + } + } + } + + public enum LineCap implements WireEnum { + LineCap_BUTT(0), + + LineCap_ROUND(1), + + LineCap_SQUARE(2); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(LineCap.class); + + private final int value; + + LineCap(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static LineCap fromValue(int value) { + switch (value) { + case 0: return LineCap_BUTT; + case 1: return LineCap_ROUND; + case 2: return LineCap_SQUARE; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } + } + + public enum LineJoin implements WireEnum { + LineJoin_MITER(0), + + LineJoin_ROUND(1), + + LineJoin_BEVEL(2); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(LineJoin.class); + + private final int value; + + LineJoin(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static LineJoin fromValue(int value) { + switch (value) { + case 0: return LineJoin_MITER; + case 1: return LineJoin_ROUND; + case 2: return LineJoin_BEVEL; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } + } + + private static final class ProtoAdapter_ShapeStyle extends ProtoAdapter { + ProtoAdapter_ShapeStyle() { + super(FieldEncoding.LENGTH_DELIMITED, ShapeStyle.class); + } + + @Override + public int encodedSize(ShapeStyle value) { + return (value.fill != null ? RGBAColor.ADAPTER.encodedSizeWithTag(1, value.fill) : 0) + + (value.stroke != null ? RGBAColor.ADAPTER.encodedSizeWithTag(2, value.stroke) : 0) + + (value.strokeWidth != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.strokeWidth) : 0) + + (value.lineCap != null ? LineCap.ADAPTER.encodedSizeWithTag(4, value.lineCap) : 0) + + (value.lineJoin != null ? LineJoin.ADAPTER.encodedSizeWithTag(5, value.lineJoin) : 0) + + (value.miterLimit != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(6, value.miterLimit) : 0) + + (value.lineDashI != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(7, value.lineDashI) : 0) + + (value.lineDashII != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(8, value.lineDashII) : 0) + + (value.lineDashIII != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(9, value.lineDashIII) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, ShapeStyle value) throws IOException { + if (value.fill != null) RGBAColor.ADAPTER.encodeWithTag(writer, 1, value.fill); + if (value.stroke != null) RGBAColor.ADAPTER.encodeWithTag(writer, 2, value.stroke); + if (value.strokeWidth != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.strokeWidth); + if (value.lineCap != null) LineCap.ADAPTER.encodeWithTag(writer, 4, value.lineCap); + if (value.lineJoin != null) LineJoin.ADAPTER.encodeWithTag(writer, 5, value.lineJoin); + if (value.miterLimit != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 6, value.miterLimit); + if (value.lineDashI != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 7, value.lineDashI); + if (value.lineDashII != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 8, value.lineDashII); + if (value.lineDashIII != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 9, value.lineDashIII); + writer.writeBytes(value.unknownFields()); + } + + @Override + public ShapeStyle decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.fill(RGBAColor.ADAPTER.decode(reader)); break; + case 2: builder.stroke(RGBAColor.ADAPTER.decode(reader)); break; + case 3: builder.strokeWidth(ProtoAdapter.FLOAT.decode(reader)); break; + case 4: { + try { + builder.lineCap(LineCap.ADAPTER.decode(reader)); + } catch (EnumConstantNotFoundException e) { + builder.addUnknownField(tag, FieldEncoding.VARINT, (long) e.value); + } + break; + } + case 5: { + try { + builder.lineJoin(LineJoin.ADAPTER.decode(reader)); + } catch (EnumConstantNotFoundException e) { + builder.addUnknownField(tag, FieldEncoding.VARINT, (long) e.value); + } + break; + } + case 6: builder.miterLimit(ProtoAdapter.FLOAT.decode(reader)); break; + case 7: builder.lineDashI(ProtoAdapter.FLOAT.decode(reader)); break; + case 8: builder.lineDashII(ProtoAdapter.FLOAT.decode(reader)); break; + case 9: builder.lineDashIII(ProtoAdapter.FLOAT.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public ShapeStyle redact(ShapeStyle value) { + Builder builder = value.newBuilder(); + if (builder.fill != null) builder.fill = RGBAColor.ADAPTER.redact(builder.fill); + if (builder.stroke != null) builder.stroke = RGBAColor.ADAPTER.redact(builder.stroke); + builder.clearUnknownFields(); + return builder.build(); + } + } + } + + private static final class ProtoAdapter_ShapeEntity extends ProtoAdapter { + ProtoAdapter_ShapeEntity() { + super(FieldEncoding.LENGTH_DELIMITED, ShapeEntity.class); + } + + @Override + public int encodedSize(ShapeEntity value) { + return (value.type != null ? ShapeType.ADAPTER.encodedSizeWithTag(1, value.type) : 0) + + (value.styles != null ? ShapeStyle.ADAPTER.encodedSizeWithTag(10, value.styles) : 0) + + (value.transform != null ? Transform.ADAPTER.encodedSizeWithTag(11, value.transform) : 0) + + (value.shape != null ? ShapeArgs.ADAPTER.encodedSizeWithTag(2, value.shape) : 0) + + (value.rect != null ? RectArgs.ADAPTER.encodedSizeWithTag(3, value.rect) : 0) + + (value.ellipse != null ? EllipseArgs.ADAPTER.encodedSizeWithTag(4, value.ellipse) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, ShapeEntity value) throws IOException { + if (value.type != null) ShapeType.ADAPTER.encodeWithTag(writer, 1, value.type); + if (value.styles != null) ShapeStyle.ADAPTER.encodeWithTag(writer, 10, value.styles); + if (value.transform != null) Transform.ADAPTER.encodeWithTag(writer, 11, value.transform); + if (value.shape != null) ShapeArgs.ADAPTER.encodeWithTag(writer, 2, value.shape); + if (value.rect != null) RectArgs.ADAPTER.encodeWithTag(writer, 3, value.rect); + if (value.ellipse != null) EllipseArgs.ADAPTER.encodeWithTag(writer, 4, value.ellipse); + writer.writeBytes(value.unknownFields()); + } + + @Override + public ShapeEntity decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: { + try { + builder.type(ShapeType.ADAPTER.decode(reader)); + } catch (EnumConstantNotFoundException e) { + builder.addUnknownField(tag, FieldEncoding.VARINT, (long) e.value); + } + break; + } + case 10: builder.styles(ShapeStyle.ADAPTER.decode(reader)); break; + case 11: builder.transform(Transform.ADAPTER.decode(reader)); break; + case 2: builder.shape(ShapeArgs.ADAPTER.decode(reader)); break; + case 3: builder.rect(RectArgs.ADAPTER.decode(reader)); break; + case 4: builder.ellipse(EllipseArgs.ADAPTER.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public ShapeEntity redact(ShapeEntity value) { + Builder builder = value.newBuilder(); + if (builder.styles != null) builder.styles = ShapeStyle.ADAPTER.redact(builder.styles); + if (builder.transform != null) builder.transform = Transform.ADAPTER.redact(builder.transform); + if (builder.shape != null) builder.shape = ShapeArgs.ADAPTER.redact(builder.shape); + if (builder.rect != null) builder.rect = RectArgs.ADAPTER.redact(builder.rect); + if (builder.ellipse != null) builder.ellipse = EllipseArgs.ADAPTER.redact(builder.ellipse); + builder.clearUnknownFields(); + return builder.build(); + } + } +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java new file mode 100644 index 000000000..bc9120b54 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java @@ -0,0 +1,202 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: svga.proto at 13:1 +package com.opensource.svgaplayer.proto; + +import com.squareup.wire.FieldEncoding; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.ProtoReader; +import com.squareup.wire.ProtoWriter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.io.IOException; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.lang.StringBuilder; +import java.util.List; +import okio.ByteString; + +public final class SpriteEntity extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_SpriteEntity(); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_IMAGEKEY = ""; + + public static final String DEFAULT_MATTEKEY = ""; + + /** + * 元件所对应的位图键名, 如果 imageKey 含有 .vector 后缀,该 sprite 为矢量图层 含有 .matte 后缀,该 sprite 为遮罩图层。 + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String imageKey; + + /** + * 帧列表 + */ + @WireField( + tag = 2, + adapter = "com.opensource.svgaplayer.proto.FrameEntity#ADAPTER", + label = WireField.Label.REPEATED + ) + public final List frames; + + /** + * 被遮罩图层的 matteKey 对应的是其遮罩图层的 imageKey. + */ + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String matteKey; + + public SpriteEntity(String imageKey, List frames, String matteKey) { + this(imageKey, frames, matteKey, ByteString.EMPTY); + } + + public SpriteEntity(String imageKey, List frames, String matteKey, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.imageKey = imageKey; + this.frames = Internal.immutableCopyOf("frames", frames); + this.matteKey = matteKey; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.imageKey = imageKey; + builder.frames = Internal.copyOf("frames", frames); + builder.matteKey = matteKey; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof SpriteEntity)) return false; + SpriteEntity o = (SpriteEntity) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(imageKey, o.imageKey) + && frames.equals(o.frames) + && Internal.equals(matteKey, o.matteKey); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (imageKey != null ? imageKey.hashCode() : 0); + result = result * 37 + frames.hashCode(); + result = result * 37 + (matteKey != null ? matteKey.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (imageKey != null) builder.append(", imageKey=").append(imageKey); + if (!frames.isEmpty()) builder.append(", frames=").append(frames); + if (matteKey != null) builder.append(", matteKey=").append(matteKey); + return builder.replace(0, 2, "SpriteEntity{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public String imageKey; + + public List frames; + + public String matteKey; + + public Builder() { + frames = Internal.newMutableList(); + } + + /** + * 元件所对应的位图键名, 如果 imageKey 含有 .vector 后缀,该 sprite 为矢量图层 含有 .matte 后缀,该 sprite 为遮罩图层。 + */ + public Builder imageKey(String imageKey) { + this.imageKey = imageKey; + return this; + } + + /** + * 帧列表 + */ + public Builder frames(List frames) { + Internal.checkElementsNotNull(frames); + this.frames = frames; + return this; + } + + /** + * 被遮罩图层的 matteKey 对应的是其遮罩图层的 imageKey. + */ + public Builder matteKey(String matteKey) { + this.matteKey = matteKey; + return this; + } + + @Override + public SpriteEntity build() { + return new SpriteEntity(imageKey, frames, matteKey, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_SpriteEntity extends ProtoAdapter { + ProtoAdapter_SpriteEntity() { + super(FieldEncoding.LENGTH_DELIMITED, SpriteEntity.class); + } + + @Override + public int encodedSize(SpriteEntity value) { + return (value.imageKey != null ? ProtoAdapter.STRING.encodedSizeWithTag(1, value.imageKey) : 0) + + FrameEntity.ADAPTER.asRepeated().encodedSizeWithTag(2, value.frames) + + (value.matteKey != null ? ProtoAdapter.STRING.encodedSizeWithTag(3, value.matteKey) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, SpriteEntity value) throws IOException { + if (value.imageKey != null) ProtoAdapter.STRING.encodeWithTag(writer, 1, value.imageKey); + FrameEntity.ADAPTER.asRepeated().encodeWithTag(writer, 2, value.frames); + if (value.matteKey != null) ProtoAdapter.STRING.encodeWithTag(writer, 3, value.matteKey); + writer.writeBytes(value.unknownFields()); + } + + @Override + public SpriteEntity decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.imageKey(ProtoAdapter.STRING.decode(reader)); break; + case 2: builder.frames.add(FrameEntity.ADAPTER.decode(reader)); break; + case 3: builder.matteKey(ProtoAdapter.STRING.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public SpriteEntity redact(SpriteEntity value) { + Builder builder = value.newBuilder(); + Internal.redactElements(builder.frames, FrameEntity.ADAPTER); + builder.clearUnknownFields(); + return builder.build(); + } + } +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/Transform.java b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/Transform.java new file mode 100644 index 000000000..c4c4941d4 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/proto/Transform.java @@ -0,0 +1,251 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: svga.proto at 34:1 +package com.opensource.svgaplayer.proto; + +import com.squareup.wire.FieldEncoding; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.ProtoReader; +import com.squareup.wire.ProtoWriter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.io.IOException; +import java.lang.Float; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.lang.StringBuilder; +import okio.ByteString; + +public final class Transform extends Message { + public static final ProtoAdapter ADAPTER = new ProtoAdapter_Transform(); + + private static final long serialVersionUID = 0L; + + public static final Float DEFAULT_A = 0.0f; + + public static final Float DEFAULT_B = 0.0f; + + public static final Float DEFAULT_C = 0.0f; + + public static final Float DEFAULT_D = 0.0f; + + public static final Float DEFAULT_TX = 0.0f; + + public static final Float DEFAULT_TY = 0.0f; + + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float a; + + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float b; + + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float c; + + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float d; + + @WireField( + tag = 5, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float tx; + + @WireField( + tag = 6, + adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + ) + public final Float ty; + + public Transform(Float a, Float b, Float c, Float d, Float tx, Float ty) { + this(a, b, c, d, tx, ty, ByteString.EMPTY); + } + + public Transform(Float a, Float b, Float c, Float d, Float tx, Float ty, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.a = a; + this.b = b; + this.c = c; + this.d = d; + this.tx = tx; + this.ty = ty; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.a = a; + builder.b = b; + builder.c = c; + builder.d = d; + builder.tx = tx; + builder.ty = ty; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof Transform)) return false; + Transform o = (Transform) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(a, o.a) + && Internal.equals(b, o.b) + && Internal.equals(c, o.c) + && Internal.equals(d, o.d) + && Internal.equals(tx, o.tx) + && Internal.equals(ty, o.ty); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (a != null ? a.hashCode() : 0); + result = result * 37 + (b != null ? b.hashCode() : 0); + result = result * 37 + (c != null ? c.hashCode() : 0); + result = result * 37 + (d != null ? d.hashCode() : 0); + result = result * 37 + (tx != null ? tx.hashCode() : 0); + result = result * 37 + (ty != null ? ty.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + if (a != null) builder.append(", a=").append(a); + if (b != null) builder.append(", b=").append(b); + if (c != null) builder.append(", c=").append(c); + if (d != null) builder.append(", d=").append(d); + if (tx != null) builder.append(", tx=").append(tx); + if (ty != null) builder.append(", ty=").append(ty); + return builder.replace(0, 2, "Transform{").append('}').toString(); + } + + public static final class Builder extends Message.Builder { + public Float a; + + public Float b; + + public Float c; + + public Float d; + + public Float tx; + + public Float ty; + + public Builder() { + } + + public Builder a(Float a) { + this.a = a; + return this; + } + + public Builder b(Float b) { + this.b = b; + return this; + } + + public Builder c(Float c) { + this.c = c; + return this; + } + + public Builder d(Float d) { + this.d = d; + return this; + } + + public Builder tx(Float tx) { + this.tx = tx; + return this; + } + + public Builder ty(Float ty) { + this.ty = ty; + return this; + } + + @Override + public Transform build() { + return new Transform(a, b, c, d, tx, ty, super.buildUnknownFields()); + } + } + + private static final class ProtoAdapter_Transform extends ProtoAdapter { + ProtoAdapter_Transform() { + super(FieldEncoding.LENGTH_DELIMITED, Transform.class); + } + + @Override + public int encodedSize(Transform value) { + return (value.a != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.a) : 0) + + (value.b != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.b) : 0) + + (value.c != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.c) : 0) + + (value.d != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(4, value.d) : 0) + + (value.tx != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(5, value.tx) : 0) + + (value.ty != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(6, value.ty) : 0) + + value.unknownFields().size(); + } + + @Override + public void encode(ProtoWriter writer, Transform value) throws IOException { + if (value.a != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.a); + if (value.b != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.b); + if (value.c != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.c); + if (value.d != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 4, value.d); + if (value.tx != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 5, value.tx); + if (value.ty != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 6, value.ty); + writer.writeBytes(value.unknownFields()); + } + + @Override + public Transform decode(ProtoReader reader) throws IOException { + Builder builder = new Builder(); + long token = reader.beginMessage(); + for (int tag; (tag = reader.nextTag()) != -1;) { + switch (tag) { + case 1: builder.a(ProtoAdapter.FLOAT.decode(reader)); break; + case 2: builder.b(ProtoAdapter.FLOAT.decode(reader)); break; + case 3: builder.c(ProtoAdapter.FLOAT.decode(reader)); break; + case 4: builder.d(ProtoAdapter.FLOAT.decode(reader)); break; + case 5: builder.tx(ProtoAdapter.FLOAT.decode(reader)); break; + case 6: builder.ty(ProtoAdapter.FLOAT.decode(reader)); break; + default: { + FieldEncoding fieldEncoding = reader.peekFieldEncoding(); + Object value = fieldEncoding.rawProtoAdapter().decode(reader); + builder.addUnknownField(tag, fieldEncoding, value); + } + } + } + reader.endMessage(token); + return builder.build(); + } + + @Override + public Transform redact(Transform value) { + Builder builder = value.newBuilder(); + builder.clearUnknownFields(); + return builder.build(); + } + } +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/Pools.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/Pools.kt new file mode 100644 index 000000000..7382ab84b --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/Pools.kt @@ -0,0 +1,102 @@ +package com.opensource.svgaplayer.utils + +/** + * Helper class for creating pools of objects. An example use looks like this: + *

+ * public class MyPooledClass {
+ *
+ *     private static final SynchronizedPool sPool =
+ *             new SynchronizedPool(10);
+ *
+ *     public static MyPooledClass obtain() {
+ *         MyPooledClass instance = sPool.acquire();
+ *         return (instance != null) ? instance : new MyPooledClass();
+ *     }
+ *
+ *     public void recycle() {
+ *          // Clear state if needed.
+ *          sPool.release(this);
+ *     }
+ *
+ *     . . .
+ * }
+ * 
+ * + */ +class Pools private constructor() { + + /** + * Interface for managing a pool of objects. + * + * @param The pooled type. + */ + interface Pool { + /** + * @return An instance from the pool if such, null otherwise. + */ + fun acquire(): T? + + /** + * Release an instance to the pool. + * + * @param instance The instance to release. + * @return Whether the instance was put in the pool. + * + * @throws IllegalStateException If the instance is already in the pool. + */ + fun release(instance: T): Boolean + } + + /** + * Simple (non-synchronized) pool of objects. + * + * @param maxPoolSize The max pool size. + * + * @throws IllegalArgumentException If the max pool size is less than zero. + * + * @param The pooled type. + */ + open class SimplePool(maxPoolSize: Int) : Pool { + private val mPool: Array + private var mPoolSize = 0 + + init { + require(maxPoolSize > 0) { "The max pool size must be > 0" } + mPool = arrayOfNulls(maxPoolSize) + } + + @Suppress("UNCHECKED_CAST") + override fun acquire(): T? { + if (mPoolSize > 0) { + val lastPooledIndex = mPoolSize - 1 + val instance = mPool[lastPooledIndex] as T? + mPool[lastPooledIndex] = null + mPoolSize-- + return instance + } + return null + } + + override fun release(instance: T): Boolean { + check(!isInPool(instance)) { "Already in the pool!" } + if (mPoolSize < mPool.size) { + mPool[mPoolSize] = instance + mPoolSize++ + return true + } + return false + } + + private fun isInPool(instance: T): Boolean { + for (i in 0 until mPoolSize) { + if (mPool[i] === instance) { + return true + } + } + return false + } + + } + + +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/SVGAScaleInfo.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/SVGAScaleInfo.kt new file mode 100644 index 000000000..792abc266 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/SVGAScaleInfo.kt @@ -0,0 +1,146 @@ +package com.opensource.svgaplayer.utils + +import android.widget.ImageView + +/** + * Created by ubt on 2018/1/19. + */ +class SVGAScaleInfo { + + var tranFx : Float = 0.0f + var tranFy : Float = 0.0f + var scaleFx : Float = 1.0f + var scaleFy : Float = 1.0f + var ratio = 1.0f + var ratioX = false + + private fun resetVar(){ + tranFx = 0.0f + tranFy = 0.0f + scaleFx = 1.0f + scaleFy = 1.0f + ratio = 1.0f + ratioX = false + } + + fun performScaleType(canvasWidth : Float, canvasHeight: Float, videoWidth : Float, videoHeight : Float, scaleType: ImageView.ScaleType) { + if (canvasWidth == 0.0f || canvasHeight == 0.0f || videoWidth == 0.0f || videoHeight == 0.0f) { + return + } + + resetVar() + val canW_vidW_f = (canvasWidth - videoWidth) / 2.0f + val canH_vidH_f = (canvasHeight - videoHeight) / 2.0f + + val videoRatio = videoWidth / videoHeight + val canvasRatio = canvasWidth / canvasHeight + + val canH_d_vidH = canvasHeight / videoHeight + val canW_d_vidW = canvasWidth / videoWidth + + when (scaleType) { + ImageView.ScaleType.CENTER -> { + tranFx = canW_vidW_f + tranFy = canH_vidH_f + } + ImageView.ScaleType.CENTER_CROP -> { + if (videoRatio > canvasRatio) { + ratio = canH_d_vidH + ratioX = false + scaleFx = canH_d_vidH + scaleFy = canH_d_vidH + tranFx = (canvasWidth - videoWidth * (canH_d_vidH)) / 2.0f + } + else { + ratio = canW_d_vidW + ratioX = true + scaleFx = canW_d_vidW + scaleFy = canW_d_vidW + tranFy = (canvasHeight - videoHeight * (canW_d_vidW)) / 2.0f + } + } + ImageView.ScaleType.CENTER_INSIDE -> { + if (videoWidth < canvasWidth && videoHeight < canvasHeight) { + tranFx = canW_vidW_f + tranFy = canH_vidH_f + } + else { + if (videoRatio > canvasRatio) { + ratio = canW_d_vidW + ratioX = true + scaleFx = canW_d_vidW + scaleFy = canW_d_vidW + tranFy = (canvasHeight - videoHeight * (canW_d_vidW)) / 2.0f + + } + else { + ratio = canH_d_vidH + ratioX = false + scaleFx = canH_d_vidH + scaleFy = canH_d_vidH + tranFx = (canvasWidth - videoWidth * (canH_d_vidH)) / 2.0f + } + } + } + ImageView.ScaleType.FIT_CENTER -> { + if (videoRatio > canvasRatio) { + ratio = canW_d_vidW + ratioX = true + scaleFx = canW_d_vidW + scaleFy = canW_d_vidW + tranFy = (canvasHeight - videoHeight * (canW_d_vidW)) / 2.0f + } + else { + ratio = canH_d_vidH + ratioX = false + scaleFx = canH_d_vidH + scaleFy = canH_d_vidH + tranFx = (canvasWidth - videoWidth * (canH_d_vidH)) / 2.0f + } + } + ImageView.ScaleType.FIT_START -> { + if (videoRatio > canvasRatio) { + ratio = canW_d_vidW + ratioX = true + scaleFx = canW_d_vidW + scaleFy = canW_d_vidW + } + else { + ratio = canH_d_vidH + ratioX = false + scaleFx = canH_d_vidH + scaleFy = canH_d_vidH + } + } + ImageView.ScaleType.FIT_END -> { + if (videoRatio > canvasRatio) { + ratio = canW_d_vidW + ratioX = true + scaleFx = canW_d_vidW + scaleFy = canW_d_vidW + tranFy= canvasHeight - videoHeight * (canW_d_vidW) + } + else { + ratio = canH_d_vidH + ratioX = false + scaleFx = canH_d_vidH + scaleFy = canH_d_vidH + tranFx = canvasWidth - videoWidth * (canH_d_vidH) + } + } + ImageView.ScaleType.FIT_XY -> { + ratio = Math.max(canW_d_vidW, canH_d_vidH) + ratioX = canW_d_vidW > canH_d_vidH + scaleFx = canW_d_vidW + scaleFy = canH_d_vidH + } + else -> { + ratio = canW_d_vidW + ratioX = true + scaleFx = canW_d_vidW + scaleFy = canW_d_vidW + } + } + } + +} diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/SVGAStructs.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/SVGAStructs.kt new file mode 100644 index 000000000..f87b30db0 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/SVGAStructs.kt @@ -0,0 +1,11 @@ +package com.opensource.svgaplayer.utils + +/** + * Created by cuiminghui on 2017/3/29. + */ + +class SVGAPoint(val x: Float, val y: Float, val value: Float) + +class SVGARect(val x: Double, val y: Double, val width: Double, val height: Double) + +class SVGARange(val location: Int, val length: Int) \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/DefaultLogCat.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/DefaultLogCat.kt new file mode 100644 index 000000000..33200b0e1 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/DefaultLogCat.kt @@ -0,0 +1,28 @@ +package com.opensource.svgaplayer.utils.log + +import android.util.Log + +/** + * 内部默认 ILogger 接口实现 + */ +class DefaultLogCat : ILogger { + override fun verbose(tag: String, msg: String) { + Log.v(tag, msg) + } + + override fun info(tag: String, msg: String) { + Log.i(tag, msg) + } + + override fun debug(tag: String, msg: String) { + Log.d(tag, msg) + } + + override fun warn(tag: String, msg: String) { + Log.w(tag, msg) + } + + override fun error(tag: String, msg: String?, error: Throwable?) { + Log.e(tag, msg, error) + } +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/ILogger.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/ILogger.kt new file mode 100644 index 000000000..ad935104c --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/ILogger.kt @@ -0,0 +1,12 @@ +package com.opensource.svgaplayer.utils.log + +/** + * log 外部接管接口 + **/ +interface ILogger { + fun verbose(tag: String, msg: String) + fun info(tag: String, msg: String) + fun debug(tag: String, msg: String) + fun warn(tag: String, msg: String) + fun error(tag: String, msg: String?, error: Throwable?) +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/LogUtils.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/LogUtils.kt new file mode 100644 index 000000000..60c67f9c2 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/LogUtils.kt @@ -0,0 +1,57 @@ +package com.opensource.svgaplayer.utils.log + +/** + * 日志输出 + */ +internal object LogUtils { + private const val TAG = "SVGALog" + + fun verbose(tag: String = TAG, msg: String) { + if (!SVGALogger.isLogEnabled()) { + return + } + SVGALogger.getSVGALogger()?.verbose(tag, msg) + } + + fun info(tag: String = TAG, msg: String) { + if (!SVGALogger.isLogEnabled()) { + return + } + SVGALogger.getSVGALogger()?.info(tag, msg) + } + + fun debug(tag: String = TAG, msg: String) { + if (!SVGALogger.isLogEnabled()) { + return + } + SVGALogger.getSVGALogger()?.debug(tag, msg) + } + + fun warn(tag: String = TAG, msg: String) { + if (!SVGALogger.isLogEnabled()) { + return + } + SVGALogger.getSVGALogger()?.warn(tag, msg) + } + + fun error(tag: String = TAG, msg: String) { + if (!SVGALogger.isLogEnabled()) { + return + } + SVGALogger.getSVGALogger()?.error(tag, msg, null) + } + + fun error(tag: String, error: Throwable) { + if (!SVGALogger.isLogEnabled()) { + return + } + SVGALogger.getSVGALogger()?.error(tag, error.message, error) + } + + fun error(tag: String = TAG, msg: String, error: Throwable) { + if (!SVGALogger.isLogEnabled()) { + return + } + SVGALogger.getSVGALogger()?.error(tag, msg, error) + } +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/SVGALogger.kt b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/SVGALogger.kt new file mode 100644 index 000000000..5767c6385 --- /dev/null +++ b/SVGAlibrary/src/main/java/com/opensource/svgaplayer/utils/log/SVGALogger.kt @@ -0,0 +1,40 @@ +package com.opensource.svgaplayer.utils.log + +/** + * SVGA logger 配置管理 + **/ +object SVGALogger { + + private var mLogger: ILogger? = DefaultLogCat() + private var isLogEnabled = false + + /** + * log 接管注入 + */ + fun injectSVGALoggerImp(logImp: ILogger): SVGALogger { + mLogger = logImp + return this + } + + /** + * 设置是否开启 log + */ + fun setLogEnabled(isEnabled: Boolean): SVGALogger { + isLogEnabled = isEnabled + return this + } + + /** + * 获取当前 ILogger 实现类 + */ + fun getSVGALogger(): ILogger? { + return mLogger + } + + /** + * 是否开启 log + */ + fun isLogEnabled(): Boolean { + return isLogEnabled + } +} \ No newline at end of file diff --git a/SVGAlibrary/src/main/res/values/attrs.xml b/SVGAlibrary/src/main/res/values/attrs.xml new file mode 100644 index 000000000..471c34453 --- /dev/null +++ b/SVGAlibrary/src/main/res/values/attrs.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SVGAlibrary/src/main/res/values/strings.xml b/SVGAlibrary/src/main/res/values/strings.xml new file mode 100644 index 000000000..475f55349 --- /dev/null +++ b/SVGAlibrary/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + SVGAPlayer + diff --git a/Share/src/main/res/values-en/strings.xml b/Share/src/main/res/values-en/strings.xml deleted file mode 100644 index 30573a84c..000000000 --- a/Share/src/main/res/values-en/strings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - Share - Come and watch %s live on PDLIVE and meet more interesting people! - Invite Friends - Come to PDLIVE to discover more and better live streams. - Copy - Site friends - Share To - cancel - Search nickname - Send - Share success - Go chat - Please select friends - \ No newline at end of file diff --git a/Share/src/main/res/values-zh/strings.xml b/Share/src/main/res/values-zh/strings.xml new file mode 100644 index 000000000..ec54569a2 --- /dev/null +++ b/Share/src/main/res/values-zh/strings.xml @@ -0,0 +1,18 @@ + + +ZWRrZnRUNlBlcHVxMXpsMzVmb2k6MTpjaQ +aq0eV4R1pqMK_AAeKRWnjPr7ErGMGgTPGgZJdm73WeRY-Kluws + +分享 +快來 PDLIVE觀看%s直播,認識更多有趣的朋友吧! +Facebook +Line +Twitter +WhatsApp +Messenger +Instagram + +邀請好友 +快來 PDLIVE觀看直播,認識更多有趣的朋友吧! +複製 + \ No newline at end of file diff --git a/Share/src/main/res/values/strings.xml b/Share/src/main/res/values/strings.xml index 9cc433273..4c634d50f 100644 --- a/Share/src/main/res/values/strings.xml +++ b/Share/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ + ZWRrZnRUNlBlcHVxMXpsMzVmb2k6MTpjaQ aq0eV4R1pqMK_AAeKRWnjPr7ErGMGgTPGgZJdm73WeRY-Kluws @@ -22,4 +23,5 @@ 分享成功 去聊聊 请选择好友 + \ No newline at end of file diff --git a/TabLayout/build.gradle b/TabLayout/build.gradle new file mode 100644 index 000000000..d5b6e0cfd --- /dev/null +++ b/TabLayout/build.gradle @@ -0,0 +1,37 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +android { + + namespace "com.angcyo.tablayout" + compileSdk rootProject.ext.android.compileSdkVersion + + + defaultConfig { + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + versionCode rootProject.ext.android.versionCode + versionName rootProject.ext.android.versionName + manifestPlaceholders = rootProject.ext.manifestPlaceholders + + consumerProguardFiles 'consumer-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_18 + targetCompatibility JavaVersion.VERSION_18 + } +} + +dependencies { + implementation 'androidx.core:core-ktx:1.10.1' + +} + +//apply from: "$gradleHost/master/publish.gradle" \ No newline at end of file diff --git a/TabLayout/consumer-rules.pro b/TabLayout/consumer-rules.pro new file mode 100644 index 000000000..e69de29bb diff --git a/TabLayout/proguard-rules.pro b/TabLayout/proguard-rules.pro new file mode 100644 index 000000000..f1b424510 --- /dev/null +++ b/TabLayout/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/TabLayout/src/main/AndroidManifest.xml b/TabLayout/src/main/AndroidManifest.xml new file mode 100644 index 000000000..50f22e4ad --- /dev/null +++ b/TabLayout/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/AbsDslDrawable.kt b/TabLayout/src/main/java/com/angcyo/tablayout/AbsDslDrawable.kt new file mode 100644 index 000000000..d790825ad --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/AbsDslDrawable.kt @@ -0,0 +1,200 @@ +package com.angcyo.tablayout + +import android.content.Context +import android.content.res.ColorStateList +import android.graphics.* +import android.graphics.drawable.Drawable +import android.text.TextPaint +import android.util.AttributeSet +import android.view.View +import androidx.core.view.ViewCompat + +/** + * 基础自绘Drawable + * Email:angcyo@126.com + * @author angcyo + * @date 2019/11/25 + * Copyright (c) 2019 ShenZhen O&M Cloud Co., Ltd. All rights reserved. + */ + +abstract class AbsDslDrawable : Drawable() { + + companion object { + /**不绘制*/ + const val DRAW_TYPE_DRAW_NONE = 0x00 + + /**[android.view.View.draw]*/ + const val DRAW_TYPE_DRAW_AFTER = 0x01 + const val DRAW_TYPE_DRAW_BEFORE = 0x02 + + /**[android.view.View.onDraw]*/ + const val DRAW_TYPE_ON_DRAW_AFTER = 0x04 + const val DRAW_TYPE_ON_DRAW_BEFORE = 0x08 + } + + /**画笔*/ + val textPaint: TextPaint by lazy { + TextPaint(Paint.ANTI_ALIAS_FLAG).apply { + isFilterBitmap = true + style = Paint.Style.FILL + textSize = 12 * dp + } + } + + val drawRect = Rect() + val drawRectF = RectF() + + /**需要在那个方法中触发绘制*/ + var drawType = DRAW_TYPE_ON_DRAW_AFTER + + /**xml属性读取*/ + open fun initAttribute( + context: Context, + attributeSet: AttributeSet? = null + ) { + //val typedArray = context.obtainStyledAttributes(attributeSet, R.styleable.xxx) + //typedArray.recycle() + } + + // + + /**附着的[View]*/ + val attachView: View? + get() = if (callback is View) callback as? View else null + + val isInEditMode: Boolean + get() = attachView?.isInEditMode ?: false + val paddingLeft: Int + get() = attachView?.paddingLeft ?: 0 + val paddingRight: Int + get() = attachView?.paddingRight ?: 0 + val paddingTop: Int + get() = attachView?.paddingTop ?: 0 + val paddingBottom: Int + get() = attachView?.paddingBottom ?: 0 + val viewHeight: Int + get() = attachView?.measuredHeight ?: 0 + val viewWidth: Int + get() = attachView?.measuredWidth ?: 0 + val viewDrawHeight: Int + get() = viewHeight - paddingTop - paddingBottom + val viewDrawWidth: Int + get() = viewWidth - paddingLeft - paddingRight + + val isViewRtl: Boolean + get() = attachView != null && ViewCompat.getLayoutDirection(attachView!!) == ViewCompat.LAYOUT_DIRECTION_RTL + + // + + // + + /**核心方法, 绘制*/ + override fun draw(canvas: Canvas) { + + } + + override fun getIntrinsicWidth(): Int { + return super.getIntrinsicWidth() + } + + override fun getMinimumWidth(): Int { + return super.getMinimumWidth() + } + + override fun getIntrinsicHeight(): Int { + return super.getIntrinsicHeight() + } + + override fun getMinimumHeight(): Int { + return super.getMinimumHeight() + } + + override fun setAlpha(alpha: Int) { + if (textPaint.alpha != alpha) { + textPaint.alpha = alpha + invalidateSelf() + } + } + + override fun getAlpha(): Int { + return textPaint.alpha + } + + override fun setBounds(left: Int, top: Int, right: Int, bottom: Int) { + super.setBounds(left, top, right, bottom) + } + + override fun setBounds(bounds: Rect) { + super.setBounds(bounds) + } + + //不透明度 + override fun getOpacity(): Int { + return if (alpha < 255) PixelFormat.TRANSLUCENT else PixelFormat.OPAQUE + } + + override fun getColorFilter(): ColorFilter? { + return textPaint.colorFilter + } + + override fun setColorFilter(colorFilter: ColorFilter?) { + textPaint.colorFilter = colorFilter + invalidateSelf() + } + + override fun mutate(): Drawable { + return super.mutate() + } + + override fun setDither(dither: Boolean) { + textPaint.isDither = dither + invalidateSelf() + } + + override fun setFilterBitmap(filter: Boolean) { + textPaint.isFilterBitmap = filter + invalidateSelf() + } + + override fun isFilterBitmap(): Boolean { + return textPaint.isFilterBitmap + } + + override fun onBoundsChange(bounds: Rect) { + super.onBoundsChange(bounds) + } + + override fun onLevelChange(level: Int): Boolean { + return super.onLevelChange(level) + } + + override fun onStateChange(state: IntArray): Boolean { + return super.onStateChange(state) + } + + override fun setTintList(tint: ColorStateList?) { + super.setTintList(tint) + } + + override fun setTintMode(tintMode: PorterDuff.Mode?) { + super.setTintMode(tintMode) + } + + override fun setTintBlendMode(blendMode: BlendMode?) { + super.setTintBlendMode(blendMode) + } + + override fun setHotspot(x: Float, y: Float) { + super.setHotspot(x, y) + } + + override fun setHotspotBounds(left: Int, top: Int, right: Int, bottom: Int) { + super.setHotspotBounds(left, top, right, bottom) + } + + override fun getHotspotBounds(outRect: Rect) { + super.getHotspotBounds(outRect) + } + + // +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslBadgeDrawable.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslBadgeDrawable.kt new file mode 100644 index 000000000..1962d3d8f --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslBadgeDrawable.kt @@ -0,0 +1,275 @@ +package com.angcyo.tablayout + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.text.TextUtils +import android.util.AttributeSet +import android.view.Gravity +import kotlin.math.max + +/** + * 未读数, 未读小红点, 角标绘制Drawable + * Email:angcyo@126.com + * @author angcyo + * @date 2019/12/13 + * Copyright (c) 2019 ShenZhen O&M Cloud Co., Ltd. All rights reserved. + */ +open class DslBadgeDrawable : DslGradientDrawable() { + + val dslGravity = DslGravity() + + /**重力*/ + var badgeGravity: Int = Gravity.CENTER //Gravity.TOP or Gravity.RIGHT + + /**角标文本颜色*/ + var badgeTextColor = Color.WHITE + + /**角标的文本(默认居中绘制文本,暂不支持修改), 空字符串会绘制成小圆点 + * null 不绘制角标 + * "" 空字符绘制圆点 + * 其他 正常绘制 + * */ + var badgeText: String? = null + + /**角标的文本大小*/ + var badgeTextSize: Float = 12 * dp + set(value) { + field = value + textPaint.textSize = field + } + + /**当[badgeText]只有1个字符时, 使用圆形背景*/ + var badgeAutoCircle: Boolean = true + + /**圆点状态时的半径大小*/ + var badgeCircleRadius = 4 * dpi + + /**原点状态下, 单独配置的偏移*/ + var badgeCircleOffsetX: Int = 0 + var badgeCircleOffsetY: Int = 0 + + /**额外偏移距离, 会根据[Gravity]自动取负值*/ + var badgeOffsetX: Int = 0 + var badgeOffsetY: Int = 0 + + /**文本偏移*/ + var badgeTextOffsetX: Int = 0 + var badgeTextOffsetY: Int = 0 + + /**圆点状态时无效*/ + var badgePaddingLeft = 0 + var badgePaddingRight = 0 + var badgePaddingTop = 0 + var badgePaddingBottom = 0 + + /**最小的高度大小, px. 大于0生效; 圆点时属性无效*/ + var badgeMinHeight = -2 + + /**最小的宽度大小, px. 大于0生效; 圆点时属性无效; + * -1 表示使用使用计算出来的高度值*/ + var badgeMinWidth = -2 + + //计算属性 + val textWidth: Float + get() = textPaint.textWidth(badgeText) + + //最大的宽度 + val maxWidth: Int + get() = max( + textWidth.toInt(), + originDrawable?.minimumWidth ?: 0 + ) + badgePaddingLeft + badgePaddingRight + + //最大的高度 + val maxHeight: Int + get() = max( + textHeight.toInt(), + originDrawable?.minimumHeight ?: 0 + ) + badgePaddingTop + badgePaddingBottom + + val textHeight: Float + get() = textPaint.textHeight() + + //原型状态 + val isCircle: Boolean + get() = TextUtils.isEmpty(badgeText) + + override fun initAttribute(context: Context, attributeSet: AttributeSet?) { + super.initAttribute(context, attributeSet) + updateOriginDrawable() + } + + override fun draw(canvas: Canvas) { + //super.draw(canvas) + + if (badgeText == null) { + return + } + + with(dslGravity) { + gravity = if (isViewRtl) { + when (badgeGravity) { + Gravity.RIGHT -> { + Gravity.LEFT + } + Gravity.LEFT -> { + Gravity.RIGHT + } + else -> { + badgeGravity + } + } + } else { + badgeGravity + } + + setGravityBounds(bounds) + + if (isCircle) { + gravityOffsetX = badgeCircleOffsetX + gravityOffsetY = badgeCircleOffsetY + } else { + gravityOffsetX = badgeOffsetX + gravityOffsetY = badgeOffsetY + } + + val textWidth = textPaint.textWidth(badgeText) + val textHeight = textPaint.textHeight() + + val drawHeight = if (isCircle) { + badgeCircleRadius.toFloat() + } else { + val height = textHeight + badgePaddingTop + badgePaddingBottom + if (badgeMinHeight > 0) { + max(height, badgeMinHeight.toFloat()) + } else { + height + } + } + + val drawWidth = if (isCircle) { + badgeCircleRadius.toFloat() + } else { + val width = textWidth + badgePaddingLeft + badgePaddingRight + if (badgeMinWidth == -1) { + max(width, drawHeight) + } else if (badgeMinWidth > 0) { + max(width, badgeMinWidth.toFloat()) + } else { + width + } + } + + applyGravity(drawWidth, drawHeight) { centerX, centerY -> + + if (isCircle) { + textPaint.color = gradientSolidColor + + //圆心计算 + val cx: Float + val cy: Float + if (gravity.isCenter()) { + cx = centerX.toFloat() + cy = centerY.toFloat() + } else { + cx = centerX.toFloat() + _gravityOffsetX + cy = centerY.toFloat() + _gravityOffsetY + } + + //绘制圆 + textPaint.color = gradientSolidColor + canvas.drawCircle( + cx, + cy, + badgeCircleRadius.toFloat(), + textPaint + ) + + //圆的描边 + if (gradientStrokeWidth > 0 && gradientStrokeColor != Color.TRANSPARENT) { + val oldWidth = textPaint.strokeWidth + val oldStyle = textPaint.style + + textPaint.color = gradientStrokeColor + textPaint.strokeWidth = gradientStrokeWidth.toFloat() + textPaint.style = Paint.Style.STROKE + + canvas.drawCircle( + cx, + cy, + badgeCircleRadius.toFloat(), + textPaint + ) + + textPaint.strokeWidth = oldWidth + textPaint.style = oldStyle + } + + } else { + textPaint.color = badgeTextColor + + val textDrawX: Float = centerX - textWidth / 2 + val textDrawY: Float = centerY + textHeight / 2 + + val bgLeft = _gravityLeft + val bgTop = _gravityTop + + //绘制背景 + if (badgeAutoCircle && badgeText?.length == 1) { + if (gradientSolidColor != Color.TRANSPARENT) { + textPaint.color = gradientSolidColor + canvas.drawCircle( + centerX.toFloat(), + centerY.toFloat(), + max(maxWidth, maxHeight).toFloat() / 2, + textPaint + ) + } + } else { + originDrawable?.apply { + setBounds( + bgLeft, bgTop, + (bgLeft + drawWidth).toInt(), + (bgTop + drawHeight).toInt() + ) + draw(canvas) + } + } + + //绘制文本 + textPaint.color = badgeTextColor + canvas.drawText( + badgeText!!, + textDrawX + badgeTextOffsetX, + textDrawY - textPaint.descent() + badgeTextOffsetY, + textPaint + ) + } + } + } + } + + override fun getIntrinsicWidth(): Int { + val width = if (isCircle) { + badgeCircleRadius * 2 + } else if (badgeAutoCircle && badgeText?.length == 1) { + max(maxWidth, maxHeight) + } else { + maxWidth + } + return max(badgeMinWidth, width) + } + + override fun getIntrinsicHeight(): Int { + val height = if (isCircle) { + badgeCircleRadius * 2 + } else if (badgeAutoCircle && badgeText?.length == 1) { + max(maxWidth, maxHeight) + } else { + maxHeight + } + return max(badgeMinHeight, height) + } +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslGradientDrawable.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslGradientDrawable.kt new file mode 100644 index 000000000..336c5b9d7 --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslGradientDrawable.kt @@ -0,0 +1,306 @@ +package com.angcyo.tablayout + +import android.content.res.ColorStateList +import android.content.res.Resources +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.ColorFilter +import android.graphics.drawable.Drawable +import android.graphics.drawable.GradientDrawable +import android.os.Build +import androidx.annotation.IntDef +import java.util.* + +/** + * 用来构建GradientDrawable + * Email:angcyo@126.com + * @author angcyo + * @date 2019/11/27 + * Copyright (c) 2019 ShenZhen O&M Cloud Co., Ltd. All rights reserved. + */ +open class DslGradientDrawable : AbsDslDrawable() { + + /**形状*/ + @Shape + var gradientShape = GradientDrawable.RECTANGLE + + /**填充的颜色*/ + var gradientSolidColor = Color.TRANSPARENT + + /**边框的颜色*/ + var gradientStrokeColor = Color.TRANSPARENT + + /**边框的宽度*/ + var gradientStrokeWidth = 0 + + /**蚂蚁线的宽度*/ + var gradientDashWidth = 0f + + /**蚂蚁线之间的间距*/ + var gradientDashGap = 0f + + /** + * 四个角, 8个设置点的圆角信息 + * 从 左上y轴->左上x轴->右上x轴->右上y轴..., 开始设置. + */ + var gradientRadii = floatArrayOf(0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f) + + /**颜色渐变*/ + var gradientColors: IntArray? = null + var gradientColorsOffsets: FloatArray? = null + + /**渐变中心点坐标*/ + var gradientCenterX = 0.5f + var gradientCenterY = 0.5f + + /**渐变半径, 非比例值, 是px值. [GradientDrawable.RADIAL_GRADIENT]类型才有效*/ + var gradientRadius = 0.5f + + /** 渐变方向, 默认从左到右 */ + var gradientOrientation = GradientDrawable.Orientation.LEFT_RIGHT + + /** 渐变类型 */ + @GradientType + var gradientType = GradientDrawable.LINEAR_GRADIENT + + /**真正绘制的[Drawable]*/ + var originDrawable: Drawable? = null + + /**宽度补偿*/ + var gradientWidthOffset: Int = 0 + + /**高度补偿*/ + var gradientHeightOffset: Int = 0 + + /**当前的配置, 是否能生成有效的[GradientDrawable]*/ + open fun isValidConfig(): Boolean { + return gradientSolidColor != Color.TRANSPARENT || + gradientStrokeColor != Color.TRANSPARENT || + gradientColors != null + } + + fun _fillRadii(array: FloatArray, radii: String?) { + if (radii.isNullOrEmpty()) { + return + } + val split = radii.split(",") + if (split.size != 8) { + throw IllegalArgumentException("radii 需要8个值.") + } else { + val dp = Resources.getSystem().displayMetrics.density + for (i in split.indices) { + array[i] = split[i].toFloat() * dp + } + } + } + + fun fillRadii(radius: Float) { + Arrays.fill(gradientRadii, radius) + } + + fun fillRadii(radius: Int) { + _fillRadii(gradientRadii, radius.toFloat()) + } + + fun _fillRadii(array: FloatArray, radius: Float) { + Arrays.fill(array, radius) + } + + fun _fillRadii(array: FloatArray, radius: Int) { + _fillRadii(array, radius.toFloat()) + } + + fun _fillColor(colors: String?): IntArray? { + if (colors.isNullOrEmpty()) { + return null + } + val split = colors.split(",") + + return IntArray(split.size) { + val str = split[it] + if (str.startsWith("#")) { + Color.parseColor(str) + } else { + str.toInt() + } + } + } + + /**构建或者更新[originDrawable]*/ + open fun updateOriginDrawable(): GradientDrawable? { + val drawable: GradientDrawable? = when (originDrawable) { + null -> GradientDrawable() + is GradientDrawable -> originDrawable as GradientDrawable + else -> { + null + } + } + + drawable?.apply { + bounds = this@DslGradientDrawable.bounds + + shape = gradientShape + setStroke( + gradientStrokeWidth, + gradientStrokeColor, + gradientDashWidth, + gradientDashGap + ) + setColor(gradientSolidColor) + cornerRadii = gradientRadii + + if (gradientColors != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + setGradientCenter( + this@DslGradientDrawable.gradientCenterX, + this@DslGradientDrawable.gradientCenterY + ) + } + gradientRadius = this@DslGradientDrawable.gradientRadius + gradientType = this@DslGradientDrawable.gradientType + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + orientation = gradientOrientation + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + setColors(gradientColors, gradientColorsOffsets) + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + colors = gradientColors + } + } + + originDrawable = this + invalidateSelf() + } + + return drawable + } + + open fun configDrawable(config: DslGradientDrawable.() -> Unit): DslGradientDrawable { + this.config() + updateOriginDrawable() + return this + } + + override fun draw(canvas: Canvas) { + super.draw(canvas) + originDrawable?.apply { + setBounds( + this@DslGradientDrawable.bounds.left - gradientWidthOffset / 2, + this@DslGradientDrawable.bounds.top - gradientHeightOffset / 2, + this@DslGradientDrawable.bounds.right + gradientWidthOffset / 2, + this@DslGradientDrawable.bounds.bottom + gradientHeightOffset / 2 + ) + draw(canvas) + } + } + + // + + /** + * 4个角, 8个点 圆角配置 + */ + fun cornerRadii(radii: FloatArray) { + gradientRadii = radii + } + + fun cornerRadius(radii: Float) { + Arrays.fill(gradientRadii, radii) + } + + fun cornerRadius( + leftTop: Float = 0f, + rightTop: Float = 0f, + rightBottom: Float = 0f, + leftBottom: Float = 0f + ) { + gradientRadii[0] = leftTop + gradientRadii[1] = leftTop + gradientRadii[2] = rightTop + gradientRadii[3] = rightTop + gradientRadii[4] = rightBottom + gradientRadii[5] = rightBottom + gradientRadii[6] = leftBottom + gradientRadii[7] = leftBottom + } + + /** + * 只配置左边的圆角 + */ + fun cornerRadiiLeft(radii: Float) { + gradientRadii[0] = radii + gradientRadii[1] = radii + gradientRadii[6] = radii + gradientRadii[7] = radii + } + + fun cornerRadiiRight(radii: Float) { + gradientRadii[2] = radii + gradientRadii[3] = radii + gradientRadii[4] = radii + gradientRadii[5] = radii + } + + fun cornerRadiiTop(radii: Float) { + gradientRadii[0] = radii + gradientRadii[1] = radii + gradientRadii[2] = radii + gradientRadii[3] = radii + } + + fun cornerRadiiBottom(radii: Float) { + gradientRadii[4] = radii + gradientRadii[5] = radii + gradientRadii[6] = radii + gradientRadii[7] = radii + } + + // + + // + override fun setColorFilter(colorFilter: ColorFilter?) { + super.setColorFilter(colorFilter) + originDrawable?.colorFilter = colorFilter + } + + override fun setTintList(tint: ColorStateList?) { + super.setTintList(tint) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + originDrawable?.setTintList(tint) + } + } + + override fun setState(stateSet: IntArray): Boolean { + return originDrawable?.setState(stateSet) ?: super.setState(stateSet) + } + + override fun getState(): IntArray { + return originDrawable?.state ?: super.getState() + } + + // +} + +@IntDef( + GradientDrawable.RECTANGLE, + GradientDrawable.OVAL, + GradientDrawable.LINE, + GradientDrawable.RING +) +@kotlin.annotation.Retention(AnnotationRetention.SOURCE) +annotation class Shape + +@IntDef( + GradientDrawable.LINEAR_GRADIENT, + GradientDrawable.RADIAL_GRADIENT, + GradientDrawable.SWEEP_GRADIENT +) +@kotlin.annotation.Retention(AnnotationRetention.SOURCE) +annotation class GradientType + +/**快速创建[GradientDrawable]*/ +fun dslGradientDrawable(action: DslGradientDrawable.() -> Unit): GradientDrawable { + return DslGradientDrawable().run { + action() + updateOriginDrawable()!! + } +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslGravity.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslGravity.kt new file mode 100644 index 000000000..66cc1d40e --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslGravity.kt @@ -0,0 +1,215 @@ +package com.angcyo.tablayout + +import android.graphics.Rect +import android.graphics.RectF +import android.view.Gravity + +/** + * [android.view.Gravity] 辅助计算类 + * Email:angcyo@126.com + * @author angcyo + * @date 2019/12/13 + * Copyright (c) 2019 ShenZhen O&M Cloud Co., Ltd. All rights reserved. + */ +class DslGravity { + + /**束缚范围*/ + val gravityBounds: RectF = RectF() + + /**束缚重力*/ + var gravity: Int = Gravity.LEFT or Gravity.TOP + + /**使用中心坐标作为定位参考, 否则就是四条边*/ + var gravityRelativeCenter: Boolean = true + + /**额外偏移距离, 会根据[Gravity]自动取负值*/ + var gravityOffsetX: Int = 0 + var gravityOffsetY: Int = 0 + + fun setGravityBounds(rectF: RectF) { + gravityBounds.set(rectF) + } + + fun setGravityBounds(rect: Rect) { + gravityBounds.set(rect) + } + + fun setGravityBounds( + left: Int, + top: Int, + right: Int, + bottom: Int + ) { + gravityBounds.set(left.toFloat(), top.toFloat(), right.toFloat(), bottom.toFloat()) + } + + fun setGravityBounds( + left: Float, + top: Float, + right: Float, + bottom: Float + ) { + gravityBounds.set(left, top, right, bottom) + } + + //计算后的属性 + var _horizontalGravity: Int = Gravity.LEFT + var _verticalGravity: Int = Gravity.TOP + var _isCenterGravity: Boolean = false + var _targetWidth = 0f + var _targetHeight = 0f + var _gravityLeft = 0 + var _gravityTop = 0 + var _gravityRight = 0 + var _gravityBottom = 0 + + //根据gravity调整后的offset + var _gravityOffsetX = 0 + var _gravityOffsetY = 0 + + /**根据[gravity]返回在[gravityBounds]中的[left] [top]位置*/ + fun applyGravity( + width: Float = _targetWidth, + height: Float = _targetHeight, + callback: (centerX: Int, centerY: Int) -> Unit + ) { + + _targetWidth = width + _targetHeight = height + + val layoutDirection = 0 + val absoluteGravity = Gravity.getAbsoluteGravity(gravity, layoutDirection) + val verticalGravity = gravity and Gravity.VERTICAL_GRAVITY_MASK + val horizontalGravity = absoluteGravity and Gravity.HORIZONTAL_GRAVITY_MASK + + //调整offset + _gravityOffsetX = when (horizontalGravity) { + Gravity.RIGHT -> -gravityOffsetX + Gravity.END -> -gravityOffsetX + else -> gravityOffsetX + } + _gravityOffsetY = when (verticalGravity) { + Gravity.BOTTOM -> -gravityOffsetY + else -> gravityOffsetY + } + + //计算居中的坐标 + val centerX = when (horizontalGravity) { + Gravity.CENTER_HORIZONTAL -> (gravityBounds.left + gravityBounds.width() / 2 + _gravityOffsetX).toInt() + Gravity.RIGHT -> (gravityBounds.right + _gravityOffsetX - if (gravityRelativeCenter) 0f else _targetWidth / 2).toInt() + Gravity.END -> (gravityBounds.right + _gravityOffsetX - if (gravityRelativeCenter) 0f else _targetWidth / 2).toInt() + else -> (gravityBounds.left + _gravityOffsetX + if (gravityRelativeCenter) 0f else _targetWidth / 2).toInt() + } + + val centerY = when (verticalGravity) { + Gravity.CENTER_VERTICAL -> (gravityBounds.top + gravityBounds.height() / 2 + _gravityOffsetY).toInt() + Gravity.BOTTOM -> (gravityBounds.bottom + _gravityOffsetY - if (gravityRelativeCenter) 0f else _targetHeight / 2).toInt() + else -> (gravityBounds.top + _gravityOffsetY + if (gravityRelativeCenter) 0f else _targetHeight / 2).toInt() + } + + //缓存 + _horizontalGravity = horizontalGravity + _verticalGravity = verticalGravity + _isCenterGravity = horizontalGravity == Gravity.CENTER_HORIZONTAL && + verticalGravity == Gravity.CENTER_VERTICAL + + _gravityLeft = (centerX - _targetWidth / 2).toInt() + _gravityRight = (centerX + _targetWidth / 2).toInt() + _gravityTop = (centerY - _targetHeight / 2).toInt() + _gravityBottom = (centerY + _targetHeight / 2).toInt() + + //回调 + callback(centerX, centerY) + } +} + +/** + * 默认计算出的是目标中心点坐标参考距离 + * [com.angcyo.drawable.DslGravity.getGravityRelativeCenter] + * */ +fun dslGravity( + rect: RectF, //计算的矩形 + gravity: Int, //重力 + width: Float, //放置目标的宽度 + height: Float, //放置目标的高度 + offsetX: Int = 0, //额外的偏移,会根据[gravity]进行左右|上下取反 + offsetY: Int = 0, + callback: (dslGravity: DslGravity, centerX: Int, centerY: Int) -> Unit +): DslGravity { + val _dslGravity = DslGravity() + _dslGravity.setGravityBounds(rect) + _config(_dslGravity, gravity, width, height, offsetX, offsetY, callback) + return _dslGravity +} + +/** + * 默认计算出的是目标中心点坐标参考距离 + * [com.angcyo.drawable.DslGravity.getGravityRelativeCenter] + * */ +fun dslGravity( + rect: Rect, //计算的矩形 + gravity: Int, //重力 + width: Float, //放置目标的宽度 + height: Float, //放置目标的高度 + offsetX: Int = 0, //额外的偏移,会根据[gravity]进行左右|上下取反 + offsetY: Int = 0, + callback: (dslGravity: DslGravity, centerX: Int, centerY: Int) -> Unit +): DslGravity { + val _dslGravity = DslGravity() + _dslGravity.setGravityBounds(rect) + _config(_dslGravity, gravity, width, height, offsetX, offsetY, callback) + return _dslGravity +} + +private fun _config( + _dslGravity: DslGravity, + gravity: Int, //重力 + width: Float, //放置目标的宽度 + height: Float, //放置目标的高度 + offsetX: Int = 0, //额外的偏移,会根据[gravity]进行左右|上下取反 + offsetY: Int = 0, + callback: (dslGravity: DslGravity, centerX: Int, centerY: Int) -> Unit +) { + _dslGravity.gravity = gravity + _dslGravity.gravityOffsetX = offsetX + _dslGravity.gravityOffsetY = offsetY + _dslGravity.applyGravity(width, height) { centerX, centerY -> + callback(_dslGravity, centerX, centerY) + } +} + +/**居中*/ +fun Int.isCenter(): Boolean { + val layoutDirection = 0 + val absoluteGravity = Gravity.getAbsoluteGravity(this, layoutDirection) + val verticalGravity = this and Gravity.VERTICAL_GRAVITY_MASK + val horizontalGravity = absoluteGravity and Gravity.HORIZONTAL_GRAVITY_MASK + + return verticalGravity == Gravity.CENTER_VERTICAL && horizontalGravity == Gravity.CENTER_HORIZONTAL +} + +fun Int.isLeft(): Boolean { + val layoutDirection = 0 + val absoluteGravity = Gravity.getAbsoluteGravity(this, layoutDirection) + val horizontalGravity = absoluteGravity and Gravity.HORIZONTAL_GRAVITY_MASK + + return horizontalGravity == Gravity.LEFT +} + +fun Int.isRight(): Boolean { + val layoutDirection = 0 + val absoluteGravity = Gravity.getAbsoluteGravity(this, layoutDirection) + val horizontalGravity = absoluteGravity and Gravity.HORIZONTAL_GRAVITY_MASK + + return horizontalGravity == Gravity.RIGHT +} + +fun Int.isTop(): Boolean { + val verticalGravity = this and Gravity.VERTICAL_GRAVITY_MASK + return verticalGravity == Gravity.TOP +} + +fun Int.isBottom(): Boolean { + val verticalGravity = this and Gravity.VERTICAL_GRAVITY_MASK + return verticalGravity == Gravity.BOTTOM +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslSelector.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslSelector.kt new file mode 100644 index 000000000..955680e86 --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslSelector.kt @@ -0,0 +1,438 @@ +package com.angcyo.tablayout + +import android.view.View +import android.view.ViewGroup +import android.widget.CompoundButton + +/** + * 用来操作[ViewGroup]中的[child], 支持单选, 多选, 拦截. + * 操作的都是可见性为[VISIBLE]的[View] + * + * Email:angcyo@126.com + * @author angcyo + * @date 2019/11/24 + */ + +open class DslSelector { + + var parent: ViewGroup? = null + var dslSelectorConfig: DslSelectorConfig = DslSelectorConfig() + + //可见view列表 + val visibleViewList: MutableList = mutableListOf() + + /** + * 选中的索引列表 + * */ + val selectorIndexList: MutableList = mutableListOf() + get() { + field.clear() + visibleViewList.forEachIndexed { index, view -> + if (view.isSe()) { + field.add(index) + } + } + + return field + } + + /** + * 选中的View列表 + * */ + val selectorViewList: MutableList = mutableListOf() + get() { + field.clear() + visibleViewList.forEachIndexed { index, view -> + if (view.isSe() || index == dslSelectIndex) { + field.add(view) + } + } + return field + } + + //child 点击事件处理 + val _onChildClickListener = View.OnClickListener { + val index = visibleViewList.indexOf(it) + val select = + if (dslSelectorConfig.dslMultiMode || dslSelectorConfig.dslMinSelectLimit < 1) { + !it.isSe() + } else { + true + } + + if (!interceptSelector(index, select, true)) { + selector( + visibleViewList.indexOf(it), + select, + notify = true, + fromUser = true, + forceNotify = it is CompoundButton && dslSelectorConfig.dslMultiMode + ) + } + } + + /**兼容[CompoundButton]*/ + val _onCheckedChangeListener = CompoundButton.OnCheckedChangeListener { buttonView, isChecked -> + buttonView.isChecked = buttonView.isSelected //恢复状态 不做任何处理, 在[OnClickListener]中处理 + /*val index = visibleViewList.indexOf(buttonView) + + if (interceptSelector(index, isChecked, false)) { + //拦截了此操作 + buttonView.isChecked = !isChecked //恢复状态 + } + + val selectorViewList = selectorViewList + val sum = selectorViewList.size + //Limit 过滤 + if (buttonView.isChecked) { + if (sum > dslSelectorConfig.dslMaxSelectLimit) { + //不允许选择 + buttonView.isChecked = false //恢复状态 + } + } else { + //取消选择, 检查是否达到了 limit + if (sum < dslSelectorConfig.dslMinSelectLimit) { + //不允许取消选择 + buttonView.isChecked = true //恢复状态 + } + } + + if (isChecked) { + //已经选中了控件 + } else { + //已经取消了控件 + }*/ + } + + /**当前选中的索引*/ + var dslSelectIndex = -1 + + /**安装*/ + fun install(viewGroup: ViewGroup, config: DslSelectorConfig.() -> Unit = {}): DslSelector { + dslSelectIndex = -1 + parent = viewGroup + updateVisibleList() + dslSelectorConfig.config() + + updateStyle() + updateClickListener() + + if (dslSelectIndex in 0 until visibleViewList.size) { + selector(dslSelectIndex) + } + + return this + } + + /**更新样式*/ + fun updateStyle() { + visibleViewList.forEachIndexed { index, view -> + val selector = dslSelectIndex == index || view.isSe() + dslSelectorConfig.onStyleItemView(view, index, selector) + } + } + + /**更新child的点击事件*/ + fun updateClickListener() { + parent?.apply { + for (i in 0 until childCount) { + getChildAt(i)?.let { + it.setOnClickListener(_onChildClickListener) + if (it is CompoundButton) { + it.setOnCheckedChangeListener(_onCheckedChangeListener) + } + } + } + } + } + + /**更新可见视图列表*/ + fun updateVisibleList(): List { + visibleViewList.clear() + parent?.apply { + for (i in 0 until childCount) { + getChildAt(i)?.let { + if (it.visibility == View.VISIBLE) { + visibleViewList.add(it) + } + } + } + } + if (dslSelectIndex in visibleViewList.indices) { + if (!visibleViewList[dslSelectIndex].isSe()) { + visibleViewList[dslSelectIndex].setSe(true) + } + } else { + //如果当前选中的索引, 不在可见视图列表中 + dslSelectIndex = -1 + } + return visibleViewList + } + + /** + * 操作单个 + * @param index 操作目标的索引值 + * @param select 选中 or 取消选中 + * @param notify 是否需要通知事件 + * @param forceNotify 是否强制通知事件.child使用[CompoundButton]时, 推荐使用 + * */ + fun selector( + index: Int, + select: Boolean = true, + notify: Boolean = true, + fromUser: Boolean = false, + forceNotify: Boolean = false + ) { + val oldSelectorList = selectorIndexList.toList() + val lastSelectorIndex: Int? = oldSelectorList.lastOrNull() + val reselect = !dslSelectorConfig.dslMultiMode && + oldSelectorList.isNotEmpty() && + oldSelectorList.contains(index) + + var needNotify = _selector(index, select, fromUser) || forceNotify + + if (!oldSelectorList.isChange(selectorIndexList)) { + //选中项, 未改变时不通知 + needNotify = false + } + + if (needNotify || reselect) { + dslSelectIndex = selectorIndexList.lastOrNull() ?: -1 + if (notify) { + notifySelectChange(lastSelectorIndex ?: -1, reselect, fromUser) + } + } + } + + /**选择所有 + * [select] true:选择所有, false:取消所有*/ + fun selectorAll( + select: Boolean = true, + notify: Boolean = true, + fromUser: Boolean = true + ) { + val indexList = visibleViewList.mapIndexedTo(mutableListOf()) { index, _ -> + index + } + selector(indexList, select, notify, fromUser) + } + + /** + * 操作多个 + * @param select 选中 or 取消选中 + * [selector] + * */ + fun selector( + indexList: MutableList, + select: Boolean = true, + notify: Boolean = true, + fromUser: Boolean = false + ) { + val oldSelectorIndexList = selectorIndexList + val lastSelectorIndex: Int? = oldSelectorIndexList.lastOrNull() + + var result = false + + indexList.forEach { + result = _selector(it, select, fromUser) || result + } + + if (result) { + dslSelectIndex = selectorIndexList.lastOrNull() ?: -1 + if (notify) { + notifySelectChange(lastSelectorIndex ?: -1, false, fromUser) + } + } + } + + /**通知事件*/ + fun notifySelectChange(lastSelectorIndex: Int, reselect: Boolean, fromUser: Boolean) { + val indexSelectorList = selectorIndexList + dslSelectorConfig.onSelectViewChange( + visibleViewList.getOrNull(lastSelectorIndex), + selectorViewList, + reselect, + fromUser + ) + dslSelectorConfig.onSelectIndexChange( + lastSelectorIndex, + indexSelectorList, + reselect, + fromUser + ) + } + + /**当前的操作是否被拦截*/ + fun interceptSelector(index: Int, select: Boolean, fromUser: Boolean): Boolean { + val visibleViewList = visibleViewList + if (index !in 0 until visibleViewList.size) { + return true + } + return dslSelectorConfig.onSelectItemView(visibleViewList[index], index, select, fromUser) + } + + /**@return 是否发生过改变*/ + fun _selector(index: Int, select: Boolean, fromUser: Boolean): Boolean { + val visibleViewList = visibleViewList + //超范围过滤 + if (index !in 0 until visibleViewList.size) { + "index out of list.".logi() + return false + } + + val selectorIndexList = selectorIndexList + val selectorViewList = selectorViewList + + if (selectorIndexList.isNotEmpty()) { + if (select) { + //需要选中某项 + + if (dslSelectorConfig.dslMultiMode) { + //多选模式 + if (selectorIndexList.contains(index)) { + //已经选中 + return false + } + } else { + //单选模式 + + //取消之前选中 + selectorIndexList.forEach { + if (it != index) { + visibleViewList[it].setSe(false) + } + } + + if (selectorIndexList.contains(index)) { + //已经选中 + return true + } + } + + } else { + //需要取消选中 + if (!selectorIndexList.contains(index)) { + //目标已经是未选中 + return false + } + } + } + + //Limit 过滤 + if (select) { + val sum = selectorViewList.size + 1 + if (sum > dslSelectorConfig.dslMaxSelectLimit) { + //不允许选择 + return false + } + } else { + //取消选择, 检查是否达到了 limit + val sum = selectorViewList.size - 1 + if (sum < dslSelectorConfig.dslMinSelectLimit) { + //不允许取消选择 + return false + } + } + + val selectorView = visibleViewList[index] + + //更新选中样式 + selectorView.setSe(select) + + if (dslSelectorConfig.dslMultiMode) { + //多选 + } else { + //单选 + + //取消之前 + selectorViewList.forEach { view -> + //更新样式 + val indexOf = visibleViewList.indexOf(view) + if (indexOf != index && + !dslSelectorConfig.onSelectItemView(view, indexOf, false, fromUser) + ) { + view.setSe(false) + dslSelectorConfig.onStyleItemView(view, indexOf, false) + } + } + } + + dslSelectorConfig.onStyleItemView(selectorView, index, select) + + return true + } + + /**是否选中状态*/ + fun View.isSe(): Boolean { + return isSelected || if (this is CompoundButton) isChecked else false + } + + fun View.setSe(se: Boolean) { + isSelected = se + if (this is CompoundButton) isChecked = se + } +} + +/** + * Dsl配置项 + * */ +open class DslSelectorConfig { + + /**取消选择时, 最小需要保持多个选中. 可以决定单选时, 是否允许取消所有选中*/ + var dslMinSelectLimit = 1 + + /**多选时, 最大允许多个选中*/ + var dslMaxSelectLimit = Int.MAX_VALUE + + /**是否是多选模式*/ + var dslMultiMode: Boolean = false + + /** + * 用来初始化[itemView]的样式 + * [onSelectItemView] + * */ + var onStyleItemView: (itemView: View, index: Int, select: Boolean) -> Unit = + { _, _, _ -> + + } + + /** + * 选中[View]改变回调, 优先于[onSelectIndexChange]触发, 区别在于参数类型不一样 + * @param fromView 单选模式下有效, 表示之前选中的[View] + * @param reselect 是否是重复选择, 只在单选模式下有效 + * @param fromUser 是否是用户产生的回调, 而非代码设置 + * */ + var onSelectViewChange: (fromView: View?, selectViewList: List, reselect: Boolean, fromUser: Boolean) -> Unit = + { _, _, _, _ -> + + } + + /** + * 选中改变回调 + * [onSelectViewChange] + * @param fromIndex 单选模式下有效, 表示之前选中的[View], 在可见性[child]列表中的索引 + * */ + var onSelectIndexChange: (fromIndex: Int, selectIndexList: List, reselect: Boolean, fromUser: Boolean) -> Unit = + { fromIndex, selectList, reselect, fromUser -> + "选择:[$fromIndex]->${selectList} reselect:$reselect fromUser:$fromUser".logi() + } + + /** + * 当需要选中[itemView]时回调, 返回[true]表示拦截默认处理 + * @param itemView 操作的[View] + * @param index [itemView]在可见性view列表中的索引. 非ViewGroup中的索引 + * @param select 选中 or 取消选中 + * @return true 表示拦截默认处理 + * */ + var onSelectItemView: (itemView: View, index: Int, select: Boolean, fromUser: Boolean) -> Boolean = + { _, _, _, _ -> + false + } +} + +/**[DslSelector]组件*/ +fun dslSelector(viewGroup: ViewGroup, config: DslSelectorConfig.() -> Unit = {}): DslSelector { + return DslSelector().apply { + install(viewGroup, config) + } +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslTabBadge.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabBadge.kt new file mode 100644 index 000000000..0761d1d3a --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabBadge.kt @@ -0,0 +1,222 @@ +package com.angcyo.tablayout + +import android.content.Context +import android.graphics.Color +import android.util.AttributeSet +import android.view.Gravity +import androidx.annotation.Px + +/** + * 角标 + * Email:angcyo@126.com + * @author angcyo + * @date 2019/12/13 + * Copyright (c) 2019 ShenZhen O&M Cloud Co., Ltd. All rights reserved. + */ +open class DslTabBadge : DslBadgeDrawable() { + + /**角标默认配置项*/ + val defaultBadgeConfig = TabBadgeConfig() + + /**预览的角标属性*/ + var xmlBadgeText: String? = null + + override fun initAttribute(context: Context, attributeSet: AttributeSet?) { + val typedArray = + context.obtainStyledAttributes(attributeSet, R.styleable.DslTabLayout) + gradientSolidColor = + typedArray.getColor( + R.styleable.DslTabLayout_tab_badge_solid_color, + defaultBadgeConfig.badgeSolidColor + ) + defaultBadgeConfig.badgeSolidColor = gradientSolidColor + + badgeTextColor = + typedArray.getColor( + R.styleable.DslTabLayout_tab_badge_text_color, + defaultBadgeConfig.badgeTextColor + ) + defaultBadgeConfig.badgeTextColor = badgeTextColor + + gradientStrokeColor = + typedArray.getColor( + R.styleable.DslTabLayout_tab_badge_stroke_color, + defaultBadgeConfig.badgeStrokeColor + ) + defaultBadgeConfig.badgeStrokeColor = gradientStrokeColor + + gradientStrokeWidth = + typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_stroke_width, + defaultBadgeConfig.badgeStrokeWidth + ) + defaultBadgeConfig.badgeStrokeWidth = gradientStrokeWidth + + badgeGravity = typedArray.getInt( + R.styleable.DslTabLayout_tab_badge_gravity, + defaultBadgeConfig.badgeGravity + ) + defaultBadgeConfig.badgeGravity = badgeGravity + + badgeOffsetX = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_offset_x, + defaultBadgeConfig.badgeOffsetX + ) + defaultBadgeConfig.badgeOffsetX = badgeOffsetX + badgeOffsetY = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_offset_y, + defaultBadgeConfig.badgeOffsetY + ) + defaultBadgeConfig.badgeOffsetY = badgeOffsetY + + badgeCircleOffsetX = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_circle_offset_x, + defaultBadgeConfig.badgeOffsetX + ) + defaultBadgeConfig.badgeCircleOffsetX = badgeCircleOffsetX + badgeCircleOffsetY = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_circle_offset_y, + defaultBadgeConfig.badgeOffsetY + ) + defaultBadgeConfig.badgeCircleOffsetY = badgeCircleOffsetY + + badgeCircleRadius = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_circle_radius, + defaultBadgeConfig.badgeCircleRadius + ) + defaultBadgeConfig.badgeCircleRadius = badgeCircleRadius + + val badgeRadius = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_radius, + defaultBadgeConfig.badgeRadius + ) + cornerRadius(badgeRadius.toFloat()) + defaultBadgeConfig.badgeRadius = badgeRadius + + badgePaddingLeft = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_padding_left, + defaultBadgeConfig.badgePaddingLeft + ) + defaultBadgeConfig.badgePaddingLeft = badgePaddingLeft + + badgePaddingRight = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_padding_right, + defaultBadgeConfig.badgePaddingRight + ) + defaultBadgeConfig.badgePaddingRight = badgePaddingRight + + badgePaddingTop = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_padding_top, + defaultBadgeConfig.badgePaddingTop + ) + defaultBadgeConfig.badgePaddingTop = badgePaddingTop + + badgePaddingBottom = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_padding_bottom, + defaultBadgeConfig.badgePaddingBottom + ) + defaultBadgeConfig.badgePaddingBottom = badgePaddingBottom + + xmlBadgeText = typedArray.getString(R.styleable.DslTabLayout_tab_badge_text) + + badgeTextSize = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_badge_text_size, + defaultBadgeConfig.badgeTextSize.toInt() + ).toFloat() + defaultBadgeConfig.badgeTextSize = badgeTextSize + + defaultBadgeConfig.badgeAnchorChildIndex = + typedArray.getInteger( + R.styleable.DslTabLayout_tab_badge_anchor_child_index, + defaultBadgeConfig.badgeAnchorChildIndex + ) + defaultBadgeConfig.badgeIgnoreChildPadding = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_badge_ignore_child_padding, + defaultBadgeConfig.badgeIgnoreChildPadding + ) + + defaultBadgeConfig.badgeMinWidth = typedArray.getLayoutDimension( + R.styleable.DslTabLayout_tab_badge_min_width, + defaultBadgeConfig.badgeMinWidth + ) + + defaultBadgeConfig.badgeMinHeight = typedArray.getLayoutDimension( + R.styleable.DslTabLayout_tab_badge_min_height, + defaultBadgeConfig.badgeMinHeight + ) + + typedArray.recycle() + super.initAttribute(context, attributeSet) + } + + /**使用指定配置, 更新[DslBadgeDrawable]*/ + fun updateBadgeConfig(badgeConfig: TabBadgeConfig) { + gradientSolidColor = badgeConfig.badgeSolidColor + gradientStrokeColor = badgeConfig.badgeStrokeColor + gradientStrokeWidth = badgeConfig.badgeStrokeWidth + badgeTextColor = badgeConfig.badgeTextColor + badgeGravity = badgeConfig.badgeGravity + badgeOffsetX = badgeConfig.badgeOffsetX + badgeOffsetY = badgeConfig.badgeOffsetY + badgeCircleOffsetX = badgeConfig.badgeCircleOffsetX + badgeCircleOffsetY = badgeConfig.badgeCircleOffsetY + badgeCircleRadius = badgeConfig.badgeCircleRadius + badgePaddingLeft = badgeConfig.badgePaddingLeft + badgePaddingRight = badgeConfig.badgePaddingRight + badgePaddingTop = badgeConfig.badgePaddingTop + badgePaddingBottom = badgeConfig.badgePaddingBottom + badgeTextSize = badgeConfig.badgeTextSize + cornerRadius(badgeConfig.badgeRadius.toFloat()) + badgeMinHeight = badgeConfig.badgeMinHeight + badgeMinWidth = badgeConfig.badgeMinWidth + badgeText = badgeConfig.badgeText + } +} + +/**角标绘制参数配置*/ +data class TabBadgeConfig( + /**角标的文本(默认居中绘制文本,暂不支持修改), 空字符串会绘制成小圆点 + * null 不绘制角标 + * "" 空字符绘制圆点 + * 其他 正常绘制 + * */ + var badgeText: String? = null, + /**重力*/ + var badgeGravity: Int = Gravity.CENTER, + /**角标背景颜色*/ + var badgeSolidColor: Int = Color.RED, + /**角标边框颜色*/ + var badgeStrokeColor: Int = Color.TRANSPARENT, + /**角标边框宽度*/ + var badgeStrokeWidth: Int = 0, + + /**角标文本颜色*/ + var badgeTextColor: Int = Color.WHITE, + /**角标文本字体大小*/ + @Px + var badgeTextSize: Float = 12 * dp, + /**圆点状态时的半径大小*/ + var badgeCircleRadius: Int = 4 * dpi, + /**圆角大小*/ + var badgeRadius: Int = 10 * dpi, + /**额外偏移距离, 会根据[Gravity]自动取负值*/ + var badgeOffsetX: Int = 0, + var badgeOffsetY: Int = 0, + var badgeCircleOffsetX: Int = 0, + var badgeCircleOffsetY: Int = 0, + /**圆点状态时无效*/ + var badgePaddingLeft: Int = 4 * dpi, + var badgePaddingRight: Int = 4 * dpi, + var badgePaddingTop: Int = 0, + var badgePaddingBottom: Int = 0, + + var badgeAnchorChildIndex: Int = -1, + var badgeIgnoreChildPadding: Boolean = true, + + /**最小的高度大小, px. 大于0生效; 圆点时属性无效*/ + var badgeMinHeight: Int = -2, + + /**最小的宽度大小, px. 大于0生效; 圆点时属性无效; + * -1 表示使用使用计算出来的高度值*/ + var badgeMinWidth: Int = -1 +) \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslTabBorder.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabBorder.kt new file mode 100644 index 000000000..b1d4d6003 --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabBorder.kt @@ -0,0 +1,279 @@ +package com.angcyo.tablayout + +import android.content.Context +import android.graphics.Canvas +import android.graphics.drawable.Drawable +import android.util.AttributeSet +import android.view.View +import androidx.core.view.ViewCompat + +/** + * 边框绘制, 支持首尾圆角中间不圆角的样式 + * Email:angcyo@126.com + * @author angcyo + * @date 2019/11/27 + * Copyright (c) 2019 ShenZhen O&M Cloud Co., Ltd. All rights reserved. + */ +open class DslTabBorder : DslGradientDrawable() { + + /** + * 是否要接管[itemView]背景的绘制 + * [updateItemBackground] + * */ + var borderDrawItemBackground: Boolean = true + + /**是否保持每个[itemView]的圆角都一样, 否则首尾有圆角, 中间没有圆角*/ + var borderKeepItemRadius: Boolean = false + + var borderBackgroundDrawable: Drawable? = null + + /**宽度补偿*/ + var borderBackgroundWidthOffset: Int = 0 + + /**高度补偿*/ + var borderBackgroundHeightOffset: Int = 0 + + /**强制指定选中item的背景颜色*/ + var borderItemBackgroundSolidColor: Int? = null + + /**当item不可选中时的背景绘制颜色 + * [com.angcyo.tablayout.DslTabLayout.itemEnableSelector] + * [borderItemBackgroundSolidColor]*/ + var borderItemBackgroundSolidDisableColor: Int? = null + + /**强制指定选中item的背景渐变颜色*/ + var borderItemBackgroundGradientColors: IntArray? = null + + override fun initAttribute(context: Context, attributeSet: AttributeSet?) { + val typedArray = + context.obtainStyledAttributes(attributeSet, R.styleable.DslTabLayout) + + val borderBackgroundColor = + typedArray.getColor(R.styleable.DslTabLayout_tab_border_solid_color, gradientSolidColor) + + gradientStrokeColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_border_stroke_color, + gradientStrokeColor + ) + gradientStrokeWidth = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_border_stroke_width, + 2 * dpi + ) + val radiusSize = + typedArray.getDimensionPixelOffset(R.styleable.DslTabLayout_tab_border_radius_size, 0) + + cornerRadius(radiusSize.toFloat()) + + originDrawable = typedArray.getDrawable(R.styleable.DslTabLayout_tab_border_drawable) + + borderDrawItemBackground = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_border_draw_item_background, + borderDrawItemBackground + ) + + borderKeepItemRadius = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_border_keep_item_radius, + borderKeepItemRadius + ) + + borderBackgroundWidthOffset = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_border_item_background_width_offset, + borderBackgroundWidthOffset + ) + + borderBackgroundHeightOffset = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_border_item_background_height_offset, + borderBackgroundHeightOffset + ) + + // + if (typedArray.hasValue(R.styleable.DslTabLayout_tab_border_item_background_solid_color)) { + borderItemBackgroundSolidColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_border_item_background_solid_color, + gradientStrokeColor + ) + } + if (typedArray.hasValue(R.styleable.DslTabLayout_tab_border_item_background_solid_disable_color)) { + borderItemBackgroundSolidDisableColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_border_item_background_solid_disable_color, + borderItemBackgroundSolidColor ?: gradientStrokeColor + ) + } + + if (typedArray.hasValue(R.styleable.DslTabLayout_tab_border_item_background_gradient_start_color) || + typedArray.hasValue(R.styleable.DslTabLayout_tab_border_item_background_gradient_end_color) + ) { + val startColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_border_item_background_gradient_start_color, + gradientStrokeColor + ) + val endColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_border_item_background_gradient_end_color, + gradientStrokeColor + ) + borderItemBackgroundGradientColors = intArrayOf(startColor, endColor) + } + + typedArray.recycle() + + if (originDrawable == null) { + //无自定义的drawable, 那么自绘. + borderBackgroundDrawable = DslGradientDrawable().configDrawable { + gradientSolidColor = borderBackgroundColor + gradientRadii = this@DslTabBorder.gradientRadii + }.originDrawable + + updateOriginDrawable() + } + } + + override fun draw(canvas: Canvas) { + super.draw(canvas) + + originDrawable?.apply { + setBounds( + paddingLeft, + paddingBottom, + viewWidth - paddingRight, + viewHeight - paddingBottom + ) + draw(canvas) + } + } + + fun drawBorderBackground(canvas: Canvas) { + super.draw(canvas) + + borderBackgroundDrawable?.apply { + setBounds( + paddingLeft, + paddingBottom, + viewWidth - paddingRight, + viewHeight - paddingBottom + ) + draw(canvas) + } + } + + var itemSelectBgDrawable: Drawable? = null + var itemDeselectBgDrawable: Drawable? = null + + /**开启边框绘制后, [itemView]的背景也需要负责设置*/ + open fun updateItemBackground( + tabLayout: DslTabLayout, + itemView: View, + index: Int, + select: Boolean + ) { + + if (!borderDrawItemBackground) { + return + } + + if (select) { + + val isFirst = index == 0 + val isLast = index == tabLayout.dslSelector.visibleViewList.size - 1 + + val drawable = DslGradientDrawable().configDrawable { + gradientWidthOffset = borderBackgroundWidthOffset + gradientHeightOffset = borderBackgroundHeightOffset + + gradientSolidColor = + borderItemBackgroundSolidColor ?: this@DslTabBorder.gradientStrokeColor + if (!tabLayout.itemEnableSelector) { + if (borderItemBackgroundSolidDisableColor != null) { + gradientSolidColor = borderItemBackgroundSolidDisableColor!! + } + } + + gradientColors = borderItemBackgroundGradientColors + + if ((isFirst && isLast) || borderKeepItemRadius) { + //只有一个child + gradientRadii = this@DslTabBorder.gradientRadii + } else if (isFirst) { + if (tabLayout.isHorizontal()) { + if (tabLayout.isLayoutRtl) { + gradientRadii = floatArrayOf( + 0f, + 0f, + this@DslTabBorder.gradientRadii[2], + this@DslTabBorder.gradientRadii[3], + this@DslTabBorder.gradientRadii[4], + this@DslTabBorder.gradientRadii[5], + 0f, + 0f + ) + } else { + gradientRadii = floatArrayOf( + this@DslTabBorder.gradientRadii[0], + this@DslTabBorder.gradientRadii[1], + 0f, + 0f, + 0f, + 0f, + this@DslTabBorder.gradientRadii[6], + this@DslTabBorder.gradientRadii[7] + ) + } + } else { + gradientRadii = floatArrayOf( + this@DslTabBorder.gradientRadii[0], + this@DslTabBorder.gradientRadii[1], + this@DslTabBorder.gradientRadii[2], + this@DslTabBorder.gradientRadii[3], + 0f, + 0f, + 0f, + 0f + ) + } + } else if (isLast) { + if (tabLayout.isHorizontal()) { + if (tabLayout.isLayoutRtl) { + gradientRadii = floatArrayOf( + this@DslTabBorder.gradientRadii[0], + this@DslTabBorder.gradientRadii[1], + 0f, + 0f, + 0f, + 0f, + this@DslTabBorder.gradientRadii[6], + this@DslTabBorder.gradientRadii[7] + ) + } else { + gradientRadii = floatArrayOf( + 0f, + 0f, + this@DslTabBorder.gradientRadii[2], + this@DslTabBorder.gradientRadii[3], + this@DslTabBorder.gradientRadii[4], + this@DslTabBorder.gradientRadii[5], + 0f, + 0f + ) + } + } else { + gradientRadii = floatArrayOf( + 0f, + 0f, + 0f, + 0f, + this@DslTabBorder.gradientRadii[4], + this@DslTabBorder.gradientRadii[5], + this@DslTabBorder.gradientRadii[6], + this@DslTabBorder.gradientRadii[7] + ) + } + } + } + + itemSelectBgDrawable = drawable + + ViewCompat.setBackground(itemView, itemSelectBgDrawable) + } else { + ViewCompat.setBackground(itemView, itemDeselectBgDrawable) + } + } +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslTabDivider.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabDivider.kt new file mode 100644 index 000000000..f0fe41c35 --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabDivider.kt @@ -0,0 +1,153 @@ +package com.angcyo.tablayout + +import android.content.Context +import android.graphics.Canvas +import android.util.AttributeSet +import android.widget.LinearLayout + +/** + * 垂直分割线 + * Email:angcyo@126.com + * @author angcyo + * @date 2019/11/27 + * Copyright (c) 2019 ShenZhen O&M Cloud Co., Ltd. All rights reserved. + */ +open class DslTabDivider : DslGradientDrawable() { + + var dividerWidth = 2 * dpi + var dividerHeight = 2 * dpi + var dividerMarginLeft = 0 + var dividerMarginRight = 0 + var dividerMarginTop = 0 + var dividerMarginBottom = 0 + + /** + * [LinearLayout.SHOW_DIVIDER_BEGINNING] + * [LinearLayout.SHOW_DIVIDER_MIDDLE] + * [LinearLayout.SHOW_DIVIDER_END] + * */ + var dividerShowMode = LinearLayout.SHOW_DIVIDER_MIDDLE + + override fun initAttribute(context: Context, attributeSet: AttributeSet?) { + super.initAttribute(context, attributeSet) + val typedArray = context.obtainStyledAttributes(attributeSet, R.styleable.DslTabLayout) + + dividerWidth = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_divider_width, + dividerWidth + ) + dividerHeight = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_divider_height, + dividerHeight + ) + dividerMarginLeft = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_divider_margin_left, + dividerMarginLeft + ) + dividerMarginRight = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_divider_margin_right, + dividerMarginRight + ) + dividerMarginTop = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_divider_margin_top, + dividerMarginTop + ) + dividerMarginBottom = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_divider_margin_bottom, + dividerMarginBottom + ) + + if (typedArray.hasValue(R.styleable.DslTabLayout_tab_divider_solid_color)) { + gradientSolidColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_divider_solid_color, + gradientSolidColor + ) + } else if (typedArray.hasValue(R.styleable.DslTabLayout_tab_border_stroke_color)) { + gradientSolidColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_border_stroke_color, + gradientSolidColor + ) + } else { + gradientSolidColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_deselect_color, + gradientSolidColor + ) + } + + gradientStrokeColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_divider_stroke_color, + gradientStrokeColor + ) + gradientStrokeWidth = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_divider_stroke_width, + 0 + ) + val radiusSize = + typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_divider_radius_size, + 2 * dpi + ) + + cornerRadius(radiusSize.toFloat()) + + originDrawable = typedArray.getDrawable(R.styleable.DslTabLayout_tab_divider_drawable) + + dividerShowMode = + typedArray.getInt(R.styleable.DslTabLayout_tab_divider_show_mode, dividerShowMode) + + typedArray.recycle() + + if (originDrawable == null) { + //无自定义的drawable, 那么自绘. + + updateOriginDrawable() + } + } + + override fun draw(canvas: Canvas) { + super.draw(canvas) + + originDrawable?.apply { + bounds = this@DslTabDivider.bounds + draw(canvas) + } + } + + val _tabLayout: DslTabLayout? + get() = if (callback is DslTabLayout) callback as DslTabLayout else null + + /** + * [childIndex]位置前面是否需要分割线 + * */ + open fun haveBeforeDivider(childIndex: Int, childCount: Int): Boolean { + val tabLayout = _tabLayout + if (tabLayout != null && tabLayout.isHorizontal() && tabLayout.isLayoutRtl) { + if (childIndex == 0) { + return dividerShowMode and LinearLayout.SHOW_DIVIDER_END != 0 + } + return dividerShowMode and LinearLayout.SHOW_DIVIDER_MIDDLE != 0 + } + + if (childIndex == 0) { + return dividerShowMode and LinearLayout.SHOW_DIVIDER_BEGINNING != 0 + } + return dividerShowMode and LinearLayout.SHOW_DIVIDER_MIDDLE != 0 + } + + /** + * [childIndex]位置后面是否需要分割线 + * */ + open fun haveAfterDivider(childIndex: Int, childCount: Int): Boolean { + val tabLayout = _tabLayout + if (tabLayout != null && tabLayout.isHorizontal() && tabLayout.isLayoutRtl) { + if (childIndex == childCount - 1) { + return dividerShowMode and LinearLayout.SHOW_DIVIDER_BEGINNING != 0 + } + } + + if (childIndex == childCount - 1) { + return dividerShowMode and LinearLayout.SHOW_DIVIDER_END != 0 + } + return false + } +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslTabHighlight.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabHighlight.kt new file mode 100644 index 000000000..4c21bbd56 --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabHighlight.kt @@ -0,0 +1,118 @@ +package com.angcyo.tablayout + +import android.content.Context +import android.graphics.Canvas +import android.graphics.drawable.Drawable +import android.graphics.drawable.GradientDrawable +import android.util.AttributeSet +import android.view.ViewGroup + +/** + * + * Email:angcyo@126.com + * @author angcyo + * @date 2021/05/19 + * Copyright (c) 2020 ShenZhen Wayto Ltd. All rights reserved. + */ +open class DslTabHighlight(val tabLayout: DslTabLayout) : DslGradientDrawable() { + + /**需要绘制的Drawable*/ + var highlightDrawable: Drawable? = null + + /**宽度测量模式*/ + var highlightWidth = ViewGroup.LayoutParams.MATCH_PARENT + + /**高度测量模式*/ + var highlightHeight = ViewGroup.LayoutParams.MATCH_PARENT + + /**宽度补偿*/ + var highlightWidthOffset = 0 + + /**高度补偿*/ + var highlightHeightOffset = 0 + + override fun initAttribute(context: Context, attributeSet: AttributeSet?) { + //super.initAttribute(context, attributeSet) + + val typedArray = + context.obtainStyledAttributes(attributeSet, R.styleable.DslTabLayout) + highlightDrawable = typedArray.getDrawable(R.styleable.DslTabLayout_tab_highlight_drawable) + + highlightWidth = typedArray.getLayoutDimension( + R.styleable.DslTabLayout_tab_highlight_width, + highlightWidth + ) + highlightHeight = typedArray.getLayoutDimension( + R.styleable.DslTabLayout_tab_highlight_height, + highlightHeight + ) + + highlightWidthOffset = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_highlight_width_offset, + highlightWidthOffset + ) + highlightHeightOffset = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_highlight_height_offset, + highlightHeightOffset + ) + + typedArray.recycle() + + if (highlightDrawable == null && isValidConfig()) { + updateOriginDrawable() + } + } + + override fun updateOriginDrawable(): GradientDrawable? { + val drawable = super.updateOriginDrawable() + highlightDrawable = originDrawable + return drawable + } + + override fun draw(canvas: Canvas) { + //super.draw(canvas) + val itemView = tabLayout.currentItemView + if (itemView != null) { + val lp = itemView.layoutParams + + if (lp is DslTabLayout.LayoutParams) { + lp.highlightDrawable ?: highlightDrawable + } else { + highlightDrawable + }?.apply { + + val drawWidth: Int = when (highlightWidth) { + ViewGroup.LayoutParams.MATCH_PARENT -> itemView.measuredWidth + ViewGroup.LayoutParams.WRAP_CONTENT -> intrinsicWidth + else -> highlightWidth + } + highlightWidthOffset + + val drawHeight: Int = when (highlightHeight) { + ViewGroup.LayoutParams.MATCH_PARENT -> itemView.measuredHeight + ViewGroup.LayoutParams.WRAP_CONTENT -> intrinsicHeight + else -> highlightHeight + } + highlightHeightOffset + + val centerX: Int = itemView.left + (itemView.right - itemView.left) / 2 + val centerY: Int = itemView.top + (itemView.bottom - itemView.top) / 2 + + setBounds( + centerX - drawWidth / 2, + centerY - drawHeight / 2, + centerX + drawWidth / 2, + centerY + drawHeight / 2 + ) + + draw(canvas) + canvas.save() + if (tabLayout.isHorizontal()) { + canvas.translate(itemView.left.toFloat(), 0f) + } else { + canvas.translate(0f, itemView.top.toFloat()) + } + itemView.draw(canvas) + canvas.restore() + } + } + } +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslTabIndicator.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabIndicator.kt new file mode 100644 index 000000000..316ced0ad --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabIndicator.kt @@ -0,0 +1,931 @@ +package com.angcyo.tablayout + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.drawable.Drawable +import android.graphics.drawable.GradientDrawable +import android.util.AttributeSet +import android.view.View +import android.view.ViewGroup +import androidx.core.graphics.withSave +import java.util.* +import kotlin.math.absoluteValue +import kotlin.math.max + +/** + * 指示器 + * Email:angcyo@126.com + * @author angcyo + * @date 2019/11/25 + * Copyright (c) 2019 ShenZhen O&M Cloud Co., Ltd. All rights reserved. + */ +open class DslTabIndicator(val tabLayout: DslTabLayout) : DslGradientDrawable() { + + companion object { + + /**非颜色值*/ + const val NO_COLOR = -2 + + //---style--- + + /**不绘制指示器*/ + const val INDICATOR_STYLE_NONE = 0 + + /**指示器绘制在[itemView]的顶部*/ + const val INDICATOR_STYLE_TOP = 0x1 + + /**指示器绘制在[itemView]的底部*/ + const val INDICATOR_STYLE_BOTTOM = 0x2 + + /**默认样式,指示器绘制在[itemView]的中心*/ + const val INDICATOR_STYLE_CENTER = 0x4 + + /**前景绘制, + * 默认是背景绘制, 指示器绘制[itemView]的背部, [itemView] 请不要设置background, 否则可能看不见*/ + const val INDICATOR_STYLE_FOREGROUND = 0x1000 + + //---gravity--- + + /**指示器重力在开始的位置(横向左边, 纵向上边)*/ + const val INDICATOR_GRAVITY_START = 0x1 + + /**指示器重力在结束的位置(横向右边, 纵向下边)*/ + const val INDICATOR_GRAVITY_END = 0x2 + + /**指示器重力在中间*/ + const val INDICATOR_GRAVITY_CENTER = 0x4 + } + + /**指示器绘制的样式*/ + var indicatorStyle = INDICATOR_STYLE_NONE //初始化 + + /**[indicatorStyle]*/ + val _indicatorDrawStyle: Int + get() = indicatorStyle.remove(INDICATOR_STYLE_FOREGROUND) + + /**优先将指示器显示在[DslTabLayout]的什么位置 + * [INDICATOR_GRAVITY_START] 开始的位置 + * [INDICATOR_GRAVITY_END] 结束的位置 + * [INDICATOR_GRAVITY_CENTER] 中间的位置*/ + var indicatorGravity = INDICATOR_GRAVITY_CENTER + + /** + * 指示器在流向下一个位置时, 是否采用[Flow]流线的方式改变宽度 + * */ + var indicatorEnableFlow: Boolean = false + + /**指示器闪现效果, 从当前位置直接跨越到目标位置*/ + var indicatorEnableFlash: Boolean = false + + /**使用clip的方式绘制闪现效果*/ + var indicatorEnableFlashClip: Boolean = true + + /**当目标和当前的索引差值<=此值时, [Flow]效果才有效*/ + var indicatorFlowStep: Int = 1 + + /**指示器绘制实体*/ + var indicatorDrawable: Drawable? = null + set(value) { + field = tintDrawableColor(value, indicatorColor) + } + + /**过滤[indicatorDrawable]的颜色*/ + var indicatorColor: Int = NO_COLOR + set(value) { + field = value + indicatorDrawable = indicatorDrawable + } + + /** + * 指示器的宽度 + * WRAP_CONTENT: [childView]内容的宽度, + * MATCH_PARENT: [childView]的宽度 + * 40dp: 固定值 + * */ + var indicatorWidth = 0 //初始化 + + /**宽度补偿*/ + var indicatorWidthOffset = 0 + + /** + * 指示器的高度 + * WRAP_CONTENT: [childView]内容的高度, + * MATCH_PARENT: [childView]的高度 + * 40dp: 固定值 + * */ + var indicatorHeight = 0 //初始化 + + /**高度补偿*/ + var indicatorHeightOffset = 0 + + /**XY轴方向补偿*/ + var indicatorXOffset = 0 + + /**会根据[indicatorStyle]自动取负值*/ + var indicatorYOffset = 0 + + /** + * 宽高[WRAP_CONTENT]时, 内容view的定位索引 + * */ + var indicatorContentIndex = -1 + var indicatorContentId = View.NO_ID + + /**切换时是否需要动画的支持*/ + var indicatorAnim = true + + /**在获取锚点view的宽高时, 是否需要忽略对应的padding属性*/ + var ignoreChildPadding: Boolean = true + + init { + callback = tabLayout + } + + override fun initAttribute(context: Context, attributeSet: AttributeSet?) { + val typedArray = + context.obtainStyledAttributes(attributeSet, R.styleable.DslTabLayout) + + indicatorDrawable = typedArray.getDrawable(R.styleable.DslTabLayout_tab_indicator_drawable) + indicatorColor = + typedArray.getColor(R.styleable.DslTabLayout_tab_indicator_color, indicatorColor) + indicatorStyle = typedArray.getInt( + R.styleable.DslTabLayout_tab_indicator_style, + if (tabLayout.isHorizontal()) INDICATOR_STYLE_BOTTOM else INDICATOR_STYLE_TOP + ) + indicatorGravity = typedArray.getInt( + R.styleable.DslTabLayout_tab_indicator_gravity, + indicatorGravity + ) + + //初始化指示器的高度和宽度 + if (indicatorStyle.have(INDICATOR_STYLE_FOREGROUND)) { + //前景绘制 + indicatorWidth = typedArray.getLayoutDimension( + R.styleable.DslTabLayout_tab_indicator_width, + if (tabLayout.isHorizontal()) ViewGroup.LayoutParams.MATCH_PARENT else 3 * dpi + ) + indicatorHeight = typedArray.getLayoutDimension( + R.styleable.DslTabLayout_tab_indicator_height, + if (tabLayout.isHorizontal()) 3 * dpi else ViewGroup.LayoutParams.MATCH_PARENT + ) + indicatorXOffset = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_indicator_x_offset, + if (tabLayout.isHorizontal()) 0 else 2 * dpi + ) + indicatorYOffset = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_indicator_y_offset, + if (tabLayout.isHorizontal()) 2 * dpi else 0 + ) + } else { + //背景绘制样式 + if (tabLayout.isHorizontal()) { + indicatorWidth = ViewGroup.LayoutParams.MATCH_PARENT + indicatorHeight = ViewGroup.LayoutParams.MATCH_PARENT + } else { + indicatorHeight = ViewGroup.LayoutParams.MATCH_PARENT + indicatorWidth = ViewGroup.LayoutParams.MATCH_PARENT + } + indicatorWidth = typedArray.getLayoutDimension( + R.styleable.DslTabLayout_tab_indicator_width, + indicatorWidth + ) + indicatorHeight = typedArray.getLayoutDimension( + R.styleable.DslTabLayout_tab_indicator_height, + indicatorHeight + ) + indicatorXOffset = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_indicator_x_offset, + indicatorXOffset + ) + indicatorYOffset = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_indicator_y_offset, + indicatorYOffset + ) + } + + ignoreChildPadding = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_indicator_ignore_child_padding, + !indicatorStyle.have(INDICATOR_STYLE_CENTER) + ) + + indicatorFlowStep = + typedArray.getInt(R.styleable.DslTabLayout_tab_indicator_flow_step, indicatorFlowStep) + indicatorEnableFlow = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_indicator_enable_flow, + indicatorEnableFlow + ) + indicatorEnableFlash = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_indicator_enable_flash, + indicatorEnableFlash + ) + indicatorEnableFlashClip = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_indicator_enable_flash_clip, + indicatorEnableFlashClip + ) + + indicatorWidthOffset = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_indicator_width_offset, + indicatorWidthOffset + ) + indicatorHeightOffset = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_indicator_height_offset, + indicatorHeightOffset + ) + indicatorContentIndex = typedArray.getInt( + R.styleable.DslTabLayout_tab_indicator_content_index, + indicatorContentIndex + ) + indicatorContentId = typedArray.getResourceId( + R.styleable.DslTabLayout_tab_indicator_content_id, + indicatorContentId + ) + indicatorAnim = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_indicator_anim, + indicatorAnim + ) + + //代码构建Drawable + gradientShape = + typedArray.getInt(R.styleable.DslTabLayout_tab_indicator_shape, gradientShape) + gradientSolidColor = + typedArray.getColor( + R.styleable.DslTabLayout_tab_indicator_solid_color, + gradientSolidColor + ) + gradientStrokeColor = + typedArray.getColor( + R.styleable.DslTabLayout_tab_indicator_stroke_color, + gradientStrokeColor + ) + gradientStrokeWidth = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_indicator_stroke_width, + gradientStrokeWidth + ) + gradientDashWidth = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_indicator_dash_width, + gradientDashWidth.toInt() + ).toFloat() + gradientDashGap = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_indicator_dash_gap, + gradientDashGap.toInt() + ).toFloat() + + val gradientRadius = + typedArray.getDimensionPixelOffset(R.styleable.DslTabLayout_tab_indicator_radius, 0) + if (gradientRadius > 0) { + Arrays.fill(gradientRadii, gradientRadius.toFloat()) + } else { + typedArray.getString(R.styleable.DslTabLayout_tab_indicator_radii)?.let { + _fillRadii(gradientRadii, it) + } + } + + val gradientColors = + typedArray.getString(R.styleable.DslTabLayout_tab_indicator_gradient_colors) + + this.gradientColors = if (gradientColors.isNullOrEmpty()) { + val startColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_indicator_gradient_start_color, + Color.TRANSPARENT + ) + val endColor = typedArray.getColor( + R.styleable.DslTabLayout_tab_indicator_gradient_end_color, + Color.TRANSPARENT + ) + if (startColor != endColor) { + intArrayOf(startColor, endColor) + } else { + this.gradientColors + } + } else { + _fillColor(gradientColors) ?: this.gradientColors + } + //...end + + typedArray.recycle() + + if (indicatorDrawable == null && isValidConfig()) { + updateOriginDrawable() + } + } + + override fun updateOriginDrawable(): GradientDrawable? { + val drawable = super.updateOriginDrawable() + indicatorDrawable = originDrawable + return drawable + } + + open fun tintDrawableColor(drawable: Drawable?, color: Int): Drawable? { + if (drawable == null || color == NO_COLOR) { + return drawable + } + return drawable.tintDrawableColor(color) + } + + /**指示器需要参考的目标控件*/ + open fun indicatorContentView(childView: View): View? { + val lp = childView.layoutParams as DslTabLayout.LayoutParams + + val contentId = + if (lp.indicatorContentId != View.NO_ID) lp.indicatorContentId else indicatorContentId + + if (contentId != View.NO_ID) { + return childView.findViewById(contentId) + } + + //如果child强制指定了index, 就用指定的. + val contentIndex = + if (lp.indicatorContentIndex >= 0) lp.indicatorContentIndex else indicatorContentIndex + + return if (contentIndex >= 0 && childView is ViewGroup && contentIndex in 0 until childView.childCount) { + //有指定 + val contentChildView = childView.getChildAt(contentIndex) + contentChildView + } else { + //没有指定 + null + } + } + + /**根据指定[index]索引, 获取目标[View]*/ + open fun targetChildView( + index: Int, + onChildView: (childView: View, contentChildView: View?) -> Unit + ) { + tabLayout.dslSelector.visibleViewList.getOrNull(index)?.also { childView -> + onChildView(childView, indicatorContentView(childView)) + } + } + + open fun getChildTargetPaddingLeft(childView: View): Int = + if (ignoreChildPadding) childView.paddingLeft else 0 + + open fun getChildTargetPaddingRight(childView: View): Int = + if (ignoreChildPadding) childView.paddingRight else 0 + + open fun getChildTargetPaddingTop(childView: View): Int = + if (ignoreChildPadding) childView.paddingTop else 0 + + open fun getChildTargetPaddingBottom(childView: View): Int = + if (ignoreChildPadding) childView.paddingBottom else 0 + + open fun getChildTargetWidth(childView: View): Int = + if (ignoreChildPadding) childView.viewDrawWidth else childView.measuredWidth + + open fun getChildTargetHeight(childView: View): Int = + if (ignoreChildPadding) childView.viewDrawHeight else childView.measuredHeight + + /** + * [childview]对应的中心x坐标 + * */ + open fun getChildTargetX(index: Int, gravity: Int = indicatorGravity): Int { + + var result = if (index > 0) tabLayout.maxWidth else 0 + + targetChildView(index) { childView, contentChildView -> + result = if (contentChildView == null) { + when (gravity) { + INDICATOR_GRAVITY_START -> childView.left + INDICATOR_GRAVITY_END -> childView.right + else -> childView.left + getChildTargetPaddingLeft(childView) + getChildTargetWidth( + childView + ) / 2 + } + } else { + when (gravity) { + INDICATOR_GRAVITY_START -> childView.left + contentChildView.left + INDICATOR_GRAVITY_END -> childView.left + contentChildView.right + else -> childView.left + contentChildView.left + getChildTargetPaddingLeft( + contentChildView + ) + getChildTargetWidth( + contentChildView + ) / 2 + } + } + } + + return result + } + + open fun getChildTargetY(index: Int, gravity: Int = indicatorGravity): Int { + + var result = if (index > 0) tabLayout.maxHeight else 0 + + targetChildView(index) { childView, contentChildView -> + result = if (contentChildView == null) { + when (gravity) { + INDICATOR_GRAVITY_START -> childView.top + INDICATOR_GRAVITY_END -> childView.bottom + else -> childView.top + getChildTargetPaddingTop(childView) + getChildTargetHeight( + childView + ) / 2 + } + } else { + when (gravity) { + INDICATOR_GRAVITY_START -> childView.top + contentChildView.top + INDICATOR_GRAVITY_END -> childView.top + childView.bottom + else -> childView.top + contentChildView.top + getChildTargetPaddingTop( + contentChildView + ) + getChildTargetHeight( + contentChildView + ) / 2 + } + } + } + + return result + } + + open fun getIndicatorDrawWidth(index: Int): Int { + var result = indicatorWidth + + when (indicatorWidth) { + ViewGroup.LayoutParams.WRAP_CONTENT -> { + tabLayout.dslSelector.visibleViewList.getOrNull(index)?.also { childView -> + result = getChildTargetWidth(indicatorContentView(childView) ?: childView) + } + } + ViewGroup.LayoutParams.MATCH_PARENT -> { + tabLayout.dslSelector.visibleViewList.getOrNull(index)?.also { childView -> + result = childView.measuredWidth + } + } + } + + return result + indicatorWidthOffset + } + + open fun getIndicatorDrawHeight(index: Int): Int { + var result = indicatorHeight + + when (indicatorHeight) { + ViewGroup.LayoutParams.WRAP_CONTENT -> { + tabLayout.dslSelector.visibleViewList.getOrNull(index)?.also { childView -> + result = getChildTargetHeight(indicatorContentView(childView) ?: childView) + } + } + ViewGroup.LayoutParams.MATCH_PARENT -> { + tabLayout.dslSelector.visibleViewList.getOrNull(index)?.also { childView -> + result = childView.measuredHeight + } + } + } + + return result + indicatorHeightOffset + } + + override fun draw(canvas: Canvas) { + //super.draw(canvas) + if (!isVisible || _indicatorDrawStyle == INDICATOR_STYLE_NONE || indicatorDrawable == null) { + //不绘制 + return + } + + if (tabLayout.isHorizontal()) { + drawHorizontal(canvas) + } else { + drawVertical(canvas) + } + } + + fun drawHorizontal(canvas: Canvas) { + val childSize = tabLayout.dslSelector.visibleViewList.size + + var currentIndex = currentIndex + + if (_targetIndex in 0 until childSize) { + currentIndex = max(0, currentIndex) + } + + if (currentIndex in 0 until childSize) { + + } else { + //无效的index + return + } + + //"绘制$currentIndex:$currentSelectIndex $positionOffset".logi() + + val drawTargetX = getChildTargetX(currentIndex) + val drawWidth = getIndicatorDrawWidth(currentIndex) + val drawHeight = getIndicatorDrawHeight(currentIndex) + + val drawLeft = drawTargetX - drawWidth / 2 + indicatorXOffset + + //动画过程中的left + var animLeft = drawLeft + //width + var animWidth = drawWidth + //动画执行过程中, 高度额外变大的值 + var animExHeight = 0 + + //end value + val nextDrawTargetX = getChildTargetX(_targetIndex) + val nextDrawWidth = getIndicatorDrawWidth(_targetIndex) + val nextDrawLeft = nextDrawTargetX - nextDrawWidth / 2 + indicatorXOffset + + var animEndWidth = nextDrawWidth + var animEndLeft = nextDrawLeft + + if (_targetIndex in 0 until childSize && _targetIndex != currentIndex) { + + //动画过程参数计算变量 + val animStartLeft = drawLeft + val animStartWidth = drawWidth + + val animEndHeight = getIndicatorDrawHeight(_targetIndex) + + if (indicatorEnableFlash) { + //闪现效果 + animWidth = (animWidth * (1 - positionOffset)).toInt() + animEndWidth = (animEndWidth * positionOffset).toInt() + + animLeft = drawTargetX - animWidth / 2 + indicatorXOffset + animEndLeft = nextDrawLeft + } else if (indicatorEnableFlow && (_targetIndex - currentIndex).absoluteValue <= indicatorFlowStep) { + //激活了流动效果 + + val flowEndWidth: Int + if (_targetIndex > currentIndex) { + flowEndWidth = animEndLeft - animStartLeft + animEndWidth + + //目标在右边 + animLeft = if (positionOffset >= 0.5) { + (animStartLeft + (animEndLeft - animStartLeft) * (positionOffset - 0.5) / 0.5f).toInt() + } else { + animStartLeft + } + } else { + flowEndWidth = animStartLeft - animEndLeft + animStartWidth + + //目标在左边 + animLeft = if (positionOffset >= 0.5) { + animEndLeft + } else { + (animStartLeft - (animStartLeft - animEndLeft) * positionOffset / 0.5f).toInt() + } + } + + animWidth = if (positionOffset >= 0.5) { + (flowEndWidth - (flowEndWidth - animEndWidth) * (positionOffset - 0.5) / 0.5f).toInt() + } else { + (animStartWidth + (flowEndWidth - animStartWidth) * positionOffset / 0.5f).toInt() + } + } else { + //默认平移效果 + if (_targetIndex > currentIndex) { + //目标在右边 + animLeft = + (animStartLeft + (animEndLeft - animStartLeft) * positionOffset).toInt() + } else { + //目标在左边 + animLeft = + (animStartLeft - (animStartLeft - animEndLeft) * positionOffset).toInt() + } + + //动画过程中的宽度 + animWidth = + (animStartWidth + (animEndWidth - animStartWidth) * positionOffset).toInt() + } + + animExHeight = ((animEndHeight - drawHeight) * positionOffset).toInt() + } + + //前景 + val drawTop = when (_indicatorDrawStyle) { + //底部绘制 + INDICATOR_STYLE_BOTTOM -> viewHeight - drawHeight - indicatorYOffset + //顶部绘制 + INDICATOR_STYLE_TOP -> 0 + indicatorYOffset + //居中绘制 + else -> paddingTop + viewDrawHeight / 2 - drawHeight / 2 + indicatorYOffset - + animExHeight + + (tabLayout._maxConvexHeight - _childConvexHeight(currentIndex)) / 2 + } + + indicatorDrawable?.apply { + if (indicatorEnableFlash) { + //flash + if (indicatorEnableFlashClip) { + drawIndicatorClipHorizontal( + this, + canvas, + drawLeft, + drawTop, + drawLeft + drawWidth, + drawTop + drawHeight + animExHeight, + animWidth, + 1 - positionOffset + ) + } else { + drawIndicator( + this, canvas, animLeft, + drawTop, + animLeft + animWidth, + drawTop + drawHeight + animExHeight, + 1 - positionOffset + ) + } + + if (_targetIndex in 0 until childSize) { + if (indicatorEnableFlashClip) { + drawIndicatorClipHorizontal( + this, + canvas, + nextDrawLeft, + drawTop, + nextDrawLeft + nextDrawWidth, + drawTop + drawHeight + animExHeight, + animEndWidth, + positionOffset + ) + } else { + drawIndicator( + this, canvas, animEndLeft, + drawTop, + animEndLeft + animEndWidth, + drawTop + drawHeight + animExHeight, + positionOffset + ) + } + } + } else { + //normal + drawIndicator( + this, canvas, animLeft, + drawTop, + animLeft + animWidth, + drawTop + drawHeight + animExHeight, + 1 - positionOffset + ) + } + } + } + + fun drawIndicator( + indicator: Drawable, + canvas: Canvas, + l: Int, + t: Int, + r: Int, + b: Int, + offset: Float + ) { + indicator.apply { + if (this is ITabIndicatorDraw) { + setBounds(l, t, r, b) + onDrawTabIndicator(this@DslTabIndicator, canvas, offset) + } else { + val width = r - l + val height = b - t + setBounds(0, 0, width, height) + canvas.withSave { + translate(l.toFloat(), t.toFloat()) + draw(canvas) + } + } + } + } + + fun drawIndicatorClipHorizontal( + indicator: Drawable, + canvas: Canvas, + l: Int, + t: Int, + r: Int, + b: Int, + endWidth: Int, + offset: Float + ) { + indicator.apply { + canvas.save() + val dx = (r - l - endWidth) / 2 + canvas.clipRect(l + dx, t, r - dx, b) + setBounds(l, t, r, b) + if (this is ITabIndicatorDraw) { + onDrawTabIndicator(this@DslTabIndicator, canvas, offset) + } else { + draw(canvas) + } + canvas.restore() + } + } + + fun drawIndicatorClipVertical( + indicator: Drawable, + canvas: Canvas, + l: Int, + t: Int, + r: Int, + b: Int, + endHeight: Int, + offset: Float + ) { + indicator.apply { + canvas.save() + val dy = (b - t - endHeight) / 2 + canvas.clipRect(l, t + dy, r, b - dy) + setBounds(l, t, r, b) + if (this is ITabIndicatorDraw) { + onDrawTabIndicator(this@DslTabIndicator, canvas, offset) + } else { + draw(canvas) + } + canvas.restore() + } + } + + fun drawVertical(canvas: Canvas) { + val childSize = tabLayout.dslSelector.visibleViewList.size + + var currentIndex = currentIndex + + if (_targetIndex in 0 until childSize) { + currentIndex = max(0, currentIndex) + } + + if (currentIndex in 0 until childSize) { + + } else { + //无效的index + return + } + + //"绘制$currentIndex:$currentSelectIndex $positionOffset".logi() + + val drawTargetY = getChildTargetY(currentIndex) + val drawWidth = getIndicatorDrawWidth(currentIndex) + val drawHeight = getIndicatorDrawHeight(currentIndex) + + val drawTop = drawTargetY - drawHeight / 2 + indicatorYOffset + + //动画过程中的top + var animTop = drawTop + //height + var animHeight = drawHeight + //动画执行过程中, 宽度额外变大的值 + var animExWidth = 0 + + //end value + val nextDrawTargetY = getChildTargetY(_targetIndex) + val nextDrawHeight = getIndicatorDrawHeight(_targetIndex) + val nextDrawTop = nextDrawTargetY - nextDrawHeight / 2 + indicatorYOffset + + var animEndHeight = nextDrawHeight + var animEndTop = nextDrawTop + + if (_targetIndex in 0 until childSize && _targetIndex != currentIndex) { + + //动画过程参数计算变量 + val animStartTop = drawTop + val animStartHeight = drawHeight + + val animEndWidth = getIndicatorDrawWidth(_targetIndex) + + if (indicatorEnableFlash) { + //闪现效果 + animHeight = (animHeight * (1 - positionOffset)).toInt() + animEndHeight = (animEndHeight * positionOffset).toInt() + + animTop = drawTargetY - animHeight / 2 + indicatorXOffset + animEndTop = nextDrawTargetY - animEndHeight / 2 + indicatorXOffset + } else if (indicatorEnableFlow && (_targetIndex - currentIndex).absoluteValue <= indicatorFlowStep) { + //激活了流动效果 + + val flowEndHeight: Int + if (_targetIndex > currentIndex) { + flowEndHeight = animEndTop - animStartTop + animEndHeight + + //目标在下边 + animTop = if (positionOffset >= 0.5) { + (animStartTop + (animEndTop - animStartTop) * (positionOffset - 0.5) / 0.5f).toInt() + } else { + animStartTop + } + } else { + flowEndHeight = animStartTop - animEndTop + animStartHeight + + //目标在上边 + animTop = if (positionOffset >= 0.5) { + animEndTop + } else { + (animStartTop - (animStartTop - animEndTop) * positionOffset / 0.5f).toInt() + } + } + + animHeight = if (positionOffset >= 0.5) { + (flowEndHeight - (flowEndHeight - animEndHeight) * (positionOffset - 0.5) / 0.5f).toInt() + } else { + (animStartHeight + (flowEndHeight - animStartHeight) * positionOffset / 0.5f).toInt() + } + } else { + if (_targetIndex > currentIndex) { + //目标在下边 + animTop = (animStartTop + (animEndTop - animStartTop) * positionOffset).toInt() + } else { + //目标在上边 + animTop = (animStartTop - (animStartTop - animEndTop) * positionOffset).toInt() + } + + //动画过程中的宽度 + animHeight = + (animStartHeight + (animEndHeight - animStartHeight) * positionOffset).toInt() + } + + animExWidth = ((animEndWidth - drawWidth) * positionOffset).toInt() + } + + val drawLeft = when (_indicatorDrawStyle) { + INDICATOR_STYLE_BOTTOM -> { + //右边/底部绘制 + viewWidth - drawWidth - indicatorXOffset + } + INDICATOR_STYLE_TOP -> { + //左边/顶部绘制 + 0 + indicatorXOffset + } + else -> { + //居中绘制 + paddingLeft + indicatorXOffset + (viewDrawWidth / 2 - drawWidth / 2) - + (tabLayout._maxConvexHeight - _childConvexHeight(currentIndex)) / 2 + } + } + + indicatorDrawable?.apply { + //flash + if (indicatorEnableFlash) { + if (indicatorEnableFlashClip) { + drawIndicatorClipVertical( + this, canvas, drawLeft, + drawTop, + drawLeft + drawWidth + animExWidth, + drawTop + drawHeight, + animHeight, + 1 - positionOffset + ) + } else { + drawIndicator( + this, canvas, drawLeft, + animTop, + drawLeft + drawWidth + animExWidth, + animTop + animHeight, + 1 - positionOffset + ) + } + + if (_targetIndex in 0 until childSize) { + if (indicatorEnableFlashClip) { + drawIndicatorClipVertical( + this, canvas, drawLeft, + nextDrawTop, + drawLeft + drawWidth + animExWidth, + nextDrawTop + nextDrawHeight, + animEndHeight, + positionOffset + ) + } else { + drawIndicator( + this, canvas, drawLeft, + animEndTop, + drawLeft + drawWidth + animExWidth, + animEndTop + animEndHeight, + positionOffset + ) + } + } + } else { + drawIndicator( + this, canvas, drawLeft, + animTop, + drawLeft + drawWidth + animExWidth, + animTop + animHeight, + 1 - positionOffset + ) + } + } + } + + fun _childConvexHeight(index: Int): Int { + if (attachView is ViewGroup) { + ((attachView as ViewGroup).getChildAt(index).layoutParams as? DslTabLayout.LayoutParams)?.apply { + return layoutConvexHeight + } + } + return 0 + } + + /** + * 距离[_targetIndex]的偏移比例.[0->1]的过程 + * */ + var positionOffset: Float = 0f + set(value) { + field = value + invalidateSelf() + } + + /**当前绘制的index*/ + var currentIndex: Int = -1 + + /**滚动目标的index*/ + var _targetIndex = -1 +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslTabLayout.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabLayout.kt new file mode 100644 index 000000000..b2c6050fe --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabLayout.kt @@ -0,0 +1,2042 @@ +package com.angcyo.tablayout + +import android.animation.Animator +import android.animation.AnimatorListenerAdapter +import android.animation.ValueAnimator +import android.content.Context +import android.graphics.Canvas +import android.graphics.Rect +import android.graphics.drawable.Drawable +import android.os.Bundle +import android.os.Parcelable +import android.util.AttributeSet +import android.view.* +import android.view.animation.LinearInterpolator +import android.widget.FrameLayout +import android.widget.LinearLayout +import android.widget.OverScroller +import android.widget.TextView +import androidx.core.view.GestureDetectorCompat +import androidx.core.view.GravityCompat +import androidx.core.view.ViewCompat +import kotlin.math.abs +import kotlin.math.max +import kotlin.math.min + +/** + * https://github.com/angcyo/DslTabLayout + * Email:angcyo@126.com + * @author angcyo + * @date 2019/11/23 + */ + +open class DslTabLayout( + context: Context, + val attributeSet: AttributeSet? = null +) : ViewGroup(context, attributeSet) { + + /**在未指定[minHeight]的[wrap_content]情况下的高度*/ + var itemDefaultHeight = 40 * dpi + + /**item是否等宽*/ + var itemIsEquWidth = false + + /**item是否支持选择, 只限制点击事件, 不限制滚动事件*/ + var itemEnableSelector = true + + /**当子Item数量在此范围内时,开启等宽,此属性优先级最高 + * [~3] 小于等于3个 + * [3~] 大于等于3个 + * [3~5] 3<= <=5 + * */ + var itemEquWidthCountRange: IntRange? = null + + /**智能判断Item是否等宽. + * 如果所有子项, 未撑满tab时, 则开启等宽模式.此属性会覆盖[itemIsEquWidth]*/ + var itemAutoEquWidth = false + + /**在等宽的情况下, 指定item的宽度, 小于0, 平分*/ + var itemWidth = -3 + + /**是否绘制指示器*/ + var drawIndicator = true + + /**指示器*/ + var tabIndicator: DslTabIndicator = DslTabIndicator(this) + set(value) { + field = value + field.initAttribute(context, attributeSet) + } + + /**指示器动画时长*/ + var tabIndicatorAnimationDuration = 240L + + /**默认选中位置*/ + var tabDefaultIndex = 0 + + /**回调监听器和样式配置器*/ + var tabLayoutConfig: DslTabLayoutConfig? = null + set(value) { + field = value + + field?.initAttribute(context, attributeSet) + } + + /**边框绘制*/ + var tabBorder: DslTabBorder? = null + set(value) { + field = value + field?.callback = this + field?.initAttribute(context, attributeSet) + } + var drawBorder = false + + /**垂直分割线*/ + var tabDivider: DslTabDivider? = null + set(value) { + field = value + field?.callback = this + field?.initAttribute(context, attributeSet) + } + var drawDivider = false + + /**未读数角标*/ + var tabBadge: DslTabBadge? = null + set(value) { + field = value + field?.callback = this + field?.initAttribute(context, attributeSet) + } + var drawBadge = false + + /**快速角标配置项, 方便使用者*/ + val tabBadgeConfigMap = mutableMapOf() + + /**角标绘制配置*/ + var onTabBadgeConfig: (child: View, tabBadge: DslTabBadge, index: Int) -> TabBadgeConfig? = + { _, tabBadge, index -> + val badgeConfig = getBadgeConfig(index) + if (!isInEditMode) { + tabBadge.updateBadgeConfig(badgeConfig) + } + badgeConfig + } + + /**是否绘制突出*/ + var drawHighlight = false + + /**选中突出提示*/ + var tabHighlight: DslTabHighlight? = null + set(value) { + field = value + field?.callback = this + field?.initAttribute(context, attributeSet) + } + + /**如果使用了高凸模式. 请使用这个属性设置背景色*/ + var tabConvexBackgroundDrawable: Drawable? = null + + /**是否激活滑动选择模式*/ + var tabEnableSelectorMode = false + + /**布局的方向*/ + var orientation: Int = LinearLayout.HORIZONTAL + + /**布局时, 滚动到居中是否需要动画*/ + var layoutScrollAnim: Boolean = false + + /**滚动动画的时长*/ + var scrollAnimDuration = 250 + + // + + //fling 速率阈值 + var _minFlingVelocity = 0 + var _maxFlingVelocity = 0 + + //scroll 阈值 + var _touchSlop = 0 + + //临时变量 + val _tempRect = Rect() + + //childView选择器 + val dslSelector: DslSelector by lazy { + DslSelector().install(this) { + onStyleItemView = { itemView, index, select -> + tabLayoutConfig?.onStyleItemView?.invoke(itemView, index, select) + } + onSelectItemView = { itemView, index, select, fromUser -> + tabLayoutConfig?.onSelectItemView?.invoke(itemView, index, select, fromUser) + ?: false + } + onSelectViewChange = { fromView, selectViewList, reselect, fromUser -> + tabLayoutConfig?.onSelectViewChange?.invoke( + fromView, + selectViewList, + reselect, + fromUser + ) + } + onSelectIndexChange = { fromIndex, selectList, reselect, fromUser -> + if (tabLayoutConfig == null) { + "选择:[$fromIndex]->${selectList} reselect:$reselect fromUser:$fromUser".logi() + } + + val toIndex = selectList.lastOrNull() ?: -1 + _animateToItem(fromIndex, toIndex) + + _scrollToTarget(toIndex, tabIndicator.indicatorAnim) + postInvalidate() + + //如果设置[tabLayoutConfig?.onSelectIndexChange], 那么会覆盖[_viewPagerDelegate]的操作. + tabLayoutConfig?.onSelectIndexChange?.invoke( + fromIndex, + selectList, + reselect, + fromUser + ) ?: _viewPagerDelegate?.onSetCurrentItem(fromIndex, toIndex, reselect, fromUser) + } + } + } + + init { + val typedArray = context.obtainStyledAttributes(attributeSet, R.styleable.DslTabLayout) + itemIsEquWidth = + typedArray.getBoolean(R.styleable.DslTabLayout_tab_item_is_equ_width, itemIsEquWidth) + val maxEquWidthCount = + typedArray.getInt(R.styleable.DslTabLayout_tab_item_equ_width_count, -1) + if (maxEquWidthCount >= 0) { + itemEquWidthCountRange = IntRange(maxEquWidthCount, Int.MAX_VALUE) + } + if (typedArray.hasValue(R.styleable.DslTabLayout_tab_item_equ_width_count_range)) { + val equWidthCountRangeString = + typedArray.getString(R.styleable.DslTabLayout_tab_item_equ_width_count_range) + if (equWidthCountRangeString.isNullOrBlank()) { + itemEquWidthCountRange = null + } else { + val rangeList = equWidthCountRangeString.split("~") + if (rangeList.size() >= 2) { + val min = rangeList.getOrNull(0)?.toIntOrNull() ?: 0 + val max = rangeList.getOrNull(1)?.toIntOrNull() ?: Int.MAX_VALUE + itemEquWidthCountRange = IntRange(min, max) + } else { + val min = rangeList.getOrNull(0)?.toIntOrNull() ?: Int.MAX_VALUE + itemEquWidthCountRange = IntRange(min, Int.MAX_VALUE) + } + } + } + itemAutoEquWidth = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_item_auto_equ_width, + itemAutoEquWidth + ) + itemWidth = + typedArray.getDimensionPixelOffset(R.styleable.DslTabLayout_tab_item_width, itemWidth) + itemDefaultHeight = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_item_default_height, + itemDefaultHeight + ) + tabDefaultIndex = + typedArray.getInt(R.styleable.DslTabLayout_tab_default_index, tabDefaultIndex) + + drawIndicator = + typedArray.getBoolean(R.styleable.DslTabLayout_tab_draw_indicator, drawIndicator) + drawDivider = + typedArray.getBoolean(R.styleable.DslTabLayout_tab_draw_divider, drawDivider) + drawBorder = + typedArray.getBoolean(R.styleable.DslTabLayout_tab_draw_border, drawBorder) + drawBadge = + typedArray.getBoolean(R.styleable.DslTabLayout_tab_draw_badge, drawBadge) + drawHighlight = + typedArray.getBoolean(R.styleable.DslTabLayout_tab_draw_highlight, drawHighlight) + + tabEnableSelectorMode = + typedArray.getBoolean( + R.styleable.DslTabLayout_tab_enable_selector_mode, + tabEnableSelectorMode + ) + + tabConvexBackgroundDrawable = + typedArray.getDrawable(R.styleable.DslTabLayout_tab_convex_background) + + orientation = typedArray.getInt(R.styleable.DslTabLayout_tab_orientation, orientation) + + layoutScrollAnim = + typedArray.getBoolean(R.styleable.DslTabLayout_tab_layout_scroll_anim, layoutScrollAnim) + scrollAnimDuration = + typedArray.getInt(R.styleable.DslTabLayout_tab_scroll_anim_duration, scrollAnimDuration) + + //preview + if (isInEditMode) { + val layoutId = + typedArray.getResourceId(R.styleable.DslTabLayout_tab_preview_item_layout_id, -1) + val layoutCount = + typedArray.getInt(R.styleable.DslTabLayout_tab_preview_item_count, 3) + if (layoutId != -1) { + for (i in 0 until layoutCount) { + inflate(layoutId, true).let { + if (it is TextView) { + if (it.text.isNullOrEmpty()) { + it.text = "Item $i" + } else { + it.text = "${it.text}/$i" + } + } + } + } + } + } + + typedArray.recycle() + + val vc = ViewConfiguration.get(context) + _minFlingVelocity = vc.scaledMinimumFlingVelocity + _maxFlingVelocity = vc.scaledMaximumFlingVelocity + //_touchSlop = vc.scaledTouchSlop + + if (drawIndicator) { + //直接初始化的变量, 不会触发set方法. + tabIndicator.initAttribute(context, attributeSet) + } + + if (drawBorder) { + tabBorder = DslTabBorder() + } + if (drawDivider) { + tabDivider = DslTabDivider() + } + if (drawBadge) { + tabBadge = DslTabBadge() + } + if (drawHighlight) { + tabHighlight = DslTabHighlight(this) + } + + //样式配置器 + tabLayoutConfig = DslTabLayoutConfig(this) + + //开启绘制 + setWillNotDraw(false) + } + + // + + // + + /**当前选中item的索引*/ + val currentItemIndex: Int + get() = dslSelector.dslSelectIndex + + /**当前选中的itemView*/ + val currentItemView: View? + get() = dslSelector.visibleViewList.getOrNull(currentItemIndex) + + /**设置tab的位置*/ + fun setCurrentItem(index: Int, notify: Boolean = true, fromUser: Boolean = false) { + if (currentItemIndex == index) { + _scrollToTarget(index, tabIndicator.indicatorAnim) + return + } + dslSelector.selector(index, true, notify, fromUser) + } + + /**关联[ViewPagerDelegate]*/ + fun setupViewPager(viewPagerDelegate: ViewPagerDelegate) { + _viewPagerDelegate = viewPagerDelegate + } + + /**配置一个新的[DslTabLayoutConfig]给[DslTabLayout]*/ + fun setTabLayoutConfig( + config: DslTabLayoutConfig = DslTabLayoutConfig(this), + doIt: DslTabLayoutConfig.() -> Unit = {} + ) { + tabLayoutConfig = config + configTabLayoutConfig(doIt) + } + + /**配置[DslTabLayoutConfig]*/ + fun configTabLayoutConfig(config: DslTabLayoutConfig.() -> Unit = {}) { + if (tabLayoutConfig == null) { + tabLayoutConfig = DslTabLayoutConfig(this) + } + tabLayoutConfig?.config() + dslSelector.updateStyle() + } + + /**观察index的改变回调*/ + fun observeIndexChange( + config: DslTabLayoutConfig.() -> Unit = {}, + action: (fromIndex: Int, toIndex: Int, reselect: Boolean, fromUser: Boolean) -> Unit + ) { + configTabLayoutConfig { + config() + onSelectIndexChange = { fromIndex, selectIndexList, reselect, fromUser -> + action(fromIndex, selectIndexList.firstOrNull() ?: -1, reselect, fromUser) + } + } + } + + fun getBadgeConfig(index: Int): TabBadgeConfig { + return tabBadgeConfigMap.getOrElse(index) { + tabBadge?.defaultBadgeConfig?.copy() ?: TabBadgeConfig() + } + } + + fun updateTabBadge(index: Int, badgeText: String?) { + updateTabBadge(index) { + this.badgeText = badgeText + } + } + + /**更新角标*/ + fun updateTabBadge(index: Int, config: TabBadgeConfig.() -> Unit) { + val badgeConfig = getBadgeConfig(index) + tabBadgeConfigMap[index] = badgeConfig + badgeConfig.config() + postInvalidate() + } + + // + + // + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + } + + override fun onFinishInflate() { + super.onFinishInflate() + } + + override fun onViewAdded(child: View?) { + super.onViewAdded(child) + updateTabLayout() + } + + override fun onViewRemoved(child: View?) { + super.onViewRemoved(child) + updateTabLayout() + } + + open fun updateTabLayout() { + dslSelector.updateVisibleList() + dslSelector.updateStyle() + dslSelector.updateClickListener() + } + + override fun draw(canvas: Canvas) { + //Log.e("angcyo", "...draw...") + + if (drawIndicator) { + tabIndicator.setBounds(0, 0, measuredWidth, measuredHeight) + } + + //自定义的背景 + tabConvexBackgroundDrawable?.apply { + if (isHorizontal()) { + setBounds(0, _maxConvexHeight, right - left, bottom - top) + } else { + setBounds(0, 0, measuredWidth - _maxConvexHeight, bottom - top) + } + + if (scrollX or scrollY == 0) { + draw(canvas) + } else { + canvas.holdLocation { + draw(canvas) + } + } + } + + super.draw(canvas) + + //突出显示 + if (drawHighlight) { + tabHighlight?.draw(canvas) + } + + val visibleChildCount = dslSelector.visibleViewList.size + + //绘制在child的上面 + if (drawDivider) { + if (isHorizontal()) { + if (isLayoutRtl) { + var right = 0 + tabDivider?.apply { + val top = paddingTop + dividerMarginTop + val bottom = measuredHeight - paddingBottom - dividerMarginBottom + dslSelector.visibleViewList.forEachIndexed { index, view -> + + if (haveBeforeDivider(index, visibleChildCount)) { + right = view.right + dividerMarginLeft + dividerWidth + setBounds(right - dividerWidth, top, right, bottom) + draw(canvas) + } + + if (haveAfterDivider(index, visibleChildCount)) { + right = view.right - view.measuredWidth - dividerMarginRight + setBounds(right - dividerWidth, top, right, bottom) + draw(canvas) + } + + } + } + } else { + var left = 0 + tabDivider?.apply { + val top = paddingTop + dividerMarginTop + val bottom = measuredHeight - paddingBottom - dividerMarginBottom + dslSelector.visibleViewList.forEachIndexed { index, view -> + + if (haveBeforeDivider(index, visibleChildCount)) { + left = view.left - dividerMarginRight - dividerWidth + setBounds(left, top, left + dividerWidth, bottom) + draw(canvas) + } + + if (haveAfterDivider(index, visibleChildCount)) { + left = view.right + dividerMarginLeft + setBounds(left, top, left + dividerWidth, bottom) + draw(canvas) + } + + } + } + } + } else { + var top = 0 + tabDivider?.apply { + val left = paddingStart + dividerMarginLeft + val right = measuredWidth - paddingEnd - dividerMarginRight + dslSelector.visibleViewList.forEachIndexed { index, view -> + + if (haveBeforeDivider(index, visibleChildCount)) { + top = view.top - dividerMarginBottom - dividerHeight + setBounds(left, top, right, top + dividerHeight) + draw(canvas) + } + + if (haveAfterDivider(index, visibleChildCount)) { + top = view.bottom + dividerMarginTop + setBounds(left, top, right, top + dividerHeight) + draw(canvas) + } + } + } + } + } + if (drawBorder) { + //边框不跟随滚动 + canvas.holdLocation { + tabBorder?.draw(canvas) + } + } + if (drawIndicator && tabIndicator.indicatorStyle.have(DslTabIndicator.INDICATOR_STYLE_FOREGROUND)) { + //前景显示 + tabIndicator.draw(canvas) + } + if (drawBadge) { + tabBadge?.apply { + dslSelector.visibleViewList.forEachIndexed { index, child -> + val badgeConfig = onTabBadgeConfig(child, this, index) + + var left: Int + var top: Int + var right: Int + var bottom: Int + + var anchorView: View = child + + if (badgeConfig != null && badgeConfig.badgeAnchorChildIndex >= 0) { + anchorView = + child.getChildOrNull(badgeConfig.badgeAnchorChildIndex) ?: child + + anchorView.getLocationInParent(this@DslTabLayout, _tempRect) + + left = _tempRect.left + top = _tempRect.top + right = _tempRect.right + bottom = _tempRect.bottom + } else { + left = anchorView.left + top = anchorView.top + right = anchorView.right + bottom = anchorView.bottom + } + + if (badgeConfig != null && badgeConfig.badgeIgnoreChildPadding) { + left += anchorView.paddingStart + top += anchorView.paddingTop + right -= anchorView.paddingEnd + bottom -= anchorView.paddingBottom + } + + setBounds(left, top, right, bottom) + + updateOriginDrawable() + + if (isInEditMode) { + badgeText = if (index == visibleChildCount - 1) { + //预览中, 强制最后一个角标为圆点类型, 方便查看预览. + "" + } else { + xmlBadgeText + } + } + + draw(canvas) + } + } + } + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + + if (drawBorder) { + //边框不跟随滚动 + canvas.holdLocation { + tabBorder?.drawBorderBackground(canvas) + } + } + + //绘制在child的后面 + if (drawIndicator && !tabIndicator.indicatorStyle.have(DslTabIndicator.INDICATOR_STYLE_FOREGROUND)) { + //背景绘制 + tabIndicator.draw(canvas) + } + } + + /**保持位置不变*/ + fun Canvas.holdLocation(action: () -> Unit) { + translate(scrollX.toFloat(), scrollY.toFloat()) + action() + translate(-scrollX.toFloat(), -scrollY.toFloat()) + } + + override fun drawChild(canvas: Canvas, child: View, drawingTime: Long): Boolean { + return super.drawChild(canvas, child, drawingTime) + } + + override fun verifyDrawable(who: Drawable): Boolean { + return super.verifyDrawable(who) || + who == tabIndicator /*|| + who == tabBorder || + who == tabDivider || + who == tabConvexBackgroundDrawable*/ /*|| + who == tabBadge 防止循环绘制*/ + } + + // + + // + + //所有child的总宽度, 不包含parent的padding + var _childAllWidthSum = 0 + + //最大的凸起高度 + var _maxConvexHeight = 0 + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + + if (dslSelector.dslSelectIndex < 0) { + //还没有选中 + setCurrentItem(tabDefaultIndex) + } + + if (isHorizontal()) { + measureHorizontal(widthMeasureSpec, heightMeasureSpec) + } else { + measureVertical(widthMeasureSpec, heightMeasureSpec) + } + } + + fun measureHorizontal(widthMeasureSpec: Int, heightMeasureSpec: Int) { + dslSelector.updateVisibleList() + + val visibleChildList = dslSelector.visibleViewList + val visibleChildCount = visibleChildList.size + + //控制最小大小 + val tabMinHeight = if (suggestedMinimumHeight > 0) { + suggestedMinimumHeight + } else { + itemDefaultHeight + } + + if (visibleChildCount == 0) { + setMeasuredDimension( + getDefaultSize(suggestedMinimumWidth, widthMeasureSpec), + getDefaultSize(tabMinHeight, heightMeasureSpec) + ) + return + } + + //super.onMeasure(widthMeasureSpec, heightMeasureSpec) + var widthSize = MeasureSpec.getSize(widthMeasureSpec) + val widthMode = MeasureSpec.getMode(widthMeasureSpec) + var heightSize = MeasureSpec.getSize(heightMeasureSpec) + val heightMode = MeasureSpec.getMode(heightMeasureSpec) + + _maxConvexHeight = 0 + + var childWidthSpec: Int = -1 + + //记录child最大的height, 用来实现tabLayout wrap_content, 包括突出的大小 + var childMaxHeight = tabMinHeight //child最大的高度 + + if (heightMode == MeasureSpec.UNSPECIFIED) { + if (heightSize == 0) { + heightSize = Int.MAX_VALUE + } + } + + if (widthMode == MeasureSpec.UNSPECIFIED) { + if (widthSize == 0) { + widthSize = Int.MAX_VALUE + } + } + + //分割线需要排除的宽度 + val dividerWidthExclude = + if (drawDivider) tabDivider?.run { dividerWidth + dividerMarginLeft + dividerMarginRight } + ?: 0 else 0 + + //智能等宽判断 + if (itemAutoEquWidth) { + var childMaxWidth = 0 //所有child宽度总和 + visibleChildList.forEachIndexed { index, child -> + val lp: LayoutParams = child.layoutParams as LayoutParams + measureChild(child, widthMeasureSpec, heightMeasureSpec) + childMaxWidth += lp.marginStart + lp.marginEnd + child.measuredWidth + + if (drawDivider) { + if (tabDivider?.haveBeforeDivider(index, visibleChildList.size) == true) { + childMaxWidth += dividerWidthExclude + } + if (tabDivider?.haveAfterDivider(index, visibleChildList.size) == true) { + childMaxWidth += dividerWidthExclude + } + } + } + + itemIsEquWidth = childMaxWidth <= widthSize + } + + itemEquWidthCountRange?.let { + itemIsEquWidth = it.contains(visibleChildCount) + } + + //等宽时, child宽度的测量模式 + val childEquWidthSpec = if (itemIsEquWidth) { + exactlyMeasure( + if (itemWidth > 0) { + itemWidth + } else { + var excludeWidth = paddingStart + paddingEnd + visibleChildList.forEachIndexed { index, child -> + if (drawDivider) { + if (tabDivider?.haveBeforeDivider( + index, + visibleChildList.size + ) == true + ) { + excludeWidth += dividerWidthExclude + } + if (tabDivider?.haveAfterDivider( + index, + visibleChildList.size + ) == true + ) { + excludeWidth += dividerWidthExclude + } + } + val lp = child.layoutParams as LayoutParams + excludeWidth += lp.marginStart + lp.marginEnd + } + (widthSize - excludeWidth) / visibleChildCount + } + ) + } else { + -1 + } + + //...end + + _childAllWidthSum = 0 + + //没有设置weight属性的child宽度总和, 用于计算剩余空间 + var allChildUsedWidth = 0 + + fun measureChild(childView: View, heightSpec: Int? = null) { + val lp = childView.layoutParams as LayoutParams + + //child高度测量模式 + var childHeightSpec: Int = -1 + + val widthHeight = calcLayoutWidthHeight( + lp.layoutWidth, lp.layoutHeight, + widthSize, heightSize, 0, 0 + ) + + if (heightMode == MeasureSpec.EXACTLY) { + //固定高度 + childHeightSpec = + exactlyMeasure(heightSize - paddingTop - paddingBottom - lp.topMargin - lp.bottomMargin) + } else { + if (widthHeight[1] > 0) { + heightSize = widthHeight[1] + childHeightSpec = exactlyMeasure(heightSize) + heightSize += paddingTop + paddingBottom + } else { + childHeightSpec = if (lp.height == ViewGroup.LayoutParams.MATCH_PARENT) { + exactlyMeasure(tabMinHeight) + } else { + atmostMeasure(Int.MAX_VALUE) + } + } + } + + val childConvexHeight = lp.layoutConvexHeight + + //...end + + //计算宽度测量模式 + childWidthSpec //no op + + if (heightSpec != null) { + childView.measure(childWidthSpec, heightSpec) + } else { + childView.measure(childWidthSpec, childHeightSpec) + } + if (childConvexHeight > 0) { + _maxConvexHeight = max(_maxConvexHeight, childConvexHeight) + //需要凸起 + val spec = exactlyMeasure(childView.measuredHeight + childConvexHeight) + childView.measure(childWidthSpec, spec) + } + childMaxHeight = max(childMaxHeight, childView.measuredHeight) + } + + visibleChildList.forEachIndexed { index, childView -> + val lp = childView.layoutParams as LayoutParams + var childUsedWidth = 0 + if (lp.weight < 0) { + val widthHeight = calcLayoutWidthHeight( + lp.layoutWidth, lp.layoutHeight, + widthSize, heightSize, 0, 0 + ) + + //计算宽度测量模式 + childWidthSpec = when { + itemIsEquWidth -> childEquWidthSpec + widthHeight[0] > 0 -> exactlyMeasure(widthHeight[0]) + lp.width == ViewGroup.LayoutParams.MATCH_PARENT -> exactlyMeasure(widthSize - paddingStart - paddingEnd) + lp.width > 0 -> exactlyMeasure(lp.width) + else -> atmostMeasure(widthSize - paddingStart - paddingEnd) + } + + measureChild(childView) + + childUsedWidth = childView.measuredWidth + lp.marginStart + lp.marginEnd + } else { + childUsedWidth = lp.marginStart + lp.marginEnd + } + + if (drawDivider) { + if (tabDivider?.haveBeforeDivider(index, visibleChildList.size) == true) { + childUsedWidth += dividerWidthExclude + } + if (tabDivider?.haveAfterDivider(index, visibleChildList.size) == true) { + childUsedWidth += dividerWidthExclude + } + } + + childMaxHeight = max(childMaxHeight, childView.measuredHeight) + allChildUsedWidth += childUsedWidth + _childAllWidthSum += childUsedWidth + } + + //剩余空间 + val spaceSize = widthSize - allChildUsedWidth + + //计算weight + visibleChildList.forEach { childView -> + val lp = childView.layoutParams as LayoutParams + if (lp.weight > 0) { + val widthHeight = calcLayoutWidthHeight( + lp.layoutWidth, lp.layoutHeight, + widthSize, heightSize, 0, 0 + ) + + //计算宽度测量模式 + childWidthSpec = when { + itemIsEquWidth -> childEquWidthSpec + spaceSize > 0 -> exactlyMeasure(spaceSize * lp.weight) + widthHeight[0] > 0 -> exactlyMeasure(allChildUsedWidth) + lp.width == ViewGroup.LayoutParams.MATCH_PARENT -> exactlyMeasure(widthSize - paddingStart - paddingEnd) + lp.width > 0 -> exactlyMeasure(lp.width) + else -> atmostMeasure(widthSize - paddingStart - paddingEnd) + } + + measureChild(childView) + + childMaxHeight = max(childMaxHeight, childView.measuredHeight) + + //上面已经处理了分割线和margin的距离了 + _childAllWidthSum += childView.measuredWidth + } + } + //...end + + if (heightMode == MeasureSpec.AT_MOST) { + //wrap_content 情况下, 重新测量所有子view + val childHeightSpec = exactlyMeasure( + max( + childMaxHeight - _maxConvexHeight, + suggestedMinimumHeight - paddingTop - paddingBottom + ) + ) + visibleChildList.forEach { childView -> + measureChild(childView, childHeightSpec) + } + } + + if (widthMode != MeasureSpec.EXACTLY) { + widthSize = min(_childAllWidthSum + paddingStart + paddingEnd, widthSize) + } + + if (visibleChildList.isEmpty()) { + heightSize = if (suggestedMinimumHeight > 0) { + suggestedMinimumHeight + } else { + itemDefaultHeight + } + } else if (heightMode != MeasureSpec.EXACTLY) { + heightSize = max( + childMaxHeight - _maxConvexHeight + paddingTop + paddingBottom, + suggestedMinimumHeight + ) + } + + setMeasuredDimension(widthSize, heightSize + _maxConvexHeight) + } + + fun measureVertical(widthMeasureSpec: Int, heightMeasureSpec: Int) { + dslSelector.updateVisibleList() + + val visibleChildList = dslSelector.visibleViewList + val visibleChildCount = visibleChildList.size + + if (visibleChildCount == 0) { + setMeasuredDimension( + getDefaultSize( + if (suggestedMinimumHeight > 0) { + suggestedMinimumHeight + } else { + itemDefaultHeight + }, widthMeasureSpec + ), + getDefaultSize(suggestedMinimumHeight, heightMeasureSpec) + ) + return + } + + //super.onMeasure(widthMeasureSpec, heightMeasureSpec) + var widthSize = MeasureSpec.getSize(widthMeasureSpec) + val widthMode = MeasureSpec.getMode(widthMeasureSpec) + var heightSize = MeasureSpec.getSize(heightMeasureSpec) + val heightMode = MeasureSpec.getMode(heightMeasureSpec) + + _maxConvexHeight = 0 + + //child高度测量模式 + var childHeightSpec: Int = -1 + var childWidthSpec: Int = -1 + + if (heightMode == MeasureSpec.UNSPECIFIED) { + if (heightSize == 0) { + heightSize = Int.MAX_VALUE + } + } + + if (widthMode == MeasureSpec.EXACTLY) { + //固定宽度 + childWidthSpec = exactlyMeasure(widthSize - paddingStart - paddingEnd) + } else if (widthMode == MeasureSpec.UNSPECIFIED) { + if (widthSize == 0) { + widthSize = Int.MAX_VALUE + } + } + + //分割线需要排除的宽度 + val dividerHeightExclude = + if (drawDivider) tabDivider?.run { dividerHeight + dividerMarginTop + dividerMarginBottom } + ?: 0 else 0 + + //智能等宽判断 + if (itemAutoEquWidth) { + var childMaxHeight = 0 //所有child高度总和 + visibleChildList.forEachIndexed { index, child -> + val lp: LayoutParams = child.layoutParams as LayoutParams + measureChild(child, widthMeasureSpec, heightMeasureSpec) + childMaxHeight += lp.topMargin + lp.bottomMargin + child.measuredHeight + + if (drawDivider) { + if (tabDivider?.haveBeforeDivider(index, visibleChildList.size) == true) { + childMaxHeight += dividerHeightExclude + } + if (tabDivider?.haveAfterDivider(index, visibleChildList.size) == true) { + childMaxHeight += dividerHeightExclude + } + } + } + + itemIsEquWidth = childMaxHeight <= heightSize + } + + itemEquWidthCountRange?.let { + itemIsEquWidth = it.contains(visibleChildCount) + } + + //等宽时, child高度的测量模式 + val childEquHeightSpec = if (itemIsEquWidth) { + exactlyMeasure( + if (itemWidth > 0) { + itemWidth + } else { + var excludeHeight = paddingTop + paddingBottom + visibleChildList.forEachIndexed { index, child -> + if (drawDivider) { + if (tabDivider?.haveBeforeDivider(index, visibleChildList.size) == true + ) { + excludeHeight += dividerHeightExclude + } + if (tabDivider?.haveAfterDivider(index, visibleChildList.size) == true + ) { + excludeHeight += dividerHeightExclude + } + } + val lp = child.layoutParams as LayoutParams + excludeHeight += lp.topMargin + lp.bottomMargin + } + (heightSize - excludeHeight) / visibleChildCount + } + ) + } else { + -1 + } + + //...end + + _childAllWidthSum = 0 + + var wrapContentWidth = false + + //没有设置weight属性的child宽度总和, 用于计算剩余空间 + var allChildUsedHeight = 0 + + fun measureChild(childView: View) { + val lp = childView.layoutParams as LayoutParams + + //纵向布局, 不支持横向margin支持 + lp.marginStart = 0 + lp.marginEnd = 0 + + val childConvexHeight = lp.layoutConvexHeight + _maxConvexHeight = max(_maxConvexHeight, childConvexHeight) + + val widthHeight = calcLayoutWidthHeight( + lp.layoutWidth, lp.layoutHeight, + widthSize, heightSize, 0, 0 + ) + + //计算宽度测量模式 + wrapContentWidth = false + if (childWidthSpec == -1) { + if (widthHeight[0] > 0) { + widthSize = widthHeight[0] + childWidthSpec = exactlyMeasure(widthSize) + widthSize += paddingStart + paddingEnd + } + } + + if (childWidthSpec == -1) { + if (lp.width == ViewGroup.LayoutParams.MATCH_PARENT) { + + widthSize = if (suggestedMinimumWidth > 0) { + suggestedMinimumWidth + } else { + itemDefaultHeight + } + + childWidthSpec = exactlyMeasure(widthSize) + + widthSize += paddingStart + paddingEnd + } else { + childWidthSpec = atmostMeasure(widthSize) + wrapContentWidth = true + } + } + //...end + + //计算高度测量模式 + childHeightSpec //no op + + if (childConvexHeight > 0) { + //需要凸起 + val childConvexWidthSpec = MeasureSpec.makeMeasureSpec( + MeasureSpec.getSize(childWidthSpec) + childConvexHeight, + MeasureSpec.getMode(childWidthSpec) + ) + childView.measure(childConvexWidthSpec, childHeightSpec) + } else { + childView.measure(childWidthSpec, childHeightSpec) + } + + if (wrapContentWidth) { + widthSize = childView.measuredWidth + childWidthSpec = exactlyMeasure(widthSize) + widthSize += paddingStart + paddingEnd + } + } + + visibleChildList.forEachIndexed { index, childView -> + val lp = childView.layoutParams as LayoutParams + var childUsedHeight = 0 + if (lp.weight < 0) { + val widthHeight = calcLayoutWidthHeight( + lp.layoutWidth, lp.layoutHeight, + widthSize, heightSize, 0, 0 + ) + + //计算高度测量模式 + childHeightSpec = when { + itemIsEquWidth -> childEquHeightSpec + widthHeight[1] > 0 -> exactlyMeasure(widthHeight[1]) + lp.height == ViewGroup.LayoutParams.MATCH_PARENT -> exactlyMeasure(heightSize - paddingTop - paddingBottom) + lp.height > 0 -> exactlyMeasure(lp.height) + else -> atmostMeasure(heightSize - paddingTop - paddingBottom) + } + + measureChild(childView) + + childUsedHeight = childView.measuredHeight + lp.topMargin + lp.bottomMargin + } else { + childUsedHeight = lp.topMargin + lp.bottomMargin + } + + if (drawDivider) { + if (tabDivider?.haveBeforeDivider(index, visibleChildList.size) == true) { + childUsedHeight += dividerHeightExclude + } + if (tabDivider?.haveAfterDivider(index, visibleChildList.size) == true) { + childUsedHeight += dividerHeightExclude + } + } + + allChildUsedHeight += childUsedHeight + _childAllWidthSum += childUsedHeight + } + + //剩余空间 + val spaceSize = heightSize - allChildUsedHeight + + //计算weight + visibleChildList.forEach { childView -> + val lp = childView.layoutParams as LayoutParams + if (lp.weight > 0) { + val widthHeight = calcLayoutWidthHeight( + lp.layoutWidth, lp.layoutHeight, + widthSize, heightSize, 0, 0 + ) + + //计算高度测量模式 + childHeightSpec = when { + itemIsEquWidth -> childEquHeightSpec + spaceSize > 0 -> exactlyMeasure(spaceSize * lp.weight) + widthHeight[1] > 0 -> exactlyMeasure(allChildUsedHeight) + lp.height == ViewGroup.LayoutParams.MATCH_PARENT -> exactlyMeasure(heightSize - paddingTop - paddingBottom) + lp.height > 0 -> exactlyMeasure(lp.height) + else -> atmostMeasure(heightSize - paddingTop - paddingBottom) + } + + measureChild(childView) + + //上面已经处理了分割线和margin的距离了 + _childAllWidthSum += childView.measuredHeight + } + } + //...end + + if (heightMode != MeasureSpec.EXACTLY) { + heightSize = min(_childAllWidthSum + paddingTop + paddingBottom, heightSize) + } + + if (visibleChildList.isEmpty()) { + widthSize = if (suggestedMinimumWidth > 0) { + suggestedMinimumWidth + } else { + itemDefaultHeight + } + } + + setMeasuredDimension(widthSize + _maxConvexHeight, heightSize) + } + + override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) { + if (isHorizontal()) { + layoutHorizontal(changed, l, t, r, b) + } else { + layoutVertical(changed, l, t, r, b) + } + } + + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + super.onSizeChanged(w, h, oldw, oldh) + + //check + restoreScroll() + + if (dslSelector.dslSelectIndex < 0) { + //还没有选中 + setCurrentItem(tabDefaultIndex) + } else { + if (_overScroller.isFinished) { + _scrollToTarget(dslSelector.dslSelectIndex, layoutScrollAnim) + } + } + } + + val isLayoutRtl: Boolean + get() = ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL + + var _layoutDirection: Int = -1 + + //API 17 + override fun onRtlPropertiesChanged(layoutDirection: Int) { + super.onRtlPropertiesChanged(layoutDirection) + + if (layoutDirection != _layoutDirection) { + _layoutDirection = layoutDirection + if (orientation == LinearLayout.HORIZONTAL) { + updateTabLayout() //更新样式 + requestLayout() //重新布局 + } + } + } + + fun layoutHorizontal(changed: Boolean, l: Int, t: Int, r: Int, b: Int) { + val isRtl = isLayoutRtl + + var left = paddingStart + var right = measuredWidth - paddingEnd + + var childBottom = measuredHeight - paddingBottom + + val dividerExclude = if (drawDivider) tabDivider?.run { + dividerWidth + dividerMarginLeft + dividerMarginRight + } ?: 0 else 0 + + val visibleChildList = dslSelector.visibleViewList + visibleChildList.forEachIndexed { index, childView -> + + val lp = childView.layoutParams as LayoutParams + val verticalGravity = lp.gravity and Gravity.VERTICAL_GRAVITY_MASK + + if (isRtl) { + right -= lp.marginEnd + } else { + left += lp.marginStart + } + + if (drawDivider) { + if (tabDivider?.haveBeforeDivider(index, visibleChildList.size) == true) { + + if (isRtl) { + right -= dividerExclude + } else { + left += dividerExclude + } + } + } + + childBottom = when (verticalGravity) { + Gravity.CENTER_VERTICAL -> measuredHeight - paddingBottom - + ((measuredHeight - paddingTop - paddingBottom - _maxConvexHeight) / 2 - + childView.measuredHeight / 2) + + Gravity.BOTTOM -> measuredHeight - paddingBottom + else -> paddingTop + lp.topMargin + childView.measuredHeight + } + + if (isRtl) { + childView.layout( + right - childView.measuredWidth, + childBottom - childView.measuredHeight, + right, + childBottom + ) + right -= childView.measuredWidth + lp.marginStart + } else { + childView.layout( + left, + childBottom - childView.measuredHeight, + left + childView.measuredWidth, + childBottom + ) + left += childView.measuredWidth + lp.marginEnd + } + } + + //check + restoreScroll() + + if (dslSelector.dslSelectIndex < 0) { + //还没有选中 + setCurrentItem(tabDefaultIndex) + } else { + if (_overScroller.isFinished) { + _scrollToTarget(dslSelector.dslSelectIndex, layoutScrollAnim) + } + } + } + + fun layoutVertical(changed: Boolean, l: Int, t: Int, r: Int, b: Int) { + var top = paddingTop + var childLeft = paddingStart + + val dividerExclude = + if (drawDivider) tabDivider?.run { dividerHeight + dividerMarginTop + dividerMarginBottom } + ?: 0 else 0 + + val visibleChildList = dslSelector.visibleViewList + visibleChildList.forEachIndexed { index, childView -> + + val lp = childView.layoutParams as LayoutParams + val layoutDirection = 0 + val absoluteGravity = GravityCompat.getAbsoluteGravity(lp.gravity, layoutDirection) + val horizontalGravity = absoluteGravity and Gravity.HORIZONTAL_GRAVITY_MASK + + top += lp.topMargin + + if (drawDivider) { + if (tabDivider?.haveBeforeDivider(index, visibleChildList.size) == true) { + top += dividerExclude + } + } + + childLeft = when (horizontalGravity) { + Gravity.CENTER_HORIZONTAL -> paddingStart + ((measuredWidth - paddingStart - paddingEnd - _maxConvexHeight) / 2 - + childView.measuredWidth / 2) + + Gravity.RIGHT -> measuredWidth - paddingRight - childView.measuredWidth - lp.rightMargin + else -> paddingLeft + lp.leftMargin + } + + /*默认水平居中显示*/ + childView.layout( + childLeft, + top, + childLeft + childView.measuredWidth, + top + childView.measuredHeight + ) + + top += childView.measuredHeight + lp.bottomMargin + } + } + + /**是否是横向布局*/ + fun isHorizontal() = orientation.isHorizontal() + + // + + // + + override fun generateDefaultLayoutParams(): ViewGroup.LayoutParams { + return LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT, + Gravity.CENTER + ) + } + + override fun generateLayoutParams(attrs: AttributeSet?): ViewGroup.LayoutParams { + return LayoutParams(context, attrs) + } + + override fun generateLayoutParams(p: ViewGroup.LayoutParams?): ViewGroup.LayoutParams { + return p?.run { LayoutParams(p) } ?: generateDefaultLayoutParams() + } + + class LayoutParams : FrameLayout.LayoutParams { + + /** + * 支持格式0.3pw 0.5ph, 表示[parent]的多少倍数 + * */ + var layoutWidth: String? = null + var layoutHeight: String? = null + + /**凸出的高度*/ + var layoutConvexHeight: Int = 0 + + /** + * 宽高[WRAP_CONTENT]时, 内容view的定位索引 + * [TabIndicator.indicatorContentIndex] + * */ + var indicatorContentIndex = -1 + var indicatorContentId = View.NO_ID + + /**[com.angcyo.tablayout.DslTabLayoutConfig.getOnGetTextStyleView]*/ + var contentTextViewIndex = -1 + + /**[com.angcyo.tablayout.DslTabLayoutConfig.getTabTextViewId]*/ + var contentTextViewId = View.NO_ID + + /**[com.angcyo.tablayout.DslTabLayoutConfig.getOnGetIcoStyleView]*/ + var contentIconViewIndex = -1 + + /**[com.angcyo.tablayout.DslTabLayoutConfig.getTabIconViewId]*/ + var contentIconViewId = View.NO_ID + + /** + * 剩余空间占比, 1f表示占满剩余空间, 0.5f表示使用剩余空间的0.5倍 + * [android.widget.LinearLayout.LayoutParams.weight]*/ + var weight: Float = -1f + + /**突出需要绘制的Drawable + * [com.angcyo.tablayout.DslTabHighlight.highlightDrawable]*/ + var highlightDrawable: Drawable? = null + + constructor(c: Context, attrs: AttributeSet?) : super(c, attrs) { + val a = c.obtainStyledAttributes(attrs, R.styleable.DslTabLayout_Layout) + layoutWidth = a.getString(R.styleable.DslTabLayout_Layout_layout_tab_width) + layoutHeight = a.getString(R.styleable.DslTabLayout_Layout_layout_tab_height) + layoutConvexHeight = + a.getDimensionPixelOffset( + R.styleable.DslTabLayout_Layout_layout_tab_convex_height, + layoutConvexHeight + ) + indicatorContentIndex = a.getInt( + R.styleable.DslTabLayout_Layout_layout_tab_indicator_content_index, + indicatorContentIndex + ) + indicatorContentId = a.getResourceId( + R.styleable.DslTabLayout_Layout_layout_tab_indicator_content_id, + indicatorContentId + ) + weight = a.getFloat(R.styleable.DslTabLayout_Layout_layout_tab_weight, weight) + highlightDrawable = + a.getDrawable(R.styleable.DslTabLayout_Layout_layout_highlight_drawable) + + contentTextViewIndex = a.getInt( + R.styleable.DslTabLayout_Layout_layout_tab_text_view_index, + contentTextViewIndex + ) + contentIconViewIndex = a.getInt( + R.styleable.DslTabLayout_Layout_layout_tab_text_view_index, + contentIconViewIndex + ) + contentTextViewId = a.getResourceId( + R.styleable.DslTabLayout_Layout_layout_tab_text_view_id, + contentTextViewId + ) + contentIconViewId = a.getResourceId( + R.styleable.DslTabLayout_Layout_layout_tab_icon_view_id, + contentIconViewIndex + ) + + a.recycle() + + if (gravity == UNSPECIFIED_GRAVITY) { + gravity = if (layoutConvexHeight > 0) { + Gravity.BOTTOM + } else { + Gravity.CENTER + } + } + } + + constructor(source: ViewGroup.LayoutParams) : super(source) { + if (source is LayoutParams) { + this.layoutWidth = source.layoutWidth + this.layoutHeight = source.layoutHeight + this.layoutConvexHeight = source.layoutConvexHeight + this.weight = source.weight + this.highlightDrawable = source.highlightDrawable + } + } + + constructor(width: Int, height: Int) : super(width, height) + + constructor(width: Int, height: Int, gravity: Int) : super(width, height, gravity) + } + + // + + // + + //滚动支持 + val _overScroller: OverScroller by lazy { + OverScroller(context) + } + + //手势检测 + val _gestureDetector: GestureDetectorCompat by lazy { + GestureDetectorCompat(context, object : GestureDetector.SimpleOnGestureListener() { + override fun onFling( + e1: MotionEvent?, + e2: MotionEvent, + velocityX: Float, + velocityY: Float + ): Boolean { + if (isHorizontal()) { + val absX = abs(velocityX) + if (absX > _minFlingVelocity) { + onFlingChange(velocityX) + } + } else { + val absY = abs(velocityY) + if (absY > _minFlingVelocity) { + onFlingChange(velocityY) + } + } + + return true + } + + override fun onScroll( + e1: MotionEvent?, + e2: MotionEvent, + distanceX: Float, + distanceY: Float + ): Boolean { + var handle = false + if (isHorizontal()) { + val absX = abs(distanceX) + if (absX > _touchSlop) { + handle = onScrollChange(distanceX) + } + } else { + val absY = abs(distanceY) + if (absY > _touchSlop) { + handle = onScrollChange(distanceY) + } + } + return handle + } + }) + } + + override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { + var intercept = false + if (needScroll) { + if (ev.actionMasked == MotionEvent.ACTION_DOWN) { + _overScroller.abortAnimation() + _scrollAnimator.cancel() + } + if (isEnabled) { + intercept = super.onInterceptTouchEvent(ev) || _gestureDetector.onTouchEvent(ev) + } + } else { + if (isEnabled) { + intercept = super.onInterceptTouchEvent(ev) + } + } + return if (isEnabled) { + if (itemEnableSelector) { + intercept + } else { + true + } + } else { + false + } + } + + override fun onTouchEvent(event: MotionEvent): Boolean { + if (isEnabled) { + if (needScroll) { + _gestureDetector.onTouchEvent(event) + if (event.actionMasked == MotionEvent.ACTION_CANCEL || + event.actionMasked == MotionEvent.ACTION_UP + ) { + parent.requestDisallowInterceptTouchEvent(false) + } else if (event.actionMasked == MotionEvent.ACTION_DOWN) { + _overScroller.abortAnimation() + } + return true + } else { + return (isEnabled && super.onTouchEvent(event)) + } + } else { + return false + } + } + + /**是否需要滚动*/ + val needScroll: Boolean + get() = if (tabEnableSelectorMode) true else { + if (isHorizontal()) { + if (isLayoutRtl) { + minScrollX < 0 + } else { + maxScrollX > 0 + } + } else { + maxScrollY > 0 + } + } + + /**[parent]宽度外的滚动距离*/ + val maxScrollX: Int + get() = if (isLayoutRtl && isHorizontal()) { + if (tabEnableSelectorMode) viewDrawWidth / 2 else 0 + } else { + max( + maxWidth - measuredWidth + if (tabEnableSelectorMode) viewDrawWidth / 2 else 0, + 0 + ) + } + + val maxScrollY: Int + get() = max( + maxHeight - measuredHeight + if (tabEnableSelectorMode) viewDrawHeight / 2 else 0, + 0 + ) + + /**最小滚动的值*/ + val minScrollX: Int + get() = if (isLayoutRtl && isHorizontal()) { + min( + -(maxWidth - measuredWidth + if (tabEnableSelectorMode) viewDrawWidth / 2 else 0), + 0 + ) + } else { + if (tabEnableSelectorMode) -viewDrawWidth / 2 else 0 + } + + val minScrollY: Int + get() = if (tabEnableSelectorMode) -viewDrawHeight / 2 else 0 + + /**view最大的宽度*/ + val maxWidth: Int + get() = _childAllWidthSum + paddingStart + paddingEnd + + val maxHeight: Int + get() = _childAllWidthSum + paddingTop + paddingBottom + + open fun onFlingChange(velocity: Float /*瞬时值*/) { + if (needScroll) { + + //速率小于0 , 手指向左滑动 + //速率大于0 , 手指向右滑动 + + if (tabEnableSelectorMode) { + if (isHorizontal() && isLayoutRtl) { + if (velocity < 0) { + setCurrentItem(dslSelector.dslSelectIndex - 1) + } else if (velocity > 0) { + setCurrentItem(dslSelector.dslSelectIndex + 1) + } + } else { + if (velocity < 0) { + setCurrentItem(dslSelector.dslSelectIndex + 1) + } else if (velocity > 0) { + setCurrentItem(dslSelector.dslSelectIndex - 1) + } + } + } else { + if (isHorizontal()) { + if (isLayoutRtl) { + startFling(-velocity.toInt(), minScrollX, 0) + } else { + startFling(-velocity.toInt(), 0, maxScrollX) + } + } else { + startFling(-velocity.toInt(), 0, maxHeight) + } + } + } + } + + fun startFling(velocity: Int, min: Int, max: Int) { + + fun velocity(velocity: Int): Int { + return if (velocity > 0) { + clamp(velocity, _minFlingVelocity, _maxFlingVelocity) + } else { + clamp(velocity, -_maxFlingVelocity, -_minFlingVelocity) + } + } + + val v = velocity(velocity) + + _overScroller.abortAnimation() + + if (isHorizontal()) { + _overScroller.fling( + scrollX, + scrollY, + v, + 0, + min, + max, + 0, + 0, + measuredWidth, + 0 + ) + } else { + _overScroller.fling( + scrollX, + scrollY, + 0, + v, + 0, + 0, + min, + max, + 0, + measuredHeight + ) + } + postInvalidate() + } + + fun startScroll(dv: Int) { + _overScroller.abortAnimation() + if (isHorizontal()) { + _overScroller.startScroll(scrollX, scrollY, dv, 0, scrollAnimDuration) + } else { + _overScroller.startScroll(scrollX, scrollY, 0, dv, scrollAnimDuration) + } + ViewCompat.postInvalidateOnAnimation(this) + } + + /**检查是否需要重置滚动的位置*/ + fun restoreScroll() { + if (itemIsEquWidth || !needScroll) { + if (scrollX != 0 || scrollY != 0) { + scrollTo(0, 0) + } + } + } + + open fun onScrollChange(distance: Float): Boolean { + if (needScroll) { + + //distance小于0 , 手指向右滑动 + //distance大于0 , 手指向左滑动 + + parent.requestDisallowInterceptTouchEvent(true) + + if (tabEnableSelectorMode) { + //滑动选择模式下, 不响应scroll事件 + } else { + if (isHorizontal()) { + scrollBy(distance.toInt(), 0) + } else { + scrollBy(0, distance.toInt()) + } + } + return true + } + return false + } + + override fun scrollTo(x: Int, y: Int) { + if (isHorizontal()) { + when { + x > maxScrollX -> super.scrollTo(maxScrollX, 0) + x < minScrollX -> super.scrollTo(minScrollX, 0) + else -> super.scrollTo(x, 0) + } + } else { + when { + y > maxScrollY -> super.scrollTo(0, maxScrollY) + y < minScrollY -> super.scrollTo(0, minScrollY) + else -> super.scrollTo(0, y) + } + } + } + + override fun computeScroll() { + if (_overScroller.computeScrollOffset()) { + scrollTo(_overScroller.currX, _overScroller.currY) + invalidate() + if (_overScroller.currX < minScrollX || _overScroller.currX > maxScrollX) { + _overScroller.abortAnimation() + } + } + } + + fun _getViewTargetX(): Int { + return when (tabIndicator.indicatorGravity) { + DslTabIndicator.INDICATOR_GRAVITY_START -> paddingStart + DslTabIndicator.INDICATOR_GRAVITY_END -> measuredWidth - paddingEnd + else -> paddingStart + viewDrawWidth / 2 + } + } + + fun _getViewTargetY(): Int { + return when (tabIndicator.indicatorGravity) { + DslTabIndicator.INDICATOR_GRAVITY_START -> paddingTop + DslTabIndicator.INDICATOR_GRAVITY_END -> measuredHeight - paddingBottom + else -> paddingTop + viewDrawHeight / 2 + } + } + + /**将[index]位置显示在TabLayout的中心*/ + fun _scrollToTarget(index: Int, scrollAnim: Boolean) { + if (!needScroll) { + return + } + + dslSelector.visibleViewList.getOrNull(index)?.let { + if (!ViewCompat.isLaidOut(it)) { + //没有布局 + return + } + } + + val dv = if (isHorizontal()) { + val childTargetX = tabIndicator.getChildTargetX(index) + val viewDrawTargetX = _getViewTargetX() + when { + tabEnableSelectorMode -> { + val viewCenterX = measuredWidth / 2 + childTargetX - viewCenterX - scrollX + } + + isLayoutRtl -> { + if (childTargetX < viewDrawTargetX) { + childTargetX - viewDrawTargetX - scrollX + } else { + -scrollX + } + } + + else -> { + if (childTargetX > viewDrawTargetX) { + childTargetX - viewDrawTargetX - scrollX + } else { + -scrollX + } + } + } + } else { + //竖向 + val childTargetY = tabIndicator.getChildTargetY(index) + val viewDrawTargetY = _getViewTargetY() + when { + tabEnableSelectorMode -> { + val viewCenterY = measuredHeight / 2 + childTargetY - viewCenterY - scrollY + } + + childTargetY > viewDrawTargetY -> { + childTargetY - viewDrawTargetY - scrollY + } + + else -> { + if (tabIndicator.indicatorGravity == DslTabIndicator.INDICATOR_GRAVITY_END && + childTargetY < viewDrawTargetY + ) { + childTargetY - viewDrawTargetY - scrollY + } else { + -scrollY + } + } + } + } + + if (isHorizontal()) { + if (isInEditMode || !scrollAnim) { + _overScroller.abortAnimation() + scrollBy(dv, 0) + } else { + startScroll(dv) + } + } else { + if (isInEditMode || !scrollAnim) { + _overScroller.abortAnimation() + scrollBy(0, dv) + } else { + startScroll(dv) + } + } + } + + // + + // + + val _scrollAnimator: ValueAnimator by lazy { + ValueAnimator().apply { + interpolator = LinearInterpolator() + duration = tabIndicatorAnimationDuration + addUpdateListener { + _onAnimateValue(it.animatedValue as Float) + } + addListener(object : AnimatorListenerAdapter() { + override fun onAnimationCancel(animation: Animator) { + _onAnimateValue(1f) + onAnimationEnd(animation) + } + + override fun onAnimationEnd(animation: Animator) { + _onAnimateEnd() + } + }) + } + } + + val isAnimatorStart: Boolean + get() = _scrollAnimator.isStarted + + fun _animateToItem(fromIndex: Int, toIndex: Int) { + if (toIndex == fromIndex) { + return + } + + //取消之前的动画 + _scrollAnimator.cancel() + + if (!tabIndicator.indicatorAnim) { + //不需要动画 + _onAnimateEnd() + return + } + + if (fromIndex < 0) { + //从一个不存在的位置, 到目标位置 + tabIndicator.currentIndex = toIndex + } else { + tabIndicator.currentIndex = fromIndex + } + tabIndicator._targetIndex = toIndex + + if (isInEditMode) { + tabIndicator.currentIndex = toIndex + return + } + + if (tabIndicator.currentIndex == tabIndicator._targetIndex) { + return + } + //"_animateToItem ${tabIndicator.currentIndex} ${tabIndicator._targetIndex}".loge() + _scrollAnimator.setFloatValues(tabIndicator.positionOffset, 1f) + _scrollAnimator.start() + } + + fun _onAnimateValue(value: Float) { + tabIndicator.positionOffset = value + tabLayoutConfig?.onPageIndexScrolled( + tabIndicator.currentIndex, + tabIndicator._targetIndex, + value + ) + tabLayoutConfig?.let { + dslSelector.visibleViewList.apply { + val targetView = getOrNull(tabIndicator._targetIndex) + if (targetView != null) { + it.onPageViewScrolled( + getOrNull(tabIndicator.currentIndex), + targetView, + value + ) + } + } + } + } + + fun _onAnimateEnd() { + tabIndicator.currentIndex = dslSelector.dslSelectIndex + tabIndicator._targetIndex = tabIndicator.currentIndex + tabIndicator.positionOffset = 0f + //结束_viewPager的滚动动画, 系统没有直接结束的api, 固用此方法代替. + //_viewPager?.setCurrentItem(tabIndicator.currentIndex, false) + } + + // + + // + + var _viewPagerDelegate: ViewPagerDelegate? = null + var _viewPagerScrollState = 0 + + fun onPageScrollStateChanged(state: Int) { + //"$state".logi() + _viewPagerScrollState = state + if (state == ViewPagerDelegate.SCROLL_STATE_IDLE) { + _onAnimateEnd() + dslSelector.updateStyle() + } + } + + fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { + if (isAnimatorStart) { + //动画已经开始了 + return + } + + val currentItem = _viewPagerDelegate?.onGetCurrentItem() ?: 0 + //"$currentItem:$position $positionOffset $positionOffsetPixels state:$_viewPagerScrollState".logw() + + if (position < currentItem) { + //Page 目标在左 + if (_viewPagerScrollState == ViewPagerDelegate.SCROLL_STATE_DRAGGING) { + tabIndicator.currentIndex = position + 1 + tabIndicator._targetIndex = position + } + _onAnimateValue(1 - positionOffset) + } else { + //Page 目标在右 + if (_viewPagerScrollState == ViewPagerDelegate.SCROLL_STATE_DRAGGING) { + tabIndicator.currentIndex = position + tabIndicator._targetIndex = position + 1 + } + _onAnimateValue(positionOffset) + } + } + + fun onPageSelected(position: Int) { + setCurrentItem(position, true, false) + } + + // + + // + + override fun onRestoreInstanceState(state: Parcelable?) { + if (state is Bundle) { + val oldState: Parcelable? = state.getParcelable("old") + super.onRestoreInstanceState(oldState) + + tabDefaultIndex = state.getInt("defaultIndex", tabDefaultIndex) + val currentItemIndex = state.getInt("currentIndex", -1) + dslSelector.dslSelectIndex = -1 + if (currentItemIndex > 0) { + setCurrentItem(currentItemIndex, true, false) + } + } else { + super.onRestoreInstanceState(state) + } + } + + override fun onSaveInstanceState(): Parcelable? { + val state = super.onSaveInstanceState() + val bundle = Bundle() + bundle.putParcelable("old", state) + bundle.putInt("defaultIndex", tabDefaultIndex) + bundle.putInt("currentIndex", currentItemIndex) + return bundle + } + + // +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/DslTabLayoutConfig.kt b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabLayoutConfig.kt new file mode 100644 index 000000000..3d4a48dec --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/DslTabLayoutConfig.kt @@ -0,0 +1,526 @@ +package com.angcyo.tablayout + +import android.content.Context +import android.graphics.Color +import android.graphics.Paint +import android.graphics.Typeface +import android.util.AttributeSet +import android.util.TypedValue +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.annotation.IdRes +import com.angcyo.tablayout.DslTabIndicator.Companion.NO_COLOR +import kotlin.math.max +import kotlin.math.min + +/** + * Email:angcyo@126.com + * @author angcyo + * @date 2019/11/26 + * Copyright (c) 2019 ShenZhen O&M Cloud Co., Ltd. All rights reserved. + */ +open class DslTabLayoutConfig(val tabLayout: DslTabLayout) : DslSelectorConfig() { + + /**是否开启文本颜色*/ + var tabEnableTextColor = true + set(value) { + field = value + if (field) { + tabEnableIcoColor = true + } + } + + /**是否开启颜色渐变效果*/ + var tabEnableGradientColor = false + set(value) { + field = value + if (field) { + tabEnableIcoGradientColor = true + } + } + + /**是否激活指示器的颜色渐变效果*/ + var tabEnableIndicatorGradientColor = false + + /**选中的文本颜色*/ + var tabSelectColor: Int = Color.WHITE //Color.parseColor("#333333") + + /**未选中的文本颜色*/ + var tabDeselectColor: Int = Color.parseColor("#999999") + + /**是否开启Bold, 文本加粗*/ + var tabEnableTextBold = false + + /**是否使用粗体字体的方式设置粗体, 否则使用[Paint.FAKE_BOLD_TEXT_FLAG] + * 需要先激活[tabEnableTextBold]*/ + var tabUseTypefaceBold = false + + /**是否开启图标颜色*/ + var tabEnableIcoColor = true + + /**是否开启图标颜色渐变效果*/ + var tabEnableIcoGradientColor = false + + /**选中的图标颜色*/ + var tabIcoSelectColor: Int = NO_COLOR + get() { + return if (field == NO_COLOR) tabSelectColor else field + } + + /**未选中的图标颜色*/ + var tabIcoDeselectColor: Int = NO_COLOR + get() { + return if (field == NO_COLOR) tabDeselectColor else field + } + + /**是否开启scale渐变效果*/ + var tabEnableGradientScale = false + + /**最小缩放的比例*/ + var tabMinScale = 0.8f + + /**最大缩放的比例*/ + var tabMaxScale = 1.2f + + /**是否开启字体大小渐变效果*/ + var tabEnableGradientTextSize = true + + /**tab中文本字体未选中时的字体大小, >0时激活*/ + var tabTextMinSize = -1f + + /**tab中文本字体选中时的字体大小, >0时激活*/ + var tabTextMaxSize = -1f + + /**渐变效果实现的回调*/ + var tabGradientCallback = TabGradientCallback() + + /**指定文本控件的id, 所有文本属性改变, 将会发生在这个控件上. + * 如果指定的控件不存在, 控件会降权至[ItemView]*/ + @IdRes + var tabTextViewId: Int = View.NO_ID + + /**指定图标控件的id*/ + @IdRes + var tabIconViewId: Int = View.NO_ID + + /**返回用于配置文本样式的控件*/ + var onGetTextStyleView: (itemView: View, index: Int) -> TextView? = { itemView, _ -> + if (tabTextViewId == View.NO_ID) { + var tv: TextView? = if (itemView is TextView) itemView else null + + if (tabLayout.tabIndicator.indicatorContentIndex != -1) { + itemView.getChildOrNull(tabLayout.tabIndicator.indicatorContentIndex)?.let { + if (it is TextView) { + tv = it + } + } + } + + if (tabLayout.tabIndicator.indicatorContentId != View.NO_ID) { + itemView.findViewById(tabLayout.tabIndicator.indicatorContentId)?.let { + if (it is TextView) { + tv = it + } + } + } + + val lp = itemView.layoutParams + if (lp is DslTabLayout.LayoutParams) { + if (lp.indicatorContentIndex != -1 && itemView is ViewGroup) { + itemView.getChildOrNull(lp.indicatorContentIndex)?.let { + if (it is TextView) { + tv = it + } + } + } + + if (lp.indicatorContentId != View.NO_ID) { + itemView.findViewById(lp.indicatorContentId)?.let { + if (it is TextView) { + tv = it + } + } + } + + if (lp.contentTextViewIndex != -1 && itemView is ViewGroup) { + itemView.getChildOrNull(lp.contentTextViewIndex)?.let { + if (it is TextView) { + tv = it + } + } + } + + if (lp.contentTextViewId != View.NO_ID) { + itemView.findViewById(lp.contentTextViewId)?.let { + if (it is TextView) { + tv = it + } + } + } + } + tv + } else { + itemView.findViewById(tabTextViewId) + } + } + + /**返回用于配置ico样式的控件*/ + var onGetIcoStyleView: (itemView: View, index: Int) -> View? = { itemView, _ -> + if (tabIconViewId == View.NO_ID) { + var iv: View? = itemView + + if (tabLayout.tabIndicator.indicatorContentIndex != -1) { + itemView.getChildOrNull(tabLayout.tabIndicator.indicatorContentIndex)?.let { + iv = it + } + } + + if (tabLayout.tabIndicator.indicatorContentId != View.NO_ID) { + itemView.findViewById(tabLayout.tabIndicator.indicatorContentId)?.let { + iv = it + } + } + + val lp = itemView.layoutParams + if (lp is DslTabLayout.LayoutParams) { + if (lp.indicatorContentIndex != -1 && itemView is ViewGroup) { + iv = itemView.getChildOrNull(lp.indicatorContentIndex) + } + + if (lp.indicatorContentId != View.NO_ID) { + itemView.findViewById(lp.indicatorContentId)?.let { + iv = it + } + } + + if (lp.contentIconViewIndex != -1 && itemView is ViewGroup) { + iv = itemView.getChildOrNull(lp.contentIconViewIndex) + } + + if (lp.contentIconViewId != View.NO_ID) { + itemView.findViewById(lp.contentIconViewId)?.let { + iv = it + } + } + } + iv + } else { + itemView.findViewById(tabIconViewId) + } + } + + /**获取渐变结束时,指示器的颜色.*/ + var onGetGradientIndicatorColor: (fromIndex: Int, toIndex: Int, positionOffset: Float) -> Int = + { fromIndex, toIndex, positionOffset -> + tabLayout.tabIndicator.indicatorColor + } + + init { + onStyleItemView = { itemView, index, select -> + onUpdateItemStyle(itemView, index, select) + } + onSelectIndexChange = { fromIndex, selectIndexList, reselect, fromUser -> + val toIndex = selectIndexList.last() + tabLayout._viewPagerDelegate?.onSetCurrentItem(fromIndex, toIndex, reselect, fromUser) + } + } + + /**xml属性读取*/ + open fun initAttribute(context: Context, attributeSet: AttributeSet? = null) { + val typedArray = context.obtainStyledAttributes(attributeSet, R.styleable.DslTabLayout) + + tabSelectColor = + typedArray.getColor(R.styleable.DslTabLayout_tab_select_color, tabSelectColor) + tabDeselectColor = + typedArray.getColor( + R.styleable.DslTabLayout_tab_deselect_color, + tabDeselectColor + ) + tabIcoSelectColor = + typedArray.getColor(R.styleable.DslTabLayout_tab_ico_select_color, NO_COLOR) + tabIcoDeselectColor = + typedArray.getColor(R.styleable.DslTabLayout_tab_ico_deselect_color, NO_COLOR) + + tabEnableTextColor = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_enable_text_color, + tabEnableTextColor + ) + tabEnableIndicatorGradientColor = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_enable_indicator_gradient_color, + tabEnableIndicatorGradientColor + ) + tabEnableGradientColor = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_enable_gradient_color, + tabEnableGradientColor + ) + tabEnableIcoColor = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_enable_ico_color, + tabEnableIcoColor + ) + tabEnableIcoGradientColor = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_enable_ico_gradient_color, + tabEnableIcoGradientColor + ) + + tabEnableTextBold = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_enable_text_bold, + tabEnableTextBold + ) + + tabUseTypefaceBold = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_use_typeface_bold, + tabUseTypefaceBold + ) + + tabEnableGradientScale = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_enable_gradient_scale, + tabEnableGradientScale + ) + tabMinScale = typedArray.getFloat(R.styleable.DslTabLayout_tab_min_scale, tabMinScale) + tabMaxScale = typedArray.getFloat(R.styleable.DslTabLayout_tab_max_scale, tabMaxScale) + + tabEnableGradientTextSize = typedArray.getBoolean( + R.styleable.DslTabLayout_tab_enable_gradient_text_size, + tabEnableGradientTextSize + ) + if (typedArray.hasValue(R.styleable.DslTabLayout_tab_text_min_size)) { + tabTextMinSize = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_text_min_size, + tabTextMinSize.toInt() + ).toFloat() + } + if (typedArray.hasValue(R.styleable.DslTabLayout_tab_text_max_size)) { + tabTextMaxSize = typedArray.getDimensionPixelOffset( + R.styleable.DslTabLayout_tab_text_max_size, + tabTextMaxSize.toInt() + ).toFloat() + } + + tabTextViewId = + typedArray.getResourceId(R.styleable.DslTabLayout_tab_text_view_id, tabTextViewId) + tabIconViewId = + typedArray.getResourceId(R.styleable.DslTabLayout_tab_icon_view_id, tabIconViewId) + + typedArray.recycle() + } + + /**更新item的样式*/ + open fun onUpdateItemStyle(itemView: View, index: Int, select: Boolean) { + //"$itemView\n$index\n$select".logw() + + (onGetTextStyleView(itemView, index))?.apply { + //文本加粗 + paint?.apply { + if (tabEnableTextBold && select) { + //设置粗体 + if (tabUseTypefaceBold) { + typeface = Typeface.defaultFromStyle(Typeface.BOLD) + } else { + flags = flags or Paint.FAKE_BOLD_TEXT_FLAG + isFakeBoldText = true + } + } else { + //取消粗体 + if (tabUseTypefaceBold) { + typeface = Typeface.defaultFromStyle(Typeface.NORMAL) + } else { + flags = flags and Paint.FAKE_BOLD_TEXT_FLAG.inv() + isFakeBoldText = false + } + } + } + + if (tabEnableTextColor) { + //文本颜色 + setTextColor(if (select) tabSelectColor else tabDeselectColor) + } + + if (tabTextMaxSize > 0 || tabTextMinSize > 0) { + //文本字体大小 + val minTextSize = min(tabTextMinSize, tabTextMaxSize) + val maxTextSize = max(tabTextMinSize, tabTextMaxSize) + setTextSize( + TypedValue.COMPLEX_UNIT_PX, + if (select) maxTextSize else minTextSize + ) + } + } + + if (tabEnableIcoColor) { + onGetIcoStyleView(itemView, index)?.apply { + _updateIcoColor(this, if (select) tabIcoSelectColor else tabIcoDeselectColor) + } + } + + if (tabEnableGradientScale) { + itemView.scaleX = if (select) tabMaxScale else tabMinScale + itemView.scaleY = if (select) tabMaxScale else tabMinScale + } + + if (tabLayout.drawBorder) { + tabLayout.tabBorder?.updateItemBackground(tabLayout, itemView, index, select) + } + } + + /** + * [DslTabLayout]滚动时回调. + * */ + open fun onPageIndexScrolled(fromIndex: Int, toIndex: Int, positionOffset: Float) { + + } + + /** + * [onPageIndexScrolled] + * */ + open fun onPageViewScrolled(fromView: View?, toView: View, positionOffset: Float) { + //"$fromView\n$toView\n$positionOffset".logi() + + if (fromView != toView) { + + val fromIndex = tabLayout.tabIndicator.currentIndex + val toIndex = tabLayout.tabIndicator._targetIndex + + if (tabEnableIndicatorGradientColor) { + val startColor = onGetGradientIndicatorColor(fromIndex, fromIndex, 0f) + val endColor = onGetGradientIndicatorColor(fromIndex, toIndex, positionOffset) + + tabLayout.tabIndicator.indicatorColor = + evaluateColor(positionOffset, startColor, endColor) + } + + if (tabEnableGradientColor) { + //文本渐变 + fromView?.apply { + _gradientColor( + onGetTextStyleView(this, fromIndex), + tabSelectColor, + tabDeselectColor, + positionOffset + ) + } + _gradientColor( + onGetTextStyleView(toView, toIndex), + tabDeselectColor, + tabSelectColor, + positionOffset + ) + } + + if (tabEnableIcoGradientColor) { + //图标渐变 + fromView?.apply { + _gradientIcoColor( + onGetIcoStyleView(this, fromIndex), + tabIcoSelectColor, + tabIcoDeselectColor, + positionOffset + ) + } + + _gradientIcoColor( + onGetIcoStyleView(toView, toIndex), + tabIcoDeselectColor, + tabIcoSelectColor, + positionOffset + ) + } + + if (tabEnableGradientScale) { + //scale渐变 + _gradientScale(fromView, tabMaxScale, tabMinScale, positionOffset) + _gradientScale(toView, tabMinScale, tabMaxScale, positionOffset) + } + + if (tabEnableGradientTextSize && + tabTextMaxSize > 0 && + tabTextMinSize > 0 && + tabTextMinSize != tabTextMaxSize + ) { + + //文本字体大小渐变 + _gradientTextSize( + fromView?.run { onGetTextStyleView(this, fromIndex) }, + tabTextMaxSize, + tabTextMinSize, + positionOffset + ) + _gradientTextSize( + onGetTextStyleView(toView, toIndex), + tabTextMinSize, + tabTextMaxSize, + positionOffset + ) + + if (toIndex == tabLayout.dslSelector.visibleViewList.lastIndex || toIndex == 0) { + tabLayout._scrollToTarget(toIndex, false) + } + } + } + } + + open fun _gradientColor(view: View?, startColor: Int, endColor: Int, percent: Float) { + tabGradientCallback.onGradientColor(view, startColor, endColor, percent) + } + + open fun _gradientIcoColor(view: View?, startColor: Int, endColor: Int, percent: Float) { + tabGradientCallback.onGradientIcoColor(view, startColor, endColor, percent) + } + + open fun _gradientScale(view: View?, startScale: Float, endScale: Float, percent: Float) { + tabGradientCallback.onGradientScale(view, startScale, endScale, percent) + } + + open fun _gradientTextSize( + view: TextView?, + startTextSize: Float, + endTextSize: Float, + percent: Float + ) { + tabGradientCallback.onGradientTextSize(view, startTextSize, endTextSize, percent) + } + + open fun _updateIcoColor(view: View?, color: Int) { + tabGradientCallback.onUpdateIcoColor(view, color) + } +} + +open class TabGradientCallback { + + open fun onGradientColor(view: View?, startColor: Int, endColor: Int, percent: Float) { + (view as? TextView)?.apply { + setTextColor(evaluateColor(percent, startColor, endColor)) + } + } + + open fun onGradientIcoColor(view: View?, startColor: Int, endColor: Int, percent: Float) { + onUpdateIcoColor(view, evaluateColor(percent, startColor, endColor)) + } + + open fun onUpdateIcoColor(view: View?, color: Int) { + view?.tintDrawableColor(color) + } + + open fun onGradientScale(view: View?, startScale: Float, endScale: Float, percent: Float) { + view?.apply { + (startScale + (endScale - startScale) * percent).let { + scaleX = it + scaleY = it + } + } + } + + open fun onGradientTextSize( + view: TextView?, + startTextSize: Float, + endTextSize: Float, + percent: Float + ) { + view?.apply { + setTextSize( + TypedValue.COMPLEX_UNIT_PX, + (startTextSize + (endTextSize - startTextSize) * percent) + ) + } + } +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/ITabIndicatorDraw.kt b/TabLayout/src/main/java/com/angcyo/tablayout/ITabIndicatorDraw.kt new file mode 100644 index 000000000..1b7f74926 --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/ITabIndicatorDraw.kt @@ -0,0 +1,22 @@ +package com.angcyo.tablayout + +import android.graphics.Canvas + +/** + * 用来实现[DslTabIndicator]的自绘 + * Email:angcyo@126.com + * @author angcyo + * @date 2022/02/21 + * Copyright (c) 2020 ShenZhen Wayto Ltd. All rights reserved. + */ +interface ITabIndicatorDraw { + + /**绘制指示器 + * [positionOffset] 页面偏移量*/ + fun onDrawTabIndicator( + tabIndicator: DslTabIndicator, + canvas: Canvas, + positionOffset: Float + ) + +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/LibEx.kt b/TabLayout/src/main/java/com/angcyo/tablayout/LibEx.kt new file mode 100644 index 000000000..2d040a90e --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/LibEx.kt @@ -0,0 +1,334 @@ +package com.angcyo.tablayout + +import android.app.Activity +import android.content.Context +import android.content.res.Resources +import android.graphics.Paint +import android.graphics.PorterDuff +import android.graphics.Rect +import android.graphics.drawable.Drawable +import android.os.Build +import android.text.TextUtils +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.Window +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.TextView +import androidx.annotation.LayoutRes +import androidx.core.graphics.drawable.DrawableCompat +import androidx.core.math.MathUtils + +/** + * + * Email:angcyo@126.com + * @author angcyo + * @date 2019/11/23 + */ +internal val dpi: Int + get() = dp.toInt() + +internal val dp: Float + get() = Resources.getSystem().displayMetrics.density + +internal val View.dpi: Int + get() = context.resources.displayMetrics.density.toInt() + +internal val View.screenWidth: Int + get() = context.resources.displayMetrics.widthPixels + +internal val View.screenHeight: Int + get() = context.resources.displayMetrics.heightPixels + +internal val View.viewDrawWidth: Int + get() = measuredWidth - paddingLeft - paddingRight + +internal val View.viewDrawHeight: Int + get() = measuredHeight - paddingTop - paddingBottom + +/**Match_Parent*/ +internal fun exactlyMeasure(size: Int): Int = + View.MeasureSpec.makeMeasureSpec(size, View.MeasureSpec.EXACTLY) + +internal fun exactlyMeasure(size: Float): Int = exactlyMeasure(size.toInt()) + +/**Wrap_Content*/ +internal fun atmostMeasure(size: Int): Int = + View.MeasureSpec.makeMeasureSpec(size, View.MeasureSpec.AT_MOST) + +internal fun Int.have(value: Int): Boolean = if (this == 0 || value == 0) { + false +} else if (this == 0 && value == 0) { + true +} else { + ((this > 0 && value > 0) || (this < 0 && value < 0)) && this and value == value +} + +internal fun Int.remove(value: Int): Int = this and value.inv() + +internal fun clamp(value: Float, min: Float, max: Float): Float { + if (value < min) { + return min + } else if (value > max) { + return max + } + return value +} + +internal fun clamp(value: Int, min: Int, max: Int): Int { + if (value < min) { + return min + } else if (value > max) { + return max + } + return value +} + +internal fun Any.logi() { + Log.i("DslTabLayout", "$this") +} + +internal fun Any.logw() { + Log.w("DslTabLayout", "$this") +} + +internal fun Any.loge() { + Log.e("DslTabLayout", "$this") +} + +internal fun View.calcLayoutWidthHeight( + rLayoutWidth: String?, rLayoutHeight: String?, + parentWidth: Int, parentHeight: Int, + rLayoutWidthExclude: Int = 0, rLayoutHeightExclude: Int = 0 +): IntArray { + val size = intArrayOf(-1, -1) + if (TextUtils.isEmpty(rLayoutWidth) && TextUtils.isEmpty(rLayoutHeight)) { + return size + } + if (!TextUtils.isEmpty(rLayoutWidth)) { + if (rLayoutWidth!!.contains("sw", true)) { + val ratio = rLayoutWidth.replace("sw", "", true).toFloatOrNull() + ratio?.let { + size[0] = (ratio * (screenWidth - rLayoutWidthExclude)).toInt() + } + } else if (rLayoutWidth!!.contains("pw", true)) { + val ratio = rLayoutWidth.replace("pw", "", true).toFloatOrNull() + ratio?.let { + size[0] = (ratio * (parentWidth - rLayoutWidthExclude)).toInt() + } + } + } + if (!TextUtils.isEmpty(rLayoutHeight)) { + if (rLayoutHeight!!.contains("sh", true)) { + val ratio = rLayoutHeight.replace("sh", "", true).toFloatOrNull() + ratio?.let { + size[1] = (ratio * (screenHeight - rLayoutHeightExclude)).toInt() + } + } else if (rLayoutHeight!!.contains("ph", true)) { + val ratio = rLayoutHeight.replace("ph", "", true).toFloatOrNull() + ratio?.let { + size[1] = (ratio * (parentHeight - rLayoutHeightExclude)).toInt() + } + } + } + return size +} + +internal fun evaluateColor(fraction: Float /*0-1*/, startColor: Int, endColor: Int): Int { + val fr = MathUtils.clamp(fraction, 0f, 1f) + val startA = startColor shr 24 and 0xff + val startR = startColor shr 16 and 0xff + val startG = startColor shr 8 and 0xff + val startB = startColor and 0xff + val endA = endColor shr 24 and 0xff + val endR = endColor shr 16 and 0xff + val endG = endColor shr 8 and 0xff + val endB = endColor and 0xff + return startA + (fr * (endA - startA)).toInt() shl 24 or + (startR + (fr * (endR - startR)).toInt() shl 16) or + (startG + (fr * (endG - startG)).toInt() shl 8) or + startB + (fr * (endB - startB)).toInt() +} + +internal fun Drawable?.tintDrawableColor(color: Int): Drawable? { + + if (this == null) { + return this + } + + val wrappedDrawable = + DrawableCompat.wrap(this).mutate() + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + DrawableCompat.setTint(wrappedDrawable, color) + } else { + wrappedDrawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP) + } + + return wrappedDrawable +} + +internal fun View?.tintDrawableColor(color: Int) { + when (this) { + is TextView -> { + val drawables = arrayOfNulls(4) + compoundDrawables.forEachIndexed { index, drawable -> + drawables[index] = drawable?.tintDrawableColor(color) + } + setCompoundDrawables(drawables[0], drawables[1], drawables[2], drawables[3]) + } + is ImageView -> { + setImageDrawable(drawable?.tintDrawableColor(color)) + } + } +} + +internal fun Paint?.textWidth(text: String?): Float { + if (TextUtils.isEmpty(text)) { + return 0f + } + return this?.run { + measureText(text) + } ?: 0f +} + +internal fun Paint?.textHeight(): Float = this?.run { descent() - ascent() } ?: 0f + +internal fun View.getChildOrNull(index: Int): View? { + return if (this is ViewGroup) { + return if (index in 0 until childCount) { + getChildAt(index) + } else { + null + } + } else { + this + } +} + +/**获取[View]在指定[parent]中的矩形坐标*/ +internal fun View.getLocationInParent(parentView: View? = null, result: Rect = Rect()): Rect { + val parent: View? = parentView ?: (parent as? View) + + if (parent == null) { + getViewRect(result) + } else { + result.set(0, 0, 0, 0) + if (this != parent) { + fun doIt(view: View, parent: View, rect: Rect) { + val viewParent = view.parent + if (viewParent is View) { + rect.left += view.left + rect.top += view.top + if (viewParent != parent) { + doIt(viewParent, parent, rect) + } + } + } + doIt(this, parent, result) + } + result.right = result.left + this.measuredWidth + result.bottom = result.top + this.measuredHeight + } + + return result +} + +/** + * 获取View, 相对于手机屏幕的矩形 + * */ +internal fun View.getViewRect(result: Rect = Rect()): Rect { + var offsetX = 0 + var offsetY = 0 + + //横屏, 并且显示了虚拟导航栏的时候. 需要左边偏移 + //只计算一次 + (context as? Activity)?.let { + it.window.decorView.getGlobalVisibleRect(result) + if (result.width() > result.height()) { + //横屏了 + offsetX = navBarHeight(it) + } + } + + return getViewRect(offsetX, offsetY, result) +} + +/** + * 获取View, 相对于手机屏幕的矩形, 带皮阿尼一 + * */ +internal fun View.getViewRect(offsetX: Int, offsetY: Int, result: Rect = Rect()): Rect { + //可见位置的坐标, 超出屏幕的距离会被剃掉 + //getGlobalVisibleRect(r) + val r2 = IntArray(2) + //val r3 = IntArray(2) + //相对于屏幕的坐标 + getLocationOnScreen(r2) + //相对于窗口的坐标 + //getLocationInWindow(r3) + + val left = r2[0] + offsetX + val top = r2[1] + offsetY + + result.set(left, top, left + measuredWidth, top + measuredHeight) + return result +} + + +/** + * 导航栏的高度(如果显示了) + */ +internal fun navBarHeight(context: Context): Int { + var result = 0 + + if (context is Activity) { + val decorRect = Rect() + val windowRect = Rect() + + context.window.decorView.getGlobalVisibleRect(decorRect) + context.window.findViewById(Window.ID_ANDROID_CONTENT) + .getGlobalVisibleRect(windowRect) + + if (decorRect.width() > decorRect.height()) { + //横屏 + result = decorRect.width() - windowRect.width() + } else { + //竖屏 + result = decorRect.bottom - windowRect.bottom + } + } + + return result +} + +fun Collection<*>?.size() = this?.size ?: 0 + +/**判断2个列表中的数据是否改变过*/ +internal fun List?.isChange(other: List?): Boolean { + if (this.size() != other.size()) { + return true + } + this?.forEachIndexed { index, t -> + if (t != other?.getOrNull(index)) { + return true + } + } + return false +} + +fun Int.isHorizontal() = this == LinearLayout.HORIZONTAL + +fun Int.isVertical() = this == LinearLayout.VERTICAL + +internal fun ViewGroup.inflate(@LayoutRes layoutId: Int, attachToRoot: Boolean = true): View { + if (layoutId == -1) { + return this + } + val rootView = LayoutInflater.from(context).inflate(layoutId, this, false) + if (attachToRoot) { + addView(rootView) + } + return rootView +} \ No newline at end of file diff --git a/TabLayout/src/main/java/com/angcyo/tablayout/ViewPagerDelegate.kt b/TabLayout/src/main/java/com/angcyo/tablayout/ViewPagerDelegate.kt new file mode 100644 index 000000000..a40df8500 --- /dev/null +++ b/TabLayout/src/main/java/com/angcyo/tablayout/ViewPagerDelegate.kt @@ -0,0 +1,21 @@ +package com.angcyo.tablayout + +/** + * 不依赖ViewPager和ViewPager2 + * Email:angcyo@126.com + * @author angcyo + * @date 2019/12/14 + */ +interface ViewPagerDelegate { + companion object { + const val SCROLL_STATE_IDLE = 0 + const val SCROLL_STATE_DRAGGING = 1 + const val SCROLL_STATE_SETTLING = 2 + } + + /**获取当前页面索引*/ + fun onGetCurrentItem(): Int + + /**设置当前的页面*/ + fun onSetCurrentItem(fromIndex: Int, toIndex: Int, reselect: Boolean, fromUser: Boolean) +} \ No newline at end of file diff --git a/TabLayout/src/main/res/values/attr_dsl_tab_layout.xml b/TabLayout/src/main/res/values/attr_dsl_tab_layout.xml new file mode 100644 index 000000000..423d215c8 --- /dev/null +++ b/TabLayout/src/main/res/values/attr_dsl_tab_layout.xml @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index fec68ed31..aa3a7f6cd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,7 @@ apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' apply plugin: 'com.alibaba.arouter' apply from: "../package_config.gradle" + android { namespace "com.pandoralive.shayu" /* applicationVariants.all { variant -> @@ -215,9 +216,9 @@ android { def server = '' if (variant.name.startsWith('huawei')) { channel = "华为" - } else if (variant.name.startsWith('samsung')) { + } else if (variant.name.contains('samsung')) { channel = "三星" - } else if (variant.name.startsWith('google')) { + } else if (variant.name.contains('google')) { channel = "谷歌" } else { channel = "链接" @@ -311,11 +312,13 @@ android { String tskReqStr = gradle.getStartParameter().getTaskRequests().args.toString() println("处理ndk 版本 = " + tskReqStr) def isLink = tskReqStr.contains("Link") - if (isLink) { + if (isLink) {//移除32位so库可以有效降低包体大小,等需要时再弄 abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" + //abiFilters "arm64-v8a", "x86_64" println("打包ndk 链接") } else { abiFilters "armeabi-v7a", "arm64-v8a" + //abiFilters "arm64-v8a" println("打包ndk其他") } diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 1c250b06d..81d4288bb 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -315,3 +315,7 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode; -keep class com.qiniu.**{*;} -keep class com.qiniu.**{public ();} -ignorewarnings + +-keep class com.qiniu.**{*;} +-keep class com.qiniu.**{public ();} +-ignorewarnings diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8054385d9..c0776bf39 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -97,6 +97,9 @@ + + + ();} +-ignorewarnings +-keep class com.qiniu.**{*;} +-keep class com.qiniu.**{public ();} -ignorewarnings \ No newline at end of file diff --git a/common/src/main/assets/gift_live_naming_bg.svga b/common/src/main/assets/gift_live_naming_bg.svga new file mode 100644 index 0000000000000000000000000000000000000000..8f5b594efffd8fa1eece97315d4e3b341357b39e GIT binary patch literal 145208 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

DMX1Z*PF-_QFAo6|G?181n}wHjB#Y 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 z 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 NXv1ER@gHg={|7~+%^d&$ literal 0 HcmV?d00001 diff --git a/common/src/main/assets/gift_live_naming_title_en.svga b/common/src/main/assets/gift_live_naming_title_en.svga new file mode 100644 index 0000000000000000000000000000000000000000..548f314175b2ffafa5a8529242bfe327f39c0353 GIT binary patch literal 6432 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

C7WOyt&s_wmKAKCAv5jO~*RcfO8I z7AO#fQ6%O{Oronz%*$x4?l^7SDUt+4&NrX7$G{4pyU@|ju91nqAeAUuHskSk9 z8qc(*#&<{~T!xAP-sDf9;${9Uz3c~XY-Wc;!`Gp6=ZbJTsJ1r{>j3hYn)a@utg`y+ zluI^UYxgGkB`gZP2~74j@++y@=;_~JQk#IK+)BvO(!H>5UNe~Ml-{Y#4 zpOm>bqj_T>JLRxz51 zUUJ9(f`!=*7O4c^9wfiEOI5BPVbJ47x0<%U{>WvFKhR-Dx)tUJMLs46y(U@>T<^Ns z>Lnfecd4GtnriL!KD;KDg*pe^9XLKtRe1)j2TWSMj}(9W)rhUDQX`N*Xke1MMV#qJ zl)pXp29dVAz?Kw&ro=aKNT8+HX9wGm=bY=HB?3U@QCH&!Yi?q$UCFaJP|InJ2}tTL ziJ7E=46tWTV8ebCWdvXo2J}DrLa?k9|DRp}XPSnx)t{iRyfjYhd9r}UzSEgI?hziL ziuc9CYNff&pdUjjmxYGe8seRRiy#_>J50z4dau+V++g(S7mZc`73${)=zTSW^BX%` z=_|A5T$Dx7mD*`_JHu9k7r<&{r|Oi@#b!#UJqlP>s;aXgo($A=7&d9}zb3>*h>#3V z^a@+APU5&S)xBoPlmRWHJXWljWDpA;)i8nuJ6V9%9kMQVrT*kJb*}F>$=YoSB>hsL zeWQr0l(qhvoxx*s@3u6Petf)fC#wbhJh1j|{CCz7Z(HJS1?h8=M%NyO&EiGSytdb~ zX^>?Ja+;8i`XKPnBMlSLk~ZT{sE0Y5l=c;dMarRjV@Flj;Ci0iv9umnpogD&G?d=Y z^|Wiof0$;oNt}1*Im|M7=cMX1udf?`2g!&7gQiDP&#VjJBS6t7y)R6zfyiQj<`=~UKS%}5|(lsgT_Z>OY1$-I$i80p34v>)jV7Y3JL(ClmO8@(IrN1p<=cQ)%nr=19fUT+SbmbkXm&xNq`*e_OqZ zM_wyQI|;#J<{oV)oaie1e5HhzznEj*C#@+qO=<_%r$Wc6Plk!V+iS}CS2(<7DJ-k* zLzuJ#_YuoH??;!w9zV|s&N5>hZ7>MTH4pIY5VnOnw)_YaFCIJhUvbQEWY>8zl?|Fy1 zb7sJc0=TC*PdlZdMJJ&C1#wz{#t1~~q|??J5C_(ybzShN7k7sOAhqfMb3ly0I=15~ zPLuQBrwnpY+R%U^65hER5m&Ivw4`7ByORuLX&VrstDKBr+kqY7<>!FYn*MR);zwRc zRFzFD06>z#^QkSBjwRZhitg^}4j1)`ITZ{MhNztVF90$?&A&UFD5oNudY4z4%nskc z!+F@9XWg$Y4q2M6GrKp-oj*^BEBPtv+?a@pX?jn#l}SHU%|n%m_iy7ucBp3|6V+U` zl!XEJ8$T6WF4=b37F^+qLPXeW+q^64F_cR2V@2<^#)#FEKF8pt>8 zK9wD;=FQBrU1=Isz-RK^wRC6wVVT{FbZ5@YL_ChApx!?PNugL0JaA^BzAY~YO^KBd znA06%%ES_pw6(m4Lhp63`am(U0r+#ckVv}EPtNYIO$A3{yiRhIN|4>{Q&qT=TF^M` zE^?8{_Fda4Qy;4e>wQ+@{VqmL+%!R+n*>HZCV zg|E0W&YX!y*Ql2(m8!_1-XEhpZ?L;w%FgAGOE+ews@;k85med0-md7e%9=Q$|5jD? z8_AwEV9(TVPoh$h& za|i^1|H|%q!y^eDquD(v;a+W-T#H)gs*9J39E}7geyCn6xtDxcVC*iz&deF>O`_9e zZvdZEPqu!lCiF~A;Emd(OrNWU5}Rp9_&_Rhu=}yuU7s*O z+glZqJYaqQ_Uc|A6F3|H-G6sVH~4^waeJSuW_Dj%S7gZ%j5e{8vHSgojhUilLY3|o z=>YMP>)(Ho+bn6cj5K8ubY}SXBC5n%=3UeK{W7Y6PvguqyffE*o2f3()~NLA zEdM8VPjN2+oFuyou#+KoY0ZSr?oUs=55%8=-P=p`!e6RS)~M9#e+dFzu{wE=R*Q6U zK<}_Sx^HS<4 zK2udX%-ZhNJZ)CwQp9`P;JaL9Y-W^2o&fImev_&9y06G+V&jxLI^B@kb?@3;%vCG9*P?eZSRL$s?1$s`wjnMUxx zfy(Zs=Di%@<6V)X==}_~%okWwZN|*M8W2;P*%MOm^x61Hz9^+vNxB-IU8l5Q*X3cP zqcX7xuR2!!RqsvB?DY{0Xq-UH$g3Td+*f)h{-uD;|C;^f4*sn#Pdl~29<{?>Nc)1Q z&ucYkdd>Q+Ixc9Rf!*0lRj+0LYgcMQFNmBpzIUnJ$2OS?CPHQ;bY~($J89)EU#nHj z^hpzIS5klVGjon{{-9Mu5HP@n? zv3l*P$RXa(!0u|KDmR(dIAq8X0{%)Bx|n|mNYW~y(G>dW0B5U(%_Y{IGkfauC!sC? zFIJka4|d06(EFj;{f4j9*UQ4{ zHZ}-#&{P*znH4$2`{4n<(fhq`GF=+EcXrQ#nV&9Z0HBz_QPe6v92SiI?+H&5T{YNc zccWoq|5iD<>xETZ1w5?xBioQry0is?RO7%VW z$bKNLpVV!iDNv>N8Y9@)9i$@1*Fo9+&Z@3+({(NoTeb*6pjU6qBZXaWxI{p}6WM>q zvm)8`Z0^2CzR{6(VqxV!eOa{$nm$*}7qsW9X6~a3_~>XiS39oPLhf@7%#^Hq&k%4$ zB2e5l1BZA2XXL-i1rK9>=dIdg`>x%toFe%>wG41=0&eXa58%8HdOw`$t{Y~=In{;Z zy|r#gc4zLR5<30wNA-h23VReIGhOc;^AS|JTiMRUdI$bb1w5noqG!e#kJD+HcC~}E zd*~$uq#0e&yBOF<#pwEv@&Q1)mW+EdOvbQK0q70GaR$xqn|u#Nyf4yu7j-j(-4Dm^ zI55*zJL+C`=sg5#rmE;2KpoM$c)y}>ya7Cu@bo z$m}kp``U$?x3ZrsLm;QB^p@V$e8;?6Nq#mQZ${5m6}#g$NNuzOz;8dXnDNfU`?#@s z0(QUScF6ir4Jr+(^tat`l2aa$rQzh>0|=1a6Uq@p5QMbzRP!tG1rM>}k?H*^tjNLc z$7FYPwc~n`of{eNNC|}urG?;P0}$U>2Bq-$qhU2Rpmn_fOmOaUemitLq;jWI=i>3 zNcU>ZVE2Q;-54{EdXp)Wdy7N9v~nlyM|xZe^)uPvFzqBGQq8%y&lu5CUqw{kh>fnvq)%aC7<4ZYRfybW}5RZ zQjx=pJRaK7nktv>wNfdNLA+NJB-GORFJgERO{?YTQcwcfA@GQ&3 z?w9+h0zNRk%Qz%r_ZOL&>K@a-``bp)=zM{1%|x4*iBYVPeDIxwqGq-$O?|KmyvPCd z5V3o`#Sl+?6_g|VW;KZBWBMd{DPMN5G8Qny%8Iif?J#cTvxzaQs zep1gJ$9nZmE?WLN%8J3%=PUNN4&5R4$$2Dd+xz8N$ z8{orR^%7}cL_iFRdOhzNs|36`qbdigdi~p^2q^!!S^>YXqW8w`cj3GbydR0(Sv>5r zk~>@6YwTVSvXlDSo2y3jL5MaX%ruSM@UYrFMsIB|e(>{W1AEajL9sg%?_;Ows6(a; zPs~&?6PEwjyBem(br^_33vuUWV*dZ1ebB_QR$95`8|S%j$6Vo{%xpI6)k>;~8F{~! ziS^ACusdXClHI`v!u=8ie{Z{;O3#RZm{H;#3#$X{hd}#gLq6+;d&}C|QMJ1yiFM3Z zK1@-RZ=EE0nV=uLh4r#<5>sMygZ9Hny&pukKNxnm(mm@qq@+)Se!3g*&WpU%Y^0rp zO3$fHtnc2t2+oRB?0y>TeoWK-*%~uy=7vaIRQ)=rPku>)U&E>l$P0`9w)#y-nMq0a zmuyx}p6#Ib!S2U#-Dh;&Ynv)4_cakI-y>l>x!dtdpx|$?`(2V|t29-5SKiFYFP$8Z zgP86(Pf6SEt1%-YcUDtBL-J$>Hrt`C97)#6bf3_lQ8@Wrq3U}Gh zsq!QKOjK*CHjN>7vZSL0_N~U0tnsdA=fSv{A!iOL-T!T)u8VXp0kM~#0=sVXK=1uB zO?3O%bTjGB5MRWM)ViuEtk&Gj!(jI#;Qjg8CkU3s7nzC)DPZJ%ucGk-XLd%v*cApi zNB#~EQi++Dt6)>9NIDsHu=|0GNG)bob}tEnb%2=29(ETb$ZsR}T4|bGr77}d-cw}~ z<;;kk^A6t37$s+4wT0s49t9R>k~rPe`mKg3DzJnwm7^z3bj8FYVgJsdp(m z$y97cWq|E;r2+V^!LHN4Gx#z}%xsH096Y%#3v3|$(GSQZ%GT|CLNgMqQur4kLS-@TzJoeFf zoAdr}A+sWfm^p+kW8#oS%q(hvSXDDBZ=&RZXfr!mSrak5-0W{s?H%h}cUDnlE6DDQ zh?UgLi)b}d4y)FBADB5zjmaETjdXu0MMy%=LdrMqk~R`aca8V5a*r4@zH4vd;dZUr zi*!%x)%;dYQ)ktG<*YgyRu5&%_)eyOda(N{-Pg*ah0G167GKs$<3NSG;fZ zu8?ZTT=1R2Sgd}AZ`Fv*T=9M>aDTcuUnbq=cf1Mhrpz9BUn6ju-LGh0PGf`iVcA`a z8DRJ8+KxthMIyQ55 zdprig_s;Hfly%>=%x=0Hth(fYRJ%hNA6n3h{|3mn#E~rY{zT5Is>U?=6NIiP;j7!b zJGN0XMZGU8;NLF#5t}(6ySp}3wUbFyl_{kL!wb0xtN|lN;R}8tv+Va&+$-^op?4)`7CKFAu=^p%D>aM12`3YN^Ajz^zBB@opNlNlViR&K%>Q+Hl<=A0|!*OCa2x z&Jp{yLAHRK?;Pna4jD!T{B20pm=Zeg+K6Q0eE_~kwD05c3gFk8s&U=dEo8g#j>l85 zIm~m~sRzqZ{F@k69Vz%wxML7fk~N0Jzg+Z@3cD+BMlIo+$E5ee)R-u{tJ%LByK}4< z^i%Ie{4K!x^wEri#z2Au(Xf!-jc;U67X|A{O`CDCnJc}IGShMJUVRzwLzbyZjLaLC zfVS#6!6yvjaFa&scLVwxU?+E$@E6z{nj~{MGrXB&p#54wnQdoBR%kC+kATkgjd;un zS|sk<_&U>ybrkT3d)m`MdQgJ9k*J}lf(@&>KYPYK9s}_G`j9m*T7v((aHGV}stuqhEG^rqbP$`!+L=L7igCD|E3I zxT`_Y6af?O3AbcVVg7LyRngU@m8?|L4=X>8Cw5WCM-x`XX5mETv`Gz5vHFgzAI zBJR66cDEA=G{vV_zSE2Bww}4+ypN96&e?s28dDiUK(%}8ut%R^7G)r75b^AsnkHh; zq{wm?(@!PAC8_CMEWMv=ZboludKm29uXIOtM;~%;?U2};k;Z|PnUuWWPi!bRn4hN% z8MZl?bjL;(jmG-ct?I0qH7Rx)^9YUx_d0}t6`9DbAL~f(e%s&4TQo4TVm?6{k~)wI z*0k~^(qi{AZRUJFk8v}{JE^Lp>Oa=FCpJjXsF2?E#{aKL6FYWK6N0_bwT=yAV$Yrro zM&0y(2J1owMk=hEsqPa8`u&H9(ywX@O|H%~k62{KXeR-&f0%a9%$NB_#FH-V3E90i zbVPZXkFa~<^nP9d@XxR^emuH?JDV^Q*pM%%-9L?L>17O z8@b~s;4=|34`aYmuk?;j;gyegJ#CZ{;2aIwbdnR`lhs?UDnr%^)Fm;2* z*>%u7r@B;4FeNobyT_;<(-bqv?vCCWyAOWv5$^MB;*g77mYosmaJqxDo;&*`Bl*o& z;!UH4dAnFxb#vH;Y#1(}ESH3T+1F4%^HRn8?#$Q?+QXaa+IIJyOqoVz7`Zc~1J0SB z1H?+cQs|V_sXFlR&JA}e*+X`ZGr+8{I&xy2YMI&Wm&Dn>!0t&iu{IWguoZ(Qyd|I+ zY3>7&VG=cZaN!;urp?O|VvdShH;LkX9rM1ace6oz;Js_tovE4P%NTa|#-!j0RKqMV zXP8DxVg?wHZ5|17GE-=}hrCW+0QD__RX4?APnT}<2^*xesmoeh%+ zvwFK5D?dIk=2uSw-`i0eLHtX-aPJUdir^ZJBhxp^Jc1Dd?oGJcPA2cmpy>`!<&LB^ zW|B~~4ibX9GEsD}CU*k3+I41Y+n| z*CG@C)A-m}woDSC%+P+|M$#?tbWBpRroOk>De|-UQIRl@V8kLjXZJH1{Yx6N4M@b~ zUo5*PxDJxL9#RknHhM;wmSN+5>n@Ic15KjWR}wF&4A>L(nGRh~AS0 zdqPQ0|DW~o-MWMJl5P_YLv~NjkP%uwLuV!{XNIm=9dPf5+Ih>4o8o8NXotZhF4r$6vHew|rE$JS8UGsl%>!*>Q zp=dW6D#?vkO)iOS`?JqJHZ#;rKipnwOwXh#8+@4@!r~6#w$%O&8?sJ!Y?_g-xZ-Uw zd!W6uBGbH!8Fy68G05MmWj-K$+=&%Nw!8K3yzlhZog~yV*-V?+>3z0c9^=su+MO|z zAu*G0;w157rW5(8ajnoCv4rtR19&&XBj}rL8m9r)-`JfG6C3KiGas@__cQioN6ySI zJV*fEEaYfSjQQXrYj0)=hKUV&?~C1ybU#xmlYbTIrt>MWZI;P*R(-`I+f-!aypMqd zy;YgcCskxJYUX!Po?Hbh*xl+zB-sr8$FXiQ?`HJ%^I-R`*xht8@dUx|Dj8R}WxLJj z%9*dBce_t`DO$#)A_w3*V0Yfh1Y+iQ5TAVORAN0JLPpAbrV!?(J8SYdx#4*OQQc@6 zaNW;!_%C&41Mq(r?0!j&$-4hKyGvXUil%2b z(_Wv`?z+;nry|jt8IQm3Lh>yJv`_U90p8^=c{AasOvtFNYPU4)h1CK0KYdPpV1wPs zc*rdBCj^b39_hxCeeof6L%Z3qI$|^Z!F@~21Us3`Nj3kTUgzOqwsYn?A`RKKcxZNq z4!(i*zh7gz(aEG-_YC*=AEa_>MT(HYtY2tC=K5ZZcSr9t^fV2;|9!Ztlj@ljnH0PK zFvVX}Fs9j5qWODYs$t4+itT$k1AGcrtd7TDl``0uee%s6iw3(weEwO$r#m&zH|Q9i znjt&*hBea(yN6kKPwtB1^Edz5u>Q6%HL)%czcb+;#D_mEYjE3-^{8qaR?j{*Gai2x z>=2j<*u8(wY-*?+y*+1e>H^DeIES&=e4`(WI{FLoJbA&d_#+PNzi;g+fQAA z{0jBQ+jzgf#TtHuwq4*I5TA_^nfEck3yIB)7LQJx8IUs2%Y-R{d>_NVm)^;zB&~3N z1N^iCKEKCVK?RmI%V!ko_BS#YAyk>%u$j@))D^qWZp4gXci92Y`OuMLbRD$O?zD`& zyu$tQ_3=jUQ1ZD$wq#c)+EA{dNH_Jk++*o<2Q)Y zE%}O?-b)}s6wly0;eJ@e=K;j1(7R=LUo;$=s|cKB>Bb$Xna}CtzqLz|;9g7m%gc6M zuTcaT)FA-a(C#PN-;Ld8gWk)HFCR?Rma>4mr9I^ariU;1x|CD@{YU8^AD?Ldd+9GG zMlExZ8N?s4h`ma#7Y+GB?lK7Y94YePfY*;8Q(mSlX7t^^EE+6}19*j|g8K^K|H1w5 ze}6wdZci`XhIgF{%%DcL0r(5gt}@IpHxr%g{sxvA?Nl8{)9_v-4X#|wRQH<@MvKMn zqH%l!{J;0yR@B(MC=xfWA~JK)B28yePBY{7tlVXk*vani!|tE-K9{blcY2?fJ*G=% znyO50%#L`LtZhQ~vVWFuy&0Vlv9p86yJ&ay%soc$^U7(<_f41O7}Lz7-GSYCho+O= z--F(D%nYaZZ$td$5P(lmXGX|bbk086{Y{)q%&R(L7{QzeB$(4J7mJygYXq?)Kg6H; z(Wsm6pN)byE4iHxvNI`ugOSYUS&+N#t$MQivCZzt?j*s!B)q%Wd}Qw2;9k})AdeiY zk8(F~tY_&ymH^;01o+sN87CrA@cUB3{9|aJw{Li|L_Kk)^y?YmM-fCoC%eCmbeE z%s8|YGC+$SUJT)+gh{#{?ma{LVw^>9U#!ZitlM(Ez`bZ07VdspX5NI|xtK{okt5jO zk2fv5G55AMXJO1a|8BYEH#F;fxkGnXM|Mgmbo?}|_Q84xOR19!p6_zhTEOg6Q+Z$qU>(O0JNxb(o87f~PYqTf zX)?VtV9hq(=4KjOohz6fm0F(F7S72zi*r2}v%Vx=#HMye0U7Je=FS?bC*F^(-Lra+ zw>!9E{XXCBa^bX*Q=FKrWM|jDiSi}oX{c-?l{Kp8f^@d=B6=2AWnf3;p4j~a{87O^ zD0VOWp6)e04A{4ssPzkT;lH7Ml;kb}e@;hksTNZt7x3wQy~*sOtd6kmB(g$7h#a13 zrtrP(P2}#2$Eg`|Z2hY8GYGy5CBw9P7|!SK9a+08ITLR;k=;~whe!4{5~sP5Z_I_H zP$4fYSb9d{i%!vn4B@KqtIh+bk-ual$YTCY){n;N^MA_Y%S1LH>M3Rp>t!krs}Xu8 zl06wWf0Wzw=25Qzo<=wh@Mpu5EDVlho|zvcu2P-G%03aOy|`3E{$Edo9aGFO#B+X+ zKIDJ-#Asa#_oQV`v>)3J$*^AdozK4<`{J*N1@kM|i+T^ksb>x-WjMD-1M?KqO|8sU zDTr?m?dnfPYQMuh0@hF4%;B~B{hr+&CNPm;{Ji9{5CH-@g_jw5f(##m0>)S6VdCm= z9{mLtmL2wuUk4gZ%#D|E<_tEjFk-nGs;9k?(1L6|K`qW_?$MH7iE$?8R?NN2>7SfO;t9KwEq|oRwbkj zPuek~0cM_%u$(A|vm^oNAhrz4uw z9=fX4n%4I?Km1CSA|#88Z>&#;;Fp0AqMSw5ZOlJ#YW&>5yi2^j8XGXrcgLrpLGLzb z|H~Sqeq7y@3u9H z^rOJ`o2Q^gxd9^VjCDfm2zLRI^88S=-9_c)#k9D_(OuY|D|l_4iQ(a?RKIv#l@(p5A2)i-5U?q!o~39I5@SmXVWU%|p9G0pJQgp!$OZ?RDKG z@l7^kGCuq$y^@%GXtY4Lv3nF455<(c3F8fqJ&Cw49U=zdFc2OS?I@Y(MBubU58BMYec>Qxi*ZF#KPr+{=DbLEN8t#ZYh4qe zdJVC|t`izJ|IOHa&1Gm*UYlE?QN}uE8fTmo>H;)2E-V-F1wtRv7 z#oz6CI(B3H?I*bGT0zZ~Y!3ON2x7sk`aP?@vAI!j{(!vs^wLa@jG24B2P}bjZP993>nk8s!t8Yv!k2&^(az)*aQfhR`C~BcOs?wKHoC>YiPoT` z9LrS%cEb5v#{I=nuk(+QC6jUjjNiAtL97h4KKKKC3p}&~J1F=(&-^uCHTVsbG6r(L zJ<839!e-TLK$QM;7zrikf~2v8P6H%hDJF z>s^5|z3Srkd_grfS4~RsK$s@r5y_(mVYSjO0{cysf;XB)%{y|3ia@fzJyyKoQjT^g zLv#ty9t=bg{fpYHsWFVL(!t{Nm~D!o!@+M_SYk_%lTrO{Anbw%MXX-|;N8kWqj+3J z^*pjlOmOV<(t4s4fwKNUEdWg<+1B-lU&NW3*bmY>YxDf@ zf@j$W6$s-FV1$ud4#uO3bE>sKxp>q~O{&m%f%Jo%JxSzE{(S$qrjKs2eaQ?(dmw9(e5+RK=~*f_YTCbjLcic3=7r;%LZ8P zXi}J*1W+-Ruin>lD%+RuDU+N_K(bZF{1RyG&|3yZVE+RB-iGbksI5nB_O)i2^#lE` zEcX0adyGTt82nHRba5EnwV5U=K5M#@y;4v_>_#n zqzw;}5vwSA>(u4Bsame1CUVCTH(jqzYcOjDE-?;{={*WWPl37C^-xCt)bO%xV|)+x zu?l+Lb5=#wgeRDt51u~w<1dDmzsMCXV+-gj&bg7Lp;!dS^$owi1$Td0LD2OYgZ-q; zM0MI1PP+=~Nj<9GZN_R-r9BFQ@uZP$eel@$y1E-_G{KG%J@#18ZK!i2;`Q1mS)>#f z%(ct($6jvpec|6fmo$}x2^S-c&3K7>Qc1qOb}k79{Uh_sl2BLpD`9!AD>Pvm-dVKG z2l)utsC=zYu)ArDaU7g90fn$jqTgMAQ^RS0C3`Q3vFgnJHgsC@1spSQ&7|#Fw zn{z_>oXz4>56)3?D0VDlijzX^|Jgee^+s_e3dij&d@@LS|ChZ;wWu~0XFA<8ecND+ z9pX6f>*%Pez`@fKKlsvSc0+}|?RB=dp2HSA2OZE?*^dJ}2K)QVRoQLS=4^~&<#%Pu zQ}*@u+JC$sk$j5EcAY*|7gTeB^*HdNBwfRvVIk|8f?LLECA`7D-gBeA-v{#hlMI|CF%*z;BQk3Zh*U|_9B$LQ;`sjU!B0aA?wGRyxVV!F<0;M zk@byex;epEk^brr85Zq-Umrc?hkavz-9pd?02~T6CP2)kopeK4=ZsXn%*OPheC$)qv3l|Ox_GSNN zGIb_wzZtmiEM(~KBkCRVCJb*3{CRZ`zX>d|G3wjOt$&HrqZyaXdi!THvd(hOYj_)w zBj`YTp3A(>G%aObg7DtkBA%Ek1ErW?b_@Q|z&1rR+h*XmPU9`*n{PLoG(Pl~Tf`iD zyS)(UQDh&<&s1}_KIAx#qY<&hYvA3t+nX|)ku^GZKB^73s|xnL(W$s}#oeKvhkI!w zmX-NtU(mu3@#J7KN;;rEXz#ES;_DtSxbw?GPnL2X@C~^gG;YZ6!K7E@OF^4if~}9< zJpP#SBjc`f zsN+KDKHM1U`fYsnbrP(;1s~g^MA4 zbniBIB}ZF%Q(yC`#;ZE|e)`&a@}f1NZ-&vV8~B(kRsAknbRg@zKN{${ z&kX#G3SNNkf^17kuYfx7u2tL$rlELoX5&9{3osY2Epg*mT;~vX2Bsh&_nch zTK3Ob{K5|)O&R^Cn$WL8K;kuL@-=PQR9>+YM`=Wo^=U4;cS_&wnH;7Z%og@;vMy2Y zlHO(go?ijwhR(CQogYXKg>peBz+rv0c?P&^wBVWN-QOl1HLop)D z59(F*jDGr1zvDMFO+_}AZ)^xb)Tm9h!w&ss_m2I(E~v*Xq63~qAYol(CO#wc>}@i2 z{`ocZ-8z~BfhXXP^_>kq5hG>fcSv*(x79IAQK-d?M_JoVKfR>bQPV{iNVdCxSxAe2Ew+~-^m{zp$7GG`)%Qo@W>sPXg z9eL0mbKW0-Z3w zb5EsN?{V~utd~xDL2ZZqBvG$8*VVz0rW5OZ{|gT@?)!{eEG>k`;Gb+5;z|6YbhhPe z{od#iHb1uPivEH1A+4`WeIG8t(dh8kCQ8e2o-Fp_kitPn=JRki1pF&&GknXjzTb4c z*h&BX^reuh-dBd&?>8&#(!^-sX^0x?I*~pj<}lM@F#|yD;-Yi#lGGrg)|qt9~0P?)sKay%cYtKagpQu9a=muDUoY{Rh}r@qj(+f@7zpj=A|yjw)#2VPw{5 zU!af2I+3A|FXV`AgYz>oy=qVOIAh(noy?~#d(>qyIXf3~z`Ahir0mkJ*KXAj^-|p} z(Ui!;)GhB4)?xogJ+6U}yQA-zf z+&!h%2zA`6gZLUqI%}5bww36mUrqEcX)tN8Pw?HC?FGKD(8-nCmJ61Lb;$`6R9uG~kQT0+(6y`E^ z%4NAA>`Nf*Qr-J)!uc_^BQtsX;>@%61L+T9KUv~U`yRmCfw>#4Czl-4u0~6Is#Wpc zk6u|=@OzJ~#;(8vv)*(*Q-~zgWB8cIwpjF)rF9WPP%sJ1>8Kma@O;l?3_8Zz5tpeo*fXP8ABj zEAbWkZN7^LoGgxlK!yQ6(02vAKauau^#^?Qz|C42qCMYr=rM2B!(^tMInPSk!NpwG zM-X?UyT5i5%|fEZ{yG=?B#*{G-i;Ws*R0yqXh?L zMH(8i@IX8!ABVn=SV$C|@n+^Qt-4(scGFQvDek&HCaj2I)(7y$w094KVaH3iGr%`0 zyJWrZJXH1$yHfWDyO_s>OEDVzOZYqZr$;b?)t093>mNqur({V_QKUh{nB{nN056Lr zUzD1c16Ji_ZsR-X?UjLdD}O)iIeSXn-4*XRn<}e(?^~XoVRr%##8))!U}dzfhR>TYWvji)Ihw-jo7`xpBV70k?1o2)}j zhR3NFHtrRX_ojV%z)+P;dnf+aMqxIfzV80U_21bVlD9T8O*heCfpHXQbM&%sm*S7M)rW$8gi6bI|i-#!xBGV4XYWfb?uL{-c5!GL$`Re}CZ$Lf;4#(73 zg3^$>v%wU3*2%(NMo6+ty!JDYUsWYzBDZSCsx0sN%gR1Jj=a0Q-o{b6j2frjBQH~Y z*+8+t1N9Zv9mDNi*)P(&cV%DqB&fxR%aB<_fe|5@$Il5qUU?x`-+}tN_s(x>yZtoZ z+X`6L_bM+b-7#_>+yPS{EgZ2T_anP1a!z#e!?wKpNTj;t%qjCOPVG=}NTu$o5Hczt zcx{)2+1LzwnFUY>fgdR*9<7o_pu7*(C*0NK-uuz`K_dTd7UvJ&%iDSUDtr&dWn74oAf zk|Q&80lkl-tIa%hWQM;M*sJ?Z2O;mK2vSBOiz|Y3$_~(1F;*?zv?KQ>$;8N~F7Vi6 z4inF)PY^Na&i%)C1tG72kKa()>p%1L*Ix&DSemKxP5LCk-p8_)5$Wz}j8c;srWWPi zsXCCN?oHmoy_-antOC9X-h03I}V9R-lr98Qu#z-NH|>6Zwx^0L3=&-i@znonjSU=$(5yjFFz(x zn#A3#Of`j7GjQs{|Jb_{?Y3gdFEJX-mo0k=T}~!C-c= z*r{Kg*mDPbtraWmjvKbEWmN`uwOw_(-u>y+5U6fpyqQeTyvLEEG1i$X=sUrmjo(j5 z&YXQ}{45NAZY1A(>b(>~{wa3x{5r*slbM`9@Pe?_Y$MFkr?+`UX&FBfAK@30?RZteKL8raypO^Xz2zxIPSbE>zWYB!U;g%7A0 z`d$D47%xdgK~(m5EC4 z3|D38`#~WqYn`Nu-me@y6ulP}KLGq^=M`j}hwA+$_Imtx0l&$O=Js}NT0^?&QE8S5DR2Qb6%A40tBCgL?8kre^}d7~u_?aUs6z3$h$KG2*S zzqj4ly(p|KEhX7(CTemQ%6-vBtGC*{f&F7OJXCqbyVma#?7Iv2o%-Xw-W})o0~<}% zO}u3>BHP=u`w8ytX2gPr=&dL^aB#Z+cVe7tx$%?@Ap z4y+1Gy_r@Q?Hug9A#fONWfBEqx0xAJy{{I#>+HL`+anr@`0M)>kMzdY=}~Q z*4VmDiCOg}I3?uGR$^=|&_eyNrK#6vY;(FmP7fHj>(St9^uwD(IW-vGHVych=8Hr0nAMJlyY~pJNVRmm__f3-*ra< z(Mb%f#-g37sS>_*b-x-!Qb*JSS-v8lb#xa^B6YrI)bJN1Dbd;2I-X87>AG$EJO6)X z`>AfS88?69kGFfG8vTDS8rmwOm#^Ll_-tMHd56f9AuLU#+8M8dn+LI|*%8(1nfGy{ z-E|3Y&&{mDTT(ixYBx!adGw~?zIuC!Oxnsqs`UklCu@M@3*rxKcumOPxR3|nE2JB3 z+aD7Dta1CTFt}~7`i97OryVdKu3T>Ge9B{+Xo0#ZgD1=7ulIM~T6g!%I-y#uUfBHV z8Mf!W+8Xe#GCSH(Rtqn~qe*Vcw%3^ay-eiJ=Qa|1q9wfU!eLbf8*WU>U=LC@t?_ri zumHAR&MN;JfiR)C6$6jjt`K_tywT)+b1-r{RXohGBJ`8h#X=9Rxj*WH{k!ZAGPZfA ze(q;=YC6j|0(xrzH$ce0@m?J#j_znsT$<3uV{ceL$f>DVd7uO39{u)^imbh7G#p;^ z_p3&VAViB6y%R>S(R;5UIwN|Y!6*?zbRx>A(Yxru7`@j7qt6h8XfsL}OmKhyyY9W~ zKJT6v&ztk|?C;rouU*zUYkk&!v(0P5*oPw<4b6b;T77xJnELp(+nnSpne6gaojrTB z6KDRj0@UH7k5o@{xH+NLy;wfa9&h7wI$Jfmqj33!&5)N*bU;10yp7|HU%^Z|gTK$F z%)_5{%5P}JIuq{>f2)xE?!BvPul+zT^659kSb9VESmA(94mWU}3($woMHQ^l>z^bN z2V1#u`t1A}{&wM&ZDXDEi|V7qEAh`yDdLBLvw`Nq%`{rY&}t_&Z2bd0=EmP0Kg9l- zqNnFT_Wo@mjL1Z+}p*WY{^f1-C zJGUG%6pfpKHhjamGT)Od<=W#yp6jXj46BCmDfiGjV`P7XvENKlq()>^65VD&iHn+v zf$j5iqcRJFt?$6RyYnDF&&Hs0!rPz!%sG>d6}MAuhcyo9pzsZi3NQxb)+I zG6sbQbLt)7xNa9PyKRtO3sYS1#|!ndWR&!7rf^t*g?w)DD`WZJ-(mnO{k!w)dsZjo zZO0|VFc);@EzVMt4EaHD2?ETkVZ0O#Fh+VmHLErIck2H`Us$_0DJIe7U%D|HSSu!! z7(%e-xgY|e;Ma-54GDLf0&DCFow5Cn8B51ZbDy6`tuR#RJw8j=`}NjzqoNfsgh`fa z_z@Rk@FDwEwA{7QcBQQH15s2~W&L9Ln}1*WLH|vj*VBo&6MAu;7qK#aR2ARlTp8ZJ zv=!3mtzWwJ`C(CqnG%6r4RHe*1^VvTKvTmM%gMv0{Mz9vu5d#GOu!6q>^Is1)3vL?E7i0TU&ja%?H5arD@X&8kxTb&1Ld}xAUU~K zHW<7kqN>WMT{_9m`{cs^%lt+aJPLUpd!IKuKdB*3Q0-BMi4A$>3UU*<&i`JWzFGjS zt@%fKK(BwQuo=I{PI5crXeled@dKs0S@?V_6||L@y!XfO9H6(Zi*=4ea&qrpN3lQn zK~a5RHktiS&-^U2<(W{#+Q>%VPWn|jvQx}8Log6;*~DmHuUqrCaTN2D*NhwXVsUW@ zQ}3}>wiKTiK8D;cvI>7Dr~|qaY?3|o-eLBLL-a1Zyp&$a=RN+Gu{`T;5nJFC`X!JA z63gZ)<{2iHll!NuCY|l;yHq-=>c4}rQc9ty;0mH5v5FR~VX~NaKWtslZYf=Q0bFcn zi`UzL3*xU56075{0^5#Kn7y|lsWByzC<8OsHk0W%p7XuxRt|&s5nyyi<$lSJ;p}u7c<-ga^noiXPVieaD^Yv&7p8B&B~!tt2h3pQ;+lIQF+r7>>(Be)Qzi9t;~9d zMmxOIVguXDpV{Tch!EP7sNW{5CdMs)jB+0IlYvovcgViwb&;*qEYDZp3g7&_zmX8* z-`Z7{qjxW7%l#!&YP;{2ZOXkd)@a-B-7oh!j5qjI<4pgI#{j8!5s_@WI--r}OWICi zozqaBd(TEZkC)t(6P@*^E$Y42wvLG0L+M%S%g)rOqmx_7(t8U&$=k~Fgfj@wkYY?}q;f%ix6~vf(f)VUzysm%S0ihBvc%fO&RV;7{inz; zlN1Nc69_9~%P*haNVTY}y=os&?Hoz9?pw2#e`RY^{#A+7hn3j@gID;$pX9unM6x=z zrCKyX%PS~XB&CieO@TRwRVx*CXQ29e>QbeyfwO zWY4P0E@~V|satBMs|C{)h=V)*GOKa5n8qoVlSQjhfUt{ z=Hq!+^{NFc@a69wl*)gN|B*s#gdJ~-&&!Ci-_abQvWgo91{sq5#PZXHBQCpR5|_y& z^t;6Tg_9d(ffu#1rhskN!?t<;TY@Tlq;9Ew;V`+9lQU0hpR>c)c{R&~5IV9zE{DPy zs{^7Y9Z>e#bztF$=Ar;tZez*b&lK`in4A9vG?ef*ELLsgek=VVZA{XbccTed7$TI| zpECzSlfk!pZgqzO>U(qN<#)S$IZojP2)82Ag#S2!fh&+F0 z$xMYPw zZvBZDX74!T>%Se%FghY8Dq8(546!Gh2bt61EdhjEgx^Y}5>HC=jBezW23*wsZ%SZR zjL2DvjGPOPM#vcr?EFhvdKQOEONv&+ubR7kVQoR(iI3?+{iZ3TUeVj%b91xDtq^lxUMiFe}<#Dz+H zMLR>dq@~(jt2ln-)g5^;Zp(g35X{udC%kSZh2~eYEPeSj;NCsu6`s$=0m+B~Uq9>b zw%Y-&hj}yV@9Pq@HnALJzg+DT0#D!Fx_SI9wu(H^CAG7%g7lVQ$?J;V*7IGNHOMp- zM10&?vUZEEzHv!wI|_@;9!YN`j|vYo3=1Q_R}xFh=Vfy{bw1>AebgUUo5>l1duVQ( zpZRUbS9sLxOPmWu)Ir&kZNKDmvXacSyVj-@S!r+n$WiM4?zGs7r>Pq&Xl}b%;jT+O z;`JdVG0_nPM`q^;?nt)pP(O+-EEDft40|KS^AkzdYlnA5Dw6j3BB^@%AZomDi1ygp zzPiT1*udolNm>e2Gqc36)I2`4Q0y!tb7X75CcPY`wI#0N>l{HLF!DLyG>a5xNT7S2 zKB9JIKb~yT-xh!*hPB$4n+vGbQN-5C^)*1U{PKBmRl> zZ-j;Slz*T%A`=USJr6Qz{chbS^VH0L015(hF4eVWzM%RE#C0#;$?RNAIDYKbr;g&c zm-gBW`0L~E>4%_x9(z#)Bu1dLfjO?HYWsc@*>N}nmFC5VTUnZwFYt8+s+^}LK1_dO zt~JqWdBIS~s5VPuuN5C++B?RklRg@v|GvJuPOiLD2rySDqEEmhttSGOweNl&4D3_?mCX&cCzC+k}1An=2DjTpSqr zI9NR&D3SEpU>-{+p>iML^8XRZed#!>I6$y&Y{=6MNB3_c3@%C=rNaO+b z?O|4Bk>9&)frb6tJUTmcFG?m{CE+(Z!&V^H|&M|Pi7G1T-))}HIj z%{V4P@$I&sC#z6{5(WAT28YP*#$pwi&t8nAbU`VLVQ8`KbYAZ+p%dz}_IH0#f%hD9 zgp2S@5b$nq+dY_s)Ansv=hW`3gf1OR6JGM$(IY`x4TXXT(l#IH(U3;`r`^`N)x3rcfhq2 zR*UV7d~1U(*aS^&!=%X2VPctrb_`RYl)wOvvHW=>$M5;fsl_?2=gmgjWih?!e-aaC zlXQzDLs|*tQ@h(V^G~6A12#+#j(mpCCi9>}_7RP67W8%qzL?+mKiy2p5w;+ktTWE4 zSl=K5PyTSRu{E8na^pq!XArhOrFQ!cE(xynEF;gRz|gmQz0|i5;(_v^>#H#v^r$#P zyI#KngN93?SrJX;TjhEh%KUGH;T%{WMp1&y5!%?W$Cv-!aZV26H%9H9PP9hs_zHUg z(5{93b+yEIdmhYWm9raBrK^SF8W5Y;&)R*VxP2V`u0TA@0sp{toRJOwc<)bkx6knU ziKjrlr(X6w-3phypo>F=)bINnM_V(w5Lca9mC7TzzFCqx06}N=OSL&AvZDRJdq1tD z4L03!IdxkXB%VRI4V<6k9Ef;~+&ayH=!^WUkLzWw4{)6yD@QwBQW498MualUjJW3nY(TZN5@#RgQnC={}k>@@e&vz1^ z5!SM%8c36QRLu7`w5AF-sVuNSxu|t}YR~r;byeDODzV&2kL>cx_e=eGlx5{3G7(3Q z!eVmz?s1`6D0=}7EXTFu=CJ)t?G4NL%O+v4GYwUSIgsXzN;RX9^d%`Qx^zJC0}~hZ zk^8@Ib9bIHc+z;TSQW1JNquG?Z#n3-K04)hWZQ#2`9ahkkd5W1k?v=S2XgxdmS$ud zW(DomfkScMJ=ZOti96XpGge<~80pyr3gh2W?Sk#`0o3j-#4xehX8m(=9Iqj$g zX&=}{4uu}ld4G-5NbAU!A^6Gxs-v(K5!#YampaD&fLk$s{1qGDn7cRO@#+Y1DQUI( zlnW85%%%9`ste)V)n?-6W<4Q8CDt(9Z5Po(wxUugaVqtm7`P%OSmYhde;>7S_Hxvb zY;`WRR%XoubV-TAnC!i=ja~3%m%KKDm*^MZI-vjQciQeF^ZR$dr)65ZzZDtRJi`S4y$Fe^>u8OM1C} zIzcEtZOU2L>q~CYG915|o8B2>D3#*vXz`<%V}vGgUdT6qNK7e3Lzh`vi;$Kq&svZv zW72HbUDJ<|OL}bP+3k7M%sJk%t?-xUOIr7`rMK)ELyIEk zhsT*O1lmt*k0fKd1*4G{6yv&l@vWoW&I4Qc^*zjnS>aeq*vx;GYaQ$*6a8-LS&tT8 zs+EH5Pnsi`j3E6Cqi8Lg*))BGdO_Sq%|vftS#WqT-KiUFAgHu~N$xyTH)rNf7g^zx zQGI+_M#=J+rhy)!dI$fvZnA!M#$(gVCigpHL(N07?lt+1>i7HKh6e3$o7>r--vVYC zS0l~A-}a)K%V(stFdA9RE_!6ihEpTc4x-TSB~<*OP$Kw}6IAd(R)v-MTB?m9AnpGkoKs ze_biJH^L>VgkBx6I{8>o9VLty~A)VKb~`P!$TD)T9cMPcXFb}w-)%{7xBRpxM- z`5{AMWY(`kyn?3hR~%c(%pzY^aX0qqs|KNX(GB(<8cBb?4J;Z-?1|m*t&~uR)1hfL z74S)J3e_gEvE3j?K{5(|qNRK#O}kdxGY`_@ce- zqRNh3WNjQkeGhc`^p(WvpgQ4f*cU4i(8wdfO{khC!FTDor)Aq%Pc!bGnLWwE^-(BS zSFl8{M3+~hfPB|ebI<+cyd#Vv%VDW1dCm(@VxjShWWB)*V7)lR2_`Eno)G;lyS3p7 z-<@-aY>kgf*b6H*5UX>6f@r9uhbOB5H2Y&o!J!8+t|`qoVpjV>K}Pze}k8Z~n2G^;>Ed9^$8lM&c@BZb2W^-f8Y|#Q*;R$ZP&xU1~{#uhw>)bEBxxEnc04h5CCRz~F$z#b6xMLyTQx;~$?4tJ`H_LWJ zv#vtuJ(inS;qH-J@q3Ztj`yzP_e4D$eUicGh;^BPp!;GGd81pcQ|@&G#t+!^gRSD% z*YBsWs#o5TzY+<R{PIJHTw^r@j!rlP@P?U!%GRH$>4t$5q=+nky+POfPtQUgU5DM)jUh z@mG9T$HN_70)Hq4{($;)<==ID!ut-eTS}C|Se< zDFdX_-nT|k)cB7vzg=~?Ybxw7#tB2;2sSPto#&O|BSr23ZpCPAD&MY-jgAhD=EE)p zYV|O>&mf$g?;^JgST~Z5%J#8bF-+67FL;x~FO}Pj3q3yZgR$aRzr*ZN*{l!o>_w7l zFtgT(9A%r?CjSAdZK%LETyE;3?C&FU$HuoC8Qpds-VeTz=%;~f4KKnfS7*p7iC3Z- zu)@1jzf}zCaHDr7HXEJc2KAULNBq5^H0a^fxZ#?9Pa6C>}ff3Zv^nv6IA-! zn&&ikaJPHVR3r=hJ(X7)W9DJGR^YpdxaM7lkc5yZ07UCb4jk#TI!w3$Cnx_ne+fqF ze@05bsK(5}Cj}_+6o7KmE+FC3&o*Y4nVo)nM&`-a#7ps|yvMqaT?gKo*lOVo5EfnK z)S=6>SWuT%8-=T-)>~?^ambFLfBf$+M9}UiCuJqSoX<)poscyibJ^;Jp z;>gf9|CP&W`{*2**wEqIvcF5WTa7o=_CQ{&$ zBWFiyYMP;n(S30u9LL$uI(6%WLz*XF@1}KWc(jP}Q;mE7m(hD(jQ!mkA_$`VW26ng zdHt)RxK{_T?GIh&7+lt;$1ugeIsY~P zeAHZRy=BB?fHn@{>H76Qb8q)}chtV4OU89R!Nw1~>Gq)o)oJog;hg0N5f@BCh=vSd znCg{#dVGOt?Uw#|7SBa)GX$Guf3ZSp|>k0o_J*uP|R_PCC2zt7Ru$_?|fz zA5hoqVTi=T4O(iO{9=zR`96aUnXhz_42$8x(8-)kEr_OT(f~O5DAwE@S6o+@Q1PGJ zVO_Xf_rb2zo}qDWzbm< zVp?{G=}Hs1Pe$O4)Yx|kJhXjfTN-Azp8U&++1;9B75Ls{r=SYvj#SeUmym8>kQcQ9 zh}CrLseiCRfhAjbcbRO``zphhMlKT;?Yf?6$yYF+qxFLJbRGqsrzCPmrIr;~Kvkb8 z(K$Ij!L)wnn*}Dkn(J{v;aGFA)tj=-^qYV^lz1KP%dmV1*uhzMxZC44yWrQ6qm+T+BDu?HN*`mzXEXtE|x^SPd#dKa@V?Y*Ws83dZqxs4DkK; zT9w0wz9EXFRnxx8uhIYI)C&9ilojUGuTpb7IrR)hfC^evFrE7Mfi`JUe%Sjti zr%mCO8cc8N>K_8aIs zx#LDVmO0pxCv(E|05T%{DbZ;clL9NCR>dyghW38{avnt&%FlL%0GjoVHhIX z&};hJRgbQHrnMvWZiV#n8D1nUmSI2J0fG!T5V8iEd#H&GX7e?D0&-$Qm)W;hq!R)) z%)%Y1y#Re7B0KrrQ&hLhxR=eQVCxt_=uS^U<(jAK(mUCpqOJ0QfvMN)QIgTn=B3-X zRtkzkq1hTXX!-@0^n|k=c8X4A8X^oqWyYI@J&MA9fC^!PDj9&x%}WL1pUmbsp-~z_}fQvFvBnuy2LtyfXmh7I(~;$TSBwC&V@vTF(z_#Gk+To=r@#p zMPV1<3Kd<6IP(ipbI`LdHh_u)q@IU8Vpn;-@1UkEbyK~aKkB3pcM$Q57A^0X9$#eY z)x%*1HMhAyH3njB0SRT1oe^Htr%7hQqVL#+C?hDM6oX{}lYK zGKF@{+Ev-xnrgCNU#+}zi`VM)R&F5zP=}wSE7bHeHDNz-Ob2B7PDs}ZwCJa|lL`bX zzik?fOL*bonXr~Z?4II3SiBf7O>zEAK?Ic%)0fW%^^$Uq0UI$ zlkvsi|LP=qwx)O?#;mWe2m#LsfGA1_ZLG0I#w{qldcNgt5zZ9#CX?69&on$;HFgtD z4*r}>WrSUqh=y`)dIcE-K)M}vtI@p>vOfs;cS;ZT93!@|t()d7FgNU6*`Y0BpQDP5 zk^NtN^UYGaJTU;SSV^XxKHk$RYF-7CcSa4$)}&@H9_`8}i4Ch^oE@o?NKhB(pIw!? zd`u>pO3p5sbj6+N=IRP>&A{rxI-jxEN^8KgA-*v(Mhh%XufDn~D5SUH8k~(Sgwb(^ z(1!ONzdXzA+B-dJ-9uKxG*PUWzC4kgWBnJvu!A09*5#6}%8RrRd|&AwrkzS=rlwv; zcnUwnTguWaHiCx_O6RB_H4~0LnyrU@tM-P0$+yt;q%3A;LhQANxVvS?)SWcP09zky zWcYf^m@!JY!--nTdmY-9h_=h>!bE-51h(S$xW95*qMKuB0)v=RT77t+^F$Wnu|>1^9>`mWN2-mpg& zWV6O79=UAc9Q;y+G~h{*aWP%)S>Q@^wT^D?f6ew?HOxO1KX3gU748$qI1zpDv*h4& zO7-N8IfK%R%_lIn?}l!lcbW7seIh~JxWOyK%fThnNE^knj7x=3tV^VzV31^HEd8Na zPl(OaL?8_Y>9vuea|H^yH(Hv0f6~|FTmkYRfseg5HOo#2lKgO{zixqEx4uP-<(;}B zSlg$G&Lax=a*ex$*kpPZJ;?IH8>m<} zGH{^scltFlYWo0HolT-RaQnHpdPSZF8p@CaTRdrCG0ApbjSrFh)?V@gTkx`;J-CbB z6)4fHE8q$M=YTigckS_-g_t6@K0=({v7Tfi>WElyxulzYFn5*cp`p0+42R+v%?(1YL+%v+c839$~no=1=gQ!86WI>)hPT*JF>STlF zH?(4h2(y&-)d7=u#G|Nh)hQyN)Ood)DWZ*@;AmST>{#F)aJ_Q!rwfq|DXRVnO67T{ ze3-*Uu7=#7%z>A3Uuz)0FE=-V-R<`yZ)0ENayExI@uy?U5tt&c8YCmzwrf5u;r zm7`q_7pu5Y{oNBUqVky_Qe_S9$Rx$^m6}J@t|H>;AIVofM6}98%4n|hJ9g<0I3A6( zqr$zXut@2pTV8pyR^&&NjS6+yigOdnEtoqQ?5n2#Sc$3`;4 zel`H_>WA^uIi`LEaq={o>p$ra7oreXMwyTKqr&$j@xx_=zSJBWl!yn^F6t_QM&l8q z^Wx?KEJ}s7t8ly6)iMYIEw;|8100G~ZL~1)lRP5ZmN2Yb=PIg=2!zd3m^r*0s3O)D~&|s>@@L3Lwy0;b+o$u?3ZUXkn2-{N<(OrseAbWm= zb2Z;F*~`|_<*fkWF_;!uplE-gtLkx2rMtyFABzR#vIJ1vz#OeQwm^af*bs13!d?nGn6 zq7Li3w5f~9E~oK|J_Q{2oS8)Lx~{4BRYUEl^5P3BVnPeqLF8|+e8`~I(i~&6ahrXl zlKk_!EM!x0SM&xOC==-*i6V{1(!yt>(<|O`XSq(Hxt&%RgjJ~jYfa9zj5@fNp{^fG zQl50sWW0y}g!MeD^R1rU0i-h$cyHZ46Z$pj;uu1Pr`W@fa~SL`K~8#s(>4&HoTInj^9IAAwaNHXK7(6tY}u^1PYBVyLoKKPFQ6!@Z()(G<{ z@X}S68j=Q?y~Y57(?2T z#h05X^r+p6q)?LLM5W1NH~izpTnW7+*a*OblB@tTxz%jRTa@n7H$!}pm@H)VxT<4C z5CCk3>AM$rR~p@(LJIS!c#Zdjm53BGEIUa*ju)Vt{{?e56f8g?VPmd)jF?k+!yGa^_RL3bh3SGWF6?#kJ zXa(etoX+c?@^PU>?y2phThz-zmE6vqpM&GfsQQ#KUSGA$)tJT1sg6R_SK%A42KBhc zyBKIGc~RQfSbK!%ob_XQGb#x~P-HFAZ=HJIrmIG;JHW0jD0k~U$O;n@d(?m%M5}jM z6r7N|%2rUYy}QQGMCV66BI*scj_uJ;+bBRwvzVK06!1TItftRJ%(yrmR+%*p0Aexd z(D4^>rl4;J$f3x#rpFcIG0$u~;A{8B49$N396_{SL5k536x$#qv2@q_T-y5dzsMQJ+4hTjrWonx(ct(^UKR+5cLc~DlfkhGFyK9I)+c91jl3GIVFRc*4)P- ztLv?TzwVnU_AZBSneLS4S?bAW{7-t`euS(Wb1vB|-*Uy0@*F|G)rZC_Ge2w~xEN-@ zSX8tqIT7hu)9=COaNFmZCx9J&;uIhdNC30&FS23$91g|b!cR0q=gY)`?}3oUDCDm&!p0jkoph{~PTEBe zFPx<=Z``aeB=FbBp9W7rrj4*@j^(5(Z*?WGms=sHTC1B7T!~yQ--#?i*Dc@kSe5U0x2uPWn@pv zNZS;3oc8Gety4duJsp*}4e9UE+Vy^HYZjgs8 zLSwz)LRSM5WlTGaQ!Gr>niCc9GUI}expGFQrmsH8WL-XNuqCMb(H{e z#owbpTnT9!CN(`A0fOtfqCrmGlLre_L&6}RLZrBfUGCQHMHkCaqpbp8hms)m9FyAUwUx%tM_M zfygs-`H&2q-$l&Grh|c!@4pAtgaT#?9Mpw#L-szMJod5Zo^0fkXkX6xX_n4`DpENu zwExekNMfL~EQdC|bt#SSooreTevmzBf3y=gOkireSYf9+3*SRk26XTC?~WXiBw?C;E=qWpLp2!55!JoLjM~CNL*27+i&AEQyPv#0q7@|3F!mWQNwMT=z1$2;Z@3BmHjHe*q0#BaMf~ z{ZHr$g~;57rvyf(MlvA!oq5J>UmM;z0>RY#TW_`YI?wZ>{0_5!dm8LGV)>dtk+{yi0qs! z=Tg}>D_VH!3%zPr%7eQH%`fc}PU?zM;)JZ6z%Y7Zx$K&VkbVZxXv4u) zqFDyM5a`3K%>WjbAkQ zQ&mAl2|r*-V$z|rABjS4^p=D>ahnhO7f%#^sh5|~f3R0qF6K}YUZ>4YeXCq;)yFwu z?kNVJN6T#B|IHuAD-!4_ggsNhhiu8?Zw#{*p@NEn{e3L@ut4W$`$BwNVkSzSV;^jH zJ|VL&9-f3ok{sOItd~?jU#}PYDbaLYJY4e>e^1xM@fK#C9d~NCU%fa^7MsNuzVtcB zb-zdB7mBf#MYpJ~0zuUU(bffoB zd0a`=uL1xXw$r{^Oe%PHkWViPT+fSIs2+73xki5s)0{(>ALAEt5Uq=w_xe}x_D5`X zeV1~!?)>={Yh0k|B}$Dr?)XQ*nH+VqRXb0?#`C(Jv^b(E8L{mcwEsd6`1HhUAcwA; zEtxum7Bs71LQoi5!^J{F2zXmf*_oL8Y$tkIl$dQuPX&<&xbn?mg4F&*)3T*UA-NeX zk&dO~Qt9Jpw=R|rbbu51xVkxXqxz?_s;na6)4v+7@onx+#hSj0IDD9f>w`Vw3+hc~ zd!p{-cx3c>VLd|806oY_)bik=0Q^a3Z3F%TNc@M2=q{d1o8hD)Gx=wjidw4+#d%1J zCU*v9o@7dVvIIUi>^=yT%8&^ZFq3qGG1!eP)V%$cRprtp5OwZS)xgw(b4z&LCMym2 z`{G?8Z|r-PX#S5>N8@N#GHKXK%3_JIc^8Hhgvwq@#HvKNmVuA-w`=wsWBXIclZjAy zp+!?QntE!e=-^pL@is`UDFz-`)M5IYC+mQ|u;D!$6x-=sf52-df?~ZSMn962 ziL7dAj>M=f>axaD#HO>51^+FJ26iLDtidzkspC31$YR@}sXU>KIT;lcb&YEj_${X4 zXy(E%T`gUa>)h7oN5n4Qrd+}2CV8{m35h2|6*M{5={)B4V5-7jucp*M!gvtL0d86` zL6W087KjCGedO7of2*fQP=fXWQnESQAfp+A9xjWO+blCwZQPfLK^&!ZRq`l@^ zX2Q8Q)@Mo$Lv?~a*dXb|NM$l9gx=9UL7?o9)5k2zWP<@e91_<2HsO~xZW_)K04~we) zrp>PRpP3k$Cfx72(3-;ylnEy&TVYdaQCHC1?zLPqBt}hFIJ4H;Moc9Z2w-ag%s;pa z=T)1c0S8t}}gOvO4v zg&q8!A2o=qyw2sE<*@wE$Zw(6s10H2oMPhit%a(RAz1g;^p`#OzsuutA(NQFnl58K zpYb1D=B(#;xGif zb{0s>*r?!GeJb%>E?7|p5>oEIBA)?q#4=PtW!<2ZEWvtH_R!UQC}hEdEuhj3GJ<9# zK<`d5TiLZW;?%sT@(dNZJ7I|phwCW9!W*-_z!$K0bP*CzUS?Fr3=&xaPs|?FG z1a8XY2qNa8P!_W~K5>&;1QR-#XAfQleRN4R4|BxYNJ9PR&kVmmQD-WOVGTdto~gb3 z)?WSMIy}1-@@F!0F&rWNVKVs0&+h@KT*Z`(Xzi=7|?o%T~DZZT^n;W!wdx(%FTo?f4X3-;+CcQu-^YO;hJK z6#Gf2P0rGxY3+J|$Ja(#DNG+a^vwsP5is<*7!+q8 z_owxNkxtV40#}>HL-pzQZ(Z3#!OQX=nY5kSByx@U{LPXP``ty4kGNi)hYX>Wa*vrU zc@C|_Wt0e7xs@hJ@is1|W*1j=Ub^Z!k6@83-@@H&cOKUo38&>kgB25f?*TopvzEj0 z8P0y8!|^%>GxRey)5(19-%C<%kp}zzLDD1VuNyxH)8@?TJ67yI-28AE)Igxnd1wpv zZbkNvLpy`kZi|$O9ADJPGn&WCdtham{0E#)BkE=9%vA!|o~+W!H@RoW|5tf6yBYRT zZ^z2tR`)+t`p%x$_ecZ4tUab7=G^-4mpaw7n3p0uuM_jb;I~}BtiArQOQL^o#*o@z z%j|4EvqvsDkD{1bWBc~ynF61`SXF^Dsr_SAN}R6BS#H^f6J08Ng>!`3`5~w3%(!8Y zqrx&=VVmwaEZ`e&_p5&HvSs@HpZYOk;^!*Z7?|L;7?d&M+YICx0K#iVGJ|u*0<^J| zak~2(^4sz&X{-x^0B2YnI$CT~BW0QgWFg3v$(I3Z2G-DaO3#qm)E19TY0v=bzjbA^ zhmnBgxRz%J(Sph+)jp!P%@9s-8hQ-#YZ+QB&bS(K5mtA36#d( z3OPrVfNLLkVlV5ep)P`3;V$BUm0QoCnsoHxk{u_~A;(P>91F$B;LobaAAJPXe_KDk<@97tD2mwEnB~SOVrU z=7$c)w&7T>!)WGo^JmNB@UD&1=Y#$10qyyt(d+j!-wrZtx-~GKAV4rEJ($ z^W(KRbA)Y#(pwx-&9c=YLpIFCd<_It%8~nNQB^vD11C{3_Wnv;0QqL&J*G2A0r}O^c=5O z=~d(g^&&bT6yCf{M6O#@L*x&>n$}OGiop1hh3P^o%5bx896R%?Z4vzYkt4J=m=ma7 z%_olUxx(~C?gTa-!TVdNy?o-+#wIk|=S!%W+QUF+uD&{V7c2$yT)3e0had{7yxpmB zPfc6pG=9WaegvMolIEsVG8g?+1)rTdF3r7#GSI?k!ZTW)Xs1gNuXp`59I_RTW|ty{ zxwb|!ur#+oXaN-XWNA%7UHb0wHI39%aKil3@>5*R))HtBHoDyvPx`elfLCHh@U zs%21%AY;ei3O5DRGSn|zlXObVKdymq<@l;V_Sm_PS$+z_&diWn=UwF)u|bG>NfmLl zkY>4vUJ1d}8vP8t@0ke)xH@1xWS<%YK%`%%ou?Jofm|Cs8eDl56;}TSZp|{B@br!p zbvRgYg<8hFsi0x6;%y4j2)!3$-Hg8iyMpILr_hEqlrV+`1`xSz=gq$`=qf{ZG0RG} zy#@^$^eAfHT<@p>4xL<=3}EXcuWV+KgfjQ&x`M}hVD#os2hd6L_Ti_`)ZSKY=WF0b z9cYZJp(QAv;_`>ODX&{_G5@RwZ)FlF>f~8y_!fR{msYwrPxP`Ch8oLAP&uga>ClhH zE(il6#mY^cpJDXdWU|!?HDTu*RIR4j?N7z&0$V=p9pUhMNBwLq=`jr61VTi1#rk{E zhb##*Ra=+VL2S6E3RZt33TRtromEz?S3Y6qoI+zkdKe8NmIp_uKj9{ex*(RPo&U); z)~u6jmaxW#H{-N^D$tpHtUmfN((I$%L)x0;t(yF^VYic&<=d(*({^C$IQ^J}aK#D4 z%7DB{GobAOW>I&nw_MO^zL!>}GMAl5XXE(p`KF2*1}{ALA*-?Hh!SpO^wV(!{gbOz z^XXmPW}v4xa1Q6zI`z@w{!Xv~;!$m!@Y;3&zPii?JnHXc}XlUV1!iuUxiIfZ>yC!4$aHe&Kv^B zKy73odm+oWq8;N4Fx`AGw`%+~_Y+(Ib3ly0(}E%?zDAYlG*ZFUsF1r>fp0T0v=YiC zJ15qESMlDWHZn61^9BnSEo1Zz(~!I6iz9CM&|Sp-QqQR&hrTQ?oBE}O;Sfx|DHIC$ zzW_f#z`so=u_3=b*L{ao*KLJZ3jw=G|6fn>!;?BRqqGdI+#7f@&6SbRrn7(Ho>P(i zOp}uno8WkN?XCke-IxJirorba;zyEaWZawFjJdVFMKg%4gYJWORNzKa4iX@}UoNC( z{!Bgd#$czG>epv!GVKs{-&;bg!)L5#hN|A{%8rxqw$Y@u`;!=C{SV&SI8)YT&5A6I zRc}}1MEg6U{SP-)Ke@@IT=x&u?UgWvh#z5%Iv)Y=a=pKbY4pG_ncAVGf{+3)u8n7> z3EWlR@wi@QZ04;^cW)}2#7wr`!w!?GuGQ!07sR;xRuE3l9}MtOe|7B3_&NsPnhER= z@tz{@$L>y&QjNAY@h*;PKd{`bWQVUhCB_4* zc(&#`_Yu4&yC=Z&RJJl^_6It+QdJJ420Z^z96mq5{4gfw$(iTA4B0X@BbN6OG~?a% zX66O$clIIMF4Ri_dr!<{c5hA9o8@-{Xr^R%vB#>}It!#t#@Tx2lH-B7(_!25VtW~9?r)t);mnL&?< zK3(c!)Q1tdI2qsz*Qyin@5Js$S37!_X%8LnDkb1bbN%ln_y*;G-J`E&M%tZ^>^Y`8 zHJOSqTiO{97-^d9{^o%H_QURL-40p6zCeTk_)>e1#(i{hGmZxGR*oHm-D7vOX85y( z`vYY>yJjLmyz5QxlilBw-Hq#B$bDU)RweZw&`IZJE9J<5))950Tpk@IXqWg7=v{+d z#CccoM^1hHON#;f;ys_OnSG{rWp}#^^{cMj=f`7HE>Tcg7 zTZVKD5qqfH2s+wrDsrv@erp@jmF|yHE>U}rM228^U2t!tc_Wb87s9-W6KK%KLwZ;D zwu5+RXV6Q4#_Cc=R$b?Pt^$5fwEr1Mciy?dKqu}F4u=Z%q=cB&v39&nq;s?8KlZLb z$8B5(E`=l;!a(l4|NpVCwJn)Lj$~)sJwSd+`+ED*OV`DX$HU=}^6Vbhxx4hE3opP` z6!AWTdN--a&(9Hyyqf85#SBXK$DR+{*xhP(h=+NFY*7x>A07atTGht#Jf>&dj%z1q z5_=A9kw`1vSt@eOG+kE9(7?>*%!rs3GrrJFK^QBRsDV~3xyP1MBQ(QzZM>?kdl>96 z15Gn50?y9+Bc>upy?P~fuP@!OW7(pD%AJ8a_#w#dp|7toU0D^_ZqOpgo{|QFgzPB?RI|nS6sX@;Z5&lDmuLCStz7DnWu|^8>HSh-zwH z-n`GN%2YYmU`(uDm)(t+c|e9>(K4Lf6CdVC>U*dSawq1yM|=@4u~2>0Tu9ZB&vD;& z;rA^`F!mArU$HyxbvNvu$z38pC;cY92iLvUT7A(GKAsMPGnf*o7XrI)BOWF;Gdb}- zW|}U@?zP44>vG6xYpKpP?M|e5^4mE`pp3CQiABElBti1j4(Cd0IJiJH{D1$FH76#x z=lvcBw8!g;?Ct|I(}o6QcNP%PCc`JvnyL+cxLBmk&7@arQ(gdkayL{$c9*@cI&D_u z!&#A^BPVuA-+dqLFh`J0SrYP1gZD3(VY0_BXFmT(Hhc)zqZ-P?O$t7bM4dG6YWU@_Fkqz+gV_R9R$|VqlXZ&u|%99Cuk3_U&WRou6r3%T_5!o>3#sFq!e(;<3Cl^4EXM8Z>GN3YRGUVP5fq2 zyRYWVB&^Zo4xJo;@85K9k7Z|e|ILCeq^CNZX=AF^ih}7?HsoRdQO2DB@jkKByfc6O zrPkEUY&uPRgl~ZTTBbW5r#fZV{rCUYLRAigN;)TU5_NBCGfgjSHDO?eN%!RAXBDi= z=DbT@HZud-ODb{?5)8m!gx!(cm({!J@CdJdqkc`br$8+xX1l1EmmwJf+)7FF z3xN3*@5GyVKF2EHD{A*5-Cg*1VRtD$3u={oB z{R!;8CkSNo-DL|9i2gLatA?1^D}fW4=%K+>w>M!gt20xq$l0hFHqtcM{W67Wh!9K= zn3;1`_k$pZPy)>nq!J$B(%mmAJ45kvjuFTtE=Lg0oE&(+k~4F&o30nUZ!p-{T{PCK zKcZ+7+n$GM8IScC4Ld>bvaeQJ#Jj6i{qnrA3iv98YGHRT-AjnTcU6Ck;uAL`W7eI{ zb{u60BDZh7rsdAYfmOecV6c1tX#c<+1h_44mZ|hqe^R?AG6-moCEKw6_0Kv3--8lOW+slQjF*AM~@-av7`ubYn{*_M+e#H|z!ouGpc9+~}lC2_V;{66_ zAAs+k-QfhXmD^Fe&xHp63xX$r|IO}2%_M)=o_aZR{v{?zFl9Yc7w-e?7hrc>LU1=i zW)iDq^gq%vY}Nbf%Y1#AE!VG9iMpTWcG>sli8;ojD&9w9^)k}^MwX$jN07~80yDb= z_-WL`F5rdUU%$Zq1(oWH6szxWycC9C>0QhbtCdvb!24y`9h*!mx36Q_nG8w6_YL67 zac`A0npU*$-6di{9v~fVS+Qy+$7VJ)Kfd$B zex^D0XCd!;sp!cZSncI*75e@fiu`?h?{en;7>(5{vb#MR9-FGN8Sku2{WC=)Cri~h zzn6La1(oXg))LVBj`kReq>a@Po4JUViPBw)={~DXh>0Wi_x&0{>-)f(Q9PO~g_t|c zF>%O?6*6qbW83l$-V7hm9$@bm?fhu?$+COisYHdkxQ6^$C9^A|)?lBbchE7oJdAI% zc2_B=;PJ9%vCjL$pP>C5v6=35JM$qQdzWdRN~P+QHc77$nY?6 z_gxOX+jTSa5WWHSP7#lB$e8|>(pEL`FhNQ`t;U0!BZPOUoB<&d0pBKe@@>GBu?N<$ z%=?XG-Ur}&1Us-hTm8F(ea;n~D)=g3u$+}Lf?yY01Mq$C>JVSi?eS!e@NHyQ@dDP2 z8EFzb!FMm`8jQy3g-mxM-Piy2(TB7GT)s!{GHf3l)R?I!7dT-yn+xDn<<;~$iV8S zIk#p2{tB+UU%Ii4Wveh+{2sYSiWRNUd&!D5)w@4bvf9idPZ=ZRjd;gm^>z;@#t-aV zlijCGc@FE}BKPRD%aQJn=8S{9+HD)|44R$Tr55+G>MHNknTndRyCR?C1nq0EyIH6d zOVykq2=om8^*M4^mz5ECG!S~P9d1Bvnd2BFHHda!W|cFOlQVZZu{vJ8vU~JpOdK-% zGPz6@EG^#{))vC<$Dc}7ey4}RCmtJM><(_Kjl3Hx(!^$*5johsTj?GXGiAk$iT|SD zmC#^1VaNn}cfTF;iq@LZ3fL>QjF3@7QbX*2o$b(?-Ig^zY8@t}r#E zsPZPe!yA}FkV;m}_f{1h8Cs{p%@|2N{|xj#7j};^vCrYXU(R*U<^nj%N&-b1j_YWp^-cft8D7q3A8@HZmNSoc)yLd=Js%-}&w0-Jwbq9Q5_bG~*T&oWC z-e;5P#^b-%iPSgB)xT1^(yW-B=VSZAFaY-U?#i-#gA}V_0mtC?uC)wKGC^eKeg6I% zcL23$QkC3=ENwq=G3GB)*nKZm-R`{SaNaNALzaa~i*$cX(T5ZPd{aSUp~Tu)5jRcsxKz`?%Ab~GdZ)Vf`7|`ww?%>Nj`B3)Wc4-oH`|WR2e`VY$X-&qk zRF3d+ncT6^Xqu$5kKl${X287@u!rT4cs6|2GBa@dTR8tS72n4E@$`4iXw=qI3E4d^ z6AOp%4Y+qG-C>exVp=8$5>DZ7*)`!a%!ibNV_3t2)^FWh8?P^4Zrm<@xzcdnyB6*r z(RBwOGXFORXQoBl2lXJO{pNk)HaWdP?A-QmU7C7!$66K6H88Q6f%l#YReNg3E@d9r zW18i_iJ?Y^9+ZX$1`l0aaI~51Oox|WW}$ams0vy1etQmj?+)xt%)~gPvu2E&f&j6F zp8sms3h+DO%_=Ij8X9A5)P|q#E^xm#(q$5pihMv$Y@E_`2^(@}_k2oCj1W*kQ&3Oj zy+u{syljc1a4^oXhM~gTYZ-Il;6dUVV5uxu8v6+PW_RmDKBhRAZJSLVDFH$r=6cBO z+HBf3*tx<$N zm;Yq3d=T`^VMLv7UB*~o_?tKMRTuGof3Rg@gWkK~_74Jf)>EC(nyCO@g69a#itdQP zUc?+|>DtO{QM#svm!h7_nU4xj9Fv+UV6Qb+M=G)}yj#Fq*PYnz9xko~bok-)uI>*C zUZBQs4#=bCR+}J%;O0{QfQr?$lQU$5Z!}grHr*q;*8?*S;)<;&r%!71Zcqh6-qf}V z|CCzYifj9biytac-$K=R8L?C)+h&6GJ^~Rx^!<*yE~$qwf(~#;wl1s;J8~1 zH4Z#^BusetV-0vJasa-YE)#5rL@mR(Js9n$$X)&2;n_Qwn@S8J_EUYX(f0@_sk5gC zUj1b0{eefU2Jt@N-WR*yo1;vDvny}X){_#%`GyY_J}`1YGi8+BdB2y?yHbJ1Qv^Ko zJ~~bPv3owH=5aS##%Xtzwy+_tb^Jty-h+~Mtx@!G{>R?cs41!|K|K?auJ^6HrlH>HlJZ>n+b%?7@hESxSzobDLSd~O1e))kcAobVezhWVZ$_r!=(^Txv~B9qmO9Wg1K6FpB2$OL9qotrLb8AvDc#Fz#;88pMCX42 z{=bjE!$R<)+<fA9oW{FXnW@{2=SP@0yL+zPDZAgB?djk;D&lpIdo;O&C3p};lTp5p zuAdL_`)0A;J|@Dr#R7J{u9sYsI0ARfl-a$b{qXD#LT03#;VznqV|^!fzXAR?dxoSV zGw=)fu>rda%|_b1&go1@yLT~jV8CN`UlOyu2q8#!T`X9SE{wK`!`wa^+F-l0nYfv% zgJwFrpTskhDpdiyPlVq2P2UsfCGeXEyB5xG)nPg4CE7c?pOW1JV|T|Lk#ny^R}1sg z^@U?$@y-XMnS09b-r4S+7FbGNFq zpy`mOU}trzG$OLI`@yAqV796w>fI+j<0mcR|2>q?8fK>U;wECvWXAA6@@MEd*OVc`g&b2AtcImgym4=g{ss-aRg!_b;#~y!(Xo z8`Dd8OF*n1RdG_sNGIW0VZ$4*9=#;?8@H2i_q&+s?0$UD3~T>)VRz<^WVd-*zE5OY zURzCke`Lm4xME?KtG(M0d)LNJg~-_;uas(b<8^c3Pv_llM;Inc?k-C4Rr*ooJeY zKxZic>A~)Y)r03R&q~>lFiYS&u&vngWkoKI&z_VgryzjN$UO`9j`lOK`(mypMRSAv z;5g(Z353n>E$Qf-sOdj>unE32EvTcL7!a&peewRkDsa+A?Hu4Q5t?y<|6qr;u# zGZE)I;dcsq8{+BtZcoj48g?9?n38fy%NVsg3HGpb@74i!%t}?j?@ZB{!{8c+c6d=; zoaY$e*s?S)e}lJeKI4Wz7^zQ2aeGJmaV^!$lAfKd)i%KIHw;D04b59V4DpsBQmm(N z84@wm&DCRaJ9E41aQ!njugRF>(o?@9l#7m~Z{} zE&=5K@r!Z4Ai_$`fbY(kBWoE#?vmc;n<{TJUnX#{YOJrcHj-cJyDN74eUhi26!vBY4Q?v7Y~-l<6Al3*K4KOy~C_x*;XK z$E;}>!P7YhbxyQik{PR0{-M~F+{jrgDcbGbfitChV?cM{YCv*N+@7y)7xHgq^ZD{G zK+pMmY03h=VQ>^C_(e(z69jao1aU^-oPZtsIopXkuSUSD|JOq8fk}4-^8m*_Yzu1p z>O$pCVgCT&-!Zs%pMVK=3it}Jdl7h9IRIFX0_-8i_ru=l@9rJorZq~*g|(nvM9h%U zTw!6m1O6Fr3%a)SN+u4{z8NCm6YeV(?9N~}oFea_^L$M>y~iLOks-g~pn@)Nw!phu z1P4-`iupZACW~~@F_?chCTD*>2&6C9WT{<>!Meos3S0M~XkYcAEL4yf7X%+t=fObB z5VU84kHmPD@8P>aUjI$CCdh&yDpmt=0~l%st4RTW)9U)SP0&Dkzb?r~$vgp=sZmK8 z%I^C8n?aqH>kt{iNA;jfD3A3k3)Wt0THp4m{fjC^NEQ>{q9j;FAOda=naQ$_k8~bv z2|f;>ee~baJWU^2;(xMYt}fE@y#n8<#tg91EJc2N}c8q~{$z;NVXJ<6r)_pJg27U<)^F7P@dEpDp`{Sv;PWLNG+VV6+C zCzpugeGTZf&t6h}prrSGWxSH+;b{)X^+`&zb1U@)JZ^*!uuuRQEn|lu>{tre*T9`O zN(bg|PnCiTk~iYspIq8lepp;hv2I{K#~|)q;byM}GQhNrWEB`@{<;{RgMPJ*(ovR* zR`btOzgbVk968^~chBNlE=}$gORgyEs=(-6vOb4&5zgYGoaJHlIM$2D%;3;R25S_* zsG?$40zLqTPB5JHlIvsLrmect2<{=c!zsC4TJ#}2!R?U-_6C4<;%y{zk8pQ^mSt3} z;{pv#dt5sJ%q9i!fo2Qc!eGE&G~OBpIg{R+$nVZ%byGkwoB4-q}BMr|qp7sIQ6 z7GpG+h4>*h=SU9-=}fw`FuCK&9wIp0fpABefsyh6W6t*!Nkb~1NTn88+s-?sxuiNV z1mti)-NW-c9C#=-cypMIs~xt&e0tufz38X@;Xn`MmTiAt9@68yn$Px%Gk}M7MhCf0 ziYyBm8ySBr2{1}HE~$c%gH@CsiD{Bi4pN_V{u6vaG-A6g6v6Uc(ik(de)ef^=CR`u zQc?h~g}yWaJ_3x>8Wq7fkD|Q#+*fIHG^rJlb!)D7T#;s4+C}8A$cu(787L|1*&18G z`J#q4SA%5wf6TN+A!*@oI{iYPP7iy{d8(q?jeO1DrR+^1?kt!6GBR?9=F{m6{ZVG!+<>efuvDznMd#+Fs#;^lm-twhmyszn;g z@n%~GO>!qh<{Z|9Z%Uj5dL4!E640Y6QDTYOQHtyzMeRWhFfiNnkz?mayJ477y)^wi z3;^N)%fpa>pTDIg1D~;*oNjHJ8Xf_juF+1g_!mzXgp&Sm(E9<&d>VBeE7>KqzUEbp z-^fx{ccY`)&Vb`tYL0T$_)rtZF*gFCL6GH4Y`RDAxlwV~v(7Ukk(1COE_rf3>kihwk~PN3qx zZ~q0V087ZHKFM<9?@f<@s0hEJbwbph`>3tix^F)0-4eI(Gtw5oE#<=h1r%6 z7Ryr!Tsmzsc&qCpFZvv_rs@X8Zg1AX-l@k1?r{Ma17-Y2P#xAR@wqJZ-o5#>)HTp5#(S%aeQ zMuJ}hf*fr82Rrrk%Z~^SFUtq%HBfm}DtA_ld4f-7_TbUQ; zQqCkoVYp@Yxvspofj;D(Qk7Gp3FZmk2rTq9oTKAwylkM|2BY4RA1VV5Ng`A&P{%#B za80g<4ojRud)c8c`#=L>E*7iLZ`|P$ssfz^`4x=Md{K#GMW_{5(A4}^uj(ZG^ZvR| ze)+Q3xEwAYGJkpQNiq1s!@xgo0E0fxYAup>p#{hDs||~vUlWDm)=+2PtW~OfJXjb8YJbpYL@WH6<3IC$ zo$guaS|J8GS+j`amngFJkPp%UX$0y9(Oyev6E5|dAZ~QJsuVY#-xAjI3>yaqss{9a zE}zy^TKBa&4|#j~@}GSFJ|D1BI;w@pE)b9*P?y^#<)?lJhk|7rEp2bAn*duoyO1EV zl^UM54T!vr)Ws;${BboA)8_@Jx%4460o_xuD}-Y#uy5>5pmv6*0x6ug7Zq1~^LM`V zLr)6Ka{dL3!$(nitQq+C)PVPej<`$C{c3=->AHk1gur&4wrVxq*$-zr!_=vx}5q`G@Ek*OSgKazfS;*?=%3(UTm1ojXP-&t2V_ z=$Z9tnw^I7R=3_C0N+2q#{2Mh?!`rc06r6dunImE?;|UiR0y;(e$kO5VsUIQrEbyk z`5X`!@Q525m0*`nbgW>g#}-8u3YZU`C>ImupIox=o4OH3)8{f7Bc0G2LHo~nj&3oJ zm5H9xZqEnG{@n60eEtn?9UaV64#iRa8i4o}fiz~f7$QtPs{W~CQKX|-Ee&&4VK04T zn9K>27i_))ihm}?#i0E^duQ92DvyNWB8nvmAHx6tu`9`B-V@N%?%CaE0THRC7B24G zGZ|12x(R53?#6QJxDQSRfG$>%5M|{vpiHS?;o{^Cn06{Qmy#IQS2& zjB@Ql+3nSJ-};sD+z#uDNF{pdLTj~0YOMG_pgintKA#(wy#|G?|R{0<^S-Vx~@HPKre*D z!a@A;K;VJz*ZA7uk?sDt=~jBXVo(HY9&c(oA^dFgW*=+=P93>y&yycG1vV!*kb-|H zkEsjW{K7Ohjx`xdYvCP7^Kr&qe!q#n{Y59M?j>JTk+m!6G*;#2QXb1oggqvh)iIUF zG2hMvThWoOQ_OJVOL~F_y>3I2GxlD!$j*dd|8BZ^uGp=8(j;stCCBxEw?U87r(e}{ zF5OZSP9Uau@;-Vpz7h<6RmJ82my?zSk#mcIy9zk5dA(RJop zxUR>DQr;ewa~!tmeW2`0*NvtV=!|oG6wqU2%3k*$C!P89+z>w)hb5Hr zY*gIvEu`>&cyPiC5ium^U4B4w3VdA>4Y4I2!ZHAULl)cu1euv+67Q=!`#O*d>Mrv# zSP#a_VtA11!_Mowgt$k1kfPILBO_B_FQ5z9tBS`1>{vy->N%-;4#!vyScZq=j(?5s zxlFhWuV?uKyOw?`-uJs_Kv4084wYTiANqV~cPsnkHJj#J>T7Pf#A>L4qK4#QVpl&y zBMS;H={t2VeX%bUczRzDpp%YXs?qc6^*^eZH`KDsvku47hHB>9HEdntF-y(E*5`j%aEPdQ)LqZD=YFT^=GnM!&D(hnIw zWc?UP!(m<)4%EvCPax^JOqXz0@X3*8V$GYQeu2})(Vk}BhJW@YXCBm$mVZSbrp_KV&F~4J%f~U*gN8`jKe3SnOC!Z?XHD2m3%gcclNh2 z3(h}iACy&kyB$z&pZ0S>9W{rPDCMjyCzJQ;P+7jYW#VKnj7z+epAq#0mqJyOgVdc% zOxf*S8Cl6XN_$)uCk3N8=fGF*lHoa)fHdPgqkG}@g&a%)+@pN%81N3uhBt>w4&W*9 z3T*dJ&_*TQ_H-GXBJZ66HXgXleiD5EIY3$KkQJ9ktyd{n!Dp9{~9(=ow}RdmTc~ zg7d5#jP~Xo%zFSTtb>u|z~=qo?C0uT!M^g}E(U1s*bLOcYzn3t8dg0c+Op$c9VM4;i>I0jnc4l6Vo6E&~pas z?hiquPON9gpDX9$Xm|KSU{Br_KG;BTeh{v1Be-Wn&`px#hrA%YH#Gl<&M~9DSM;+q zp2e6}lS+r%0e-_|#xbWXjmprt>33B-(`WvvdYC-oztuf6xM`Pn3W$qIuDjx%VIu!R z(_65w@PPS>kOy%j`(EXrF_@MssP=0Bf1iCakmxA!AR+9`jAEBbYu2HA1r;9SJC%v| z{Cm@P-q-YXA@wdR2+n-FxzACrz>y~&4eP|aq&;&Z!$=q7S{|?fu$SRh+Tk_W*e>*R zGB}U_PMkfB_fGAgXF?O4?CXicVbN1vID{U;D=zeKaPe@Hx~CXt8kQ z{kpo_>Vc;$AF$t+;T5r)Dgl4U!on!nV@KARY^-Gxn*N&K3hb_h5%C|P|IZwPGgD7) z&J?(x2M&j&49LjiaAcJs!xquBHid@{7qSAaKT_G5$HQi4AUE^8+OeuHV(PH2T)Vhe zBl?)udAf8=%+%CUrF##)KCYSb0~;nYYv(fFB!~0qd;nVU%MB zQKxaL|M;Xd;Pv{@asYmhNY4^h7+(-w=Z^xR~aQmCOzQcUC+&A_IXUJc3Il;V? z<_3Mu4GBl!GpYP4Ko8QwM?jr0;KVog&hs-!yqAj9>VA@U*R{WXwG7_Y(boAoQL59i zG!-jTW7K2$CF@hQGNAIArers|NaqVS+SYK=2u{5u1WqmEj;tyTSZl*Iy z9;rM2(mr#&ADvI*kMwJ%C^&h17kPMIncA$FG*|?bfXr3IY8u^;eHx6CDa@1 zE5aT|>dx(ZZb>`L!1LUUxIqVA>cQ?HsY(b=zj{nwqv}=K*U#HGuq6$%ceoP`HSk# z&lTNVm`}6+oZRawH5MRMOS6Wc)E(r#G{{q^N3yECiB%&dBbmNK2dgTe5tRhKx}PWB zpEeEYT*l<}GTA#i>dsVO-ZPq+nvqEpd76ofJM5=s+Z*JoNI)LizLKjv4#;}l#_T=2 z(2F?r=`av#Ch4*tKe--o(()MV4r*U8>EjyR@oH=>ux*`UmMo7*qVlXJ5EB~ zS2w{Nt$pVK>k?%#K>_~m1*<9x`MhxVFy{^g{7P(B-bJBItL^bG;wW^JotdhIsiA6N zJc{%TSogIpO&F_EW@d#J_1Nnx7x%--+{TG_iS<4U-BjcohvE2h_o0-1XTE8+=fW^P z*d@yQ*yf*}!|#Q$s^3Wz&)2;JPx^LSc^p(v>#ZsJyv{aE1$l46K6T7{OGQGtSQfg@vXRua zN`+!>Dw5xj;A)?$dj|q_#hx_p4-0$G&S0s`#FH~eh+3HEq)(7+Z}QH7$8J1|kf<;W zt>q1@`|W4?iG)~RNuwxr-`O?UQn98? zOw)sjQeRdQ}&%%w3leURBJbK3+t!hocO_DaL_R40|FOG{cp1!q7rSY? zdn&uGK@bQI2On7w7H>w-`;on|<-o)8-9-fRZ2F0G{fXNBvume(zV%Uly{O=j z3I^v>q5Z-KJc`OCIVG57djk8Rpq`4QLXqy_tgE(D2k2Tf<4VoU+yajtyOXth#EWcK ziD8Ktshd#*pLI<&Y4EfcMr6hOku^=Cc<_2ZQt_{xSUrBIsQ2?b-}>Vv1czmJ(CVgk zpjitnhN-Z^lJoj?)zuD_)uUL@48q-eS`kTBXAfdlP1K$&n=z3z8LI#Q7(huxK~zR0 zEBt02hlDO49HwS;B7&qT;BmB)sgRBi{913?6q6( zPTd*PXv3@FYAKwNHk5E;Pr8h$=$d-H{E$2SzP2vd>xeBu{kzM7#g4JdmwG)r>ca;3SO;gs*Cx$ z>s2pYGWLPR*U%x%G}#cs{x9NkrtsPgnU1M0OqW@}bQsgIbbm|EV=foCGO5?4s-@Ju zmK>UxN>=R7`d$y6nFsHew~u;5Ha(iN@52|Y1Lh0RPu_C_7R!{S!PkMc*Rt=1>b-bB zU3%T@{{NOE*;?JDHq&T{l*2T%toWY6`6cjPrjouo5{Q0ExdX>}|H+NBG_hC74rRaY zglJ0H3Ai;*eT@|n()vH`K~N!(?01@&ip8Gw3iB9?k?WD#=}s6YGX)#2&0 zH|kkw-6wK)zAnpV<5U`>J;&~kjb;XqdgeLm(VVIYN1^zrd(G6VTDW^eo~iMa;CRs! zRnoldt&{=((ZqdyI@MT_wCpt8h{+Nh{kR8IceQj5x)KXTZ~l8Tds^yEGe@pI~> zJk*B3&+cK*KFpQUYs<)D$JCb2H>HOY8%46IRENpKYsZ9y8nL18j-6(}ompuIV5od= z=5?H=r@Jp99ja?yokzZkN0k}?hq~WN|KG#l{VEC)muth51v$Ud{&&<jayF1ejgoiGciRJ6)f- z52}h)^iT?RBGkQO+}_Ub7^t=}9_{w6w)wu~3f2t{{%<)n6kE+va z7*ms}KGasqBFrE^h@_g@1pAHjf<;~MS?tEbIDCuVv9rw_=Q6wsu-l(q+fdna7=M1;qAbH?3yO|{U!?mb^FvR^n4mEGSC@K`!< zS!~jbLb%k&Ojs-j!GDjG;pcsGfKyPBu_TzUaQgjsj_n8~9qT$thCxm@H@7=kv`!|O z#_mSQGT^UjAhx%bHX;yiVN{D?W^>;oc-ceFc1-X(;(jDEjVU>`fe3fZPai z9ZmFekDXMwB*d0}XDCzW#bx}Tema4i@e#f3-E9dyGl5fy_j7rxPsxL8=pp z4h?qKs2#A%y}go26udV=v-fr)8FmHk$HRL{^61ZV->^;seSQ>{ znLNUsfcW2?()aBVdL%hXB+VOybCn`<^+3Cfz#ea~-;t_Wl!q$OqsZDzj9#!FJ&`cp zv56%cQ)5?ljM#l^68vuS$Qle^ok`U3-6^O#G>Ou!w3od+%(>BjUoy|LhQmWV{KYcj z10=?^Q63HvuuJ3PLo0pvI7|}!YoVvs4mr9(_Tm?5g}vkSEEqSpqEh##^$PP=ydymuMiF?&+v@wtvgdGCZ0 z9-hUGf_>VhY3Oqki3lk_4d&$`g!J=nZ2CX~9Ozugv}yy-K}Newug<3=>Sz%K#!fN$ zKYPEB*aJrZ0-u7nMS4~&U%0*{`V-k93hD9%_Dtt@(N|1t9vkuS&d3-|?8bxSKFGs=ra62lHvKX2jorLgp2~ z`tt~tV>O3;dLamwF%LB!kgo_qJOws9RStfJvD5PiGsDPf1`ig}@MU?-4;k~PhP=;E zuet>u^_Wz%deQ1mk?4*SOGL$>=RT?t!}1xZB`Awmsfcfo{3_1S7SDUvmNydn`AV1x zA9wPZ4nQ)#qP^(KC-0&E?d{MoZD@|4+oDEyTc?C5$Xrvp+Pu8w2g2)RsfM?RfGBvk zssb4%WvmG~1iKlt>SEvmc`f0I8NbR;+EnwE=q2bi?!~w!?ZLtwCxSg43PC?7&=fng zaQ|m*ZOP4WO}>tk7|$@5Naxx`IE>yAs4Mki#-|MGwE4go@LB9^v{($%nwU*fNZyKg zQ1eZi?@mf7^ow0vz;BggK1xA8G!8fCw|ox#kDU|gv*O3%pT0ZBljh6zaf%=xLpG7_3KA0=H z7^cBfq|U(!!B{q^^Xio|2}oLgp5br#7QQ8m=b@+j?+ut7XGFVXE|ylSG8oP3D?vK5 z+M(umng`c5(7?k+`1&{@jVtM^2zG84;nm_7y;e zUj}g(-yp-InEs4JuNX%WmtwS`F1y}2j`gC}*{qVT3R9D*lZcnvy@H)ccqVCfCT+Sl zj5WvQRfY3CTN~ePh0%b2_^lt**L#Jx6Xs$0g3R}O+4#i|L7w4_ ztM43@>KQrKW^YmZOQsA%{D9y!;0@?kHSwwfo;tYi3LGhOJX)Bp9tN*Pr5I3YYbX8< z8(!^%9j?FdcHcSVa#w3x1osTsybRUc+TB`WT`@b3P)VnaZ4&D8N`M^y=mOr981Qnp#~C`8|E_H04K__)yM*@HD?m{roJT)m;HQ0=NrlyQtv(l;u{c)B^Mwe8W0B zF~?3EMw~tZpzFmO!0S7g?UJltWB2U=?5;CcnN`!_d9CT2n0M5s@6){iK|sF0M|rPt z?~K$Ga>tqZKQ&bn)l8Qh4#+=R0gn{&3o^W&S5Q-L80JL~EEEwD5dkTJbRiU#ru2^V zUZjK$QUin{Djn%9^j<>mkkESxAiX9aRYFMUK|@*pJG(oxcYC#G=A4Uf=A4W7dA{d+ z-GtT<{#=$|#dMlanWj#YEk73HIvF7ircp0O=_p;!my(!t%0p1&ZUw~_ov0MYU z1il3}{5ZW3;&hp7EX}`o)6D6r4@hTJdCul_A5%f07G`uR{7_0R`S#tOCy^S7^1&C) zuet;msHp=uYRG(N@BO#!QAEmAXBx7>W(!>Fg^hGhP}3Q!^pJ4Ihg%Om^qN$D zv&k0jgIlP^JKaX9iMXau#FZ6&~9aCCh}A?8uiPm41G3gvNxiA^>9Cv zi*~W4D*D`@2gUs$s8L;+Ws72&z)K}-G~MDLEHGw*Z#wOmnE^9t5OKCnP`9=YI!7@l zOI(JG`(@3t$6mC%EHVUef50ky=V$Vfli2opp6NRKgKMU&fZq~KythJ}K)I{MaO&Ta z>-t!;ok2)^0P1GEo%*ISd&R3f5i)S+q-VR?g&rCE1v%y5wUB2j#%>*`9hpnfa1w#? zH*4tn#JJGaMC1-ao0K)(wa2;2b=@U^*#diY0}1CGO>WR!lywANeOXQ)g#l;c7R(&7 zn3gh~N=#BRXYiiy(2Bo$e-@IaFN`&=+ZVbvDOc?d55cKUE-226GGHGdf@HY$JX2c(Tehx-IFOld0T9} z6uW=g+!E3`)%*28@D`k@d-+dUogZ5*Rgg0sUW0CVY_qhd3&y<2D{=K8c|Vw@lFz%s z=MkS5Trj23X78x&3I805#&YcshRYMhDgwqwb zWL|RLUnw)HTT+4)Fb`3&SXGGdvf_Krph#{~f{2yDr{x<5oN4B>u}?41RQX#sH_Me--gp;WZ10(hF@y4zY@xeOB|Zb2_cC70EK~Og!K(-ZNDxV zB{v28rg}I(33Rp%b~@LFJlJnfN|XP@@q5A2cnfr-$8(bAwTyAuqwazbbHz?$JXLLJ zy}4r$X0~M{o=t@fW_%U{{CaUW{QRkt{a{Bgu?-7_9--o*`3(2?neYBk{&{9zhkbT# zaW!-4+`PYHNYNjO#apeHnC)eodUY>NtH994i-gO*m3GtM!Nf*2vEbdsC+fwGgXdna z4B5%H*}V9NN_GJ60-^x1y3!Um-hpDEk*>i@rz1T0-mV00?oXEB5eA$aj?IKn4={F( zCpo_~XPEM?*NEI_#rh@uLBVFV)mnuS>y>g@jd?M@YuZg|$IByy zsma91YQpH8GAdAMe%8JoNIj@Gy^Z~)>mbvn)9Lr^h8`sJ7tBY-hI744CUWNc8NEnTcpJS!h6n);+{J{23uT% z5}sEq4V@!~g7qj=WF{e_r#pQ{{^m((3#$_Sq^B!_QgN@dNng%~KYwcB;oot%l!7f4 zCn_>paeXJ4o0pTRdRG_I#=jbcEI*#V)M^lFlRPNje%5LM-jVS;pNyM5(D$e2P>%@s zxv;#-kjwX%_tYB@p^4t_T$l~5-T7?y<4rZqxE!JF?mO*9HE*|){c<{GzV#3OP!H_G z%2~N)FDJo`wbgU`oA!5Muu6nkNpGv$yYTn#My5i0hk&X@q!!qtoD)KQ{J|FQt^ACf zO6Ui~DErFK!f@_Ib9HORV3;rC-3rdf%;LgZ3*k)U8TIj}H*5}^-jmfYE;thG1pHT# zbPWvth3f(f=L37z;4cq6W+qf|9q0=<4v2rMFsArpIm(zjKI-F(gyI|_Q2rXz7PyBNQ4N5`$O?E^Ozrhsr( z%7=;|T9FKsUw14*DC$b9xDStj({iKniJC;O=ol_?meh_SWQ5YQn$m(8_N*xP#2Ksw zfw-d$mT@{WCTk zJ@h&zIxBkTS##f8KULNDeMhDWS4+0MP!<=NF%X4VdKcknMy8Jv6sPX3lrxyWWATZB=r?8q+; z=3g>9lK3T^_D7v*=x3@)i|c5}sv*@`Mtf&pKd(-qz4c}KEdht5%yF!O$u9$WqG$m8-aAA%)D;`0l|Gy6c;3>48$9$JL({AA+-2Y{`uk z8^Qg_^RcV{tzjju%p4kzP zWY)`+rLKr(f7Y0+_nk|grtQ$*|7XX-Tqc;iHTdgtTuGkuqlDuM*w@&cUTxF(XZZuS zv9e9Vw@b{V+uEO+^~SCfHcd9I=sr2n{P@L7GA=k&J?*rS&l3qQ-@95lli4(KQ!u*t zcyOJ8_u5~&Ijb;UJalPEVDs~0SzRMi&@p}!ixr%$D|f2@QS;FCq)oJO$$hGcAUyKj zX7-BJ8nd4=fI3!HVq3%HU2x1N&$j+%-Ng=iukf~4NGhURI2U4FhV+tdFWs-@D}DU( zY@%Frc0`bh4n)bRLI5!egRpdHt4NK;yk3;(0x4H5DagQ#1X{D3g4!0#}iI@<)R0!qgVfrN7SWWK2 zK?|>6ehM6tRk914-+^1AR=F8AkE%?Xg93a7+$vLxmLGG9(#E@N_s#mLH#?tilA8ok zb-g+?Qu!UU{X^2pKf&3nWha$sr(gy5>m&(pZ}!#a(;S{db;j5WqQwnwbh+v~u>6VX z{Bs9*hml_@TuR-H^7qpSGaptRE0-bpgW%jVhdzRyk@$H<+jvzCd8sVfe6?cSeCDgO z1x*UGFHSW3`5~Po{jbL&e}@~1rIB+{n9}hr4|JEi-H{e=53ev9*yC;k{+t@v)B>@$ zXrLdSl;KstChp?-Jpyw9Jf2RSbYzn%6O73L&B?V5z1xG~+Gb7_KsnH@|F4%X)y*xq z=8k~rJ!|>@i-??r|35@zz@sqy{}T~e;(rm5g+>0uACz?MHX=q7IhI7 zb5mB05_oOT`N~*HIpY0?FUl&BZ{PWfhT0=xqKkDzeYY8}df3n*9p3shgV`h6Iwk@$qs)qbo7l!pJu+lOr}h zuSvT5h!%ULL&heP+_Ra#pPXHO+oUodGKjvg*qvmW9P;cJ?0nOegF4#X%>8q+OS2_? zd+pJ>fG^Y9HRJsS+PNCqIY0=Fy9LKKpzux%b2Q|5SLTn>`5$GQ+}w+uTfs8E`4~C; zep9hOkl;kD$Z@&fdMMiy(3O+aZDA53{pGNmIfBsh0<3l3@B*xVF7wOIzsTa*=!51- zfv8tCY$0^1I~FXLL_wq%G`%-t`eA`F`Dh4wD5`sp4{%-nHaK8Tms2;E&)loybq5RFvNg}W;y4i_8}N9L*Ay_sgI7@GTU*fkAb zf2Y&&o?C(;!*j%*JCN+l)qt6*I6OVETFI6!;;ZDV`Um-?X*R3unv}#V0d_%TKc4N9QY_Rh5!=3q-Cc)Y*-;7>mfxV{C;s3t@K62KNZ= zp%_^fxG2x`!0Uy`V>w?R;Q|}J0L2T+%Y;_d=G^V6^3ib$&gw%o%`-MZ_G);hr)!Yg zaYt5tVu+$B@nv?(r{<)_mT);%D=pW{ROW#UMIpP~q);R+?_CM{jOb}lK-`xrPkQPW z6Ei^}51X6^p1sYNqU6gpodwZ$OLD)hH0Uj)M2K!93}vca{&Lcw@`;isf)}xhn}A-cAfQ!S_k4t`??fb@108nr_09{j>vj{AE%vhCx-h zr7kCYtTFAPSUCG`b;WEd`rG;Ik;1Lx8L(A(x$-hW63nQ& z!r&+H-3~wDN~)vYoipF@2+tM`r(DXW;RiZ1TWf(Q^-B}Z!w%o&BzN;AbG&puy?-k84TQI~ARdj%m_Ua@i49183(}GRM zCqeR2=}1`G?koFT&5xmtWd5SZsM9V*SSf}PO^F%w_Abb%1lI}qh!<9C?mwD!GAOi2 z8IXLqo03hx?3mI3S_G|w*IYxf>{N+z zL5`G}D(B{5jYo{coy8IqKDwOHRQEI&^XhMy*pIs!`H!d!z~6AX1~QN2)}*j zWxoRsM!2^aFU*mJX>Gp&CC00s;1~lD`?Np)MF)pfj#>M=PbLI-Q z*;G0mcWw0}n2f7u_P=f0_GW+=mdIhKkU)>&XiQopT54BFF!Z@fwy}n?Qzsdgvg{p+ z=v+1uUc+IKFn%jo)`taafPDW#M#&-(!tFto0wt40@$I^n!<~?7Gf(af5_ho?Si}&f z8EkV|W2^Pv_z84SIlTatic2XCx%Xs1+;NbAVukmA3}&AwmPo8RzfN(yxrj_`FZ`9a z7&68dX68;>7}#|re-7n$ z=~LA6c{r9{u&;eW{WAr)5UWlcQe(`r|CmFVveN?9kU65m1frK`qEpZ(S_d7wn&9b% z;xz`aVeMq8r!Ru+{6Q;-tu#VHssg%sxbbrsLYyPxi@@DAf5@GE{usE4ggS-l6d?*0 z$BV1e?MVAJSE5dSOo`DcAH4$@g^eBQa)#BN`6jBd_o=)F@Q=Zh$SQ!DPnUsT1O~1w z{UD_p$Wouen3P_UnO^57{;)q1X68UwY_r{%t3%> zo^Wk3;)RLCADXKRjTbV$OM{>XFlSGG{EZNKI^DTv3oXHan1}isu@`{W#dlpbYzVZ7?c4R6MR(BB^)U>UBk^<;*|_%rLd ztZ~G#l$(W1^KMT&v4vI#_F9qw+0~e3reQ0tx&;2qk~W*&sa6j6z#Vh^v))AqY=38M z6c!BzZUvIKHa&Bxgs+t8I(gS5;ytt5za9NkNRkY&J3v}T>s|8=Un^Smta(=q4rVFvvLwwR}fgl!L04H4=T5GDL-ejH0_yKZiD+`K7s-fkIC!Fz>J5m%#kUzT)%&DzE%MqI~QMzc*mCtjh2O4 zB^X*%W%LHlom~57oGdMJkX{z3HBIO`^da(^x64HZU9=SXIx@$xD^rL7&VAt}F^2U- zy>)P}SO*sR?TZI}*CTj1t-Dxt`JVkF8Zz~oU1~UMNOnJRk@@@;a3`oiAf>T6B6LS~ zVFko0OEThYg9Jnhk$aYBl9_nA zM9{hkRMoqt3S2}`7LC|`J}t01{CM!}WcJ{d_NknPjt`*OZ>Wv?P`-*=)NFFr|E_!2 zrOdrHkJ=ULQpKw8fogKrAP`d7oFf9!ri_ zXjr|6W1?ow5y~hl`M|l+c!)BCOFy>V9%W(Y34e5# zDxeS>iF3=xCT(i#W#Z4kHMQ|;1Fas4{;dlz>$AFK!fYY1G$ z@kvhEgpENbnw)#gz53zznV7r1au>)lNhv}B$(cNxt=T6TD;ys`$Bk;IC$^rrGwXbwrU_glx zut+yvd#wK_-MxT3ELouPkNZH>2rSoB8$=7Y(`=B4GTy~X(L#eTeEO=#IT@^LeQ^*! zU9<*})Q0Tc+?Ayf-e+6k9xxz?0bCsp;>DWpU`_a}0;=DQB$U`SsF9;70}8N%hN469 zZ`0d`W&nCq-R$fIVkFoanP`wg#^Ev!D;-i6-!*Qi`-BY(_Zm1=vpa76H;v2-Mz zDlC$AfXqIq$D0+N6OCh65u!rFJIyihsn>;`!!$_k!fg2DGv*|`w;!i`ZdX|pP`^L> z8@`b%kt!q6Pa0jV#LIrmzXQ=zkENP=?ODJ_!s;tv20+C*9b-dbPJo#?x%E+BALDA_ zcv#Db__UJcH_TiX+K89Mch|Vd>qg&Z@~B`YyqI*&EJ)McW-ki&R^JvE#Be>f3#Ix6 zOh3$f_tOAsj@hv=F7vAJgkZ{b#t5wnKG&6YpYUoI*Y-e<7BIISnP1#clY>9mb_k_+ zOC=%mV&ZL)V}`Q+Dj~&wFuGlmN!@ln`1P-ZKS8Bif#%sQKWQVKNq-xFPBcmu_xULy z9BGdiz@1+-g}{R0r}fd6;u+NFi2&(hWAAvfiZ;Wm@Ov)nAaqWgE^|ZcP1=NRIkU&3 zLg-p1uHM!+1uD zo6p}-_Jb!^OAYN^0|Dn+cGM14bP<%a3>4PTkKWmpoy(Ft z=Ky>tBgmaBmA1L;xIjRaw@I6e%wY7NfL7u*lt86bnkAY|qh-ZkLmd-Vj?1dKH%6*9 zurIjkorbe`vUwh&t5EdKf3q@!78A(ZlY#yqR-BL{CNf zt!MlJj42zvOaUmT10TR*N&rzm;1Z;cj8F1LN8*)`(Bo^ASf02*<=~)Wd(v-yI=n0Q zM~813w6bEB-c*a^G$7tjd=rZW%(+^XPyFK9I3yB&jI)14!A~cCU%#9bz5^Q)mjQ7; z&?DgvEEV<|K5w|y{f*dA8()w}Itw)?x}QVazNXm-eWPFXFuSGTp6@=tWrZ9mYzQ2N zb-V8ApcXv&ID(Z)FYguB@qiTLH+Zppv-LR+`VA6dOCy9BEZt44V!JQ=_jPkpYB-d@ zefg=tplU0N>k%@y8_aLTJtw^zBx)ErCD~(o#*#ezTW_;t5a|+Rm}EPs=55RPNRmXa z08Hj$wD}BK%*}S~n&qf((lK*m@T(iW>;mw&KI?mhJKAWwgUd}@Ez>d63RjE4{;YK5 z)86`(;#Y7##%=@4nJ5-zI+?5$T*oon@=sO*~no(Nkpt0YbTYH{3fdYbC z!}18B3Bt-us2)C)A6!Xckrdw&(DMzpd}m{!`_gOIh(@HMpcZs~u8=Zwtt0hPe$>3_ zRGMi-JggAg##*?zdGO?N+(hTjT;TVI4`BvhL3Qn=$9JOYN7wJuBr$!u)w#QQMyU(z z7ABrX(7GPF(8aYU4L=iLq5*|sErh;*`3`9w?(bD&3`K=OX|cnGf6W^m6yDfw=^)W< zR~^?KFV8+CX`_@d*Z-JyCGN!{o;NOvdGX#dt!u1iu;593 zJ6pT7^W)cwg$h+eD+ju6a>%ZSt9M{xL*yga!Y$<(2|19?;f?hudmA}rhH;a{8sY2t z`DP-%?82847VHld&jZr|*}a)Z$$vngP~SB8gQ-9@i1`+__qOSSdiqH0im>4itGJdp z>~qSuTA)VRb4NQN9dXYg+Rl1Rq4<@|OLx&E71tlRyNPsyXuQmgIe@oM^0= zqW2KX44f7?OtKpEc&SQ-2mbz?wT(c6)fBiV-V3h4HwMj+GN*qbYhSafeTI98bZK&v zutCpWWl{hbm(w&*`PNO=dbGz6Zj|-^Mz25<;b~J+>mNS3Cm|$f9*Zzf?qa$3{>rpr z2L*{&z_e40F;=9=@tpAFRXQrvB(JZ{2r^vN`Hq*JXrX>a!R+RNJ4hbs$3vK+0qPGR z!KKSzn)&Mu##JJDjfgs)0IwBQY!qxus4|vKX>kM6-%pvex{q=S38nCn#xn?dQO8Wg zn`}EU4^9H=XwpJB4qcjSMDj*p)id^%5qe>}X6>|{zDG7aJm~6bA7Qhds91VYIqh+f ziq1g1vbb&09C8>tuvMDF2$=gsgtbtY#nb-mu!zCgC@|c+jokG6P1%c3gr^{XW{c0A z{ky-14V!yeMxHj(f3W9m7N~5uPF}qF(+rgdsj+=586JNw+WId;JR`){Y^=z7;zZ$v z7<0b~;R|pdzJQm628@pYLz-LTCIQs2I2?cLlo#W-lB-t8Kk2no-Kntdh4(*|jmy1H zB&0((Ji>PXVCj+s$G6$?dEWTjbCjNX$JG5QI_)~Y`6&Q{lz*$)t7rb@?>N54cPan`e$#~~S=4-cxP;{;wT#?1M1ok0h)gUBkpQLn#78Pf~%^0Mc zj-k}Xn!*5LmtC)UUAP#)Z;I|cg$2=cC2T;6dLlX#aus%fb7?b0->eCo$OZjWR%Bl%5a z{wuF`GpZfQdjAdTJNDRdC{zsc*KtUtLM?loceaFI!t@LR=ak_VTXJw1RMUHq4<^Qc zK&>s&ItUCZE~`m6>LNcYMPiYHvLHvB!l>fX6#T|#dg{q)`tkCg`_4OR_V2^m(4%vm z5a-$Vcwf(+6$m<%91zF@wxt(3idRlYg+3hN7Eyq9INhShZi_4zr9up6v=#Z+w92qWK(1&rk&k1TAy`czCt4h-E-u&L_{%Klc!Zc~^cG@-S=g|{NA%>@akXiJ z`v>uy4|uaagmuwFa%mezX}V{XDxYggrW?2d%G(UaQGS&$gTp~U;m_<5Lf<$1YodR4 zF?$9SeT^{P%W;&&FN5d$!$6PLD6G;PI+I`48aU-jL}FQAJ~9KyWH{IW8JdS%>z?80 zLAe_7BA=O!%B(!yp7y6gI!&+|w77iu9Z*|m8kH9w0blxpvz`#120n&qK3G25P!FS* z!v`~b{`Z_J=O~mbz?x?dI4iH6^aBUUzTydyW%L`^+pAL~mt!dAqV|;!I(gvsmKL*5 zB`wgd?Gyf!V|xf!PoBe38=`&QMz!Pb@1XXHB1tQuovZsvdg1NiE*v?e_(+(nG1C%D zR|t%_y_EY8+zeL>9A0A9-|b7*luTIqfIpf$1*VXyoB7d|;0+Cbv=C!~C9oeFO(WQQ z$S$_X7kqP2K-9$J1H8yHn*sACjl*kG-^rau?xnkOy6k3;DKib*kzc#shCzmijrA1p zMA+z!gX!DOya}G&yhp(@PU!YizV7lGU-C4=$xMf3H9WN`hPpGoLZL3$-)DHN zB$WOewkc7Dt(e|TP?Jj}2D>wJ;^3fA2O(KyOa`eKEW=fv3^3inRh65Qrcn2is{k00 zH12jp2i~INKcxe`YIdG3U6DYzSfea!@zn@+HS!)VjPE2G6^{oUwg=1q1h)rz(E;W~&wl z7Va$14^&++g3@(u(W(USQ~4LBBv-0?UL_3o^zYJuFB9?OMh^GA;&!XczutfAHGIYx z-9Z>rjGSXH0+lY}nd&dO-%F(#sFTP6?en=ryxh*Neb?-#h1*z(SBa6JVFa=4;ob_kJ@JgOfPRr^gtQq zu4ZBVl5>=Y-K$5kj~uK#D;$3aB~co2Vy~S|=610UK11B@cQTdWbGckOI4X{O^zh9s z__%}kZXkIlk3fiBM%|2FrALvF0EBh>UDA6{R>isHte#SW#!oOtSiT3h(pR*U-5n?# zj?4@tE?ts~=ae68diWZ~`~YWqu#^FG+`vd=3A@nvbq#3f%)S#4;zFZZ5nW`I5PcH- zD1otjLopX&V~|?8TJdb?FkiS(0-(p05LgWhV)NV0OscDUHp%1bmbCXlwuA^9c+i#T z#8Do~F-gBp4H{Yb5qT_kI#>xW4Q&-q1Q{A;7kueEV;Z=2R!`~ucn6mB2$E-F`z2SS z;vF|d8wKV(NvM67k>9gr1svHcHqAW^{980KINqPdm7|Glp{NLa1biZ>r=Elf!rYoS z9V{SRee`XSVSh|m$6C^W%fy)&kzKcuh0|3F*&~QrS@Yu8vWF<1z(c(JG`>$zCqukzL%X&fAvY!*D^mxzNcqzrf35(Yx zNPLB)6LBpyP|0_fp<-on63ZCp8~haM2DSlK3RO8d-jUAYYHSY=)iu5`U$LM zf1S(`nz_07VEdY$HjuB09^{{JGviPz={)SP^&dTRp7Ret{@>S(nQ8{cI^KT}LWSVBUqF#q`PVPb;c2_hz#Z%x zdq+>b=5eogfVTfCb|3YxVrkTrBeQ|UW+ig)rLPlNtH65JqU$l1R=9vXkfDMd+7bN8 zGV_CrLX~g8cNdPRz#GSKU8Fc@;b-;dtCYl+-&ofQET28DNBkU`H~s?DvUSDdKljSF zp#@JgC*^8eaZ3=TKX-Z+{F=TTVJJjwJ%_2n9{k3xyZs(TwCJM5@H;kngj`a*W*#={ zHQUq`od8YP!xwI4Xfe~{ZHMs_rlj`8-SAs0QIkn)W*De8FH{c|jIk8qw^!_0lR(GH zay$V}|CHti+nHP8^h1TMxx(;_$2s1Iq?b*t7(eB-ME_>492G8VO?Pp3rGZAy@+)vF>s}EA^efZdN1^~ljC3o} zDt`Di78?dzQPF&YtgudjL^C=ftpT2OGir0ZxH@#~@9HAF3u>K>?Ze|s3pvog-kVF@ zW>@GH!ZK#jhV#u*l?O=(K!1Gj2&<-_{Zz0DQCYhgG71M6UR_?sb?_{^uIgJws=sV@ z;ITTrxmh;citk4J968r2Sn&kmns&rm!c<4v>iOVfwcs!C8RqNNA(1dg1lo~ zvn0v&a?=-^fmDXCJnbP@D9QnZ9H3B8`SD}~Tt^J>@Uxmvc$#CTATq^^&PTdQ^!8-> zQHt8MliGEcrcOz$*f&c9OswG7D$_k)6avXuNjc1%fs}@(b4{Baf2vc)qsQg4BXtK0 z_9qN|G`*(Z(?#Z|L$t;bsmL*rUla#M?K)~ath0~)_rCxbw+Yeuwf}V)sb;$j&NBu3-8GIAzIXb*HtG05I5JBCuwD+xaCvx z7hf0;?`HwP-A+-JO25u&CiQ3oR%#;tZUtmL?OB~gtd=3i5pvqNmZv;$=|6$U#VZsg z!%waHqqkW+o2^)jed497uwQGUz0O^l{?(3a(1DDj5~v2pblfNXV08p?a2z`u%x_~U52_Wgr3B2THbGj8dp1KtTABiT;kxX1pv4K z5;8()aGMv|B~(J-7*|(O)o_^`TzlfP{wGS|!j2 z&x&i12FmyZU$=~SZtlIAsK~%1ft;WwBfg-0g z#>?(eTr_$G(&Kd{>`-?$+)}CYFkODajkkmLq?27OMNa;-C3-t%`hK;nzQ1r=KxlH zoIOX#+nGLSal&`z3j%bzU656WFm3!wsDY450|$+s4DMQDs*AuHh{p^bqZlUEcL1A9 z>K4vZTg%iaOm!2uo=hSyA#VcmO1Ab;C*`-KL=(6&0WX8Ic$(R^Ve0+<+7N@)y_vro z!VYvz4`*Lg1lSANTkyh%V*N|i*wr#_owQEq#({pSHhpJh=-~0`I{wcycQ?!yIMwxN(7 zkVye423L*A9^|m%?5(dQz0b&rr5+6lh>A4W3wTuDyA3iBftEXJjDJ_IREk3lnV!Yl z8%$p@-X@WUov4X?yR=zVdS6qqMmK-Zaeg}usnwckrZ;Mrsy~~U@rUU0UCP751$dPL zV}vyMqN-&{%gF46kMqV=i3|OUzZs7S*~k=twb1cDldUO?zo#MELRxRQlo(bGD~n!m zcf_SHehMXIW_ow+s+UxujZ4&?ZI#!*bHs1igP76&WTSk3r82i~!ztSz%noFXa5_Q7 zzMV0=Bne>D>mE9_MR3d*oZEJXk+=;K*lF0-X?n6JerS-sF#$*zWPd;?$&ue;_GT9X zCm12r7}i^!hb$jmJjVpRKbrWp27d~W!G2=HKeYH__S#MRwf#u9GG4>Gwiu6F>i@F4 z)X`oly#liLW}Pf{*}sHT85`m~ zK%?o)2bfUVgs{~=)zExALmi<}BL(Sa?Jb9*+L4J8JRx!)J~J1Ek^kf*B0%KK=U##?KlIwg^b8Bq!Yw2a{LzDA|;Fd^P9VE;1q^9M_JO5hwTb*YFy>| zA1QUU^$*%+;kV(Os0WAYtH?tz5%?26pvd707N@&a*F+e2UM|Q-aEKa`Mvfg$E(Zo`LR=`;M|+7s!>SSC&_32oG)oi z%xc_O>5SKAxYnPs8=|M2KYXiBKd%~xikVjAF3DxD2WUS&LkoFPXnBiVr z@b-CG<_e<^2=4G~BV?6!eP!s>wX9nWfKuhwwgTXSxIMmHJ*3hzJyoz+`mtjb6A~TWcv+l$JD9G~gx4d0(pq*Srabwf+OC!CH8PUd z5Ohh;XZ^f;Gks(mBnPiU(oTp8l$YVlCG3JJAf;@;Zj@laYw#?$u#S*KIOdo!ZbI?ooI130#hmB0xrGmk|Yy~+JK*rA)L85nTZabKf7Q3!=LzqQYpp*7$? z={CoLq9XAX*zf!m_yCdIgn4Ik|10`Xd_G&2Y?SjfIYx*Tj^VfDq?umPqZO3pQ8(;j zk;m2MNxtaX4~K$23kA z)i9k>u<~J|XvV^;agMt}@EShKxA|UfUA-|PhbynI0XJQbaA&x`CO-vLJzVH7o*;Jd zuAxZP*!61oN%dyTkd_+$LGr`9%gov@^x@US&j24*n4kQ;A@yDJqvKGdmQ{=tR|Qk& z&K^{~3vKVg4}W3a2(+iC7uxPdaNn^a5(0!UeHHBV;=ED7q6Vb=D|>J5&d*)d(P5a- zVc|asSHB|gzuIwG$dxK*#&FZ^?k(Yveb+;mM)1X&A;>`De z3|uiZa}hyX;yW4$r9ix+?9O-xb2nKDi1yiC^4F0!CBg5(TWn&g+Gc=Je`n6fx1jT{ z$O_t#|4_`Q)c>~RT2_Z7FN>v*Vq@P81@H5m&(eC`WC4J`0>L}?NE^UDNF zUjNF_(th|~?|jFS^el6FTty-qQ&QfQmQDh*>($_wOLLcDO@?$XDI06N+QIXT@>lv_ zuah-SByu%IRPPZ;HKP2#O|}A}X_EFdbi_v`8{kE(@O(Vc86)xaMl04t@bn3l)0PH; zX>n&}^eTKMcs(d;XXr~$$4b9Vqj+5E=XA8L%NrTe0kB^sDx0G719r#~^se;2PRS4C zr2p_^atE3N=}>}lgLuVdwGY0Xe(YeUI3p`Yd?{Y$P$xYv?u$U3a0hLXid7kDk*;>!@sin_kgL#ZZyEW)!^8yVyouqa445+rvjvR%1>?NrDgD>7 z_pS#!$z6mbzaV8DAonyPUOatn*S?^)_w$BMw#&(FZ;xI|#<>P_#$wS3ws!&G;pWFr zF`dDDo6bT_4{T&`8OXr9Vlb&~@jl8X2EYvbYhIO7+$va$p0Jk0{k6Tz;JhK)A4Iqt z=DWrMUrFO8>yM&%`{8Tejp^KIj-pf#Enq&%ODw~mO7Ea0oN_q?DRy8URr9IVv1&L3 zpIs04PsyyG=H|=3p~QUOK=r|4ib)q-meD$dQH5o@ybSkP3|SF#jD#c ze$3v3x`aLsN$tQ83#$v1^e;hLPCGRno8$hN`(ZC>p8bpkCkdI5`aY1?-@P&`Wfk~_ z1dU*u|E9Uxx)If>!*Xq3(Hs3d6;{82%Ur#$6%>5;^(PI$QF`td=*sp>fSVn~LtM#! zv4grr)v5OO1CWNqP8HX62s3t|=vdn;YVT}0m;oC*n-AVA2(cdmIc5UX0|hh@U2CwemzyM0rOo17_q`Ego`_GyF8dTFqkw<$3 zLLI#-4qxexi6^wZ0aV)FzGnP$V|Y5#@+Ae(143=rWn>WVEya&uti&DfUj#N}*3%kQ z(sND1(G;CT7s#b}-=eS;mX>_SbYpAOc$zRdpG(+pW-@1>4}yLGD|1}q4EcFxeW*&* zFXqz)$4HS@h|7Y-UMJ;3JtSM{6ZCVuz5;@8qElt8T6m^2%lt))PQJ`56xrkT1NhwL zD&F;qog!k@Kp^!q#(7<_J(NnyZG}G5o@qrG!E9aBc3+oWyFH$;@e=9YKKthbP0?0| zsQg#oo7dg|Vhmwc2v~BT7NE1APE^+AUk01bp=PeMAila2hRpo3pv}=H4t@GpzEPF_ zgSauVRTzv_5fcc)paLKj{Iaw@lk{H!F}l=msc%dpx~{^`>OE|JgNuUQ#62Zw;BGMS z+oYWu7akQk5Dq$AnwD6DwakXm)C$q-wJt>)m9||KwHzdV|-%Yao~fZ`(ujS5W|aGJ6(Qk8FK^# zmc|m4l1cwjnghN0 zphIfW*N6U$q8j2s3c*ttsFBOJ1 zDj(@&oNF=s)Rtpvg~*S=hAjSUcZPJm=$ViGP`tt3>$g%Pr*U*ys%|^@(Dp$fN29g( z`jzFE@M&bs>U#`jv6|{k_<-RHTSvn#vZQ0vPP01r1fr5*u&{?DhJ#%~8^8Lg}Ft^ACe_gjp0s4dauZs20BW%`x6{v61jDkgbq$ob93h)~$e> z67ZA|#|zPI@}3kNb)pNNd7mIV+RBOd82D{pHUE3i5 zZUsxlLdv(Ek9~rN6!naB#+${55IN|0%_DdHvdoM>)qfjA)^Ywg=BN+)-MMj4s5Nad zE7@Y4Ebi6oq-eGFiS%C_(&8_OW9HPKe>SEyR+yx$_--5Ts3pJ^33YThT>KgIpr3H- z@)IT0#BB%{?9kL?Em{8Vh$)|Yz%2 zM{*)uH|E$*)y^ynx8w3mF%cJ9E%o~yCd|sBSQ>vuqbDzaJ4s&zUK+Z>Y%(q-C7r;d zbF0RRylSkrRy;HQ>C+$Y{wrPD^p%&770?|Cv3Ik7(L@V1$o-Hc^DF7{sf#AA z2C!-&U6|7I4Cjz0-@k8D{6|vlEiSLvp}WJa7CzWfVbaPOK+nNzhyEqNJgailSLbW7 zcV*o}P^`^UP@xB$zW`i7qrcF`nLfKfr7Nn=+=L?gp3&6IBc{{Gz3G#D9{3+@UOdrH ziC!(?=?IcI*AMDVz$UI#kwG@_bR{3#Ro#HXl}w>)>d!s){|5jfK;6G&+QiJ8WcOW) z<ETLt(EA8Q9#Xm+ zcHd5_<)F%6fpy?;+KG|Hl7!?Q)K60b>znP)^)((t&K!r`-(j1o7=~&Skzc4|aQ6LP z_QogMpQ^b%RU2fHde34;IqzV_>Lp`+0KR8-*Q0;WfZc^~|6cuW30|(|GY8e3Wu-U+ z3=XTm)y!4W`^#YW18H|ZVJ4qcvk}SP1$FXC;IdlS0Dj~4ry$Rp>u%MIFEl-RJcN`P zfbZLfd{;i?O=bwVj3Hq8{{MZ5Z?LA@wRcJ;Pn!t+H(Xo0^wEHDB!kA&lj*v3{ z1F$DJ@x5sFJF?uPYJ;yYW0qLwy8Q(Y-3ai`VOf$a<#X^O|Ab#;;{|9T zpS$TX8&rRZ@Y2leJ~8kjQ3`n6dS`ds$&}N-Iqq&C&sCl9pLjHIM_C*kNKYS9vo%9r z%^2}McC2;{c0Dd{T@7!Ksyt21HWF$6U|8GV329yZY*$!YXm3Xa)Jtb6-#6=ha`OmI ze#Pnld*|$a@grumlzAiRyECfQ0O%sX!>`~L!NWrw54 zgRuKW#KSDR%LoBG=Y>hBc}M@!x>O+qmUp)FyJdG0=3}A;v!j<2sduSmwDW$pdkqHQ z`_%4I%;c_YE!`JpckN7Uk8qZ@+If2wk1m7AABzrAvnwnc$_jq1AUO~=HpcBSyR zbqRPY-Ax=a`!cKT&PsM`nP9C(Mt~O@p6!(rIyAD0)h!5)J2@CTk!%74+uv-dFEq}o zxv)Cey;pX>Na=3bolQ}d16PF`d4jk%q#+iNgx zJ-hA~TT|6&FL8I)hdoq$QWBqyTWSB(q}#A-)O4_DZKNv^uzPAPaD)vhM@3FX%v{y9 znF0Ck(Ej42yJ_5$M^!`bQ4y6jm?0` z*8@JilDn1eKK#pKK%@k&Lv|1gV}g%T;AdzbQf-fGpxW79iu%3Az+4$KYa}wTW@KS? zkb8${FFxd@A>D=V&SVOb4R&`I0vTG>2Uo7xGho~pJ;Uzsi8Im4xa#1_HL33By8s*M%!-5ccOlzK^PAx)fBO>E}uTRaBf`$M~* zsPxe8lV^7emwjO8%0n%?lWQO0_B?@9?JQx#>+qsebtW4E_SXA|MIPv&D%qWj@2-q@ zXU_zm2p@sIiAvN%&vQrdRC`Bd%s~D54cOf{0?^_yHXHPbcRhq)+a4^o!?V{j){5MP z_282Vcj{d0sGr*Yx=BCozwVfW@f)~>Z%h;GRLs~R1SjOWN0>FghoFxx4n)NcsF zuunJ2>0njM$XGKvHRHB4jZwh8`;c19oc$1jjon*nq^@D=cj)#gtNYtv$K6%9t`)rq z33+r_y*fEFZhf+QFoeLkkTu3e0N!y|@NHb*b_jWRfy4xkp1K?yOp2g7J8!Uix8x3_ zdrtpOmffR+9ug*u4G=RWekh#)^!iX%#seo-2N{Jz5Si4u8*zAMrVeqp2F`mqSO?K_p6w$H1vBv za5uh8p1HA+`;BdafJ1%^g*?T&9g@23mueJjKe2WT3wC|N#&12Y|Z)#!u^*pwc9mSWqimdzZe`UVuW2&d& z*lB?@9=#7B)lNh;F;fX6JSnlvwV|9D7X8^b>%0$o?@hRS>2B7kE}cxdQPz-r=H#yf}cFQ5Aoh7*mYngcQWC%9UHsrSc&3%dD1J`A^FATS2AD4YL-n( zYG)F*6dS5Uz94bzFfyIc3(jujgWV@6-bd!WPj*Lrsx!H3XNL7THP+`=HF)o)aR`{f z{+brR{~OcOKZn#TK+2H8`eH;*X#B>QN6<05!<|g5>7AJ&k5+y}g?q)Z?(%rR{q^-V z{Ypelwd4rjJTZPb(MvGw{xD|r4n99Ca-h8NP+NKeLeg z>wMePdnone91eP+t?Q9Zm1)6y*uXbtqxR;@tTQ)2=U$FOI(FYr@9||2Tron*EVo3o zt8nFceAn9$fs4&a_r_v_!S8*!?(b-w>TN!wv5FAvX7xX3{_M&uaK9I{M^3%!%D_Bc zzaA;#_sOvP$*x!(-b{bm{Q`#&+#Y80>Oy*Ux9|JmjjA6j_tLK!@4xc2QXSY~wo03v z4dY)W`QKCZRjdTR(Yud{jSz50-2MVbZmc!c)tGTr)q;v028m!@^@Y;U1ozTG-Njg5@0?h}Uq6YuoWP4QU@ZI)Q4T+nE^gvWK*;nhFr$Jxklk%F5|k+no-lZf*6xr04>}cThKUV!?}y!Wjp@AQ z!$3_H(7X}efmkHjb?@UDAIG7(;-zrw+e3-(A4-kyHs{1#DAI}d0ry_Cy94_v+cGzH2UTBu zd;-6fPuL47FHG8d)zGt_q4s04H8X>~;9bolxQrcq9kRRYWXg3W@61F5@6UZOH%Zo% zG0ZEbq7p@v9#w{@&e_C)j0f3H7mAz#f0FYEq!l^9-UYi~ww+9B2m#-UFQep4mEw0I zuTAxoeMnFUqGmCR;Q0beBC5Q~NsdEAjepK|`|B8T8pZ0rv3eo^CQ#;pS_b3t1>a+_*H%G5Cw2n}Q0BiOBxnVH@L zGAF1{Xy41)ar$-azEs|#Leu-p0Q}z!cIQK$afYB|VZZM-qy7F!%mjG`{Uoglrp|PN z*31C>UteQV?0%9%Qa!CjvxBJov?zLcV+Wk)#20~RsQts}e~KUSomii0ZLj3srtvttczlqd$^kRnrh3CX28vx@sov{| zN^kW;F5myxV#a(s-engLITG-R_7BqT>~^na>YMoezi)Oyie&+M*W$gh`w93DV)tOO z`|a=b{`WV#+sm_TSqa{A&E#`ZvQN|Qbp|qGcNpCLMJ}3h#{VcC{c_=69&Wl-)nfNk zydR$3lWt~OC}ifwZ7nYHD!r4}=>czYr8VueO_}^N1Yh;Wb(-`gG#j1GSh?Qc;DZ8c;3MG_DvVk?h9-8HXK2QhNctn zM{ZM1_E^`{s7fHIl>Zp8OSoO()dCW)RNL+~In@S({R)@V+_9zp%kJ4m)Xa(Y!y?|8 zJy>WNB=={_ zmWBXmf_j{cX$QZyF45Q0th?ya`?L&KtOeNJs(sLyiilV2el|269Pn0OrZq$i*?m!T zC^_$kZ%~z54MIsHq?CbrPluySSx~#vsTXwx3p*gOQI+OsI!)E1duEh&pJ6J4Lhb?# z>i$n;3Es1|NZOUCyIBZVm50|vZ{E7$WKnkPg6xj#iruM0)2ZD*g53q$>wMYGRwa73 zUjVQDYYXGtz#SvpfHqyAnW1ZxwTtt87o$~`yQ`jP|0wMqAR=XX8LTu`)t#D2lJ4L zpJTbxGV%vVcF<~H6Bg)w89E@O3oR4;D1sC2$9B6b?H&;B40u?kh4Lm{d^2|l?A3Ax z+yUi6E?loHz?l<%ooR8-0$)84x#zRD>hV1@w&NZ34BdFccvJMfbjf|Wo7|UCa$maS zF2Fva^GRMG?goJWm)pPH?nS$&Q_OsXbdQnd%NCQWBHm4Iw^Ho1(cH)EI*nycR^jcF ztY}}Q%&ezZJ@I~2zq=U{+2}nua3N(g5qKsu$Z~C&&0d@`h1|JO^~C$3Ju_nHjk(2%Re~2_4+>ua(q#ss#L2~DEzYZ* zXR~-crGKz;$zl!j#i47Jm%RSX?9EU`azD|2e0E3mo@a%4cUioxrCWA!3pwW)D;Wfg z{Sq4T?%5XOKy%gYg51lv8)t8(V{3P%-iw|oh@S}yOGCusL3yEcFBejfMV)gjaL@${ zs!G&3m`3_gt*TgWa9;yvPBHTdu9*v}ndYCFzwc`ZgEar!ms0o350fj}(F=K^{kZJT zVKeIt9tH1$=5N;PY`iKMZlAS&%q`u^6$x>%Awv>zPo7YpqK_@O0q(gR^IY^()3YB0|sDioB1 z`Wc*^_kInDc17+@x}Wp!9oi9jL3T$0e+TG)^-_M5y43IiV)qm9M{QJX;yteFy)k?R ze53ok-gNQ$t`IVt{%+a(VD(UpB3#v_8ea=?auqL(_f+lFgxdW?`=KpWN$&{whWoV* zDl^(kI=})UveuZ26d`_RJht4W9hy>S-VMsuBdJ`tXtfi49bHD!`pqRH&>qq6e&YRj zN=8n-_YL^so>^Tq*+#vQHp^`FE-_yHcNW-Zss$2fb9Q$#!9L4#!!>d43|Vs?TN>EE z(Vm1K^7iAN%W=g_B6hbJzQ4GL7wBRn&eBLQ3nSp?Y&-+%u1x9hF87|z=axeJ?BYK) zkIc0U>8i%FZyhlDwJ|jTvtQyVXbw#67x^4+nkECm-)Jq}6l+OR`Iy+U>{9wb4QI~5 z1IJw(brpqRAv6#JP3MGToUfDffPP_H}VqM)0iS&r%UM$!4)(B3B9Y6;CC6$%D z9ZGGgTfU$$j^the|A`IzY7?x;pCKjY_S(LbK)Vylqxm|QM}yk^bz_SUyNJ7$q6zt= z?seW;Y46$GGwXdapep+pkz3hJNAxZN-|-{cmtcHrT4Hg^u%*hBGJdPhA6mKN zH?VyIey8>6lDqsR#SI|XC!gMnLp~AOkc}090Q8Di0f^!p;w)JwHG&rh&WYDm-Q&Ho zxC-lelzT`oradAa(cV_Z9>eFd5AQ0;Ud;6M*7f9!T??{;ya^a4cWL)ACUYVJPbnFs zo)mp&d0y5;*{Z*3jLNl=X|g?S{mjmN=+%L98PO^F7YBl0|BA*$HPd{NdokY^y4m1! z$RO~-6M=|aKP*V3V6{^84V7j~op-3c{X_)#_RzfGZMeuc=VqCA^)FOAv2TP%S0xUT zdx}!HN5No22sdC*14! zSE>~JIedImP0(sxI%b47vQSrg;FA5coc1Y;tlUAFL7dYQmRQ+ci1z`k*PCP+Od9?4 zSO(<(rR=V}UlwBwEtQ_qdLLJm@0ak|b683rifXq}3M6}lc{gtS$!y(bHYs#v$UCKb zl(=`ik@wL%HO^XkR6yakBHyUe_X67kdWzE5knV&z@wIXfW(#g+BP|1d1N&LKJ&EwK zhS-*b`X<}Bk14_L7g5P`jKK*0HM=)e4`d&IE2&?GX<;YOV-qn6mCOLl(E(0Q?~>Vp zCwbC!em@9cD^g&MVpgF7Dj)zKD@I(*hK7%l;iY#=IskUFz9DZ^5ZXse8_y4GH&fgX zaU}DYMj-BzX_skpc0*n$P{xZFP-|lmUa1#8Gx(TrvNlA05(ZEd(UMRV#)Xb2?3*L! zH~H?{V@e<7;89YT`Gm(@=n0pUGRe)FO9FtCJ>ZWmHyFDDi zXOqaQ%YtW*%u&L=wPJl}%dAJ=66^c9y**OtM^6+I7EMiVNDqix^r#VA{W(Gl zJHm}hg7INys~SCC6p{D`lVn%(E;d_9d$*7K%IbnBkHYRzM=Pp$q7mVu+yW5qGC<_n zM0ncA%K~UPmJ$Ha{3{>cNJtsi^T6m!MpaO!ln3OxanB_Y70(f7pc#?s(0D?~*`|bq;K(?=P`>wW%;s?RJ(*|hG&EuY(Xm%>GfnO<8M0fr8z+fg9dXV zpO6&)TP}Pxu8qg_7w%5@vUwH|>$07oZ+=Ezl>W;ud8qCNiv%yK3S1m)2tp?cS<9^6(;mK zMktLrb0pZ4C+9Ds$@K~Tb!h1_0FUvZ{hmZBew<7n1LcN?aGS#e;d=+LzXBt%ZhY0x z`XTU(Sx}ft>fJHHK0Z{9FY6+AJQh?P*bV<|Aio>dlX#q+?e2xh^B4L5_{P?u;PfQb zOV8V)+=)YNnjkB;Fg~}b=C+vI;Mgx4Xq^nmHDA18X9UjiDvYXhU#cQX^bghrdI;c; zxWnDkV|*qyztJip)0<}O$rYep+h(HZF?j}AVqTQ|3WE)}fui73VAH})k|+$HFX61L>fKupFNRp%oYOU5<~Nq z9ghhmpm?b`eVI*A2HiSNwl%;9nR6L!6(9?fv#zKNcC?l(zZ$xBvrzcQtqsN%bLP zbi-r5f${2p(DUR5#~kF_`&EHmHW@-;9OOq@LNC33@9v|4s(^3(!W77xupe;duX5sa@Ew>^PhINGhOUy2<+SkC->X=cqgd;_tKgW?Aq*b zJ=+2{{$~LG7UM$;))weZJJuWx=kl0Yk4t9_ORrOCr|);k$;UZN-k5D7H)c%tLC#O` z|Fd_l?X9Xn6s|#&mcru){{MeHg<*!dp(gF#XP=9j#9V6I__A0mP`OwB_2`;KuZ}0V zPJ3Va>+~M})Nd#Ri+RawE@(5f%)q~2@;S1v_C6VhY@H2Dx1E!>e$T^;EPrld9w3ze89Z2%L0OhBLAAoU>H8%_?%?@ z=l=d+kb*kq+zsaSVByE>9ZP)FfK>PQhkJ?(G1%qfI6*%O&UqLxY~swXXf=PT zuZ29FcK%@Q#h<|b=uy^oRR+BB@T6l}WMsqxpZ$n@J;uoD{f89#X>{YA4&>~_+t2na zF=c;O2OpWJ(NpzP&Q-p9KW>4#jGsWx{jxG23R*$cZUNl$&rP9Dul(R{{~%EiP0`$) zn#vaRC)pRa$7;}#wdShzpMdq%?FV5#37n(#^Xx_= z?;H5n$3ALhcQVJxwdLet%QkmetV4IERF|}W-L+e4^ImW1P|G{y%A=S)zyC6l3E|*4 zmXMM34tw}rMQnGgDY2@X-LfvYDEG^L)Tk9hJp9J2Yi!< z?gb=_;uOAtzi3zUI&PXcT>*dbBYmee%LXW1ur|C0>hW$vNeo$D7&>rpU9V}}I3<0# z&qkqYIp=dlJf#7560GMv^<9wsaO4{Bfs3vNHVAMpg06qWzKinSKN#|pzk$G?6p;MA zTEkRecTO(L>m6q#4*{OLm-`{+xKe>$ zD&J^hi2HVzJM5{=1Np0XbNsGIDhY4!Zd{$&${<>;=h@TXZ+}wuWDR1=gIi%>oe-|0 zubaXmEWKd!7ca$}4#}Jhy^+2~d3Z5I@(FeK#9dwQ#S?Zm7HAfu`_`os&IBEnChck9 zUBx^h+h1fSxZCR;+^$$^q+3$L;c;M<$YuvhfvqY9&ZfLA8*eka@eStjME*Id5L`A$ z&lCV_9otH)bg6ZP`)&a*iWar*@qIZOm0*q{m$0M8n{#io>!V%mN_`V;R7c#M3}$i& z9jmDf>|D>0^>!oo(j*=362d-a0=>Zw#224&vB#B2`?5-!{YOrD@>&i~-Qko%SlayX`U8)nam8m`feIY%OEj`!a2bGCgmQ z!?bt2JLq{R`V4fWyx{6EABu3z#hjfVouYmc>wVPk*dK^LUp}%|5rvt36Yl54=cmjn z+-@}Yly+xci1@Dbk`6oIOl39i+|WFfpLx4_P@i+$lDyWsxNwR+-G!^^(yS}nLYOb4 z>xoPZu&s6di|16C#-(u9*&gEghmf`Jvl{_eXC4py+ry$1@l8*@F58jW8@-Ur`{s>+#Og3{^ zZJfiezqZk)5IQo4KJ^tb_bR%s@!)}&-+5Ni1U`x8tJHYc&*=WubLPEcQk?+Ojbfa< z(KG6-Et-RRgm9mu1N!`ufNS)OuhKjC zmink#Vmu{2o)sAXb*h}6<6lKiPRf&c!>P#RAYrn=@u#L4FrQH0dv0-0DzNbco}bm= zLBqzLI0uay6(;+Y)Zq1rhcTc_@8Y9gr;-5lde@k*l($(@KGsNW0Qe^GaOb0bU_Cq! zGT7u(Fe~gs!TFr|ko|1*f5X8P#zve%=oZR(ZSaio$!@TTf)BN8=F$X}v0^<#%7(yq zSJOJsQy2J@?x(;D*xC4*YeQ!qPBWFOyWm}(AV8n4=q?Nlw=au_I#`$PUMlxrUsEZi zX*;u z1HgL$ssAFr47o3&twl*gLXSiFo6z`Xdy|Re9o|30X|>hyt5?s8XMK!3G^vN|lQVPO zeFx)$-c@}-o>0;Wb45CUo&ocdyl_ShgN9iT`2xN8qZt466hw(sCBRfp+(WUiMmMdw zxtjnl%ngq>0s1cilCHCp-smq$0MA-&!q#x!z-cd(gufzlURo@5eg)4fd`>$mS4SaGj^9V&F{%4c?ogy%)DwLrTtq9vN zU|-)Qn*%bGL52W&?LoWLCx(5azKr~NNrHKK!cFFAbUwq{t8eG}F0VHuPQKoF=RU^T z7|FUG`Qm_HIWI_hW4(B`rSslx%b>g>-tM+}a?N(15WK&E@mpQmU0=s1e@ML`TOxrQ zqTtz_IPY(Uy0@!RUme85O36ri-}ifEVRS5xn0lo0+|RI6Hqn?dl|~-x`@<1;Y1`jr z2dW7kxrJdq#+?c$y|Z3nFKwlZI^H_zXw)m}-L50-?S6&ZY79)&miGl%pP7+uwoXsX zd=vEF;&Z>}_LD_Mv`Nk)qM6{!?mJ;UJ!=XgpD~0h+{1U3yuVSp5S+q zKQbrd9h|`i1teG7i{L$%-Y6AcL|^Kcv{leqqZB+#2}0Rd$Gzx!`yA<)skWp#TYGK8 z$EZ&~>QpZ;d!k??AQ$+8_d}U*$z86xf(?alSwvrHJ&TO^rtPW+%JAMt(0GFhj?(vj z37kpd&a{0PnZ?N-(^w8XOyM?th`N|M!j;pRay8o)qawA39!c5 z{V?3d8r+UIJpJWYKl)l-;COpC_mtRgwg3?L8O$hmsJ-Eu^JuzJ>opDHWkv(M^C2|C zy}ygG1Xt8uXYM+bu|7t2n_@+@oS2y294$##ae2$6>RWCzfX*GvARQbG?SS>zpi8Tv z5%MvO8c}*vegF+b~<2Zg^Tk#+IH!{;UePPy|e{>06tPX}y4+G@e5b9V{(# zhRR<64>*lBD*+F@kIp9Ewfc5?g%5RYB|R|A^euTEs7a0xn5HlQdta2QZOW4tk(uP1sf%Dbk0H6e7OK<~@1#-NZB0wR(O5 zCw1Zh)==ffT_liF+LO|DCx#)?LDPqAp<82J%zM8;_pKQV>egZ@TfdnHSiB?dfaUzgT6GfczV3>#ABr&5wA= z@dVRx1v?|a%=TI6dy>s9ipbL0KuS}n^ASnED?4N5oyHQpU+P$ugTvlM50mHH?+)m$ zi7C2?T8Q<`P0R)=8yxW+rukfV?vM{z$`q>t_?@UGSqx~w|zh#Ptf2L?c z@FFg1FZ~_(+E40#>}moumvA?@<1wjn*7Dxdnj!Hxaztx;S_bf=xoXA|TngUJ0jg%O zj2b56N;~Tv(59Wyo{DtrAnTp|P_h3ay}=HmzHP(CtXQQ!6L-P785`r1j-cDzu?l(yrezz<2NXR_<4YeEtJ9gJ zTdSDOjGm^)Lqw4id7pHu>Vc3VbN51-dHyI88I#47{!f2FUzeut!?Yvu;$_wc0n5LdZ(H7ZW1IARLOQ~J^MEJ4SxMaE8koS3HY*vLZD{;Z_|^@B z9WqIHnuXbSYu-P^p!f4Zk&m}Gc{WI+?h7_6;P{>52BIb%*W_jeSgNg&yL!Yq5F}zr&(jw$=XFA16HO$*1nZS zeKj_q?~HY(?j#>8M(wKzA3yb|0Fg2NheZ8Z(=T%TIP>$dc|;NTuIS@yg&Sg*BTUeG zHn~yKCQ_O*GI;EHH@xM;C+lq-MuAH=8m8V%pTXpUI+7L^& zy@c*_qw%X7CmsVy5_jrj#inXz!-5wZz28;v{cg0sez|U`?kbq+z$Y>O(f2cK zAiLL0%>{dxntSh!)x3$oom_jDcOF0nt~ECdAV2jm0k8A(|4HgVR&aJcicOlkw=dI>-+65@~(BgZCnRhVl3G@;>RC) z|99P5B#7HUmvno&+x5Lon#S^IH~@hGs6QA@r4CXuYWHI%tH%27`pQ}+n?f$XPWs%@;l0qrAJLciqx~ie)xU@u8sM z@`3iOsJ*NAFP)oN(xL#rAN&8|3U*z}ve@dX|CVZB%o*>C;>7-(%tMZ_dOj&J)8ngN z!q@xGo>VRNOl=qanN>qi?N)A{D>^kJE5%sMm>S?~ZZk6&WJ7oW02;wbL_t(U{A?Td z!UC~1&dnG-(+dbzk#*m3-VslVE~9`|X5M!xLz0HW)v9R5w%w%H<1x_g%O4E!#iXPb z#O}7VOq7qRL}Z+WY}}K&c4u;bnqo0iJR{hB-Kdse-CQmbX_?8DM9%Yf*d3M3NOm{1 zzhUCtRYQuB$ZYqTNWb@eH-U8yR(n|(%S0-f`BEQ*tn^*XR^jMz@W)1=fWH?VmIg^j z(O$a*JE|>eN`0}V>d1v!5x!F5twN&snwBvIvCV&i!qin%0S~Kk7HfbvXuqM|sb=N@ zw^d&*^FE=eVQh4I+}8mV&9jvYH9@oGRz(5C}Ff%a6x@j+APXiLQw z*w*o{#kXl&SxgVhahnrT>7y@}Nz1}Plq{9`>cuj>JZw|dVXX$38==6pGCp@Ci(q~4`-$KFPo+L zf~Z#!m#7f&T}=z>mH6i@0=lWmwR1>;0+1c`Xt=5M(?N!c6WJ5-OTj5GDCYt1@D0k0k#f1ssY|?H9=3(WEqxM1>ait8qagG zN(!1Uy+18H2ypM-sLftr%e3n^jX3_dVScfFQm%J!37VQv_ntAl8FgdRc%i978;*TR zQcvkAOTuLL-bTg*nLwW@8^d*Bn=cLf!R`}Ey2Fy0$E})~81Y@u3`o90%)Oy0_h^>$gyg1xjvX{E8Ewc2(|~%s?Lq*Yg;TjjEx~>G(G+Xmal3I} zg|VdF2324mZ{b{-XiHzEL-R;BAjsq|lR^VA=`!OQvMYU7uq(7rcG9YG-gsQ3cOR<0 zw3<;iVsP~J5#B4i7lC`)IF?Hsh3zeN?T!u4Zs{Of`e;doZvJ=8@f_f-O^pVY3WU`^ zj5Pb+Su1dN4Z8T5+l?x!NAF!S0 zF+t%j`&50k`+Rk5M;xzC)?5jdjGdUybVXA(rENH9-HfB)lWpC1pV?<_9!t+?eiE1( zbJ@T&bQ=@U)ZNR$Su(1Z`Ue=Sj!tHc=!8)Tl=0FVxUW}$Pq-Wz6;t|tZ_bd_>AfL4 zS+mq0PJe4#^on1fX81!;MaUl;YgcC>X}@xKLfMs zJvG3S&wDF~A$xZTbDCJxhrO^@9`aLa)cyv_{WR?khfD?r@74!66g9^AI*N|5Y9Lh%r65-mrcMX;?x!A+Gw#l|vzhd0CRtA~!7R;sg!sadYiW~eD0Zze zOwscU#H5-!1ZZoDCiiJITQsF6rL%c0-aPoXnZbWof&c_ZbII(CjwRhCb2Fi-J#B4T zO&v?NWiiNLr3oIZp!KTOi_kDd>h(T(@@;0uV>8s(wb6UCg8gh-w9!n138ZNH#*;T( z8uV;zH*t@$lXXBJ>caC{^hBFNaweqDf61_q1A4$lnB`936aVmbHFZ zlAn%xI`T1H7z}x3T&f=mcr@G+5x9PiXRO{Fw})m5OPFUfR9lR7UNfFDS-sqO*ktMR zv+W4&9pi%C-)3@$!uspdG=o{|nMX86xME!>8Z>|}nh?L5F~UIEd`|hTbkJ`!IGa~O zB?miwFuQDU)cHlkcVb)oO0bwy;UN5`*x-)9IHnTHWr|IqqshD>_deoM=AIWvRoyBV%(CA=T6I;hMftRmBS z8!hGcSGhgpRVY0%rf`!KvMHc@#LM}@_a?!ID}ft#rbj~gyFsLl1D6#18_dQ~Y%`X> zF)=$!QEmuaJPDAax!Ic>8?3}joe^IrsnUHXb)8%{ylzDMTMdbaQw%Pleb#d3VaM+g z;NPzK*v$17e=yk5TIUpFasMg$lptB4O<@F3DS=JbA?uApP@U?D*cVpOtyP z71rn<(08;qPVYe1NEiAb;B_?~9!IIC+TEnyMWct$zk5vs2T)GV3O=HFf_&*rUpm6@AriOV>?>b@y6hAp>6EOV|=!=jz`))EsJb}F(;&yEkXZ37v)J@V_Cu=g4e0TdQ zqXar<%@I^bW74VJm<+{rE3zu~E z(tdL~y6JPqs|X<_((z9Uft>uA8lKkoDI6%3itLK(`l9d)@v-dpp~9S?PIMk|x+-H= zP&d48vX8cKfQ8I_4t8DyP%@IYSm&4F__qmNd(9+H$}4pfL%toIiu{!h9S1xe^i3vK zp5IdeRpu1^aeeDE573svlSS^j1j|U~Tt~wHNA$CyEc+gq5xTQOch-loAwEl_y9>j- zKb?q|meZJ`*mQ!#-fcD@x8G%VNAQez3-~wMevWSWn8p0Li#Vd;=B91S(t z3+{2+(n7!FZ=L{`*NWo>Bjw+ADUiBDTt~3RDCg@L%#lv-1u+ztPKelrrObSsKI767H z8?Tz{ps~Ih%&SGXBOiV4=v?53f5ItI1Vi_meItj^?ht2WpQ{vra|Su)@m3G6c3%LY zi;~{SBZrbA`odK*Y7`TvWUhf-?>2#$wJjgFF+Zu?Jj~n-)4|AAsO*P99`trSx@7YQ zCw@HUL%jUbFqIk0ah0ZM&urW zjJdFvdQ?iFZS>$KYpCP};yM@jze4PPgTK`g><73QHlHFwkJ((7tcx_Gj!EB?>{B~Raxk`>D9OGu^F!S( z%Nfh=UeZX&zX0R~#|L>ErESirUgYcv_5tq~%|R@2hVtt!8Jrb|BFf6ffA>E^oJUGy$#dHB53ksQ=L*d-I+r}m&+-QWhpr=qDC9|`Xhy>Zri-miR1ENizkP9DFE+X;K9yjJAjT_sX< zd=%9KPtWwvEA%o=C*|EqfeF7Iz4yK+Rk~Yyvpmn){K4)S#rY&ecS^yVA`2PgZ>RUX zlrc~EaHw9TY(nGJTl2=<`LJOm2>T`Xdzic2VSev8f#*ZO)n7P~-!E9-SJhqdnZBa$ z4VHITMMmR0W$Yxq$sFPy!+YGzvz5!|>C&B7ee$G^=V(}^W8CiQ*Rp%q;PenS(UgRn zA7m|WaYZUqec=5ZBlZ~Pg~;hq>ufMTOeYO_E6tK_>kR$mTzWchKx&_ zU%x!{N9oefXx5)=;9OL-k@qh1Y$pAX;UMoFF({6-_@_edIKq4zX?xPm`d2tjUsFRCcbCBQx!^|xis*xyoEy(9{dmTKOUL$?J>)8a^fzy z9^Ktrh`AdR`CL?>!0n)Ptu9M(OtGb&(mS&|8w_@#aAtg*I9R6m@M805rHyM$oV=Xd z89#+VnArg#1doY95sKqUnD;ip(I@{Aax`nug?$EFRth2b;}j#%D;qc+ie#jZOFi(5 zN6~Kt8S{qvbnh%0_~v#wV{;|x{cc$IHmw<-i66|JUC#4ihA_Pr7XcVxK8b`LX&n9Q zw9Wt((I@&%U~K!H5Ist@yKFA1O_bv!PvWk;7VpA^lpbfiO3KH~8JWcj%TFOY>}KT+ z*U0uO(&sURIE--47~5vXPes%9Xxi-sA;$^K`uN?&k+V5oJlW#|uf|QDrE@7yT#4l9 zJ&B-PQ9O4;jf^pt3ElgC=)%Nd_BToPjUk#eEu3~gHQUiPe8e(snpzu}MZTHPyn?+} zkCl4P*8`zkG5Y*27?UOKk@`Tn8#MMj7BJ68^y02%%c;zNix`$mDd9g0Ub^_ct+mwU zvQWp8vujpneH!G45`Ngi(J5w*=DgP_>ewRLvnvYMf6yg>%r>B` zJuSJD#K%~D3739PX2BCk)8rkD!CI@muA-2qYcQ9Ok_%0zzh#Ci+3>iTSp+^Z?Qq=B&*B zB13}>t)#&lY=fK}rRa+%FQ`Q;yT)|6-m$pdHO*J|l72zBRKU9jxrGuoyHJ_O*<*uA zu01w0$FfK7<%qA3o9tA7v{;4yMo`=EWK}c(M_3Hy3MLtFTP~gdzF$~Tj=A{VTJpKutp4JQOr$vA2m;yilibdJoD{DVPP#syF(7QJ<5CGWv0nXy8q^$hz~uo6*C&G< zjK7IbWojKnZx?a<_xN)VGhX0Bz`(}hDMMLaa^ayFMb$;J?{4TV zLG%L!pwQ8iz@B=xjv~4(@99*>M>9RMi7Q>gi=zre{H{k1^yZ61M5V?OaQz%7D$=sl z(94ePNOieUCs9?B;bxA%&-ud>0Mb`T!`7au`?b^aFP}VWA=I>0kv5@zh){mkNhg`= zgmcIXqWxiZk}g}azbzl|HTm(Imp?IYrda1G@o1rSq2$ei3ppftoZk(pUzh#Z05JOe zFcgDX1OknmR*p5^H%29#vbD`CpmR?XzvH%5sLfOaMZR>zU#ji$LOBmE-Xx4NwAf8P z%)j?=n>xjt7Z8QZ4PVf^WJqf1`15)@W7269@Pv0@A1-Ek@jc{fpeCpg6JxI3Hn%zU@vRe~l%_uQvIyOI{ z!Glw!mLtng+aD0q5#clVqtc;*nY_@crPw&|y>JSfpXk;rE~zBgjn3aOT;xAL87d_H zcww!hTyFLHP!1CG-FCB-)%^$6jx zF@YaAtvSd{1YAXyB@4&ZGM5E1dZ34bV*X^rKh}x`2Qw0=6^7oLhO06aT0hwR7XF*d zcbzWG&uMfk+rBP<`< zFG(AnrJh0<4kdHGf%ud^dJlJh;x|?2ZkP_+3ffYvc_jQno%WeBUYTo0xcaO%@AF_? zskd~gkBDa0vf*5@DWxdG;?l>rs(vKJsUkEl1;6dTQKbT-7#7$m2%LP4IY!X~@hGXI z5Ps>&Ynk!sXXUJ>fs5e!E*?pt6Y!nj9ntHc_MdN9tb-E;V0df0bao`iq`|ckb?@K4 zW8k*C)mRc7Gs^P06P&L+-)8>k7Aw%LeNt=0-3Rh*L=Cky_J>3$BYogHh zAH=Zls$cb9C`uy=j)9&Rrs6lRDv3T+Ex$4#+66JXAyYTCy;Aylvok~@+`f30Yc(lW zFai&9xUhZtA1WhUwm3#8)uSd0_08dSEpdU)2#29=sgTc9v$q40Y~~v9$4WYazngjR zKbGacnU0LT8VED}_lQycvCFr}k;v7!ODab7{*C#B7R3aGXt4%~a*d zt~}s zx*37#2^FaR|GzA{gSCX*j zC8gYXo|`}CbCHnz1Q2(AA>yp29>eq8l$*!o?nX{N1SsRDrV*{K87Cp>B_kWe^V|&g z=hpmgx5xk6ocpPXw(6s|_Z||zQxN4A3-{u&a)8Pe^jeSnU-sN-OE0O&!96xibt&t& z!Q#zAo~d>M-5qE9r4kNG2kM!5Z*+7%oMKp=t8eVQ-#Zu%p8T4(uEFWG;9RP=#phqvOL<2Y23~jJ>$GMv9?1@_AEk`5el=z%j){Ch>Y*`!KfEYgvm3m6{gQABY_+QVwnlf6lPm~<8S z$$=qVGe>b}H$=`hTV4&>H~*Re@D32H#d0cfjMF}b&jYGf*E@@YHWZ0?H!`#o4}wTw zQOYc%+JEHR9-b}G|K`@iB^=)0AFwSX?Hs~P72>bx;(o|d=vQdcSs7c0;(^2Jz04vo zQ(^)xYE4Wv-AB#u#5ox-A;3MJPnJUk?KA$537GWEM0(m?!gdt}SS{ALaE+e>Dt?Ks z#S@KNKg9Uhl?T38Q%6TDZtFe~tUml%-Doxht`FPhSaOI+222gQUy9$(@iUe=L>WvH z0;iyW;1{d9xE2@-nyk$qDfCN@1cYt2S>~Mh&G#D_FH;Mw!+FF-UCkQV4GbjGVa25Q$h9h@11IXlMQajt z^TOx?qr~p;z=D&7agVI-cEgu1F=x~I+aKWL9+n;#&b{!h-_PXl*9NYGiE!c6!WZUy z(B}?Gk-D@jPo0Umrl}X`+UU78ekr#QewzGKSS`D<@r<{VU z>a@9 zt=PeH8q}34sc+H~>JWXEk2DTs5L|JxvKtKx6p#Y^ zW(Hl!T(!_agWuBv^g7D+3aYR_h$v)aW}=1c(xMW0&h3i$j+1G2!L)m%@N7KcF{pa) zHJDP<0S_|c`Ux|#8RS{9%FTn-08g&cD1#l&&_RB+yVsxOpK3~r$jHrLg-TM;;VJ0- zmOQF3^-@h?YBx&_2o2_UzQlK&IfYRwjnaV-h~nrGEv11WiRcG~)fb=3ezFqOBv^`-Q07$kp9>0lMc zGFkEWu3Fvk;HG0a?!6G6qry^@rZW+7qppAVwV@Tad0qxr*ReO_eGf}<(4V*ZpHTjf zF$&{8{0;i`4BgCUZ8^Id)L}ALz)Tt&vn7PlcuqbF6H6C+hZ>``Oaz5FyJ=qszCu?{1wPlrIvaz?$w&?2ta|g<#ETU%{Vp~>5#?ByAw?^0 z2dw&}!GV-fGW0YIYFy1X2)fXkK4@}e5D&4nG)<)fl*=}1C3;D^tHKR|8FK|gYUrLk-;NT9 zwDG|Pb>~+f3{{@OUEKfO)rZF%lI#LP0e<~+z5(}S{zv?%Ooq5;RF1;IV#W3p!tIAQ z;V-XX1+?-q(!ea$=qIoOT1kaLGE}I|7)xyaK=*fR<$;jXy;{xNoas6-iw_;RzhRAk zGw=NuG~ccE7MJ#sz{cHQ`%4Q6Wmv%jGz4Ei$tp!U?1aG~_bssd`kTmf`aum1z?(Ge zbRPxg)|19a)`BQRCBl37_Q*ui1=>5gYWy?MrlSij-L931kU@01%hg?k`&|uY<|h*3 zqM2KDnIpW4{tVPFi4%e|{MiS!4=mbEq)uT@ABjGx9`GQWa&`gWvcFC!sU>U4Cb&`u z!^XG3@z_b9_kbgcgQP2>gB_dVrN%aqVh#X!I_KRY7%_l08X#E;5a(N9J`-Gm&)4{O zkee)}xN)-cH{m!4DUKJ&DIANzq3|^HOA7TVb3%6QAnd}Zkocsws~7C%TvQn4AP#7> zKce_RbVj`ryW(4mGmL|FlJ2{TI)Kb3Vk%|!LA8ujm_eA$(OJp>D1}xj&~~&+12Tz5 z2;$JQ)qC4hGQ((VPnNR2R%6*mSZX{>dCP)1t3KkvZl@!p-fDoGUei?sc+2#bI+uFi zm752pgO8?XLnSY$hFm>D|Hzgm+YPebeN(^}%V5?dI>~*WP?0C<%QIz+?qGfJhI1{+ zZ#7zm56oIvh}2YCMiMk$pVRzwY!E6^i??`)2nTz3Zp(9mJwc*1u*K6T9VfzxDN>;#U`|E%=k$n_a0-M zK5p+PmEfVvDc6GJ$_n`E{a1Z>(-~4h{YJtoqE0ifVSAsN>(e{KF+Wsulm2`CQvHMW zADLP@2xbp<56B+k{5M4!AQZ{E?5t7(dc9p>3us-yJIj0sO~XYlAlzb*iEl9jl0|ym z%U^i`?eq*5zUEuwJ|Y}7;;rQDs-Fhz=*}3H=vEe^^N;Ah!5{i$k0592;IBGf7F;is zLQ?S`|GvKZ9cQ@4Y)A%~h#oJ1v17L%MQP&o%wBe_zeO^*^MDE=dQgzZ#>-)Po5 zL@~&*h)sbi0IRMEDa>3-1o*Evl`i>63V;OSv7-W@8g&iwZSp-Au>2@=&v3%PK@hNk z&?(azur%7ZX7JV!?veYz!cy6p@OnF(8)DT|r&XoIM{_0tr#HT}2=kJ6w^7l6)DHCS zJ60-t|EylA?2GR`CbRZ$(B9ScQ9dO>2LRM1rXHJ@r&?27p*n>o*i zeJ31CK(T2xQe+|3+?31$< zIB#eZwTPgUtdi^fyc-utSf0H8##r=-Cam%kQU}ec&w9jC&w`@f;F%A!Sx5K7MT%3Auyz~a&k{uJ_gDT7 zz^sRXZh7x!#>AHi$!izNhkUp8b2jeXuXa*VGf$utcE&B zP2a5zl6QK>qW8M?QI7l6^{zR#b6v&I>5c;C>OedxAli!xhO?T0a-I3FvfT69>V z=f&tq!K#KIAVoRSds3TRDgJ7==c$W4(srUZDE!@_C*Rft+t6PtklYZoA&)Q$r`#dG z?BHa~NmN-bxrlfgO}>O^kufaL13NeycQI{L_u%hl)K$0{dLE%|0Gdfwk1^Qandu=w z*pKLp8XQe@hZNH>Ly5neZQ09Rl2Fn2oIPZHOrl8bi-GejH6uVg25lTG&Zg4Mb5Zx; z$r&}gNV5f;;?*L6EaUoaAA^z&J1F;`P5suvl=$F4Xfg1^naYz&l`~WnsL7{9{i*Yh zV&&=|h|xr7UN%}MxN&2%QA>CuCA~?;PL#JJ-Ds9Dt;H<{yW(T%H#-1K-KDGCZD+WH z_9WVmw5Q@*Dy+Z+t|KCDt2M*Johd?nB<3%!;xb-2gEo4Z`aReEG-%QW5G?gM5hf05 z^n%pj(kam5VaP~7;V6<4wqYg169%~I5lgdMj0?a9N#3D01DD{eU6K0PEF+B68S$p< zgy&Q~@Emw9trW;>hSt66VDiDvjq#eKk|9>nkUJE*6$iSI;*T59Tb8=33Iyb}2M8U@ zs`TA_hg563F2AS?%JiABzk6n zvvveo{EUql!{Hj*<=9kT?cZ!wsL87?Ue^>p^H&FVy?+N!cO7KY*T6ehj>WPJ#=~L% z9A8b29rgKt9rCxvvVtI69Y8ql@>P3L4zh@{2kloHXG64^&{jU7n`q26z~sCVV)#)bHMF82QBBmr@AOSy(mQOcp!)0Htf4YyDG30;j&l>RGRBBs@0&V% zc>W;i8?Qh1nBNDz*@9h-IjKEoYt4Fmucw7tjaL>^iWE zoP50G^3=oc_%}*?kd5FXrQ$_Es%R#1x?}5gQVH(MPx7_EB$bYINu@KUviV_1?!TwX zI95-6*Mp=z0{u(e-?;V#xA~cHT)GxD~euW*Y|$R;Xc# z7gG2K*d}Kq3Bg6#iy)G#`58Gxa5p-0g$aDC;I?hw2k%8rQlTM+*Em?7mX(sl&!{S; zS;n{kr8?U&6U$OP-0`A`;p>q5@QozmI^1dgeqOq(@)g6fXu}n@&u!*aM95?8gx*L9 z4mG1JP~PL6|4a{sa_Tb_NQl+uL~#k3YqPvlF(EeUT-Q8-5{ZuaMY89NV9yY%_=81TP-e>i{JMGFt$7Q^9j(TKOBb{<^~9+Vykr2*vlXI{p>6 zw!W<)?!G4PvZr$I?f8Y{(qvW+^iL0hZqDG{n4OtQh-|FHz4h1Nr;IXAkH4k;R%kd# zS+MLy_s0qNSguDJ;_5cWhp_)Fn^sI_WTCbaP zq%9)6EC>+M>?q-%s&732?@xpFzOi339hC8aO1#Qi)@!{5fgxF>QOI-~Y?2@?q;Je& zsi4n)4K!1v`(R-m?O;6me7AF|kdKFCPfOgLb1H)5s+rtjgC1anoI?BgQWh|v9Qo>@ zXYYu#^~?TyqAVHAkBk@btcYb`$0oEq(@iD|;3lZLIp|}fGy~|qOC3Wy@X;!P-B=4w zD`7=~uJcm`$JX;QwlwDRVaxhoh3+Y#zxyIWvH(AUn6ns{pYWlv7&zZA|IW%VNkAeR zc7r&#wR}bkFtmeAiCT>rfGPQSK${7=V&^sO3qv>-xGHt5mZ(^Gt&f$)zJfBQtdMSZ z^`kr!$1J@wgRTfiZ&%nV{nps2fxjX8FfYxOd6^4RZJ&c8L%C)63PWa{a^k!?aJxjH z7a}JDT!bHZ*`7E1zq5yJS`^!m5^MX_yo5yhpU^AFtc@>tbK7C>S3{f1Atp{QFRf-L z+359*Z{PgL`2ywBz`i21Otyj8D$Oy_-ZU#;W%)@0(W>n6;v9?DMpe)R?C$XC&B6G5 z5YeZuJQDm&su?LeYsfS3p?yRtG!nz&(7&gfil7p!n67FRMnxX6bo+EEd{hy33=Yk2 z!`&TrHw88ZD_qbsX3oX)QSti@{XnxB`W5w~Eds&nd_KH(X%F589m=FzLBvqh7=A>L zgI+2HM7}o<=7Fq_u==K5YSzto@0EWYbZ7u<`~#T+KN5r#sEL9$P0qA2C7|xyp3G9G zi?HSm0VJYBJ&A!5ML?W*2x9gNQ$NZ^zAZ#!DVzs(yWL{ zf<(jL9Z0zcKaqVHtSqRcMv2$VNDWXaX)8QmlnsF*=e`}sL)0RA_F8HWFP)ka z+>vDhAS?IUj-^yuKtFh}-ucIjmN8t_zQb%faC=f^ugYQYddJz$kq8a@_w{hPlpW)W z!0q;$XDfBSPl$fTP0MP?@!%XE|@heYi@_kpelwYne zqnTTaU|yD*bBGlG&tYl{pa(|qc=FJh7xl~)e0_s~{Gu>M5h}o!0g$70Qw#$K3K86^ zV>vct45UI+=2vXz?Lkkh@oQlZ4s(%_mvW=2&bfJYb#tOeZ`TTj3i^Okz_n{})S722 za7Edif)8P~M}^3!}BDqWgHbJq@@bl`$a6C4{j+@B9q-a`!M_y}|zo^k7MNMuGq}7UhF= zyQ+=GA$X7#f|OBOp$oFQ4i??PrbjhaEN0-cFBu&*=oqLYOmYp7)lY5;_^H}mF*I!X z^ZffbdX;Zq&K^7%$M7pE&ekyWg|R63duHU9&hi;_J- z4?04Cc6^sFBtWipE7YHDxIZ7f>GE1Y06%KPp{ny2=S1t{uyK$F$~N2Aah|gYklMVX z@1BO&&ECFlrG0sPV+NDn0~v?euLb1GuKk@owY3qv(+(5l@sJ_vQ=&@r9a`()55{E3 zR*V-$N@Wf6VfUu2M;d$31ur%e8W6fyUkO{uE{2o=)qrrHE{!9(hn7FV9XRbwc0x;S zxrFx+t+BfNp48Gma93IYaLU|{oiYQjWuHRgc_e!(YS@=YJUt$TxLleHW-4I1_^3K3 z%3o8V_Ygnhi)erGwcO*o1`&%){Fh4U)2B42g{ai~NK`$sJY{!VA~|Vvb+i_=rfC;4uGG3aqPD={{J-CzW>@efXJA zf?Dlp;@DirP~H}DBBQ@weC;-i=Hqy*m^e-a?~?d~>^iHl_nRsx(~3lrt<8^3bJeOy_?8>@68h;`k&d(wlkgwimK1yK?l!P4M33D=p(+y$oYK_= zU`Fc}+Czt-52fQR7-{nslc`NwiS;l6#`nebm-@!cXD!z~TPfc|GSF?U_WcgPx9#+P z4i4OJQ$E*#C>^xb`LNv7yq<&v3LKRrdu1vrs3UWN2Z(SV`C(^+YybteeOVz-%W=%k z`t5s23fjTK_QCzVocN5t%zG}g6mWjQX;SKhMOo(!b5{VD9R%h0qh?4w22vz;$8O;|EYTwX%TsLYj+yw=)xcytfk3S7bj?oNb4`5zk6+dwjN zQ}bXR|{T&=t2YA;m|JsWCJCHpPUp!pi zX(tdhBdV^>@JO^>?IZABRWtBVNy(ik0k2Z--Y{Cu$)goQ0I)P{zkQVZS}@!lk_o2w zG;}}HTHbd}#DXWp_Koyx4Y$EFqOG+f6F_pKJmcZ_W35?iyAw*K?8yG#EZ>2QY(KJp zt*kD(*hBX%}n9M_; zZU+{&M!CljsMVBq3^E;p@P))8D-uJLy7`-83j!3DCqt0$Ml;x^`4-Ft(7)`P9@Cf{ zmL9Zf?MY$WYn?&eXwpHvSC}0?3?%^oKLNv! z#!ApnBpCfLiWZKLO!m(_!=g*InaE6^uD|UJgE$Nb;;UPL+H5sizOIf}E=#Lta~f&n zu#@Q5`ltxFWB1=d(c@z;+C~?&tg*z8X-*3ugSgrmwApNzqtYB>*!}2pO|`_oC^-@C zZ;AF;UlN}$$c-3e`qHYV_e4ZJLsPxqo&-K{C0KAJG3!elL%t{}n1>*ZsB+CqT5fax*a%NS|NBNKqV&5UA6u~-=OsL~h#(!KTIvB)zE^sNRHG5&p3W-?g8mJb zuo>vEC?&2eas1u7ULg1J0b3;J2EYJe@?OMcb)U-rCV^`*s^ zysE-oTk~W1gK-1DUXhT1T!9UmD_u!VnBM&U6RoB7|yUHaV0^GpC-P{6!&>P?O1OI$t!K1C%feUN??$5(|-W{@FnCU9; zqkt57f$7duM-nPH1PU`AP24u`7xLX<#U`pBD2D%c436=UTEP@(m+shsfv)xu98)Q3 z2PC*RZv;q#bZ);x>_-zfURBwQCiJRh*(BZE8cVY0abA7S4-|*Wf}FuH3Cb5luZw>z zd1C#h8X24B9aRU4)~yZqA(XRmWBdWZ8p;$MkYRM|uoou@=$MU1#tzT2$IN8aOHttC zL#~bL6N&uQcsBi;{>6ez^siViad9Q-FyF_JhXY~fFF;>+gWS}ynj=&*6?{IJFQFHB z7Itgq<*lRDq8KA*&@~TY$YlekwV03)qSFSItra^`pKkpuyJqo{Btmr-BaJq8D)s*LG0xn_db`)DiWn_Ka?c(Wz>@C;Kq+kP z-hQF4n2*~NOu~wL`_h!?a7V;n|2d6mzY#PQ$EV#+*l0bJx&357eH|ZCX7ax3fBpry z){_l@auw)ba}8M@1eq|SQqVn9=*((@N>(cuUlfIMjfzX59o9P&648?ri)6B|$&EwB zA_v3HL*VvGLXpTW5!R^dE;fvqQ{U(-ySL)=3gy`G8Y3HE0RJnLBkFJso-VGxM^dLf z_83DzYTjjFEAvs>0*15L=*r1n7n>9%448P7f-(%v@%8nYC9C`^f9haROVi-5J>EKm z_MT`IQ|i8>c3vzzLFrywx(LC;)PQ*P6#w$)s|N3hHlr_M#GKjNE-mJO3k`g7M!Yna z@fW=PeSez#&W)H&{-6uu+=p15M>Tzil-hZ~T~cm=yJgO=RH7jtURc6967UuZ?vol7 zLM+cNDK6N-!cc4m4bF+&i1>+LnrP8y`-YrhW8k0PsM*0Ue3ava$-#e*6Y<=KLguv0 zu>fbT%VEa%CbOnd2*Y3bv2#Ev%y52%B#$am3nR2?9EG!98W*Q%Qw8g2Y}+_N0D#_d zq)$0f4Ypry8dM3Ll@e=vxBtc-z$@{c>;w0gYq=T!qUJkI{xc<30%{ZX3

g|Kc0> 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 t)?Qa6EBKAJR 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%0AMr=vUM;(g3@0@ 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 z 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

WKT$f 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%0AIdcVs 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

    pJXi4OX<`@&s=iN#-T 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≈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 Qpd5g|io}BWAD>5R2Z&Rb;s5{u literal 0 HcmV?d00001 diff --git a/common/src/main/assets/gift_wall_light_up.svga b/common/src/main/assets/gift_wall_light_up.svga new file mode 100644 index 0000000000000000000000000000000000000000..d623284619eb441219dfb2ff497ef9a58348394d GIT binary patch literal 221514 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

    `?jhnFLeQPJnhf>UTxHZZL7Ns;SlTy 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

    #3j* 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�%UB3YS|+r!JnL9=`emQmfxaF3HcY5u6vZq` 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 literal 0 HcmV?d00001 diff --git a/common/src/main/java/com/yunbao/common/Constants.java b/common/src/main/java/com/yunbao/common/Constants.java index 8fe6ee4db..775acb274 100644 --- a/common/src/main/java/com/yunbao/common/Constants.java +++ b/common/src/main/java/com/yunbao/common/Constants.java @@ -20,6 +20,7 @@ public class Constants { public static final String AVATAR = "avatar"; public static final String SIGN = "sign"; public static final String TO_UID = "toUid"; + public static final String TO_UNAME = "toUserName"; public static final String INTOINDEX = "intoIndex"; public static final String FROM_LIVE_ROOM = "fromLiveRoom"; public static final String TO_NAME = "toName"; @@ -150,6 +151,7 @@ public class Constants { public static final String SOCKET_LIVE_DRPK_RANDOM = "LiveRandomPK";//随机PK public static final String SOCKET_LEAVE_ROOM = "disconnect";//用户离开房间 public static final String SOCKET_LIVE_END = "StartEndLive";//主播关闭直播 + public static final String SOCKET_LIVE_END_CLOSE = "StartEndLiveClose";//主播关闭直播 public static final String SOCKET_SYSTEM = "SystemNot";//系统消息 public static final String UP_USER_LIST = "upuserlist";//更新用戶列表 public static final String LIAN_MAI = "LivePKDRLM";//用户连麦 diff --git a/common/src/main/java/com/yunbao/common/activity/AbsActivity.java b/common/src/main/java/com/yunbao/common/activity/AbsActivity.java index f4ac8a40b..1fd935eca 100644 --- a/common/src/main/java/com/yunbao/common/activity/AbsActivity.java +++ b/common/src/main/java/com/yunbao/common/activity/AbsActivity.java @@ -12,25 +12,30 @@ import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; +import android.view.DisplayCutout; import android.view.KeyCharacterMap; import android.view.KeyEvent; import android.view.View; import android.view.ViewConfiguration; import android.view.ViewTreeObserver; import android.view.Window; +import android.view.WindowInsets; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; +import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.R; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.interfaces.LifeCycleListener; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.utils.ClickUtil; +import com.yunbao.common.utils.ToastUtil; import java.util.ArrayList; import java.util.List; @@ -301,6 +306,25 @@ public abstract class AbsActivity extends AppCompatActivity { return getCurrentNavigationBarHeight(((Activity) context)); } + public static int getNavigationStatusBarHeight(Context context) { + int notchHeight = 0; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + WindowInsets windowInsets = ((Activity) context).getWindow().getDecorView().getRootWindowInsets(); + if (windowInsets != null) { + DisplayCutout displayCutout = windowInsets.getDisplayCutout(); + if (displayCutout != null) { + notchHeight = displayCutout.getSafeInsetTop(); + } + } + } + if (notchHeight != 0) { + return notchHeight; + } + Rect rect = new Rect(); + ((Activity) context).getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); + return rect.top; + } + /** * 全面屏(是否开启全面屏开关 0 关闭 1 开启) * diff --git a/common/src/main/java/com/yunbao/common/activity/WebViewActivity.java b/common/src/main/java/com/yunbao/common/activity/WebViewActivity.java index e01cf045d..946591739 100644 --- a/common/src/main/java/com/yunbao/common/activity/WebViewActivity.java +++ b/common/src/main/java/com/yunbao/common/activity/WebViewActivity.java @@ -88,6 +88,7 @@ public class WebViewActivity extends AbsActivity { @Override public void setStatusBar() { + super.setStatusBar(); // getWindow().setStatusBarColor(Color.parseColor("#FFFFFF")); // getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); @@ -147,8 +148,7 @@ public class WebViewActivity extends AbsActivity { if (url.contains("for")) { mWebView.loadUrl("javascript:goAnchorTab()"); } - - + view.loadUrl("javascript:setTop(" + DpUtil.dp2px(15) + ")"); if(url.startsWith(HtmlConfig.SHOP)){ //商店页不做动态变换 return; diff --git a/common/src/main/java/com/yunbao/common/adapter/BaseAdapter.java b/common/src/main/java/com/yunbao/common/adapter/BaseAdapter.java index e53971c5b..ba0cc148f 100644 --- a/common/src/main/java/com/yunbao/common/adapter/BaseAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/BaseAdapter.java @@ -9,7 +9,7 @@ import java.util.HashMap; import java.util.List; public abstract class BaseAdapter extends RecyclerView.Adapter { - private Context context; + public Context context; public List data; public BaseAdapter(Context context, List data) { @@ -34,7 +34,7 @@ public abstract class BaseAdapter extends RecyclerView.Adapter extends RecyclerView.Adapter giftQuantityModels; + private Context mContext; + private OnItemClickListener onItemClickListener; + + public GiftWallAchieveAdapter(List giftQuantityModels, Context context) { + this.giftQuantityModels = giftQuantityModels; + this.mContext = context; + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View robotSayHelloView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_gift_wall_achieve_item, parent, false); + return new GiftWallAchieveViewHolder(robotSayHelloView); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + GiftWallAchieveViewHolder giftWallAchieveViewHolder = (GiftWallAchieveViewHolder) holder; + giftWallAchieveViewHolder.showData(giftQuantityModels.get(position)); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.onItemClickListener = onItemClickListener; + } + + @Override + public int getItemCount() { + return giftQuantityModels.size(); + } + + class GiftWallAchieveViewHolder extends RecyclerView.ViewHolder { + private TextView achieveName; + private ImageView achieveImg; + + private ImageView achieveImgLock; + + public GiftWallAchieveViewHolder(@NonNull View itemView) { + super(itemView); + itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (onItemClickListener != null) { + onItemClickListener.onItemClick(getAdapterPosition()); + } + } + }); + achieveName = itemView.findViewById(R.id.achieveName); + achieveImg = itemView.findViewById(R.id.achieve_img); + achieveImgLock = itemView.findViewById(R.id.achieve_img_lock); + } + + public void showData(UserMedalListModel quantityModel) { + achieveName.setText(quantityModel.getDressName()); + ImgLoader.display(mContext, quantityModel.getDisplaySrc(), achieveImg); + achieveImgLock.setVisibility(quantityModel.getDressStatus().equals("1") ? View.VISIBLE : View.GONE); + } + } + + public interface OnItemClickListener { + void onItemClick(int position); + } +} diff --git a/common/src/main/java/com/yunbao/common/adapter/GiftWallGiftInfoListItemAdapter.java b/common/src/main/java/com/yunbao/common/adapter/GiftWallGiftInfoListItemAdapter.java new file mode 100644 index 000000000..d49706220 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/adapter/GiftWallGiftInfoListItemAdapter.java @@ -0,0 +1,159 @@ +package com.yunbao.common.adapter; + +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.makeramen.roundedimageview.RoundedImageView; +import com.yunbao.common.R; +import com.yunbao.common.bean.GiftWallInfoBean; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.WordUtil; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class GiftWallGiftInfoListItemAdapter extends RecyclerView.Adapter { + List data = new ArrayList<>(); + boolean isAnchor; + int list_type = 1; + private boolean isLiveRoom; + private boolean isStar; + int giftStatus; + private String anchorName; + private String anchorAvatar; + + public void setAnchorName(String anchorName) { + this.anchorName = anchorName; + } + + public void setAnchorAvatar(String anchorAvatar) { + this.anchorAvatar = anchorAvatar; + } + + public void setGiftStatus(int giftStatus) { + this.giftStatus = giftStatus; + } + + public void setAnchor(boolean anchor) { + isAnchor = anchor; + } + + public void setList_type(int list_type) { + this.list_type = list_type; + } + + public void setLiveRoom(boolean liveRoom) { + isLiveRoom = liveRoom; + } + + public void setStar(boolean star) { + isStar = star; + } + + public void setData(List data) { + if (data == null) { + data = new ArrayList<>(); + } + if (data.isEmpty()) { + GiftWallInfoBean.Data tmp = new GiftWallInfoBean.Data(); + tmp.setId(-1); + data.add(tmp); + } + this.data = data; + notifyDataSetChanged(); + } + + @NonNull + @Override + public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new VH(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dialog_gift_wall_gift_info, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull VH holder, int position) { + holder.setData(data.get(position), position); + } + + @Override + public int getItemCount() { + return data.size(); + } + + public class VH extends RecyclerView.ViewHolder { + TextView tv_rank, user_name, tv_rename, anchor_name; + RoundedImageView avatar, avatar2; + + public VH(@NonNull View itemView) { + super(itemView); + tv_rank = itemView.findViewById(R.id.tv_rank); + user_name = itemView.findViewById(R.id.user_name); + tv_rename = itemView.findViewById(R.id.tv_rename); + avatar = itemView.findViewById(R.id.avatar); + avatar2 = itemView.findViewById(R.id.avatar2); + anchor_name = itemView.findViewById(R.id.item_anchor_name); + } + + public void setData(GiftWallInfoBean.Data data, int position) { + user_name.setText(""); + anchor_name.setText(""); + tv_rank.setText(""); + avatar.setVisibility(View.INVISIBLE); + avatar2.setVisibility(View.INVISIBLE); + if (data.getId() == -1) { + tv_rank.setText(""); + tv_rename.setText(""); + user_name.setTextColor(Color.parseColor("#A2A2A2")); + avatar.setVisibility(View.GONE); + if (list_type == 1) { + user_name.setText(WordUtil.getNewString(R.string.dialog_gift_wall_assistance_wait)); + } else if (!isStar) { + user_name.setText(WordUtil.getNewString(R.string.dialog_gift_wall_classic_wait)); + } else { + user_name.setText(WordUtil.getNewString(R.string.dialog_gift_wall_tab2_list_wait)); + } + return; + } + anchor_name.setVisibility(View.GONE); + if (isStar && list_type == 2) { + avatar.setVisibility(View.VISIBLE); + ImgLoader.display(itemView.getContext(), data.getLive_avatar(), avatar); + anchor_name.setText(data.getLive_user_name()); + if (data.getGift_hall_rank_hide() == 1 && !data.getUser_id().equals(IMLoginManager.get(itemView.getContext()).getUserInfo().getId() + "")) { + avatar2.setImageResource(R.mipmap.hide); + user_name.setText(WordUtil.getNewString(R.string.mystery_man)); + } else { + ImgLoader.display(itemView.getContext(), data.getAvatar(), avatar2); + user_name.setText(data.getUser_name()); + } + anchor_name.setVisibility(View.VISIBLE); + avatar2.setVisibility(View.VISIBLE); + } else { + avatar2.setVisibility(View.INVISIBLE); + anchor_name.setVisibility(View.GONE); + avatar.setVisibility(View.VISIBLE); + if (data.getGift_hall_rank_hide() == 1 && !data.getUser_id().equals(IMLoginManager.get(itemView.getContext()).getUserInfo().getId() + "")) { + avatar.setImageResource(R.mipmap.hide); + user_name.setText(WordUtil.getNewString(R.string.mystery_man)); + } else { + ImgLoader.display(itemView.getContext(), data.getAvatar(), avatar); + user_name.setText(data.getUser_name()); + } + } + user_name.setTextColor(Color.parseColor("#FFFFFF")); + tv_rank.setText(String.format(Locale.getDefault(), "%d", (position + 1))); + tv_rank.setTextColor(Color.parseColor("#FCC755")); + tv_rank.setTextSize(20); + tv_rename.setText(String.format(Locale.getDefault(), "%s", (data.getGift_hall_send_numForString()))); + avatar.setVisibility(View.VISIBLE); + } + + } +} diff --git a/common/src/main/java/com/yunbao/common/adapter/GiftWallMainTab1List2Adapter.java b/common/src/main/java/com/yunbao/common/adapter/GiftWallMainTab1List2Adapter.java new file mode 100644 index 000000000..66f55d9e7 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/adapter/GiftWallMainTab1List2Adapter.java @@ -0,0 +1,213 @@ +package com.yunbao.common.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.PixelFormat; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; +import android.view.WindowInsets; +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.opensource.svgaplayer.SVGACallback; +import com.opensource.svgaplayer.SVGADrawable; +import com.opensource.svgaplayer.SVGAImageView; +import com.opensource.svgaplayer.SVGAParser; +import com.opensource.svgaplayer.SVGAVideoEntity; +import com.yunbao.common.R; +import com.yunbao.common.bean.GiftWallBean; +import com.yunbao.common.dialog.GiftWallGiftInfoDialog; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.manager.base.ACache; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.SVGAViewUtils; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.util.ArrayList; +import java.util.List; + +public class GiftWallMainTab1List2Adapter extends RecyclerView.Adapter { + Context mContext; + List list; + boolean isStar; + SVGAVideoEntity drawable; + String toUid; + String anchorId; + boolean isAnchor; + private boolean isLiveRoom; + + public GiftWallMainTab1List2Adapter(Context mContext) { + this.mContext = mContext; + list = new ArrayList<>(); + } + + public void setToUid(String toUid) { + this.toUid = toUid; + } + + public void setAnchor(boolean anchor) { + isAnchor = anchor; + } + + public void setAnchorId(String anchorId) { + this.anchorId = anchorId; + } + + public void setList(List list) { + if (list == null) { + list = new ArrayList<>(); + } + this.list = list; + notifyDataSetChanged(); + } + + public void setDrawable(SVGAVideoEntity drawable) { + this.drawable = drawable; + } + + public void setStar(boolean star) { + isStar = star; + } + + @NonNull + @Override + public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + + return new VH(LayoutInflater.from(mContext).inflate(R.layout.item_gift_wall_man_tab1_list_2, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull VH holder, int position) { + holder.setData(list.get(position), position); + } + + @Override + public int getItemCount() { + return list.size(); + } + + @Override + public void onViewAttachedToWindow(@NonNull VH holder) { + super.onViewAttachedToWindow(holder); + holder.giftBg.startAnimation(); + } + + + @Override + public void onViewDetachedFromWindow(@NonNull VH holder) { + super.onViewDetachedFromWindow(holder); + holder.giftBg.stopAnimation(); + + } + + public void setLiveRoom(boolean isLiveRoom) { + this.isLiveRoom = isLiveRoom; + } + + public void addList(List gifts) { + if (list == null) { + list = new ArrayList<>(); + } + int index = list.size() - 1; + list.addAll(gifts); + notifyItemRangeChanged(index, gifts.size()); + } + + public class VH extends RecyclerView.ViewHolder { + SVGAImageView giftBg; + ImageView gift_soles; + ImageView giftImage; + TextView gift_name; + TextView gift_status; + ProgressBar progressBar; + + public VH(View itemView) { + super(itemView); + giftBg = itemView.findViewById(R.id.gift_bg); + gift_soles = itemView.findViewById(R.id.gift_soles); + giftImage = itemView.findViewById(R.id.gift); + gift_name = itemView.findViewById(R.id.gift_name); + gift_status = itemView.findViewById(R.id.gift_status); + progressBar = itemView.findViewById(R.id.progressBar); + } + + @SuppressLint("DefaultLocale") + public void setData(GiftWallBean.Gift gift, int position) { + gift_name.setText(WordUtil.isNewZh() ? gift.getGift_name() : gift.getGift_name_en()); + ImgLoader.display(itemView.getContext(), gift.getGift_icon(), giftImage, 40, 40); + giftBg.setClearsAfterDetached(false); + giftBg.setClearsAfterStop(false); + progressBar.setVisibility(View.GONE); + if (isAnchor) { + progressBar.setMax(gift.getIlluminate_num()); + progressBar.setProgress(gift.getGift_hall_send_num()); + }else{ + progressBar.setMax(1); + } + progressBar.setVisibility(View.VISIBLE); + if (gift.getIlluminate_status() == 1) { + gift_status.setText(String.format("%s%s", WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_up), gift.getGift_hall_send_numForString())); + gift_status.setTextColor(Color.parseColor("#FFFFFF")); + gift_soles.setImageResource(getSolesrRes()); + if (drawable != null) { + giftBg.post(() -> { + giftBg.setImageDrawable(new SVGADrawable(drawable)); + giftBg.setLoops(0); + giftBg.startAnimation(); + }); + } + if(!isAnchor){ + progressBar.setProgress(1); + } + } else { + if (isAnchor) { + gift_status.setText(String.format("%s %s/%s", + WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_down2), + gift.getGift_hall_send_numForString(), + gift.getIlluminate_num() + )); + } else { + progressBar.setProgress(0); + gift_status.setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_down)); + } + gift_status.setTextColor(Color.parseColor("#01071A")); + gift_soles.setImageResource(getUnSolesrRes()); + giftBg.setImageResource(R.mipmap.gift_wall_main_item_bg1); + } + ViewClicksAntiShake.clicksAntiShake(itemView, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + new GiftWallGiftInfoDialog(mContext, gift.getGift_id() + "", toUid, isAnchor) + .setFullWindows(!isLiveRoom) + .setLiveRoom(isLiveRoom) + .setAnchorId(anchorId) + .setStar(isStar) + .showDialog(); + } + }); + } + + private int getSolesrRes() { + return isStar ? R.mipmap.gift_wall_main_item_select : R.mipmap.gift_wall_main_item_select1; + } + + private int getUnSolesrRes() { + return isStar ? R.mipmap.gift_wall_main_item_unselect : R.mipmap.gift_wall_main_item_unselect1; + } + } +} diff --git a/common/src/main/java/com/yunbao/common/adapter/GiftWallMainTab2ListAdapter.java b/common/src/main/java/com/yunbao/common/adapter/GiftWallMainTab2ListAdapter.java new file mode 100644 index 000000000..e43f7cf9d --- /dev/null +++ b/common/src/main/java/com/yunbao/common/adapter/GiftWallMainTab2ListAdapter.java @@ -0,0 +1,271 @@ +package com.yunbao.common.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.Drawable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.RequestBuilder; +import com.bumptech.glide.load.DataSource; +import com.bumptech.glide.load.DecodeFormat; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.load.engine.GlideException; +import com.bumptech.glide.request.RequestListener; +import com.bumptech.glide.request.target.Target; +import com.makeramen.roundedimageview.RoundedImageView; +import com.opensource.svgaplayer.SVGADrawable; +import com.opensource.svgaplayer.SVGAImageView; +import com.opensource.svgaplayer.SVGAVideoEntity; +import com.yunbao.common.R; +import com.yunbao.common.bean.GiftWallBean; +import com.yunbao.common.bean.GiftWallTab2Bean; +import com.yunbao.common.bean.JsWishBean; +import com.yunbao.common.dialog.GiftWallGiftInfoDialog; +import com.yunbao.common.dialog.GiftWallMainTab2ClassicInfoDialog; +import com.yunbao.common.dialog.GiftWallTab2List2Dialog; +import com.yunbao.common.event.ClosePopupDialogEvent; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.StringUtil; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class GiftWallMainTab2ListAdapter extends RecyclerView.Adapter { + Context mContext; + List list; + boolean isStar; + String toUid; + String anchorId; + boolean isAnchor; + private boolean isLiveRoom; + boolean isNowRank; + + public GiftWallMainTab2ListAdapter(Context mContext) { + this.mContext = mContext; + list = new ArrayList<>(); + } + + public void setNowRank(boolean nowRank) { + isNowRank = nowRank; + } + + public void setToUid(String toUid) { + this.toUid = toUid; + } + + public void setAnchor(boolean anchor) { + isAnchor = anchor; + } + + public void setAnchorId(String anchorId) { + this.anchorId = anchorId; + } + + public void setList(List list) { + if (list == null) { + list = new ArrayList<>(); + } + this.list = list; + notifyDataSetChanged(); + } + + public void addList(List gifts) { + if (list == null) { + list = new ArrayList<>(); + } + int index = list.size() - 1; + list.addAll(gifts); + notifyItemRangeChanged(index, gifts.size()); + } + + + public void setStar(boolean star) { + isStar = star; + } + + @NonNull + @Override + public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + if (isStar) { + return new VH(LayoutInflater.from(mContext).inflate(R.layout.item_gift_wall_man_tab2_list_1, parent, false)); + } + return new VH(LayoutInflater.from(mContext).inflate(R.layout.item_gift_wall_man_tab2_list_2, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull VH holder, int position) { + holder.setData(list.get(position), position); + } + + @Override + public int getItemCount() { + return list.size(); + } + + @Override + public void onViewAttachedToWindow(@NonNull VH holder) { + super.onViewAttachedToWindow(holder); + } + + + @Override + public void onViewDetachedFromWindow(@NonNull VH holder) { + super.onViewDetachedFromWindow(holder); + + } + + public void setLiveRoom(boolean isLiveRoom) { + this.isLiveRoom = isLiveRoom; + } + + public void clear() { + list.clear(); + notifyDataSetChanged(); + } + + public class VH extends RecyclerView.ViewHolder { + ImageView gift; + TextView gift_name; + TextView gift_number; + RoundedImageView user1Avatar, user2Avatar; + TextView anchor_nickname; + TextView user_nickname; + TextView tv_wait; + View imageView8; + + public VH(View itemView) { + super(itemView); + + gift = itemView.findViewById(R.id.gift); + gift_name = itemView.findViewById(R.id.gift_name); + gift_number = itemView.findViewById(R.id.gift_number); + user1Avatar = itemView.findViewById(R.id.user1_avatar); + user2Avatar = itemView.findViewById(R.id.user2_avatar); + anchor_nickname = itemView.findViewById(R.id.anchor_nickname); + user_nickname = itemView.findViewById(R.id.user_nickname); + tv_wait = itemView.findViewById(R.id.tv_wait); + imageView8 = itemView.findViewById(R.id.imageView8); + } + + @SuppressLint("DefaultLocale") + public void setData(GiftWallTab2Bean.Gift giftData, int position) { + gift_name.setText(WordUtil.isNewZh() ? giftData.getGiftName() : giftData.getGiftNameEn()); + display(itemView.getContext(), giftData.getGiftIcon(), gift, -1,-1); + if (!StringUtil.isEmpty(giftData.getNamingLiveNicename(), giftData.getNamingUserNicename())) { + anchor_nickname.setVisibility(View.VISIBLE); + user_nickname.setVisibility(View.VISIBLE); + gift_number.setVisibility(View.VISIBLE); + user1Avatar.setVisibility(View.VISIBLE); + user2Avatar.setVisibility(View.VISIBLE); + imageView8.setVisibility(View.VISIBLE); + tv_wait.setVisibility(View.GONE); + gift_number.setText(String.format(Locale.getDefault(), "%d", giftData.getGiftHallSendNum())); + if (giftData.getNamingLiveActiveRankHide() == 1 && giftData.getNamingLiveId()!= IMLoginManager.get(mContext).getUserInfo().getId()) { + user1Avatar.setImageResource(R.mipmap.hide); + anchor_nickname.setText(WordUtil.getNewString(R.string.mystery_man)); + } else { + display(mContext, giftData.getNamingLiveAvatar(), user1Avatar, 60, 60); + anchor_nickname.setText(giftData.getNamingLiveNicename()); + } + if (giftData.getNamingUserActiveRankHide() == 1&& giftData.getNamingUserId()!= IMLoginManager.get(mContext).getUserInfo().getId()) { + user2Avatar.setImageResource(R.mipmap.hide); + user_nickname.setText(WordUtil.getNewString(R.string.mystery_man)); + } else { + display(mContext, giftData.getNamingUserAvatar(), user2Avatar, 60, 60); + user_nickname.setText(giftData.getNamingUserNicename()); + } + } else { + user1Avatar.setVisibility(View.GONE); + user2Avatar.setVisibility(View.GONE); + anchor_nickname.setVisibility(View.GONE); + user_nickname.setVisibility(View.GONE); + gift_number.setVisibility(View.GONE); + imageView8.setVisibility(View.GONE); + tv_wait.setVisibility(View.VISIBLE); + itemView.setOnClickListener(null); + } + ViewClicksAntiShake.clicksAntiShake(itemView, () -> { + if (isStar) { + if (isNowRank) { + if (StringUtil.isEmpty(giftData.getNamingLiveNicename(), giftData.getNamingUserNicename()) && isLiveRoom) { + Bus.get().post(new JsWishBean(giftData.getGiftId() + "")); + Bus.get().post(new ClosePopupDialogEvent()); + } else { + new GiftWallGiftInfoDialog(mContext, giftData.getGiftId() + "", toUid, isAnchor) + .setFullWindows(!isLiveRoom) + .setAnchorId(anchorId) + .setTab2Enter(true) + .setLiveRoom(isLiveRoom) + .setStar(isStar) + .showDialog(); + } + } else { + new GiftWallMainTab2ClassicInfoDialog(mContext, giftData, isAnchor).setFullWindows(!isLiveRoom).showDialog(); + } + } else { + if (isNowRank) { + new GiftWallGiftInfoDialog(mContext, giftData.getGiftId() + "", toUid, isAnchor) + .setFullWindows(!isLiveRoom) + .setAnchorId(anchorId) + .setTab2Enter(true) + .setLiveRoom(isLiveRoom) + .setStar(isStar) + .showDialog(); + } else { + new GiftWallTab2List2Dialog(mContext).setGift(giftData).showDialog(); + } + } + }); + } + + void display(Context context, String url, ImageView imageView, int width, int height) { + imageView.post(new Runnable() { + @Override + public void run() { + RequestBuilder builder = Glide.with(context) + .load(url); + + if (width != -1 && height != -1) { + builder = builder.override(width, height); + } + builder + .thumbnail(1.0f) + .format(DecodeFormat.PREFER_RGB_565) + .skipMemoryCache(true) + .addListener(new RequestListener() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { + imageView.setImageDrawable(null); + return false; + } + + @Override + public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { + return false; + } + }) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(imageView); + } + }); + + } + } +} diff --git a/common/src/main/java/com/yunbao/common/adapter/GiftWallTab2GiftInfoListItemAdapter.java b/common/src/main/java/com/yunbao/common/adapter/GiftWallTab2GiftInfoListItemAdapter.java new file mode 100644 index 000000000..d988eac39 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/adapter/GiftWallTab2GiftInfoListItemAdapter.java @@ -0,0 +1,91 @@ +package com.yunbao.common.adapter; + +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.makeramen.roundedimageview.RoundedImageView; +import com.yunbao.common.R; +import com.yunbao.common.bean.GiftWallInfoBean; +import com.yunbao.common.bean.GiftWallMainTab2ClassicInfoBean; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.utils.RouteUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class GiftWallTab2GiftInfoListItemAdapter extends RecyclerView.Adapter { + List data = new ArrayList<>(); + + public void setData(List data) { + if (data == null || data.isEmpty()) { + data = new ArrayList<>(); + GiftWallMainTab2ClassicInfoBean.GiftData giftData=new GiftWallMainTab2ClassicInfoBean.GiftData(); + giftData.setUserId("-1"); + data.add(giftData); + } + this.data = data; + notifyDataSetChanged(); + } + + @NonNull + @Override + public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new VH(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dialog_gift_wall_tab2_gift_info, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull VH holder, int position) { + holder.setData(data.get(position), position); + } + + @Override + public int getItemCount() { + return data.size(); + } + + public class VH extends RecyclerView.ViewHolder { + TextView tv_rank, user_name, tv_rename; + RoundedImageView avatar; + + public VH(@NonNull View itemView) { + super(itemView); + tv_rank = itemView.findViewById(R.id.tv_rank); + user_name = itemView.findViewById(R.id.user_name); + tv_rename = itemView.findViewById(R.id.tv_rename); + avatar = itemView.findViewById(R.id.avatar); + } + + public void setData(GiftWallMainTab2ClassicInfoBean.GiftData data, int position) { + tv_rank.setText(String.format(Locale.getDefault(), "%d", (position + 4))); + tv_rank.setTextColor(Color.parseColor("#FCC755")); + tv_rank.setTextSize(20); + tv_rename.setText(String.format(Locale.getDefault(), "%s", (data.getGiftHallSendNumForString()))); + avatar.setVisibility(View.VISIBLE); + if (data.getActiveRankHide() == 1) { + user_name.setText(WordUtil.getNewString(R.string.mystery_man)); + avatar.setImageResource(R.mipmap.hide); + } else { + user_name.setText(data.getUserName()); + ImgLoader.display(itemView.getContext(), data.getAvatar(), avatar); + } + ViewClicksAntiShake.clicksAntiShake(avatar, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + if(data.getActiveRankHide()==0){ + RouteUtil.forwardUserHome(itemView.getContext(), String.valueOf(data.getUserId()), 0); + } + } + }); + } + + } +} diff --git a/common/src/main/java/com/yunbao/common/adapter/InteractionGamesAdapter.java b/common/src/main/java/com/yunbao/common/adapter/InteractionGamesAdapter.java index bbbc9e328..1143372ba 100644 --- a/common/src/main/java/com/yunbao/common/adapter/InteractionGamesAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/InteractionGamesAdapter.java @@ -13,6 +13,7 @@ import com.yunbao.common.R; import com.yunbao.common.bean.CustomSidebarChildModel; import com.yunbao.common.event.CustomDrawerPopupEvent; import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.SpUtil; import com.yunbao.common.views.InteractionGamesChildViewHolder; import java.util.ArrayList; @@ -36,7 +37,7 @@ public class InteractionGamesAdapter extends RecyclerView.Adapter { @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view3, parent, false); - return new InteractionGamesChildViewHolder(runGamesView); + return new InteractionGamesChildViewHolder(runGamesView,mContext); } @Override @@ -51,6 +52,9 @@ public class InteractionGamesAdapter extends RecyclerView.Adapter { if (activityID != 0) { Bus.get().post(new CustomDrawerPopupEvent() .setDisMiss(true).setInteractionID(activityID).setInteraction(true).setChild(srcChild)); + if(model.getSudGameIsNew().equals("1")){ + SpUtil.getInstance().setLiveGameId(model.getId()); + } } diff --git a/common/src/main/java/com/yunbao/common/adapter/LiveNewRoleFunGamesAdapter.java b/common/src/main/java/com/yunbao/common/adapter/LiveNewRoleFunGamesAdapter.java index 54c1f1c45..077196417 100644 --- a/common/src/main/java/com/yunbao/common/adapter/LiveNewRoleFunGamesAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/LiveNewRoleFunGamesAdapter.java @@ -31,11 +31,16 @@ public class LiveNewRoleFunGamesAdapter extends RecyclerView.Adapter { @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view, parent, false); - return new NewRoleFunGamesChildViewHolder(runGamesView,showRed); + return new NewRoleFunGamesChildViewHolder(runGamesView,showRed,mContext); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams((int) + (mContext.getResources().getDisplayMetrics().widthPixels / 4.5), + ViewGroup.LayoutParams.WRAP_CONTENT); + holder.itemView.setLayoutParams(layoutParams); + NewRoleFunGamesChildViewHolder childViewHolder = (NewRoleFunGamesChildViewHolder) holder; childViewHolder.setData(child.get(position), rigts); } diff --git a/common/src/main/java/com/yunbao/common/adapter/LiveNewRoleInteractionGamesAdapter.java b/common/src/main/java/com/yunbao/common/adapter/LiveNewRoleInteractionGamesAdapter.java index 3d17bf60e..7950a02ca 100644 --- a/common/src/main/java/com/yunbao/common/adapter/LiveNewRoleInteractionGamesAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/LiveNewRoleInteractionGamesAdapter.java @@ -11,11 +11,11 @@ import androidx.recyclerview.widget.RecyclerView; import com.yunbao.common.R; import com.yunbao.common.bean.CustomSidebarChildModel; -import com.yunbao.common.event.CustomDrawerPopupEvent; import com.yunbao.common.event.LiveNewRoleEvent; import com.yunbao.common.event.NewRoleCustomDrawerPopupEvent; import com.yunbao.common.utils.Bus; -import com.yunbao.common.views.InteractionGamesChildViewHolder; +import com.yunbao.common.utils.SpUtil; +import com.yunbao.common.views.InteractionGamesChildBottomViewHolder; import java.util.ArrayList; import java.util.List; @@ -34,14 +34,14 @@ public class LiveNewRoleInteractionGamesAdapter extends RecyclerView.Adapter { @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view3, parent, false); - return new InteractionGamesChildViewHolder(runGamesView); + return new InteractionGamesChildBottomViewHolder(runGamesView,mContext); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - InteractionGamesChildViewHolder childViewHolder = (InteractionGamesChildViewHolder) holder; + InteractionGamesChildBottomViewHolder childViewHolder = (InteractionGamesChildBottomViewHolder) holder; childViewHolder.setData(child.get(position), rigts); - childViewHolder.setItemViewClicks(new InteractionGamesChildViewHolder.InteractionGamesCallBack() { + childViewHolder.setItemViewClicks(new InteractionGamesChildBottomViewHolder.InteractionGamesCallBack() { @Override public void onItemViewClicks(CustomSidebarChildModel model, boolean rigts) { @@ -52,6 +52,9 @@ public class LiveNewRoleInteractionGamesAdapter extends RecyclerView.Adapter { .setInteractionID(activityID) .setChild(child) .setInteraction(true)); + if(model.getSudGameIsNew().equals("1")){ + SpUtil.getInstance().setLiveGameId(model.getId()); + } } @@ -60,12 +63,14 @@ public class LiveNewRoleInteractionGamesAdapter extends RecyclerView.Adapter { }); } + @Override public int getItemCount() { return child.size(); } public void updateData(List mChild) { + child.clear(); /* if (mChild.size() > 8) { for (int i = 0; i < 8; i++) { diff --git a/common/src/main/java/com/yunbao/common/adapter/LiveNewRolerPopupAdapter.java b/common/src/main/java/com/yunbao/common/adapter/LiveNewRolerPopupAdapter.java index ef0105714..91f5e4ca7 100644 --- a/common/src/main/java/com/yunbao/common/adapter/LiveNewRolerPopupAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/LiveNewRolerPopupAdapter.java @@ -39,13 +39,14 @@ public class LiveNewRolerPopupAdapter extends RecyclerView.Adapter { switch (viewType) { case FUN_GAMES: View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_new_roler_fun_games_view, parent, false); - return new LiveNewRoleFunGamesViewHolder(runGamesView); + return new LiveNewRoleFunGamesViewHolder(runGamesView,mContext); case RIGHTS_INTERESTS: + //特权 View rightsInterestsView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_roler_ights_interests, parent, false); - return new LiveNewRoleRigtsInterestsViewHolder(rightsInterestsView,showRed); + return new LiveNewRoleRigtsInterestsViewHolder(rightsInterestsView,showRed,mContext); default: View gamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_interaction_games_view, parent, false); - return new LiveNewRoleInteractionGamesViewHolder(gamesView); + return new LiveNewRoleInteractionGamesViewHolder(gamesView,mContext); } } diff --git a/common/src/main/java/com/yunbao/common/adapter/NewRoleFunGamesAdapter.java b/common/src/main/java/com/yunbao/common/adapter/NewRoleFunGamesAdapter.java index d473abe0b..9f5e5aaad 100644 --- a/common/src/main/java/com/yunbao/common/adapter/NewRoleFunGamesAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/NewRoleFunGamesAdapter.java @@ -30,11 +30,15 @@ public class NewRoleFunGamesAdapter extends RecyclerView.Adapter { @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view2, parent, false); - return new NewRoleFunGamesChildViewHolder(runGamesView,false); + return new NewRoleFunGamesChildViewHolder(runGamesView,false,mContext); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams((int) + (mContext.getResources().getDisplayMetrics().widthPixels / 4.5), + ViewGroup.LayoutParams.WRAP_CONTENT); + holder.itemView.setLayoutParams(layoutParams); NewRoleFunGamesChildViewHolder childViewHolder = (NewRoleFunGamesChildViewHolder) holder; childViewHolder.setData(child.get(position), rigts); } diff --git a/common/src/main/java/com/yunbao/common/adapter/SudGameAdapter.java b/common/src/main/java/com/yunbao/common/adapter/SudGameAdapter.java new file mode 100644 index 000000000..fa2341323 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/adapter/SudGameAdapter.java @@ -0,0 +1,70 @@ +package com.yunbao.common.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.View; + +import androidx.appcompat.widget.AppCompatImageView; +import androidx.appcompat.widget.AppCompatTextView; +import com.makeramen.roundedimageview.RoundedImageView; +import com.yunbao.common.R; +import com.yunbao.common.bean.SudSettleBean; +import com.yunbao.common.glide.ImgLoader; + +import java.util.List; + +public class SudGameAdapter extends BaseAdapter { + public SudGameAdapter(Context context, List data) { + super(context, data); + } + + private AppCompatImageView sub_rank_image; + private RoundedImageView sub_head; + private AppCompatTextView sub_rank_text,sub_name,sub_score; + + @SuppressLint("SetTextI18n") + @Override + public void convert(BaseAdapter.BaseViewHolder holder, SudSettleBean item) { + sub_rank_image = (AppCompatImageView) holder.getView(R.id.sub_rank_image); + sub_rank_text = (AppCompatTextView) holder.getView(R.id.sub_rank_text); + sub_head = (RoundedImageView) holder.getView(R.id.sub_head); + sub_name = (AppCompatTextView) holder.getView(R.id.sub_name); + sub_score = (AppCompatTextView) holder.getView(R.id.sub_score); + + switch (item.getRank()){ + case 1: + sub_rank_text.setVisibility(View.GONE); + sub_rank_image.setVisibility(View.VISIBLE); + sub_rank_image.setImageResource(R.mipmap.sub_1); + break; + case 2: + sub_rank_text.setVisibility(View.GONE); + sub_rank_image.setVisibility(View.VISIBLE); + sub_rank_image.setImageResource(R.mipmap.sub_2); + break; + case 3: + sub_rank_text.setVisibility(View.GONE); + sub_rank_image.setVisibility(View.VISIBLE); + sub_rank_image.setImageResource(R.mipmap.sub_3); + break; + default: + sub_rank_text.setVisibility(View.VISIBLE); + sub_rank_image.setVisibility(View.GONE); + sub_rank_text.setText(String.valueOf(item.getRank())); + break; + } + + ImgLoader.display(context, item.getAvatar_url(),sub_head); + sub_name.setText(item.getNick_name()); + if (item.getWin_num()>0){ + sub_score.setText("+"+item.getWin_num()); + }else { + sub_score.setText(String.valueOf(item.getWin_num())); + } + } + + @Override + public int getItemLayoutId() { + return R.layout.view_sub_rank; + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/BanDownLiveEvent.java b/common/src/main/java/com/yunbao/common/bean/BanDownLiveEvent.java new file mode 100644 index 000000000..53d9a72db --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/BanDownLiveEvent.java @@ -0,0 +1,47 @@ +package com.yunbao.common.bean; + +public class BanDownLiveEvent extends BaseModel{ + private String reason,reasonContent,content,timer; + + public BanDownLiveEvent() { + } + + public BanDownLiveEvent(String reason, String reasonContent, String content, String timer) { + this.reason = reason; + this.reasonContent = reasonContent; + this.content = content; + this.timer = timer; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getReasonContent() { + return reasonContent; + } + + public void setReasonContent(String reasonContent) { + this.reasonContent = reasonContent; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getTimer() { + return timer; + } + + public void setTimer(String timer) { + this.timer = timer; + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/CheckLiveModel.java b/common/src/main/java/com/yunbao/common/bean/CheckLiveModel.java index 4b4f7ca30..2d7d00c3e 100644 --- a/common/src/main/java/com/yunbao/common/bean/CheckLiveModel.java +++ b/common/src/main/java/com/yunbao/common/bean/CheckLiveModel.java @@ -2,7 +2,6 @@ package com.yunbao.common.bean; import com.google.gson.Gson; import com.google.gson.annotations.SerializedName; -import com.yunbao.common.BuildConfig; public class CheckLiveModel extends BaseModel { diff --git a/common/src/main/java/com/yunbao/common/bean/ConfigBean.java b/common/src/main/java/com/yunbao/common/bean/ConfigBean.java index ec6d14242..497026ce5 100644 --- a/common/src/main/java/com/yunbao/common/bean/ConfigBean.java +++ b/common/src/main/java/com/yunbao/common/bean/ConfigBean.java @@ -2,7 +2,6 @@ package com.yunbao.common.bean; import com.alibaba.fastjson.annotation.JSONField; import com.google.gson.annotations.SerializedName; -import com.yunbao.common.BuildConfig; import com.yunbao.common.utils.StringUtil; import java.util.Arrays; diff --git a/common/src/main/java/com/yunbao/common/bean/GiftNamingInfoModel.java b/common/src/main/java/com/yunbao/common/bean/GiftNamingInfoModel.java index 1c238d98a..c8dd2d111 100644 --- a/common/src/main/java/com/yunbao/common/bean/GiftNamingInfoModel.java +++ b/common/src/main/java/com/yunbao/common/bean/GiftNamingInfoModel.java @@ -1,5 +1,8 @@ package com.yunbao.common.bean; +import android.text.TextUtils; + +import com.alibaba.fastjson.annotation.JSONField; import com.google.gson.annotations.SerializedName; public class GiftNamingInfoModel extends BaseModel { @@ -44,9 +47,9 @@ public class GiftNamingInfoModel extends BaseModel { private String giftStartTime; @SerializedName("gift_end_time") private String giftEndTime; - @SerializedName("naming_liveuid") + @SerializedName("naming_live_id") private String namingLiveuid; - @SerializedName("naming_uid") + @SerializedName("naming_user_id") private String namingUid; @SerializedName("naming_live_name") private String namingLiveName; @@ -68,6 +71,28 @@ public class GiftNamingInfoModel extends BaseModel { private String namingLiveCoin; @SerializedName("isweek") private String isweek; + @JSONField(name = "naming_user_gift_hall_rank_hide") + @SerializedName("naming_user_gift_hall_rank_hide") + private int naming_user_gift_hall_rank_hide; + @JSONField(name = "naming_live_gift_hall_rank_hide") + @SerializedName("naming_live_gift_hall_rank_hide") + private int naming_live_gift_hall_rank_hide; + + public int getNaming_user_gift_hall_rank_hide() { + return naming_user_gift_hall_rank_hide; + } + + public void setNaming_user_gift_hall_rank_hide(int naming_user_gift_hall_rank_hide) { + this.naming_user_gift_hall_rank_hide = naming_user_gift_hall_rank_hide; + } + + public int getNaming_live_gift_hall_rank_hide() { + return naming_live_gift_hall_rank_hide; + } + + public void setNaming_live_gift_hall_rank_hide(int naming_live_gift_hall_rank_hide) { + this.naming_live_gift_hall_rank_hide = naming_live_gift_hall_rank_hide; + } public String getId() { return id; @@ -304,6 +329,10 @@ public class GiftNamingInfoModel extends BaseModel { } public String getNamingStatus() { + //后端反馈 namingStatus 已经无效了,需要判断冠名主播id和冠名用户id是否为0 + if(TextUtils.equals(namingLiveuid,"0")||TextUtils.equals(namingUid,"0")){ + return "0"; + } return namingStatus; } diff --git a/common/src/main/java/com/yunbao/common/bean/GiftWallBean.java b/common/src/main/java/com/yunbao/common/bean/GiftWallBean.java new file mode 100644 index 000000000..69f0a459e --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/GiftWallBean.java @@ -0,0 +1,261 @@ +package com.yunbao.common.bean; + +import com.yunbao.common.utils.StringUtil; + +import java.util.List; + +public class GiftWallBean extends BaseModel { + private IlluminateData illuminate_data; + private int gift_hall_rank_hide; + + + public GiftWallBean() { + } + + public IlluminateData getIlluminate_data() { + return illuminate_data; + } + + public void setIlluminate_data(IlluminateData illuminate_data) { + this.illuminate_data = illuminate_data; + } + + public int getGift_hall_rank_hide() { + return gift_hall_rank_hide; + } + + public void setGift_hall_rank_hide(int gift_hall_rank_hide) { + this.gift_hall_rank_hide = gift_hall_rank_hide; + } + + public static class IlluminateData { + private List week_star_data; + private List gift_data; + private int week_gift_illuminate_num; + private int week_star_gift_num; + private int gift_illuminate_num; + private int gift_num; + private String gift_hall_start_date; + private String gift_hall_end_date; + + + public IlluminateData() { + } + + public String getGift_hall_start_date() { + if (!StringUtil.isEmpty("gift_hall_start_date")) { + gift_hall_start_date = gift_hall_start_date.replace("-", "/"); + } + return gift_hall_start_date; + } + + public void setGift_hall_start_date(String gift_hall_start_date) { + this.gift_hall_start_date = gift_hall_start_date; + } + + public String getGift_hall_end_date() { + if (!StringUtil.isEmpty("gift_hall_end_date")) { + gift_hall_end_date = gift_hall_end_date.replace("-", "/"); + } + return gift_hall_end_date; + } + + public void setGift_hall_end_date(String gift_hall_end_date) { + this.gift_hall_end_date = gift_hall_end_date; + } + + public List getWeek_star_data() { + return week_star_data; + } + + public void setWeek_star_data(List week_star_data) { + this.week_star_data = week_star_data; + } + + public List getGift_data() { + return gift_data; + } + + public void setGift_data(List gift_data) { + this.gift_data = gift_data; + } + + public int getWeek_gift_illuminate_num() { + return week_gift_illuminate_num; + } + + public void setWeek_gift_illuminate_num(int week_gift_illuminate_num) { + this.week_gift_illuminate_num = week_gift_illuminate_num; + } + + public int getWeek_star_gift_num() { + return week_star_gift_num; + } + + public void setWeek_star_gift_num(int week_star_gift_num) { + this.week_star_gift_num = week_star_gift_num; + } + + public int getGift_illuminate_num() { + return gift_illuminate_num; + } + + public void setGift_illuminate_num(int gift_illuminate_num) { + this.gift_illuminate_num = gift_illuminate_num; + } + + public int getGift_num() { + return gift_num; + } + + public void setGift_num(int gift_num) { + this.gift_num = gift_num; + } + } + + public static class Gift { + private int gift_id; + private int sendtype; + private String gift_name; + private long need_coin; // 注意:这里可能需要更改为long类型,因为666666超过了int的最大值 + private String gift_icon; + private int week_start_level; + private int illuminate_num; + private int gift_hall_type; + private String gift_name_en; + private String gift_hall_start; // 使用Java 8的LocalDate来处理日期 + private String gift_hall_end; + private int gift_hall_send_num; + private int illuminate_status; + private long needcoin_total; + + public Gift() { + } + + public String getGift_hall_start() { + if (!StringUtil.isEmpty(gift_hall_start)) { + gift_hall_start = gift_hall_start.replace("-", "/"); + } + return gift_hall_start; + } + + public String getGift_hall_end() { + if (!StringUtil.isEmpty(gift_hall_end)) { + gift_hall_end = gift_hall_end.replace("-", "/"); + } + return gift_hall_end; + } + + public int getGift_id() { + return gift_id; + } + + public void setGift_id(int gift_id) { + this.gift_id = gift_id; + } + + public int getSendtype() { + return sendtype; + } + + public void setSendtype(int sendtype) { + this.sendtype = sendtype; + } + + public String getGift_name() { + return gift_name; + } + + public void setGift_name(String gift_name) { + this.gift_name = gift_name; + } + + public long getNeed_coin() { + return need_coin; + } + + public void setNeed_coin(long need_coin) { + this.need_coin = need_coin; + } + + public String getGift_icon() { + return gift_icon; + } + + public void setGift_icon(String gift_icon) { + this.gift_icon = gift_icon; + } + + public int getWeek_start_level() { + return week_start_level; + } + + public void setWeek_start_level(int week_start_level) { + this.week_start_level = week_start_level; + } + + public int getIlluminate_num() { + return illuminate_num; + } + + public void setIlluminate_num(int illuminate_num) { + this.illuminate_num = illuminate_num; + } + + public int getGift_hall_type() { + return gift_hall_type; + } + + public void setGift_hall_type(int gift_hall_type) { + this.gift_hall_type = gift_hall_type; + } + + public String getGift_name_en() { + return gift_name_en; + } + + public void setGift_name_en(String gift_name_en) { + this.gift_name_en = gift_name_en; + } + + public void setGift_hall_start(String gift_hall_start) { + this.gift_hall_start = gift_hall_start; + } + + + public void setGift_hall_end(String gift_hall_end) { + this.gift_hall_end = gift_hall_end; + } + + public int getGift_hall_send_num() { + return gift_hall_send_num; + } + + public String getGift_hall_send_numForString() { + if (gift_hall_send_num > 999) { + return "999+"; + } + return gift_hall_send_num + ""; + } + + public void setGift_hall_send_num(int gift_hall_send_num) { + this.gift_hall_send_num = gift_hall_send_num; + } + + public int getIlluminate_status() { + return illuminate_status; + } + + public void setIlluminate_status(int illuminate_status) { + this.illuminate_status = illuminate_status; + } + + public long getNeedcoin_total() { + return needcoin_total; + } + + public void setNeedcoin_total(long needcoin_total) { + this.needcoin_total = needcoin_total; + } + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/GiftWallForUserBean.java b/common/src/main/java/com/yunbao/common/bean/GiftWallForUserBean.java new file mode 100644 index 000000000..efe70ed51 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/GiftWallForUserBean.java @@ -0,0 +1,114 @@ +package com.yunbao.common.bean; + +import java.util.List; + +public class GiftWallForUserBean extends BaseModel { + private List illuminate_data; + private int active_rank_hide; + + public GiftWallForUserBean() { + } + + public List getIlluminate_data() { + return illuminate_data; + } + + public void setIlluminate_data(List illuminate_data) { + this.illuminate_data = illuminate_data; + } + + public int getActive_rank_hide() { + return active_rank_hide; + } + + public void setActive_rank_hide(int active_rank_hide) { + this.active_rank_hide = active_rank_hide; + } + + public static class Gift { + private String giftname; + private String giftname_en; + private String gifticon; + private int needcoin; + private int needcoin_total; + private int gift_hall_send_num; + private int illuminate_status; + private int gift_id; + private int id; + + public Gift() { + } + + public String getGiftname() { + return giftname; + } + + public void setGiftname(String giftname) { + this.giftname = giftname; + } + + public String getGiftname_en() { + return giftname_en; + } + + public void setGiftname_en(String giftname_en) { + this.giftname_en = giftname_en; + } + + public String getGifticon() { + return gifticon; + } + + public void setGifticon(String gifticon) { + this.gifticon = gifticon; + } + + public int getNeedcoin() { + return needcoin; + } + + public void setNeedcoin(int needcoin) { + this.needcoin = needcoin; + } + + public int getNeedcoin_total() { + return needcoin_total; + } + + public void setNeedcoin_total(int needcoin_total) { + this.needcoin_total = needcoin_total; + } + + public int getGift_hall_send_num() { + return gift_hall_send_num; + } + + public void setGift_hall_send_num(int gift_hall_send_num) { + this.gift_hall_send_num = gift_hall_send_num; + } + + public int getIlluminate_status() { + return illuminate_status; + } + + public void setIlluminate_status(int illuminate_status) { + this.illuminate_status = illuminate_status; + } + + public int getGift_id() { + return gift_id; + } + + public void setGift_id(int gift_id) { + this.gift_id = gift_id; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/GiftWallInfoBean.java b/common/src/main/java/com/yunbao/common/bean/GiftWallInfoBean.java new file mode 100644 index 000000000..4a5ea34ab --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/GiftWallInfoBean.java @@ -0,0 +1,331 @@ +package com.yunbao.common.bean; + +import com.alibaba.fastjson.annotation.JSONField; +import com.google.gson.annotations.SerializedName; +import com.yunbao.common.utils.StringUtil; + +import java.util.List; + +public class GiftWallInfoBean extends BaseModel { + @SerializedName("gift_info") + private GiftInfo gift_info; + @SerializedName("data") + private List data; + @SerializedName("is_me") + private int is_me; + + // 一般情况下,我们会添加getter和setter方法,但根据你的要求,这里省略 + + + @JSONField(name = "gift_info") + public GiftInfo getGift_info() { + return gift_info; + } + + @JSONField(name = "gift_info") + public void setGift_info(GiftInfo gift_info) { + this.gift_info = gift_info; + } + + @JSONField(name = "data") + public List getData() { + /* if (data == null || data.isEmpty()) { + data = new ArrayList<>(); + for (int i = 0; i < 20; i++) { + Data item = new Data(); + item.setId(i); + item.setActive_rank_hide(i % 4 == 0 ? 0 : 1); + item.setUser_name("用户:" + i); + item.setGift_hall_send_num(RandomUtil.nextInt(100000)); + item.setAvatar("https://downs.yaoulive.com/manfive.png"); + data.add(item); + } + }*/ + return data; + } + + @JSONField(name = "data") + public void setData(List data) { + this.data = data; + } + + public int getIs_me() { + return is_me; + } + + public void setIs_me(int is_me) { + this.is_me = is_me; + } + + // 嵌套类:GiftInfo + public static class GiftInfo { + @SerializedName("gift_name") + private String giftname; + @SerializedName("gift_name_en") + private String giftname_en; + @SerializedName("gift_icon") + private String gifticon; + @SerializedName("need_coin") + private int needcoin; + @SerializedName("needcoin_total") + private String needcoin_total; + @SerializedName("gift_hall_send_num") + private String gift_hall_send_num; + @SerializedName("illuminate_num") + private int illuminate_num; + @SerializedName("illuminate_status") + private int illuminate_status; + @SerializedName("gift_id") + private int gift_id; + @SerializedName("id") + private int id; + @SerializedName("gift_hall_start_date") + private String gift_hall_start; // 使用Java 8的LocalDate来处理日期 + @SerializedName("gift_hall_end_date") + private String gift_hall_end; + @SerializedName("user_gift_hall_send_num") + private int user_gift_hall_send_num; + @SerializedName("gift_status") + private int gift_status; + @SerializedName("sendtype") + private int sendtype;//0默认钻石购买,1金币购买 + + public int getSendtype() { + return sendtype; + } + + public void setSendtype(int sendtype) { + this.sendtype = sendtype; + } + + public int getGift_status() { + return gift_status; + } + + public void setGift_status(int gift_status) { + this.gift_status = gift_status; + } + + public int getUser_gift_hall_send_num() { + return user_gift_hall_send_num; + } + + public void setUser_gift_hall_send_num(int user_gift_hall_send_num) { + this.user_gift_hall_send_num = user_gift_hall_send_num; + } + + @JSONField(name = "gift_hall_start_date") + public void setGift_hall_start(String gift_hall_start) { + this.gift_hall_start = gift_hall_start; + } + @JSONField(name = "gift_hall_start_date") + public String getGift_hall_start() { + if(!StringUtil.isEmpty(gift_hall_start)){ + gift_hall_start=gift_hall_start.replace("-","/"); + } + return gift_hall_start; + } + @JSONField(name = "gift_hall_end_date") + public String getGift_hall_end() { + if(!StringUtil.isEmpty(gift_hall_end)){ + gift_hall_end=gift_hall_end.replace("-","/"); + } + return gift_hall_end; + } + + public void setGift_hall_end(String gift_hall_end) { + this.gift_hall_end = gift_hall_end; + } + + // 同样地,这里省略getter和setter方法 + + public String getGiftname() { + return giftname; + } + + public void setGiftname(String giftname) { + this.giftname = giftname; + } + + public String getGiftname_en() { + return giftname_en; + } + + public void setGiftname_en(String giftname_en) { + this.giftname_en = giftname_en; + } + + public String getGifticon() { + return gifticon; + } + + public void setGifticon(String gifticon) { + this.gifticon = gifticon; + } + + public int getNeedcoin() { + return needcoin; + } + + public void setNeedcoin(int needcoin) { + this.needcoin = needcoin; + } + + public String getNeedcoin_total() { + return needcoin_total; + } + + public void setNeedcoin_total(String needcoin_total) { + this.needcoin_total = needcoin_total; + } + + public int getIlluminate_num() { + return illuminate_num; + } + + public void setIlluminate_num(int illuminate_num) { + this.illuminate_num = illuminate_num; + } + + public String getGift_hall_send_num() { + if (StringUtil.isEmpty(gift_hall_send_num)) { + gift_hall_send_num = "0"; + } + return gift_hall_send_num; + } + + public void setGift_hall_send_num(String gift_hall_send_num) { + this.gift_hall_send_num = gift_hall_send_num; + } + + public int getIlluminate_status() { + return illuminate_status; + } + + public void setIlluminate_status(int illuminate_status) { + this.illuminate_status = illuminate_status; + } + + public int getGift_id() { + return gift_id; + } + + public void setGift_id(int gift_id) { + this.gift_id = gift_id; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + } + + // 嵌套类:Data + public static class Data { + private int gift_hall_send_num; + private String user_name; + private String avatar; + String user_id; + private int id; + private int gift_hall_rank_hide; + private String create_time; + private String live_id; + private String live_user_name; + private String live_avatar; + + + // 同样地,这里省略getter和setter方法 + + public String getUser_id() { + if(StringUtil.isEmpty(user_id)){ + return "0"; + } + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + + public String getLive_id() { + return live_id; + } + + public void setLive_id(String live_id) { + this.live_id = live_id; + } + + public String getLive_user_name() { + return live_user_name; + } + + public void setLive_user_name(String live_user_name) { + this.live_user_name = live_user_name; + } + + public String getLive_avatar() { + return live_avatar; + } + + public void setLive_avatar(String live_avatar) { + this.live_avatar = live_avatar; + } + + public int getGift_hall_send_num() { + return gift_hall_send_num; + } + public String getGift_hall_send_numForString() { + if(gift_hall_send_num>999999){ + return "999999+"; + }else{ + return String.valueOf(gift_hall_send_num); + } + } + public void setGift_hall_send_num(int gift_hall_send_num) { + this.gift_hall_send_num = gift_hall_send_num; + } + + public String getUser_name() { + return user_name; + } + + public void setUser_name(String user_name) { + this.user_name = user_name; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getGift_hall_rank_hide() { + return gift_hall_rank_hide; + } + + public void setGift_hall_rank_hide(int gift_hall_rank_hide) { + this.gift_hall_rank_hide = gift_hall_rank_hide; + } + + public String getCreate_time() { + return create_time; + } + + public void setCreate_time(String create_time) { + this.create_time = create_time; + } + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/GiftWallMainTab2ClassicInfoBean.java b/common/src/main/java/com/yunbao/common/bean/GiftWallMainTab2ClassicInfoBean.java new file mode 100644 index 000000000..8c1c0e580 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/GiftWallMainTab2ClassicInfoBean.java @@ -0,0 +1,448 @@ +package com.yunbao.common.bean; + +import com.google.gson.annotations.SerializedName; +import com.yunbao.common.utils.StringUtil; + +import java.util.List; + +public class GiftWallMainTab2ClassicInfoBean extends BaseModel{ + @SerializedName("gift_info") + private GiftInfo giftInfo; + + @SerializedName("data") + private List data; + + @SerializedName("is_me") + private int isMe; + + // 如果需要,可以添加无参构造器、getter和setter(这里省略) + + public GiftInfo getGiftInfo() { + return giftInfo; + } + + public void setGiftInfo(GiftInfo giftInfo) { + this.giftInfo = giftInfo; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public int getIsMe() { + return isMe; + } + + public void setIsMe(int isMe) { + this.isMe = isMe; + } + + // 内部类:GiftInfo + public static class GiftInfo { + + @SerializedName("gift_id") + private int giftId; + + @SerializedName("sendtype") + private int sendType; + + @SerializedName("gift_name") + private String giftName; + + @SerializedName("need_coin") + private int needCoin; + + @SerializedName("gift_icon") + private String giftIcon; + + @SerializedName("week_star_level") + private int weekStarLevel; + + @SerializedName("illuminate_num") + private int illuminateNum; + + @SerializedName("gift_hall_type") + private int giftHallType; + + @SerializedName("gift_name_en") + private String giftNameEn; + + @SerializedName("gift_hall_start") + private String giftHallStart; + + @SerializedName("gift_hall_end") + private String giftHallEnd; + + @SerializedName("gift_hall_start_date") + private String giftHallStartDate; + + @SerializedName("gift_hall_end_date") + private String giftHallEndDate; + + @SerializedName("user_gift_hall_send_num") + private int userGiftHallSendNum; + + @SerializedName("needcoin_total") + private int needcoinTotal; + + @SerializedName("gift_hall_send_num") + private int giftHallSendNum; + + @SerializedName("illuminate_status") + private int illuminateStatus; + + @SerializedName("naming_live_id") + private int namingLiveId; + + @SerializedName("naming_live_nicename") + private String namingLiveNicename; + + @SerializedName("naming_live_avatar") + private String namingLiveAvatar; + + @SerializedName("naming_live_gift_hall_rank_hide") + private int namingLiveActiveRankHide; + + @SerializedName("naming_user_id") + private int namingUserId; + + @SerializedName("naming_user_nicename") + private String namingUserNicename; + + @SerializedName("naming_user_avatar") + private String namingUserAvatar; + + @SerializedName("naming_user_gift_hall_rank_hide") + private int namingUserActiveRankHide; + + // 如果需要,可以添加无参构造器、getter和setter(这里省略) + + public int getGiftId() { + return giftId; + } + + public void setGiftId(int giftId) { + this.giftId = giftId; + } + + public int getSendType() { + return sendType; + } + + public void setSendType(int sendType) { + this.sendType = sendType; + } + + public String getGiftName() { + return giftName; + } + + public void setGiftName(String giftName) { + this.giftName = giftName; + } + + public int getNeedCoin() { + return needCoin; + } + + public void setNeedCoin(int needCoin) { + this.needCoin = needCoin; + } + + public String getGiftIcon() { + return giftIcon; + } + + public void setGiftIcon(String giftIcon) { + this.giftIcon = giftIcon; + } + + public int getWeekStarLevel() { + return weekStarLevel; + } + + public void setWeekStarLevel(int weekStarLevel) { + this.weekStarLevel = weekStarLevel; + } + + public int getIlluminateNum() { + return illuminateNum; + } + + public void setIlluminateNum(int illuminateNum) { + this.illuminateNum = illuminateNum; + } + + public int getGiftHallType() { + return giftHallType; + } + + public void setGiftHallType(int giftHallType) { + this.giftHallType = giftHallType; + } + + public String getGiftNameEn() { + return giftNameEn; + } + + public void setGiftNameEn(String giftNameEn) { + this.giftNameEn = giftNameEn; + } + + public String getGiftHallStart() { + return giftHallStart; + } + + public void setGiftHallStart(String giftHallStart) { + this.giftHallStart = giftHallStart; + } + + public String getGiftHallEnd() { + return giftHallEnd; + } + + public void setGiftHallEnd(String giftHallEnd) { + this.giftHallEnd = giftHallEnd; + } + + public String getGiftHallStartDate() { + return giftHallStartDate; + } + + public void setGiftHallStartDate(String giftHallStartDate) { + this.giftHallStartDate = giftHallStartDate; + } + + public String getGiftHallEndDate() { + return giftHallEndDate; + } + + public void setGiftHallEndDate(String giftHallEndDate) { + this.giftHallEndDate = giftHallEndDate; + } + + public int getUserGiftHallSendNum() { + return userGiftHallSendNum; + } + + public void setUserGiftHallSendNum(int userGiftHallSendNum) { + this.userGiftHallSendNum = userGiftHallSendNum; + } + + public int getNeedcoinTotal() { + return needcoinTotal; + } + + public void setNeedcoinTotal(int needcoinTotal) { + this.needcoinTotal = needcoinTotal; + } + + public int getGiftHallSendNum() { + return giftHallSendNum; + } + + public void setGiftHallSendNum(int giftHallSendNum) { + this.giftHallSendNum = giftHallSendNum; + } + + public int getIlluminateStatus() { + return illuminateStatus; + } + + public void setIlluminateStatus(int illuminateStatus) { + this.illuminateStatus = illuminateStatus; + } + + public int getNamingLiveId() { + return namingLiveId; + } + + public void setNamingLiveId(int namingLiveId) { + this.namingLiveId = namingLiveId; + } + + public String getNamingLiveNicename() { + return namingLiveNicename; + } + + public void setNamingLiveNicename(String namingLiveNicename) { + this.namingLiveNicename = namingLiveNicename; + } + + public String getNamingLiveAvatar() { + return namingLiveAvatar; + } + + public void setNamingLiveAvatar(String namingLiveAvatar) { + this.namingLiveAvatar = namingLiveAvatar; + } + + public int getNamingLiveActiveRankHide() { + return namingLiveActiveRankHide; + } + + public void setNamingLiveActiveRankHide(int namingLiveActiveRankHide) { + this.namingLiveActiveRankHide = namingLiveActiveRankHide; + } + + public int getNamingUserId() { + return namingUserId; + } + + public void setNamingUserId(int namingUserId) { + this.namingUserId = namingUserId; + } + + public String getNamingUserNicename() { + return namingUserNicename; + } + + public void setNamingUserNicename(String namingUserNicename) { + this.namingUserNicename = namingUserNicename; + } + + public String getNamingUserAvatar() { + return namingUserAvatar; + } + + public void setNamingUserAvatar(String namingUserAvatar) { + this.namingUserAvatar = namingUserAvatar; + } + + public int getNamingUserActiveRankHide() { + return namingUserActiveRankHide; + } + + public void setNamingUserActiveRankHide(int namingUserActiveRankHide) { + this.namingUserActiveRankHide = namingUserActiveRankHide; + } + } + + // 内部类:GiftData + public static class GiftData { + + @SerializedName("gift_hall_send_num") + private int giftHallSendNum; + + @SerializedName("live_id") + private int liveId; + + @SerializedName("live_user_name") + private String liveUserName; + + @SerializedName("live_avatar") + private String liveAvatar; + + @SerializedName("user_name") + private String userName; + + @SerializedName("avatar") + private String avatar; + + @SerializedName("user_id") + private String userId; + + @SerializedName("active_rank_hide") + private int activeRankHide; + + @SerializedName("create_time") + private String createTime; + @SerializedName("naming_user_gift_hall_rank_hide") + private int naming_user_gift_hall_rank_hide; + + // 如果需要,可以添加无参构造器、getter和setter(这里省略) + + public int getNaming_user_gift_hall_rank_hide() { + return naming_user_gift_hall_rank_hide; + } + + public void setNaming_user_gift_hall_rank_hide(int naming_user_gift_hall_rank_hide) { + this.naming_user_gift_hall_rank_hide = naming_user_gift_hall_rank_hide; + } + + public int getGiftHallSendNum() { + return giftHallSendNum; + } + public String getGiftHallSendNumForString() { + if(giftHallSendNum>999999){ + return "999999+"; + } + return giftHallSendNum+""; + } + + public void setGiftHallSendNum(int giftHallSendNum) { + this.giftHallSendNum = giftHallSendNum; + } + + public int getLiveId() { + return liveId; + } + + public void setLiveId(int liveId) { + this.liveId = liveId; + } + + public String getLiveUserName() { + return liveUserName; + } + + public void setLiveUserName(String liveUserName) { + this.liveUserName = liveUserName; + } + + public String getLiveAvatar() { + return liveAvatar; + } + + public void setLiveAvatar(String liveAvatar) { + this.liveAvatar = liveAvatar; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getUserId() { + if(StringUtil.isEmpty(userId)){ + return "0"; + } + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public int getActiveRankHide() { + return activeRankHide; + } + + public void setActiveRankHide(int activeRankHide) { + this.activeRankHide = activeRankHide; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/GiftWallTab2Bean.java b/common/src/main/java/com/yunbao/common/bean/GiftWallTab2Bean.java new file mode 100644 index 000000000..151f1ba59 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/GiftWallTab2Bean.java @@ -0,0 +1,312 @@ +package com.yunbao.common.bean; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class GiftWallTab2Bean extends BaseModel{ + + + @SerializedName("illuminate_data") + private IlluminateData illuminateData; + @SerializedName("gift_hall_start_date") + private String gift_hall_start_date; + @SerializedName("gift_hall_end_date") + private String gift_hall_end_date; + + public GiftWallTab2Bean() { + } + + public IlluminateData getIlluminateData() { + return illuminateData; + } + + public void setIlluminateData(IlluminateData illuminateData) { + this.illuminateData = illuminateData; + } + + public String getGift_hall_start_date() { + return gift_hall_start_date; + } + + public void setGift_hall_start_date(String gift_hall_start_date) { + this.gift_hall_start_date = gift_hall_start_date; + } + + public String getGift_hall_end_date() { + return gift_hall_end_date; + } + + public void setGift_hall_end_date(String gift_hall_end_date) { + this.gift_hall_end_date = gift_hall_end_date; + } + + public static class IlluminateData{ + @SerializedName("week_start_data") + private List weekStartData; + @SerializedName("gift_data") + private List giftData; + + public IlluminateData() { + } + + public List getWeekStartData() { + return weekStartData; + } + + public void setWeekStartData(List weekStartData) { + this.weekStartData = weekStartData; + } + + public List getGiftData() { + return giftData; + } + + public void setGiftData(List giftData) { + this.giftData = giftData; + } + } + public static class Gift{ + @SerializedName("gift_id") + public int giftId; + + @SerializedName("sendtype") + public int sendType; + + @SerializedName("gift_name") + public String giftName; + + @SerializedName("need_coin") + public int needCoin; + + @SerializedName("gift_icon") + public String giftIcon; + + @SerializedName("week_star_level") + public int weekStarLevel; + + @SerializedName("illuminate_num") + public int illuminateNum; + + @SerializedName("gift_hall_type") + public int giftHallType; + + @SerializedName("gift_name_en") + public String giftNameEn; + + @SerializedName("gift_hall_start") + public String giftHallStart; + + @SerializedName("gift_hall_end") + public String giftHallEnd; + + @SerializedName("naming_live_id") + public int namingLiveId; + + @SerializedName("naming_live_nicename") + public String namingLiveNicename; + + @SerializedName("gift_hall_send_num") + public int giftHallSendNum; + + @SerializedName("naming_live_avatar") + public String namingLiveAvatar; + + @SerializedName("naming_live_active_rank_hide") + public int namingLiveActiveRankHide; + + @SerializedName("illuminate_status") + public int illuminateStatus; + + @SerializedName("naming_user_id") + public int namingUserId; + + @SerializedName("naming_user_nicename") + public String namingUserNicename; + + @SerializedName("naming_user_avatar") + public String namingUserAvatar; + + @SerializedName("naming_user_gift_hall_rank_hide") + public int namingUserActiveRankHide; + + @SerializedName("needcoin_total") + public long needCoinTotal; + + public int getGiftId() { + return giftId; + } + + public void setGiftId(int giftId) { + this.giftId = giftId; + } + + public int getSendType() { + return sendType; + } + + public void setSendType(int sendType) { + this.sendType = sendType; + } + + public String getGiftName() { + return giftName; + } + + public void setGiftName(String giftName) { + this.giftName = giftName; + } + + public int getNeedCoin() { + return needCoin; + } + + public void setNeedCoin(int needCoin) { + this.needCoin = needCoin; + } + + public String getGiftIcon() { + return giftIcon; + } + + public void setGiftIcon(String giftIcon) { + this.giftIcon = giftIcon; + } + + public int getWeekStarLevel() { + return weekStarLevel; + } + + public void setWeekStarLevel(int weekStarLevel) { + this.weekStarLevel = weekStarLevel; + } + + public int getIlluminateNum() { + return illuminateNum; + } + + public void setIlluminateNum(int illuminateNum) { + this.illuminateNum = illuminateNum; + } + + public int getGiftHallType() { + return giftHallType; + } + + public void setGiftHallType(int giftHallType) { + this.giftHallType = giftHallType; + } + + public String getGiftNameEn() { + return giftNameEn; + } + + public void setGiftNameEn(String giftNameEn) { + this.giftNameEn = giftNameEn; + } + + public String getGiftHallStart() { + return giftHallStart; + } + + public void setGiftHallStart(String giftHallStart) { + this.giftHallStart = giftHallStart; + } + + public String getGiftHallEnd() { + return giftHallEnd; + } + + public void setGiftHallEnd(String giftHallEnd) { + this.giftHallEnd = giftHallEnd; + } + + public int getNamingLiveId() { + return namingLiveId; + } + + public void setNamingLiveId(int namingLiveId) { + this.namingLiveId = namingLiveId; + } + + public String getNamingLiveNicename() { + return namingLiveNicename; + } + + public void setNamingLiveNicename(String namingLiveNicename) { + this.namingLiveNicename = namingLiveNicename; + } + + public int getGiftHallSendNum() { + return giftHallSendNum; + } + + public void setGiftHallSendNum(int giftHallSendNum) { + this.giftHallSendNum = giftHallSendNum; + } + + public String getNamingLiveAvatar() { + return namingLiveAvatar; + } + + public void setNamingLiveAvatar(String namingLiveAvatar) { + this.namingLiveAvatar = namingLiveAvatar; + } + + public int getNamingLiveActiveRankHide() { + return namingLiveActiveRankHide; + } + + public void setNamingLiveActiveRankHide(int namingLiveActiveRankHide) { + this.namingLiveActiveRankHide = namingLiveActiveRankHide; + } + + public int getIlluminateStatus() { + return illuminateStatus; + } + + public void setIlluminateStatus(int illuminateStatus) { + this.illuminateStatus = illuminateStatus; + } + + public int getNamingUserId() { + return namingUserId; + } + + public void setNamingUserId(int namingUserId) { + this.namingUserId = namingUserId; + } + + public String getNamingUserNicename() { + return namingUserNicename; + } + + public void setNamingUserNicename(String namingUserNicename) { + this.namingUserNicename = namingUserNicename; + } + + public String getNamingUserAvatar() { + return namingUserAvatar; + } + + public void setNamingUserAvatar(String namingUserAvatar) { + this.namingUserAvatar = namingUserAvatar; + } + + public int getNamingUserActiveRankHide() { + return namingUserActiveRankHide; + } + + public void setNamingUserActiveRankHide(int namingUserActiveRankHide) { + this.namingUserActiveRankHide = namingUserActiveRankHide; + } + + public long getNeedCoinTotal() { + return needCoinTotal; + } + + public void setNeedCoinTotal(long needCoinTotal) { + this.needCoinTotal = needCoinTotal; + } + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/GuardPriceModel.java b/common/src/main/java/com/yunbao/common/bean/GuardPriceModel.java index 24568f683..bdaebd67e 100644 --- a/common/src/main/java/com/yunbao/common/bean/GuardPriceModel.java +++ b/common/src/main/java/com/yunbao/common/bean/GuardPriceModel.java @@ -22,6 +22,30 @@ public class GuardPriceModel extends BaseModel { private String discount; @SerializedName("price_key") private int priceKey; + @SerializedName("coupon_discount") + private String couponDiscount; + @SerializedName("coupon_discount_en") + private String couponDiscountEn; + @SerializedName("coupon_discount_price") + private String couponDiscountPrice; + @SerializedName("coupon_id") + private String couponId; + + public String getCouponDiscount() { + return couponDiscount; + } + + public String getCouponId() { + return couponId; + } + + public String getCouponDiscountEn() { + return couponDiscountEn; + } + + public String getCouponDiscountPrice() { + return couponDiscountPrice; + } public String getOpeningTime() { return openingTime; diff --git a/common/src/main/java/com/yunbao/common/bean/LiveAnchorCallMeModel.java b/common/src/main/java/com/yunbao/common/bean/LiveAnchorCallMeModel.java index 400322cb9..7520ea169 100644 --- a/common/src/main/java/com/yunbao/common/bean/LiveAnchorCallMeModel.java +++ b/common/src/main/java/com/yunbao/common/bean/LiveAnchorCallMeModel.java @@ -5,6 +5,7 @@ import androidx.annotation.NonNull; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.gson.annotations.SerializedName; +import com.yunbao.common.utils.StringUtil; /** * 联系方式 @@ -141,14 +142,14 @@ public class LiveAnchorCallMeModel extends BaseModel { public static class AppBean { private String number; - private int isShow; + private String isShow; public AppBean() { } public AppBean(String number, int isShow) { this.number = number; - this.isShow = isShow; + this.isShow = isShow + ""; } public String getNumber() { @@ -160,11 +161,14 @@ public class LiveAnchorCallMeModel extends BaseModel { } public int getIsShow() { - return isShow; + if (StringUtil.isEmpty(isShow)) { + return 0; + } + return Integer.parseInt(isShow); } public void setIsShow(int isShow) { - this.isShow = isShow; + this.isShow = isShow + ""; } @NonNull diff --git a/common/src/main/java/com/yunbao/common/bean/LiveGiftBean.java b/common/src/main/java/com/yunbao/common/bean/LiveGiftBean.java index ee8b51204..44c90cf46 100644 --- a/common/src/main/java/com/yunbao/common/bean/LiveGiftBean.java +++ b/common/src/main/java/com/yunbao/common/bean/LiveGiftBean.java @@ -4,6 +4,7 @@ import android.view.View; import com.alibaba.fastjson.annotation.JSONField; import com.google.gson.annotations.SerializedName; +import com.yunbao.common.utils.StringUtil; /** * Created by cxf on 2018/10/12. @@ -52,9 +53,9 @@ public class LiveGiftBean { @JSONField(name = "operate_url") private String operateUrl; - @JSONField(name = "naming_liveuid") + @JSONField(name = "naming_live_id") private String namingLiveuid; - @JSONField(name = "naming_uid") + @JSONField(name = "naming_user_id") private String namingUid; @JSONField(name = "naming_live_name") private String namingLiveName; @@ -74,6 +75,28 @@ public class LiveGiftBean { private int blindBoxTicket; @JSONField(name = "blind_box_ticket_id") private int blindBoxTicketId; + @JSONField(name = "naming_user_gift_hall_rank_hide") + @SerializedName("naming_user_gift_hall_rank_hide") + private int naming_user_gift_hall_rank_hide; + @JSONField(name = "naming_live_gift_hall_rank_hide") + @SerializedName("naming_live_gift_hall_rank_hide") + private int naming_live_gift_hall_rank_hide; + + public int getNaming_user_gift_hall_rank_hide() { + return naming_user_gift_hall_rank_hide; + } + + public void setNaming_user_gift_hall_rank_hide(int naming_user_gift_hall_rank_hide) { + this.naming_user_gift_hall_rank_hide = naming_user_gift_hall_rank_hide; + } + + public int getNaming_live_gift_hall_rank_hide() { + return naming_live_gift_hall_rank_hide; + } + + public void setNaming_live_gift_hall_rank_hide(int naming_live_gift_hall_rank_hide) { + this.naming_live_gift_hall_rank_hide = naming_live_gift_hall_rank_hide; + } public boolean isPageGift() { return isPageGift; @@ -146,6 +169,9 @@ public class LiveGiftBean { } public String getNamingUid() { + if(StringUtil.isEmpty(namingUid)){ + namingUid="0"; + } return namingUid; } @@ -288,6 +314,9 @@ public class LiveGiftBean { } public String getSwf() { + if(StringUtil.isEmpty(swf)){ + swf=""; + } return swf; } diff --git a/common/src/main/java/com/yunbao/common/bean/OpenAdModel.java b/common/src/main/java/com/yunbao/common/bean/OpenAdModel.java index 638334d48..1131cc919 100644 --- a/common/src/main/java/com/yunbao/common/bean/OpenAdModel.java +++ b/common/src/main/java/com/yunbao/common/bean/OpenAdModel.java @@ -3,6 +3,7 @@ package com.yunbao.common.bean; import com.google.gson.annotations.SerializedName; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.utils.StringUtil; +import com.yunbao.common.utils.WordUtil; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -122,7 +123,7 @@ public class OpenAdModel extends BaseModel { if (!url.startsWith("http://") && !url.startsWith("https://")) { url = CommonAppConfig.HOST + (url.startsWith("/") ? url : "/" + url); } - return url; + return url+"&isZh=" + (WordUtil.isNewZh() ? "1" : "0"); } public String getOriginalUrl() { diff --git a/common/src/main/java/com/yunbao/common/bean/SudGameInfoBean.java b/common/src/main/java/com/yunbao/common/bean/SudGameInfoBean.java new file mode 100644 index 000000000..d47f5fe09 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/SudGameInfoBean.java @@ -0,0 +1,60 @@ +package com.yunbao.common.bean; + +public class SudGameInfoBean { + private String uid;//玩家id + private String nick_name;//玩家昵称 + private String avatar_url;//玩家头像 + private String gender;//玩家性别 + private int is_ai;//是否是ai + + public String getUid() { + return uid; + } + + public void setUid(String uid) { + this.uid = uid; + } + + public String getNick_name() { + return nick_name; + } + + public void setNick_name(String nick_name) { + this.nick_name = nick_name; + } + + public String getAvatar_url() { + return avatar_url; + } + + public void setAvatar_url(String avatar_url) { + this.avatar_url = avatar_url; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public int getIs_ai() { + return is_ai; + } + + public void setIs_ai(int is_ai) { + this.is_ai = is_ai; + } + + @Override + public String toString() { + return "SudGameInfoBean{" + + "uid=" + uid + + ", nick_name='" + nick_name + '\'' + + ", avatar_url='" + avatar_url + '\'' + + ", gender='" + gender + '\'' + + ", is_ai=" + is_ai + + '}'; + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/SudGameScoreBean.java b/common/src/main/java/com/yunbao/common/bean/SudGameScoreBean.java new file mode 100644 index 000000000..4742eaec0 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/SudGameScoreBean.java @@ -0,0 +1,60 @@ +package com.yunbao.common.bean; + +public class SudGameScoreBean extends BaseModel{ + private int golden_bean_remaining_balance;// + private int room_sill;//房间的金豆门槛 + private int room_ticket;//收取的门票费 + private int room_win_num;//赢家获得的金豆 + private int game_mode;//1.双人对战 2.多人游戏 + + @Override + public String toString() { + return "SudGameScoreBean{" + + "golden_bean_remaining_balance=" + golden_bean_remaining_balance + + ", room_sill=" + room_sill + + ", room_ticket=" + room_ticket + + ", room_win_num=" + room_win_num + + ", game_mode=" + game_mode + + '}'; + } + + public int getGame_mode() { + return game_mode; + } + + public void setGame_mode(int game_mode) { + this.game_mode = game_mode; + } + + public int getGolden_bean_remaining_balance() { + return golden_bean_remaining_balance; + } + + public void setGolden_bean_remaining_balance(int golden_bean_remaining_balance) { + this.golden_bean_remaining_balance = golden_bean_remaining_balance; + } + + public int getRoom_sill() { + return room_sill; + } + + public void setRoom_sill(int room_sill) { + this.room_sill = room_sill; + } + + public int getRoom_ticket() { + return room_ticket; + } + + public void setRoom_ticket(int room_ticket) { + this.room_ticket = room_ticket; + } + + public int getRoom_win_num() { + return room_win_num; + } + + public void setRoom_win_num(int room_win_num) { + this.room_win_num = room_win_num; + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/SudSettleBean.java b/common/src/main/java/com/yunbao/common/bean/SudSettleBean.java new file mode 100644 index 000000000..9738a1e87 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/SudSettleBean.java @@ -0,0 +1,71 @@ +package com.yunbao.common.bean; + +import java.util.List; + +public class SudSettleBean { + private String uid;//玩家id + private String nick_name;//玩家昵称 + private String avatar_url;//玩家头像 + private int rank;//玩家排名 + private int win_num;//赢得或者失去的金豆 + + public String getUid() { + return uid; + } + + public void setUid(String uid) { + this.uid = uid; + } + + public String getNick_name() { + return nick_name; + } + + public void setNick_name(String nick_name) { + this.nick_name = nick_name; + } + + public String getAvatar_url() { + return avatar_url; + } + + public void setAvatar_url(String avatar_url) { + this.avatar_url = avatar_url; + } + + public int getRank() { + return rank; + } + + public void setRank(int rank) { + this.rank = rank; + } + + public int getWin_num() { + return win_num; + } + + public void setWin_num(int win_num) { + this.win_num = win_num; + } + + + public SudSettleBean(String uid, String nick_name, String avatar_url, int rank, int win_num) { + this.uid = uid; + this.nick_name = nick_name; + this.avatar_url = avatar_url; + this.rank = rank; + this.win_num = win_num; + } + + @Override + public String toString() { + return "SudSettleBean{" + + "uid='" + uid + '\'' + + ", nick_name='" + nick_name + '\'' + + ", avatar_url='" + avatar_url + '\'' + + ", rank=" + rank + + ", win_num=" + win_num + + '}'; + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/UserMedalModel.java b/common/src/main/java/com/yunbao/common/bean/UserMedalModel.java index 4ac5dde3e..b0b22b603 100644 --- a/common/src/main/java/com/yunbao/common/bean/UserMedalModel.java +++ b/common/src/main/java/com/yunbao/common/bean/UserMedalModel.java @@ -1,8 +1,9 @@ package com.yunbao.common.bean; import com.google.gson.annotations.SerializedName; +import com.stx.xhb.androidx.entity.BaseBannerInfo; -public class UserMedalModel extends BaseModel { +public class UserMedalModel extends BaseModel implements BaseBannerInfo { @SerializedName("id") private String id; @SerializedName("display_src") @@ -13,9 +14,26 @@ public class UserMedalModel extends BaseModel { private String dressDescription; @SerializedName("sort") private String sort; + @SerializedName("use_status") + private String use_status; @SerializedName("dress_status") private String dressStatus; + @SerializedName("users_dress_id") + private String users_dress_id; + + public String getUsersDressId() { + return users_dress_id; + } + + public String getUseStatus() { + return use_status; + } + + public void setUse_status(String use_status) { + this.use_status = use_status; + } + public String getId() { return id; } @@ -69,4 +87,14 @@ public class UserMedalModel extends BaseModel { this.dressStatus = dressStatus; return this; } + + @Override + public Object getXBannerUrl() { + return null; + } + + @Override + public String getXBannerTitle() { + return null; + } } diff --git a/common/src/main/java/com/yunbao/common/custom/LiveGifWallAchieveWearTransformer.java b/common/src/main/java/com/yunbao/common/custom/LiveGifWallAchieveWearTransformer.java new file mode 100644 index 000000000..56032e07a --- /dev/null +++ b/common/src/main/java/com/yunbao/common/custom/LiveGifWallAchieveWearTransformer.java @@ -0,0 +1,75 @@ +package com.yunbao.common.custom; + +import android.view.View; + +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.core.view.ViewCompat; +import androidx.viewpager.widget.ViewPager; + +import com.stx.xhb.androidx.transformers.BasePageTransformer; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.L; + +public class LiveGifWallAchieveWearTransformer extends BasePageTransformer { + /** + * author: xiaohaibin. + * time: 2018/10/9 + * mail:xhb_199409@163.com + * github:https://github.com/xiaohaibin + * describe: 适用于一屏显示多个模式 + */ + private float mMinScale = 0.85f; + private float mMinAlpha = 1f; + + public LiveGifWallAchieveWearTransformer() { + } + + public LiveGifWallAchieveWearTransformer(float minAlpha, float minScale) { + setMinAlpha(minAlpha); + setMinScale(minScale); + } + + @Override + public void handleInvisiblePage(View view, float position) { + // ViewCompat.setAlpha(view, 0); + } + + @Override + public void handleLeftPage(View view, float position) { + float scale = Math.max(mMinScale, 1 + position); + float vertMargin = view.getHeight() * (1 - scale) / 2; + float horzMargin = view.getWidth() * (1 - scale) / 2; + view.setTranslationX(horzMargin - vertMargin / 2); + view.setScaleX(scale); + view.setScaleY( scale); + L.e("handleLeftPage scale:"+scale); + // view.setAlpha( mMinAlpha + (scale - mMinScale) / (1 - mMinScale) * (1 - mMinAlpha)); + view.setAlpha(1f); + } + + @Override + public void handleRightPage(View view, float position) { + float scale = Math.max(mMinScale, 1 - position); + float vertMargin = view.getHeight() * (1 - scale) / 2; + float horzMargin = view.getWidth() * (1 - scale) / 2; + view.setTranslationX( -horzMargin + vertMargin / 2); + view.setScaleX( scale); + + view.setScaleY( scale); + L.e("handleRightPage scale:"+scale); + // view.setAlpha( mMinAlpha + (scale - mMinScale) / (1 - mMinScale) * (1 - mMinAlpha)); + view.setAlpha(1f); + } + + public void setMinAlpha(float minAlpha) { + if (minAlpha >= 0.6f && minAlpha <= 1.0f) { + mMinAlpha = minAlpha; + } + } + + public void setMinScale(float minScale) { + if (minScale >= 0.6f && minScale <= 1.0f) { + mMinScale = minScale; + } + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/AbsDialogCenterPopupWindow.java b/common/src/main/java/com/yunbao/common/dialog/AbsDialogCenterPopupWindow.java index b0b894576..a685192b0 100644 --- a/common/src/main/java/com/yunbao/common/dialog/AbsDialogCenterPopupWindow.java +++ b/common/src/main/java/com/yunbao/common/dialog/AbsDialogCenterPopupWindow.java @@ -24,6 +24,11 @@ public abstract class AbsDialogCenterPopupWindow extends CenterPopupView { public abstract void buildDialog(XPopup.Builder builder); public abstract int bindLayoutId(); + @Override + protected void onShow() { + super.onShow(); + } + @Override protected int getImplLayoutId() { return bindLayoutId(); @@ -36,4 +41,24 @@ public abstract class AbsDialogCenterPopupWindow extends CenterPopupView { buildDialog(builder); builder.asCustom(this).show(); } + + /** + * Dismiss监听 + */ + private OnDismissListener onDismissListener; + public interface OnDismissListener{ + void onDismiss(); + } + + public void setOnDismissListener(OnDismissListener onDismissListener) { + this.onDismissListener = onDismissListener; + } + + @Override + protected void onDismiss() { + super.onDismiss(); + if (onDismissListener != null){ + onDismissListener.onDismiss(); + } + } } diff --git a/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java b/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java index be1adad33..aa385d22f 100644 --- a/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java +++ b/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java @@ -6,6 +6,11 @@ import androidx.annotation.NonNull; import com.lxj.xpopup.XPopup; import com.lxj.xpopup.core.BottomPopupView; +import com.yunbao.common.event.ClosePopupDialogEvent; +import com.yunbao.common.utils.Bus; + +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; /** * 底部弹窗 @@ -16,12 +21,20 @@ public abstract class AbsDialogPopupWindow extends BottomPopupView { public AbsDialogPopupWindow(@NonNull Context context) { super(context); this.mContext = context; + Bus.getOn(this); + } + + @Override + public void dismiss() { + super.dismiss(); + Bus.getOff(this); } /** * 参考配置 */ public abstract void buildDialog(XPopup.Builder builder); + public abstract int bindLayoutId(); @Override @@ -36,4 +49,16 @@ public abstract class AbsDialogPopupWindow extends BottomPopupView { buildDialog(builder); builder.asCustom(this).show(); } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onWishSendGift(ClosePopupDialogEvent bean) { + if(bean.getId()==null) { + dismiss(); + return; + } + if(bean.getId().equals(getTag())) { + dismiss(); + } + } + } diff --git a/common/src/main/java/com/yunbao/common/dialog/GiftWallAchieveDialog.java b/common/src/main/java/com/yunbao/common/dialog/GiftWallAchieveDialog.java new file mode 100644 index 000000000..7325b31cf --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GiftWallAchieveDialog.java @@ -0,0 +1,166 @@ +package com.yunbao.common.dialog; + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.XPopup; +import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.R; +import com.yunbao.common.adapter.GiftWallAchieveAdapter; +import com.yunbao.common.bean.IMLoginModel; +import com.yunbao.common.bean.MedalAchievementModel; +import com.yunbao.common.bean.UserMedalListModel; +import com.yunbao.common.fragment.GiftWallMainTab1Fragment; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.RouteUtil; +import com.yunbao.common.utils.ScreenDimenUtil; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.util.ArrayList; +import java.util.List; + +/** + * 礼物墙-荣誉成就 + */ +public class GiftWallAchieveDialog extends AbsDialogPopupWindow { + + private ImageView mIvBg; + private ImageView mIvBack; + private TextView numCount; + private boolean isFullWindows; + private RecyclerView mRecyclerView; + private GiftWallAchieveAdapter giftWallAchieveAdapter; + private String toUid; + private boolean isAnchor; + private View topBar; + private TextView honor; + private ImageView top_icon; + + private List userMedalListModelList = new ArrayList<>(); + + public GiftWallAchieveDialog(@NonNull Context context) { + super(context); + } + + public GiftWallAchieveDialog setFullWindows(boolean fullWindows) { + isFullWindows = fullWindows; + return this; + } + + + public GiftWallAchieveDialog setAnchor(boolean anchor) { + isAnchor = anchor; + return this; + } + + public GiftWallAchieveDialog setToUid(String toUid) { + this.toUid = toUid; + return this; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_gift_wall_achieve; + } + + @Override + protected int getPopupHeight() { + if (isFullWindows) { + return super.getPopupHeight(); + } + int screenHeight = ScreenDimenUtil.getInstance().getScreenHeight(); + return (int) (screenHeight * 0.8); + } + + void initView() { + mIvBg = findViewById(R.id.iv_root_bg); + mIvBack = findViewById(R.id.iv_back); + mRecyclerView = findViewById(R.id.recyclerView); + mRecyclerView.setLayoutManager(new GridLayoutManager(mContext, 3, GridLayoutManager.VERTICAL, false)); + numCount = findViewById(R.id.numCount); + topBar = findViewById(R.id.top_bar); + honor = findViewById(R.id.honor); + top_icon = findViewById(R.id.top_icon); + LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) top_icon.getLayoutParams(); + params.width = DpUtil.dp2px(WordUtil.isNewZh() ? 65 : 130); + top_icon.setLayoutParams(params); + mIvBack.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + dialog.dismiss(); + } + }); + + ViewClicksAntiShake.clicksAntiShake(honor, () -> { + StringBuffer htmlUrl = new StringBuffer(); + IMLoginModel userInfo = IMLoginManager.get(getContext()).getUserInfo(); + htmlUrl.append(CommonAppConfig.HOST).append("/h5/shequ/index.html#/h5/shequ/RongYuQiang?").append("touid=").append(toUid).append("&token=").append(userInfo.getToken()).append("&uid=").append(userInfo.getId()).append("&isZh=").append(WordUtil.isNewZh() ? "1" : 0); + RouteUtil.forwardLiveZhuangBanActivity(htmlUrl.toString(), true); + }); + } + + @Override + protected void onCreate() { + super.onCreate(); + initView(); + if (isFullWindows) { + mIvBg.setScaleType(ImageView.ScaleType.CENTER_CROP); + ViewGroup.LayoutParams params1 = topBar.getLayoutParams(); + params1.height = DpUtil.dp2px(35); + ; + topBar.setLayoutParams(params1); + } else { + mIvBg.setScaleType(ImageView.ScaleType.FIT_XY); + } + initData(); + } + + private void initData() { + LiveNetManager.get(getContext()).getGiftHallMedalList(toUid, isAnchor ? "1" : "2", new HttpCallback() { + @Override + public void onSuccess(MedalAchievementModel data) { + numCount.setText(data.getMedalLightNumber() + "/" + data.getMedalTotalNumber()); + userMedalListModelList = data.getMedalData(); + giftWallAchieveAdapter = new GiftWallAchieveAdapter(userMedalListModelList, mContext); + giftWallAchieveAdapter.setOnItemClickListener(new GiftWallAchieveAdapter.OnItemClickListener() { + @Override + public void onItemClick(int position) { + GiftWallAchieveWearDialog giftWallAchieveWearDialog = new GiftWallAchieveWearDialog(mContext, toUid, isAnchor, userMedalListModelList.get(position).getDressInfo(), new GiftWallAchieveWearDialog.UserUseDressSuccess() { + @Override + public void onSuccess() { + initData(); + } + }); + giftWallAchieveWearDialog.showDialog(); + } + }); + mRecyclerView.setAdapter(giftWallAchieveAdapter); + } + + @Override + public void onError(String error) { + ToastUtil.show(error); + } + }); + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/GiftWallAchieveWearDialog.java b/common/src/main/java/com/yunbao/common/dialog/GiftWallAchieveWearDialog.java new file mode 100644 index 000000000..7731165c5 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GiftWallAchieveWearDialog.java @@ -0,0 +1,210 @@ +package com.yunbao.common.dialog; + +import android.content.Context; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.viewpager.widget.ViewPager; + +import com.lxj.xpopup.XPopup; +import com.stx.xhb.androidx.XBanner; +import com.stx.xhb.androidx.transformers.BasePageTransformer; +import com.stx.xhb.androidx.transformers.Transformer; +import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.R; +import com.yunbao.common.bean.HttpCallbackModel; +import com.yunbao.common.bean.UserBean; +import com.yunbao.common.bean.UserMedalModel; +import com.yunbao.common.custom.LiveGifWallAchieveWearTransformer; +import com.yunbao.common.custom.LiveGuardScalePageTransformer; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.utils.ScreenDimenUtil; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; + +import java.util.ArrayList; +import java.util.List; + +/** + * 礼物墙-荣誉成就 + */ +public class GiftWallAchieveWearDialog extends AbsDialogPopupWindow { + + private ImageView mIvBg; + private ImageView mIvBack; + private boolean isFullWindows; + private String toUid; + private XBanner xBanner; + private TextView textAchieveName; + private TextView textAchieveHint; + private TextView btnConfirm; + private int selectPosition = 0; + private boolean isAnchor; + + String putOn = WordUtil.isNewZh() ? "佩戴" : "wearing"; + String wearing = WordUtil.isNewZh() ? "已佩戴" : "worn"; + private List achieveWearModels = new ArrayList<>(); + private UserUseDressSuccess userUseDressSuccess; + private int useIndex = 0; + + public GiftWallAchieveWearDialog(@NonNull Context context, String toUid, boolean isAnchor, List achieveWearModels, UserUseDressSuccess userUseDressSuccess) { + super(context); + this.toUid = toUid; + this.isAnchor = isAnchor; + this.achieveWearModels = achieveWearModels; + this.userUseDressSuccess = userUseDressSuccess; + for (int i = 0; i < this.achieveWearModels.size(); i++) { + if ("1".equals(this.achieveWearModels.get(i).getUseStatus())) { + useIndex = i; + break; + } + } + } + + public GiftWallAchieveWearDialog setFullWindows(boolean fullWindows) { + isFullWindows = fullWindows; + return this; + } + + public GiftWallAchieveWearDialog setToUid(String toUid) { + this.toUid = toUid; + return this; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_gift_wall_achieve_wear; + } + + @Override + protected int getPopupHeight() { + if (isFullWindows) { + return super.getPopupHeight(); + } + return ScreenDimenUtil.getInstance().getScreenHeight(); + } + + void initView() { + mIvBg = findViewById(R.id.iv_root_bg); + mIvBack = findViewById(R.id.iv_back); + xBanner = findViewById(R.id.gift_wall_achieve_banner); + textAchieveName = findViewById(R.id.text_achieve_name); + textAchieveHint = findViewById(R.id.text_achieve_hint); + btnConfirm = findViewById(R.id.btn_confirm); + findViewById(R.id.btn_cancel).setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + dialog.dismiss(); + } + }); + btnConfirm.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + if (achieveWearModels.get(selectPosition).getUseStatus().equals("0") && achieveWearModels.get(selectPosition).getDressStatus().equals("2")) { + LiveNetManager.get(mContext).userUseDress( + achieveWearModels.get(selectPosition).getUsersDressId(), new HttpCallback() { + @Override + public void onSuccess(HttpCallbackModel data) { + ToastUtil.show(data.getMsg()); + if (data.getCode() == 0) { + UserBean u = CommonAppConfig.getInstance().getUserBean(); + u.setMedal_no_display_src(achieveWearModels.get(selectPosition).getDisplaySrc()); + CommonAppConfig.getInstance().setUserBean(u); + if (userUseDressSuccess != null) { + userUseDressSuccess.onSuccess(); + } + dialog.dismiss(); + } + } + + @Override + public void onError(String error) { + + } + }); + } + } + }); + btnConfirm.setVisibility(CommonAppConfig.getInstance().getUid().equals(toUid) ? View.VISIBLE : View.GONE); + } + + @Override + protected void onCreate() { + super.onCreate(); + initView(); + /*RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mIvBack.getLayoutParams(); + if (isFullWindows) { + params.width=DpUtil.dp2px(20); + mIvBack.setVisibility(View.VISIBLE); + mIvBg.setScaleType(ImageView.ScaleType.CENTER_CROP); + } else { + params.width=DpUtil.dp2px(1); + mIvBack.setVisibility(View.INVISIBLE); + mIvBg.setScaleType(ImageView.ScaleType.FIT_XY); + } + mIvBack.setLayoutParams(params);*/ + initData(); + } + + public void setWearInfo() { + textAchieveName.setText(achieveWearModels.get(selectPosition).getDressName()); + textAchieveHint.setText(achieveWearModels.get(selectPosition).getDressDescription()); + btnConfirm.setText(achieveWearModels.get(selectPosition).getUseStatus().equals("1") ? wearing : putOn); + if (achieveWearModels.get(selectPosition).getUseStatus().equals("0") && achieveWearModels.get(selectPosition).getDressStatus().equals("2")) { + btnConfirm.setBackground(getResources().getDrawable(R.drawable.gift_wall_achieve_wear_sure)); + } else { + btnConfirm.setBackground(getResources().getDrawable(R.drawable.gift_wall_achieve_wear_disable)); + } + } + + private void initData() { + setWearInfo(); + xBanner.setBannerData(R.layout.dialog_gift_wall_achieve_wear_item, achieveWearModels); + //xBanner.setCustomPageTransformer(new LiveGuardScalePageTransformer()); + xBanner.setCustomPageTransformer(new LiveGifWallAchieveWearTransformer()); + xBanner.setIsClipChildrenMode(true); + //xBanner.setCustomPageTransformer(BasePageTransformer.getPageTransformer(Transformer.Zoom)); + xBanner.getViewPager().setOffscreenPageLimit(3); + xBanner.loadImage(new XBanner.XBannerAdapter() { + @Override + public void loadBanner(XBanner banner, Object model, View view, int position) { + UserMedalModel guardBannerModel = ((UserMedalModel) model); + ImageView wearImg = view.findViewById(R.id.wearImg); + ImageView notUnlocked = view.findViewById(R.id.notUnlocked); + ImgLoader.display(getContext(), guardBannerModel.getDisplaySrc(), wearImg); + notUnlocked.setVisibility(guardBannerModel.getDressStatus().equals("1") ? VISIBLE : View.GONE); + } + }); + xBanner.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int i, float v, int i1) { + + } + + @Override + public void onPageSelected(int i) { + selectPosition = i; + setWearInfo(); + } + + @Override + public void onPageScrollStateChanged(int i) { + + } + }); + // xBanner.getViewPager().setCurrentItem(useIndex); //自动定位到已佩戴到的勋章 + } + + public interface UserUseDressSuccess { + void onSuccess(); + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/GiftWallDialog.java b/common/src/main/java/com/yunbao/common/dialog/GiftWallDialog.java new file mode 100644 index 000000000..3b016f84d --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GiftWallDialog.java @@ -0,0 +1,228 @@ +package com.yunbao.common.dialog; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Color; +import android.graphics.Typeface; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; +import androidx.viewpager2.adapter.FragmentStateAdapter; +import androidx.viewpager2.widget.ViewPager2; + +import com.lxj.xpopup.XPopup; +import com.yunbao.common.R; +import com.yunbao.common.bean.GiftWallBean; +import com.yunbao.common.fragment.BaseFragment; +import com.yunbao.common.fragment.GiftWallMainTab1Fragment; +import com.yunbao.common.fragment.GiftWallMainTab2Fragment; +import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.ScreenDimenUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.CustomEllipsizeTextView; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +/** + * 礼物墙 + */ +public class GiftWallDialog extends AbsDialogPopupWindow { + + private ImageView mIvBg; + private ImageView mIvTips; + private ImageView mIvBack; + private CustomEllipsizeTextView mTvUserName; + private View mAchievement; + private TextView mTvTab1, mTvTab2; + private ViewPager2 mViewPager; + private LinearLayout mIvTabsLayout; + private List fragments = new ArrayList<>(); + private String anchorId; + + private boolean isFullWindows; + String toUserId; + String userName; + boolean isAnchor; + boolean isTab2; + + public GiftWallDialog(@NonNull Context context, String toUserId, String userName, String anchorId, boolean isAnchor) { + super(context); + this.toUserId = toUserId; + this.isAnchor = isAnchor; + this.userName = userName; + this.anchorId = anchorId; + } + + public GiftWallDialog setFullWindows(boolean fullWindows) { + isFullWindows = fullWindows; + return this; + } + + public GiftWallDialog setTab2(boolean isTab2) { + this.isTab2 = isTab2; + return this; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_gift_wall; + } + + @Override + protected int getPopupHeight() { + if (isFullWindows) { + return super.getPopupHeight() - DpUtil.dp2px(10); + } + int screenHeight = ScreenDimenUtil.getInstance().getScreenHeight(); + return (int) (screenHeight * 0.8); + } + + void initView() { + mIvBg = findViewById(R.id.iv_root_bg); + mIvTips = findViewById(R.id.v_tips); + mIvBack = findViewById(R.id.iv_back); + mTvUserName = findViewById(R.id.user_name); + mAchievement = findViewById(R.id.v_achievement); + mTvTab1 = findViewById(R.id.tab1); + mTvTab2 = findViewById(R.id.tab2); + mViewPager = findViewById(R.id.viewPager2); + mIvTabsLayout = findViewById(R.id.tab_layout); + + mTvUserName.setText(String.format(Locale.getDefault(), "%s%s", + userName, + WordUtil.isNewZh() ? "的禮物展館" : "'s Gift Hall" + )); + + fragments.add(new GiftWallMainTab1Fragment().setToUserId(toUserId).setAnchor(isAnchor).setAnchorId(anchorId).setLiveRoom(!isFullWindows).setOnItemClickListener(new OnItemClickListener() { + @Override + public void onItemClick(GiftWallBean bean, int position) { + if (position == 1) { + if (toUserId.equals(IMLoginManager.get(mContext).getUserInfo().getId() + "")) { + mAchievement.setVisibility(View.VISIBLE); + } else { + mAchievement.setVisibility(View.INVISIBLE); + } + } else { + mAchievement.setVisibility(View.VISIBLE); + } + } + })); + fragments.add(new GiftWallMainTab2Fragment().setToUserId(toUserId).setAnchorId(anchorId).setAnchor(isAnchor).setLiveRoom(!isFullWindows)); + mViewPager.setAdapter(new FragmentStateAdapter((FragmentActivity) mContext) { + @NonNull + @Override + public Fragment createFragment(int position) { + return fragments.get(position); + } + + @Override + public int getItemCount() { + return fragments.size(); + } + }); + mViewPager.setUserInputEnabled(false); + mViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + @Override + public void onPageSelected(int position) { + super.onPageSelected(position); + fragments.get(position).updateData(); + if (position == 0) { + mTvUserName.setTextColor(Color.parseColor("#6BCDFF")); + } else { + mTvUserName.setTextColor(Color.parseColor("#FFCF94")); + if (isTab2) { + ((GiftWallMainTab2Fragment) fragments.get(position)).setTab2(); + } + } + } + }); + if (isTab2) { + mViewPager.setCurrentItem(1); + } + + ViewClicksAntiShake.clicksAntiShake(mTvTab1, () -> { + mIvBg.setImageResource(R.mipmap.bg_gift_wall_main_root); + mIvTabsLayout.setBackgroundResource(R.mipmap.icon_gift_wall_main_switch_main); + mTvTab1.setTextColor(Color.parseColor("#9CE7FF")); + mTvTab1.setTextSize(16); + mTvTab1.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); + + mTvTab2.setTextColor(Color.parseColor("#FFFFFF")); + mTvTab2.setTextSize(14); + mTvTab2.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL)); + mViewPager.setCurrentItem(0, false); + }); + ViewClicksAntiShake.clicksAntiShake(mTvTab2, () -> { + + mIvBg.setImageResource(R.mipmap.bg_gift_wall_main_root2); + mIvTabsLayout.setBackgroundResource(R.mipmap.icon_gift_wall_main_switch_full); + mTvTab1.setTextColor(Color.parseColor("#FDF5EE")); + mTvTab1.setTextSize(14); + mTvTab1.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL)); + + mTvTab2.setTextColor(Color.parseColor("#FFC593")); + if (WordUtil.isNewZh()) { + mTvTab2.setTextSize(16); + } else { + mTvTab2.setTextSize(14.5f); + } + mTvTab2.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); + mViewPager.setCurrentItem(1, false); + }); + ViewClicksAntiShake.clicksAntiShake(mAchievement, () -> { + new GiftWallAchieveDialog(mContext).setFullWindows(isFullWindows).setAnchor(isAnchor).setToUid(toUserId).showDialog(); + }); + ViewClicksAntiShake.clicksAntiShake(mIvTips, () -> { + new GiftWallRuleDialog(mContext).setFullWindows(isFullWindows).showDialog(); + }); + resetWindows(); + if (isTab2) { + mTvTab2.callOnClick(); + } + } + + private void resetWindows() { + if (isFullWindows) { + ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) findViewById(R.id.v_achievement).getLayoutParams(); + params.topMargin = DpUtil.dp2px(47); + findViewById(R.id.v_achievement).setLayoutParams(params); + } + } + + @Override + protected void onCreate() { + super.onCreate(); + initView(); + ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mIvBack.getLayoutParams(); + if (isFullWindows) { + params.width = DpUtil.dp2px(20); + mIvBack.setVisibility(View.VISIBLE); + mIvBg.setScaleType(ImageView.ScaleType.CENTER_CROP); + } else { + params.width = DpUtil.dp2px(1); + mIvBack.setVisibility(View.INVISIBLE); + mIvBg.setScaleType(ImageView.ScaleType.FIT_XY); + } + mIvBack.setLayoutParams(params); + ViewClicksAntiShake.clicksAntiShake(mIvBack, this::dismiss); + } + + +} diff --git a/common/src/main/java/com/yunbao/common/dialog/GiftWallGiftInfoDialog.java b/common/src/main/java/com/yunbao/common/dialog/GiftWallGiftInfoDialog.java new file mode 100644 index 000000000..6b554682f --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GiftWallGiftInfoDialog.java @@ -0,0 +1,478 @@ +package com.yunbao.common.dialog; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ObjectAnimator; +import android.content.Context; +import android.graphics.Color; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.core.widget.NestedScrollView; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.XPopup; +import com.makeramen.roundedimageview.RoundedImageView; +import com.opensource.svgaplayer.SVGADrawable; +import com.opensource.svgaplayer.SVGAImageView; +import com.opensource.svgaplayer.SVGAParser; +import com.opensource.svgaplayer.SVGAVideoEntity; +import com.yunbao.common.R; +import com.yunbao.common.adapter.GiftWallGiftInfoListItemAdapter; +import com.yunbao.common.bean.GiftWallInfoBean; +import com.yunbao.common.bean.JsWishBean; +import com.yunbao.common.custom.ItemDecoration; +import com.yunbao.common.event.ClosePopupDialogEvent; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.ScreenDimenUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.util.Locale; + +public class GiftWallGiftInfoDialog extends AbsDialogPopupWindow { + private boolean isFullWindows; + private ImageView mIvBg; + private ImageView mIvBack; + TextView giftName; + ImageView gift; + SVGAImageView gift_bg; + TextView diamond_text; + TextView gift_tv_progress; + TextView gift_tv_max; + ProgressBar gift_progress; + Button gift_btn; + Button tab1, tab2; + ImageView tips_timer; + TextView tv_list_title; + RoundedImageView avatar; + TextView user_name; + TextView send_num; + TextView btn_one; + Button btn_one_tips; + Button btn_lighten; + View tab_layout; + View bottom_layout; + View gift_schedule; + ImageView diamond_icon; + + GiftWallGiftInfoListItemAdapter adapter; + RecyclerView recyclerView; + + String giftId; + String toUserId; + String anchorId; + boolean isAnchor; + int gift_hall_type = 1; + int list_type = 2; + private boolean isLiveRoom; + String time; + private boolean isStar; + private boolean isTab2Enter = false; + + + public GiftWallGiftInfoDialog(Context context, String giftId, String toUserId, boolean isAnchor) { + super(context); + this.giftId = giftId; + this.toUserId = toUserId; + this.isAnchor = isAnchor; + } + + public GiftWallGiftInfoDialog setFullWindows(boolean fullWindows) { + isFullWindows = fullWindows; + return this; + } + + public GiftWallGiftInfoDialog setTab2Enter(boolean tab2Enter) { + isTab2Enter = tab2Enter; + return this; + } + + public GiftWallGiftInfoDialog setAnchorId(String anchorId) { + this.anchorId = anchorId; + return this; + } + + public GiftWallGiftInfoDialog setLiveRoom(boolean isLiveRoom) { + this.isLiveRoom = isLiveRoom; + return this; + } + + public GiftWallGiftInfoDialog setStar(boolean isStar) { + this.isStar = isStar; + return this; + } + + @Override + protected int getPopupHeight() { + if (isFullWindows) { + return super.getPopupHeight(); + } + int screenHeight = ScreenDimenUtil.getInstance().getScreenHeight(); + return (int) (screenHeight * 0.8); + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_gift_wall_gift_info; + } + + @Override + protected void onCreate() { + super.onCreate(); + initView(); + initData(); + } + + void initView() { + mIvBg = findViewById(R.id.iv_root_bg); + mIvBack = findViewById(R.id.iv_back); + diamond_icon = findViewById(R.id.diamond_icon); + giftName = findViewById(R.id.gift_name); + gift = findViewById(R.id.gift); + diamond_text = findViewById(R.id.diamond_text); + gift_tv_progress = findViewById(R.id.gift_tv_progress); + gift_tv_max = findViewById(R.id.gift_tv_max); + gift_progress = findViewById(R.id.gift_progress); + gift_btn = findViewById(R.id.gift_btn); + tab1 = findViewById(R.id.tab1); + tab2 = findViewById(R.id.tab2); + tips_timer = findViewById(R.id.tips_timer); + tv_list_title = findViewById(R.id.tv_list_title); + avatar = findViewById(R.id.bottom_avatar); + user_name = findViewById(R.id.bottom_user_name); + send_num = findViewById(R.id.send_num); + btn_one = findViewById(R.id.btn_one); + btn_one_tips = findViewById(R.id.btn_one_tips); + gift_bg = findViewById(R.id.gift_bg); + btn_lighten = findViewById(R.id.btn_lighten); + recyclerView = findViewById(R.id.recyclerView); + tab_layout = findViewById(R.id.tab_layout); + bottom_layout = findViewById(R.id.bottom_layout); + gift_schedule = findViewById(R.id.gift_schedule); + adapter = new GiftWallGiftInfoListItemAdapter(); + adapter.setAnchor(isAnchor); + adapter.setLiveRoom(isLiveRoom); + adapter.setStar(isStar); + recyclerView.setAdapter(adapter); + recyclerView.addItemDecoration(new ItemDecoration(mContext, 0x00000000, 0, 10)); + + initTabText(); + + findViewById(R.id.item_anchor_name).setVisibility(View.GONE); + ViewClicksAntiShake.clicksAntiShake(tab1, () -> { + + btn_one.setVisibility(View.GONE); + btn_one_tips.setVisibility(View.GONE); + + tab1.setBackgroundResource(R.drawable.gift_wall_gift_info_list_btn_up); + tab1.setTextColor(Color.parseColor("#31326D")); + + tab2.setBackgroundResource(R.drawable.gift_wall_gift_info_list_btn_down); + tab2.setTextColor(Color.parseColor("#FFFFFF")); + list_type = 1; + adapter.setList_type(list_type); + ((TextView) findViewById(R.id.user_name)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_assistance_user)); + ((TextView) findViewById(R.id.tv_rename)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_assistance_star)); + initData(); + }); + ViewClicksAntiShake.clicksAntiShake(tab2, () -> { + btn_one.setVisibility(View.VISIBLE); + btn_one_tips.setVisibility(View.VISIBLE); + + tab2.setBackgroundResource(R.drawable.gift_wall_gift_info_list_btn_up); + tab2.setTextColor(Color.parseColor("#31326D")); + + tab1.setBackgroundResource(R.drawable.gift_wall_gift_info_list_btn_down); + tab1.setTextColor(Color.parseColor("#FFFFFF")); + list_type = 2; + adapter.setList_type(list_type); + initTabText(); + initData(); + }); + XPopup.Builder builder = new XPopup.Builder(getContext()) + .atView(tips_timer); + builder.hasShadowBg(false); + tips_timer.setTag(builder); + ViewClicksAntiShake.clicksAntiShake(tips_timer, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + XPopup.Builder b = (XPopup.Builder) tips_timer.getTag(); + b.asCustom(new GiftWallMainTab1TipsDialog(mContext, new OnItemClickListener() { + @Override + public void onItemClick(Integer bean, int position) { + + } + }).setTime(time)).show(); + } + }); + ViewClicksAntiShake.clicksAntiShake(btn_one, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + Bus.get().post(new JsWishBean(giftId));//setUname==by + Bus.get().post(new ClosePopupDialogEvent()); + } + }); + ViewClicksAntiShake.clicksAntiShake(gift_btn, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + Bus.get().post(new JsWishBean(giftId));//setUname==by + Bus.get().post(new ClosePopupDialogEvent()); + } + }); + + ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mIvBack.getLayoutParams(); + if (isFullWindows) { + params.width = DpUtil.dp2px(20); + mIvBack.setVisibility(View.VISIBLE); + mIvBg.setScaleType(ImageView.ScaleType.CENTER_CROP); + } else { + params.width = DpUtil.dp2px(20); + mIvBack.setVisibility(View.VISIBLE); + mIvBg.setScaleType(ImageView.ScaleType.FIT_XY); + } + mIvBack.setLayoutParams(params); + ViewClicksAntiShake.clicksAntiShake(mIvBack, this::dismiss); + resetWindows(); + } + + private void initTabText() { + if (isStar) { + tab2.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_title_star)); + ((TextView) findViewById(R.id.user_name)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_list_header_rename1)); + ((TextView) findViewById(R.id.tv_rename)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_list_header_rename_value1)); + tv_list_title.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_title_star)); + } else { + tab2.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_title_champion)); + tv_list_title.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_title_champion)); + ((TextView) findViewById(R.id.user_name)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_list_header_rename)); + ((TextView) findViewById(R.id.tv_rename)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_list_header_rename_value)); + } + } + + private void resetWindows() { + if (isFullWindows) { + ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) findViewById(R.id.gift_name).getLayoutParams(); + params.topMargin = DpUtil.dp2px(47); + findViewById(R.id.gift_name).setLayoutParams(params); + } + } + + void initData() { + adapter.setList_type(list_type); + if (isAnchor) { + if (isStar) { + gift_hall_type = 2; + } else { + gift_hall_type = 1; + } + LiveNetManager.get(mContext) + .liveGiftHallDetail(toUserId, giftId, gift_hall_type, list_type, new HttpCallback() { + @Override + public void onSuccess(GiftWallInfoBean data) { + initData(data); + } + + @Override + public void onError(String error) { + + } + }); + } else { + LiveNetManager.get(mContext) + .singleUserGiftHallDetail(toUserId, giftId, new HttpCallback() { + @Override + public void onSuccess(GiftWallInfoBean data) { + initData(data); + } + + @Override + public void onError(String error) { + + } + }); + } + + + } + + void initData(GiftWallInfoBean giftBean) { + giftName.setText(WordUtil.isNewZh() ? giftBean.getGift_info().getGiftname() : giftBean.getGift_info().getGiftname_en()); + ImgLoader.display(mContext, giftBean.getGift_info().getGifticon(), gift); + diamond_text.setText(String.format(Locale.getDefault(), "%d", giftBean.getGift_info().getNeedcoin())); + gift_tv_max.setText(String.format(Locale.getDefault(), "/%s", giftBean.getGift_info().getIlluminate_num())); + gift_tv_progress.setText(String.format(Locale.getDefault(), "%s", giftBean.getGift_info().getGift_hall_send_num())); + gift_progress.setMax(giftBean.getGift_info().getIlluminate_num()); + gift_progress.setProgress(Integer.parseInt(giftBean.getGift_info().getGift_hall_send_num())); + if (giftBean.getGift_info().getSendtype() == 0) { + diamond_icon.setImageResource(R.mipmap.diamond); + } else { + diamond_icon.setImageResource(R.mipmap.gold_coin); + } + if (giftBean.getGift_info().getIlluminate_status() == 1) { + gift_btn.setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_top_btn_continue)); + btn_lighten.setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_up)); + btn_lighten.setBackgroundResource(R.drawable.gift_wall_gift_info_lighten); + } else { + gift_btn.setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_top_btn_to)); + btn_lighten.setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_down)); + btn_lighten.setBackgroundResource(R.drawable.gift_wall_gift_info_un_lighten); + } + adapter.setGiftStatus(giftBean.getGift_info().getIlluminate_status()); + /** + * 如果对方是主播,要有点亮标记。 + * 如果对方是用户,不要有点亮标记 + * + */ + if (isAnchor) { + tab_layout.setVisibility(View.VISIBLE); + bottom_layout.setVisibility(View.VISIBLE); + tv_list_title.setVisibility(View.GONE); + if (isTab2Enter) { + tab_layout.setVisibility(View.GONE); + bottom_layout.setVisibility(View.GONE); + tv_list_title.setVisibility(View.VISIBLE); + } + } else { + tab_layout.setVisibility(View.GONE); + bottom_layout.setVisibility(View.GONE); + tv_list_title.setVisibility(View.VISIBLE); + gift_progress.setVisibility(View.GONE); + gift_schedule.setVisibility(View.GONE); + if (isTab2Enter || ((!toUserId.equals(IMLoginManager.get(mContext).getUserInfo().getId() + "")) && !isTab2Enter)) { + gift_btn.setVisibility(View.GONE); + } else { + System.out.println("---------------显示 " + toUserId + " " + IMLoginManager.get(mContext).getUserInfo().getId() + "|" + isTab2Enter); + } + } + + if (!isLiveRoom || giftBean.getGift_info().getGift_status() == 0) { + gift_btn.setEnabled(false); + btn_one.setEnabled(false); + gift_btn.setBackgroundResource(R.drawable.gift_wall_gift_info_btn_un); + btn_one.setBackgroundResource(R.drawable.gift_wall_gift_info_btn_un); + } + adapter.setData(giftBean.getData()); + time = (WordUtil.isNewZh() ? "榜單結算時間:" : "Settlement time:") + giftBean.getGift_info().getGift_hall_start() + " - " + giftBean.getGift_info().getGift_hall_end(); + ImgLoader.display(mContext, IMLoginManager.get(mContext).getUserInfo().getAvatar(), avatar); + user_name.setText(IMLoginManager.get(mContext).getUserInfo().getUserNicename()); + send_num.setText(String.format(Locale.getDefault(), "%s", giftBean.getGift_info().getUser_gift_hall_send_num())); + + String tmp = ""; + if (giftBean.getGift_info().getIlluminate_status() != 1) {//未點亮 + btn_one.setText(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_light); + tmp = String.format(Locale.getDefault(), "%s", (giftBean.getGift_info().getIlluminate_num() - Integer.parseInt(giftBean.getGift_info().getGift_hall_send_num()))); + setTips(tmp); + } else {//冠名/摘星 + if (isStar) { + loadStar(giftBean); + } else { + loadChampion(giftBean); + } + } + + initAnim(); + } + + private void setTips(String tmp) { + btn_one_tips.setVisibility(View.VISIBLE); + btn_one_tips.setText(String.format(Locale.getDefault(), "%s%s%s" + , WordUtil.isNewZh() ? "需 " : "Need ", + tmp, + WordUtil.isNewZh() ? "" : "")); + } + + private void loadChampion(GiftWallInfoBean giftBean) { + int tmp = 0; + int mySend = giftBean.getGift_info().getUser_gift_hall_send_num(); + if (giftBean.getData() != null && !giftBean.getData().isEmpty()) { + tmp = giftBean.getData().get(0).getGift_hall_send_num() - giftBean.getGift_info().getUser_gift_hall_send_num() + 1; + } + System.out.println("冠名数据 我发的 = " + mySend + " 检测的 = " + tmp + " 第一名id = " + giftBean.getData().get(0).getUser_id() + " 我的id = " + IMLoginManager.get(mContext).getUserInfo().getId()); + if (mySend > tmp || giftBean.getData().get(0).getUser_id().equals(IMLoginManager.get(mContext).getUserInfo().getId() + "")) { + btn_one.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_champion_get)); + btn_one_tips.setVisibility(View.GONE); + } else { + btn_one.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_champion)); + setTips(String.valueOf(tmp)); + } + } + + private void loadStar(GiftWallInfoBean giftBean) { + int tmp = 0; + int mySend = giftBean.getGift_info().getUser_gift_hall_send_num(); + if (giftBean.getData() != null && !giftBean.getData().isEmpty()) { + tmp = giftBean.getData().get(0).getGift_hall_send_num() - giftBean.getGift_info().getUser_gift_hall_send_num() + 1; + } + if (mySend > tmp || giftBean.getData().get(0).getUser_id().equals(IMLoginManager.get(mContext).getUserInfo().getId() + "")) { + btn_one.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_star_get)); + btn_one_tips.setVisibility(View.GONE); + } else { + btn_one.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_star)); + setTips(String.valueOf(tmp)); + } + } + + void initAnim() { + if (gift.getTag() != null) { + return; + } + // 创建一个向上移动的动画 + ObjectAnimator upAnimator = ObjectAnimator.ofFloat(gift, "translationY", 0f, -10f); // 假设 10f 是你想要移动的距离(注意:这里使用的是像素值,而不是 dp) + upAnimator.setDuration(1000); // 设置动画时长为 1000 毫秒(即 1 秒) + // 创建一个向下移动的动画 + ObjectAnimator downAnimator = ObjectAnimator.ofFloat(gift, "translationY", -10f, 0f); + downAnimator.setDuration(1000); // 同样设置动画时长为 1 秒 + // 设置动画监听器以在向上动画结束后开始向下动画(如果需要的话) + upAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + // 在这里开始向下动画 + downAnimator.start(); + } + }); + downAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + gift.postDelayed(upAnimator::start, 1000); + } + }); + // 开始向上动画 + upAnimator.start(); + gift.setTag("start"); + + new SVGAParser(getContext()).decodeFromAssets("gift_wall_gift_info_light.svga", new SVGAParser.ParseCompletion() { + @Override + public void onComplete(@NonNull SVGAVideoEntity videoItem) { + gift_bg.setImageDrawable(new SVGADrawable(videoItem)); + gift_bg.setLoops(0); + gift_bg.startAnimation(); + } + + @Override + public void onError() { + System.err.println("-------------SVGA报错了"); + } + }, null); + } + +} diff --git a/common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab1List2SpinnerDialog.java b/common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab1List2SpinnerDialog.java new file mode 100644 index 000000000..1bc190d9f --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab1List2SpinnerDialog.java @@ -0,0 +1,60 @@ +package com.yunbao.common.dialog; + +import android.content.Context; +import android.widget.TextView; + +import androidx.annotation.NonNull; + +import com.lxj.xpopup.core.AttachPopupView; +import com.yunbao.common.R; +import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +public class GiftWallMainTab1List2SpinnerDialog extends AttachPopupView { + TextView all, up, down; + OnItemClickListener listener; + int type=0; + + public GiftWallMainTab1List2SpinnerDialog(@NonNull Context context,int type, OnItemClickListener listener) { + super(context); + this.listener = listener; + this.type=type; + } + + @Override + protected void onDismiss() { + super.onDismiss(); + listener.onItemClick(-1, 0); + } + + @Override + protected int getImplLayoutId() { + return R.layout.dialog_gift_wall_main_tab1_list2_spinner; + } + + @Override + protected void onCreate() { + super.onCreate(); + all = findViewById(R.id.spinner_all); + up = findViewById(R.id.spinner_up); + down = findViewById(R.id.spinner_down); + if(type==1){ + up.setText(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_champion_get); + down.setText(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_champion_get_un); + } + ViewClicksAntiShake.clicksAntiShake(all, () -> { + listener.onItemClick(0, 0); + dismiss(); + }); + + ViewClicksAntiShake.clicksAntiShake(up, () -> { + listener.onItemClick(1, 0); + dismiss(); + }); + + ViewClicksAntiShake.clicksAntiShake(down, () -> { + listener.onItemClick(2, 0); + dismiss(); + }); + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab1TipsDialog.java b/common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab1TipsDialog.java new file mode 100644 index 000000000..72a1794c5 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab1TipsDialog.java @@ -0,0 +1,48 @@ +package com.yunbao.common.dialog; + +import android.content.Context; +import android.widget.TextView; + +import androidx.annotation.NonNull; + +import com.lxj.xpopup.core.AttachPopupView; +import com.yunbao.common.R; +import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +public class GiftWallMainTab1TipsDialog extends AttachPopupView { + TextView tips; + OnItemClickListener listener; + String time; + + public GiftWallMainTab1TipsDialog(@NonNull Context context, OnItemClickListener listener) { + super(context); + this.listener = listener; + } + + public GiftWallMainTab1TipsDialog setTime(String time) { + this.time = time; + return this; + } + + @Override + protected void onDismiss() { + super.onDismiss(); + listener.onItemClick(-1, 0); + } + + @Override + protected int getImplLayoutId() { + return R.layout.dialog_gift_wall_main_tab1_tips; + } + + @Override + protected void onCreate() { + super.onCreate(); + tips = findViewById(R.id.tips); + tips.setText(time); + ViewClicksAntiShake.clicksAntiShake(tips, () -> { + listener.onItemClick(0, 0); + }); + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab2ClassicInfoDialog.java b/common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab2ClassicInfoDialog.java new file mode 100644 index 000000000..9c42cc9e8 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GiftWallMainTab2ClassicInfoDialog.java @@ -0,0 +1,229 @@ +package com.yunbao.common.dialog; + +import android.content.Context; +import android.graphics.Color; +import android.graphics.Typeface; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; +import androidx.recyclerview.widget.RecyclerView; +import androidx.viewpager2.adapter.FragmentStateAdapter; +import androidx.viewpager2.widget.ViewPager2; + +import com.lxj.xpopup.XPopup; +import com.makeramen.roundedimageview.RoundedImageView; +import com.yunbao.common.R; +import com.yunbao.common.adapter.GiftWallTab2GiftInfoListItemAdapter; +import com.yunbao.common.bean.GiftWallMainTab2ClassicInfoBean; +import com.yunbao.common.bean.GiftWallTab2Bean; +import com.yunbao.common.custom.ItemDecoration; +import com.yunbao.common.fragment.BaseFragment; +import com.yunbao.common.fragment.GiftWallMainTab1Fragment; +import com.yunbao.common.fragment.GiftWallMainTab2Fragment; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.RouteUtil; +import com.yunbao.common.utils.ScreenDimenUtil; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.CustomEllipsizeTextView; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class GiftWallMainTab2ClassicInfoDialog extends AbsDialogPopupWindow { + + private ImageView mIvBg; + private ImageView mIvTips; + private ImageView mIvBack; + private ImageView mIvGift; + private RoundedImageView user_avatar; + private TextView mTvUserName; + private TextView star_value; + private RoundedImageView user_avatar_1, user_avatar_2, user_avatar_3; + private TextView user_name_1, user_name_2, user_name_3; + private TextView user_value_1, user_value_2, user_value_3; + private TextView gift_name; + private View mAchievement; + private TextView mTvTab1, mTvTab2; + private ViewPager2 mViewPager; + private LinearLayout mIvTabsLayout; + private List fragments = new ArrayList<>(); + private RecyclerView recyclerView; + GiftWallTab2GiftInfoListItemAdapter adapter; + private boolean isFullWindows; + GiftWallTab2Bean.Gift gift; + String userName; + boolean isAnchor; + + public GiftWallMainTab2ClassicInfoDialog(@NonNull Context context, GiftWallTab2Bean.Gift gift, boolean isAnchor) { + super(context); + this.gift = gift; + this.isAnchor = isAnchor; + + } + + public GiftWallMainTab2ClassicInfoDialog setFullWindows(boolean fullWindows) { + isFullWindows = fullWindows; + return this; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_gift_wall_tab2_classic_info; + } + + @Override + protected int getPopupHeight() { + if (isFullWindows) { + return super.getPopupHeight(); + } + int screenHeight = ScreenDimenUtil.getInstance().getScreenHeight(); + return (int) (screenHeight * 0.8); + } + + void initData() { + LiveNetManager.get(mContext).lastAllGiftHallWeekStarDetail(gift.getGiftId() + "", gift.getNamingLiveId() + "", new HttpCallback() { + @Override + public void onSuccess(GiftWallMainTab2ClassicInfoBean data) { + initData(data); + } + + @Override + public void onError(String error) { + + } + }); + } + + void initData(GiftWallMainTab2ClassicInfoBean data) { + ImgLoader.display(mContext, data.getGiftInfo().getGiftIcon(), mIvGift); + if (data.getGiftInfo().getNamingLiveActiveRankHide() == 0 || data.getGiftInfo().getNamingLiveId() == IMLoginManager.get(mContext).getUserInfo().getId()) { + ImgLoader.display(mContext, data.getGiftInfo().getNamingLiveAvatar(), user_avatar); + mTvUserName.setText(data.getGiftInfo().getNamingLiveNicename()); + } else { + user_avatar.setImageResource(R.mipmap.hide); + mTvUserName.setText(WordUtil.getNewString(R.string.mystery_man)); + } + gift_name.setText(WordUtil.isNewZh() ? data.getGiftInfo().getGiftName() : data.getGiftInfo().getGiftNameEn()); + star_value.setText(String.format(Locale.getDefault(), "%d", data.getGiftInfo().getGiftHallSendNum())); + int max = data.getData().size() > 3 ? 3 : 0; + if (max != 0) { + adapter.setData(data.getData().subList(max, data.getData().size())); + } + for (int i = 0; i < data.getData().size() && i < 3; i++) { + switch (i) { + case 0: + setTopData(data.getData().get(0), user_avatar_1, user_name_1, user_value_1); + break; + case 1: + setTopData(data.getData().get(1), user_avatar_2, user_name_2, user_value_2); + break; + case 2: + setTopData(data.getData().get(2), user_avatar_3, user_name_3, user_value_3); + break; + } + } + ViewClicksAntiShake.clicksAntiShake(user_avatar, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + if (data.getGiftInfo().getNamingLiveActiveRankHide() == 0) { + RouteUtil.forwardUserHome(mContext, String.valueOf(data.getGiftInfo().getNamingLiveId()), 0); + } + } + }); + } + + void setTopData(GiftWallMainTab2ClassicInfoBean.GiftData data, ImageView avatar, TextView name, TextView value) { + if (data.getNaming_user_gift_hall_rank_hide() == 1 && Integer.parseInt(data.getUserId()) != IMLoginManager.get(mContext).getUserInfo().getId()) { + avatar.setImageResource(R.mipmap.hide); + name.setText(WordUtil.getNewString(R.string.mystery_man)); + return; + } + ImgLoader.display(mContext, data.getAvatar(), avatar); + name.setText(data.getUserName()); + value.setText(String.format(Locale.getDefault(), "%d", data.getGiftHallSendNum())); + ViewClicksAntiShake.clicksAntiShake(avatar, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + if (data.getActiveRankHide() == 0) { + RouteUtil.forwardUserHome(mContext, String.valueOf(data.getUserId()), 0); + } + } + }); + } + + void initView() { + mIvBg = findViewById(R.id.iv_root_bg); + mIvTips = findViewById(R.id.v_tips); + mIvBack = findViewById(R.id.iv_back); + mTvUserName = findViewById(R.id.anchor_name); + mAchievement = findViewById(R.id.v_achievement); + mTvTab1 = findViewById(R.id.tab1); + mTvTab2 = findViewById(R.id.tab2); + mViewPager = findViewById(R.id.viewPager2); + mIvTabsLayout = findViewById(R.id.tab_layout); + mIvGift = findViewById(R.id.gift); + gift_name = findViewById(R.id.gift_name); + user_avatar = findViewById(R.id.user_avatar); + star_value = findViewById(R.id.star_value); + user_avatar_1 = findViewById(R.id.user_avatar_1); + user_avatar_2 = findViewById(R.id.user_avatar_2); + user_avatar_3 = findViewById(R.id.user_avatar_3); + user_name_1 = findViewById(R.id.user_name_1); + user_name_2 = findViewById(R.id.user_name_2); + user_name_3 = findViewById(R.id.user_name_3); + user_value_1 = findViewById(R.id.user_value_1); + user_value_2 = findViewById(R.id.user_value_2); + user_value_3 = findViewById(R.id.user_value_3); + recyclerView = findViewById(R.id.recycler_view); + adapter = new GiftWallTab2GiftInfoListItemAdapter(); + recyclerView.setAdapter(adapter); + recyclerView.addItemDecoration(new ItemDecoration(mContext, 0x000, 0, DpUtil.dp2px(2))); + + ViewClicksAntiShake.clicksAntiShake(mIvBack, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + dismiss(); + } + }); + + initData(); + resetWindows(); + } + + private void resetWindows() { + if (isFullWindows) { + ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) findViewById(R.id.iv_back).getLayoutParams(); + params.topMargin = DpUtil.dp2px(47); + findViewById(R.id.iv_back).setLayoutParams(params); + params = (ConstraintLayout.LayoutParams) findViewById(R.id.scrollView).getLayoutParams(); + params.topMargin = DpUtil.dp2px(47); + findViewById(R.id.scrollView).setLayoutParams(params); + } + } + + @Override + protected void onCreate() { + super.onCreate(); + initView(); + + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/GiftWallRuleDialog.java b/common/src/main/java/com/yunbao/common/dialog/GiftWallRuleDialog.java new file mode 100644 index 000000000..70d0897c2 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GiftWallRuleDialog.java @@ -0,0 +1,106 @@ +package com.yunbao.common.dialog; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.XPopup; +import com.yunbao.common.R; +import com.yunbao.common.adapter.GiftWallAchieveAdapter; +import com.yunbao.common.bean.MedalAchievementModel; +import com.yunbao.common.bean.UserMedalListModel; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.ScreenDimenUtil; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; + +import java.util.ArrayList; +import java.util.List; + +/** + * 礼物墙-規則 + */ +public class GiftWallRuleDialog extends AbsDialogPopupWindow { + + private ImageView mIvBg; + private ImageView mIvBack; + private ImageView iv_rule; + private boolean isFullWindows; + private View topBar; + public GiftWallRuleDialog(@NonNull Context context) { + super(context); + } + + public GiftWallRuleDialog setFullWindows(boolean fullWindows) { + isFullWindows = fullWindows; + return this; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_gift_wall_rule; + } + + @Override + protected int getPopupHeight() { + if (isFullWindows) { + return super.getPopupHeight(); + } + int screenHeight = ScreenDimenUtil.getInstance().getScreenHeight(); + return (int) (screenHeight * 0.8); + } + + void initView() { + mIvBg = findViewById(R.id.iv_root_bg); + mIvBack = findViewById(R.id.iv_back); + iv_rule= findViewById(R.id.iv_rule); + topBar = findViewById(R.id.top_bar); + mIvBack.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + dialog.dismiss(); + } + }); + } + + @Override + protected void onCreate() { + super.onCreate(); + initView(); + if (isFullWindows) { + mIvBg.setScaleType(ImageView.ScaleType.CENTER_CROP); + ViewGroup.LayoutParams params1 = topBar.getLayoutParams(); + params1.height= DpUtil.dp2px(35);; + topBar.setLayoutParams(params1); + } else { + mIvBg.setScaleType(ImageView.ScaleType.FIT_XY); + } + ImgLoader.displayDrawable(mContext, WordUtil.isNewZh() ? "https://downs.yaoulive.com/%E4%B8%AD%E6%96%87%E8%A7%84%E5%88%99.png" : "https://downs.yaoulive.com/%E8%8B%B1%E6%96%87%E8%A7%84%E5%88%99.png", -1, -1, new ImgLoader.DrawableCallback() { + @Override + public void onLoadSuccess(Drawable drawable) { + iv_rule.setImageDrawable(drawable); + } + + @Override + public void onLoadFailed() { + + } + }); + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/GiftWallTab2List2Dialog.java b/common/src/main/java/com/yunbao/common/dialog/GiftWallTab2List2Dialog.java new file mode 100644 index 000000000..191d0f2ca --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GiftWallTab2List2Dialog.java @@ -0,0 +1,98 @@ +package com.yunbao.common.dialog; + +import android.content.Context; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; + +import com.lxj.xpopup.XPopup; +import com.makeramen.roundedimageview.RoundedImageView; +import com.yunbao.common.R; +import com.yunbao.common.bean.GiftWallTab2Bean; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.RouteUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.util.Locale; + +public class GiftWallTab2List2Dialog extends AbsDialogCenterPopupWindow { + RoundedImageView user1Avatar, user2Avatar; + TextView user1Name, user2Name; + ImageView giftImage; + TextView giftName; + TextView titleValue; + + GiftWallTab2Bean.Gift gift; + + public GiftWallTab2List2Dialog(@NonNull Context context) { + super(context); + } + + public GiftWallTab2List2Dialog setGift(GiftWallTab2Bean.Gift gift) { + this.gift = gift; + return this; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_gift_wall_tab2_list2; + } + + @Override + protected void onCreate() { + super.onCreate(); + user1Avatar = findViewById(R.id.user1_avatar); + user2Avatar = findViewById(R.id.user2_avatar); + user1Name = findViewById(R.id.user1_name); + user2Name = findViewById(R.id.user2_name); + giftImage = findViewById(R.id.gift); + titleValue = findViewById(R.id.title_value); + giftName = findViewById(R.id.gift_name); + + ImgLoader.display(mContext, gift.getGiftIcon(), giftImage); + if (gift.getNamingLiveActiveRankHide() == 0 || gift.getNamingLiveId()== IMLoginManager.get(mContext).getUserInfo().getId()) { + ImgLoader.display(mContext, gift.getNamingLiveAvatar(), user2Avatar); + user2Name.setText(gift.getNamingLiveNicename()); + } else { + user2Avatar.setImageResource(R.mipmap.hide); + user2Name.setText(WordUtil.getNewString(R.string.mystery_man)); + } + if (gift.getNamingUserActiveRankHide() == 0|| gift.getNamingUserId()== IMLoginManager.get(mContext).getUserInfo().getId()) { + ImgLoader.display(mContext, gift.getNamingUserAvatar(), user1Avatar); + user1Name.setText(gift.getNamingUserNicename()); + } else { + user1Avatar.setImageResource(R.mipmap.hide); + user1Name.setText(WordUtil.getNewString(R.string.mystery_man)); + } + + + giftName.setText(WordUtil.isNewZh() ? gift.getGiftName() : gift.getGiftNameEn()); + titleValue.setText(String.format(Locale.getDefault(), "%d", gift.getGiftHallSendNum())); + + ViewClicksAntiShake.clicksAntiShake(user1Avatar, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + if (gift.getNamingUserActiveRankHide() == 0) { + RouteUtil.forwardUserHome(mContext, String.valueOf(gift.getNamingUserId()), 0); + } + } + }); + ViewClicksAntiShake.clicksAntiShake(user2Avatar, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + if (gift.getNamingLiveActiveRankHide() == 0) { + RouteUtil.forwardUserHome(mContext, String.valueOf(gift.getNamingLiveId()), 0); + } + + } + }); + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/GuardBuyCouponTipsDialog.java b/common/src/main/java/com/yunbao/common/dialog/GuardBuyCouponTipsDialog.java new file mode 100644 index 000000000..38b86f353 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GuardBuyCouponTipsDialog.java @@ -0,0 +1,80 @@ +package com.yunbao.common.dialog; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.text.Html; +import android.text.Spanned; +import android.view.View; +import android.widget.TextView; + +import com.yunbao.common.R; +import com.yunbao.common.utils.DialogUitl; +import com.yunbao.common.utils.WordUtil; + +public class GuardBuyCouponTipsDialog { + + /** + * @param context + * @param coin 钻石 + * @param content 购买类型名称 + * @param simpleCallback + */ + public static void showBuyOrRenewDialog(Context context, String coupon, String coin, String content, + DialogUitl.SimpleCallback3 simpleCallback) { + if (context instanceof Activity) { + if (((Activity) context).isDestroyed() || ((Activity) context).isFinishing()) { + return; + } + } + + final Dialog dialog = new Dialog(context, R.style.dialog2); + dialog.setContentView(R.layout.dialog_guard_buy_coupon_tips); + dialog.setCancelable(true); + dialog.setCanceledOnTouchOutside(true); + TextView btn_confirm = dialog.findViewById(R.id.btn_confirm); + TextView content2 = dialog.findViewById(R.id.content2); + + Spanned tips; + if (WordUtil.isNewZh()) { + tips = Html.fromHtml("您有一張" + + "" + content + "優惠券
    " + + "開通/續費" + content + "(1個月)時,
    可享" + + "" + coupon + "折" + + "優惠 (折後:" + + "" + coin + "鑽)
    " + + "是否使用優惠券?"); + } else { + tips = Html.fromHtml("You have a " + + "" + content + " coupon" + + " When activating/renewing " + content + "(1 month), you can enjoy a" + + " " + coupon + "% " + + "discount (After folding:" + + "" + coin + " diamonds" + + ")Do you want to use coupons?"); + } + content2.setText(tips); + dialog.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + } + }); + dialog.findViewById(R.id.btn_cancel1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + simpleCallback.onCancel(); + dialog.dismiss(); + } + }); + btn_confirm.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + simpleCallback.onConfirmClick(dialog); + dialog.dismiss(); + } + }); + dialog.show(); + } + +} diff --git a/common/src/main/java/com/yunbao/common/dialog/GuardBuyTipsNewDialog.java b/common/src/main/java/com/yunbao/common/dialog/GuardBuyTipsNewDialog.java new file mode 100644 index 000000000..f8742fd99 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/GuardBuyTipsNewDialog.java @@ -0,0 +1,44 @@ +package com.yunbao.common.dialog; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.view.View; +import android.widget.TextView; + +import com.yunbao.common.R; +import com.yunbao.common.utils.WordUtil; + +public class GuardBuyTipsNewDialog { + /** + * @param context + */ + public static void showBuyOrRenewDialog(Context context) { + if (context instanceof Activity) { + if (((Activity) context).isDestroyed() || ((Activity) context).isFinishing()) { + return; + } + } + + final Dialog dialog = new Dialog(context, R.style.dialog2); + dialog.setContentView(R.layout.dialog_guard_buy_tips); + dialog.setCancelable(true); + dialog.setCanceledOnTouchOutside(true); + TextView btn_confirm = dialog.findViewById(R.id.btn_confirm); + btn_confirm.setText(WordUtil.isNewZh() ? "確認" : "Confirm"); + dialog.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + } + }); + dialog.findViewById(R.id.btn_confirm).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + } + }); + dialog.show(); + } + +} diff --git a/common/src/main/java/com/yunbao/common/dialog/OrderLevelPopupWindow.java b/common/src/main/java/com/yunbao/common/dialog/OrderLevelPopupWindow.java index 0d64fa8c4..b40d38354 100644 --- a/common/src/main/java/com/yunbao/common/dialog/OrderLevelPopupWindow.java +++ b/common/src/main/java/com/yunbao/common/dialog/OrderLevelPopupWindow.java @@ -1,7 +1,11 @@ package com.yunbao.common.dialog; +import android.app.Dialog; import android.content.Context; +import android.text.Editable; +import android.text.TextWatcher; import android.view.View; +import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; @@ -16,6 +20,7 @@ import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; @@ -26,18 +31,19 @@ import java.math.BigDecimal; * 战令等级 经验 */ public class OrderLevelPopupWindow extends CenterPopupView { - private TextView orderLevel, orderLevelDiamond, balanceDiamond, current, expText; + private TextView orderLevelDiamond, balanceDiamond, current, expText; private int currentExperience, totalExperience;//当前经验,全部经验 - private String buyExp = "100", currentLevel, balance; + private String buyExp = "1", currentLevel, balance; private ProgressBar progressBar; private OrderLevelCallback orderLevelCallback; private long maxExp; private BattlePassUserInfoBean userInfoBean; + private Context mContext; + private EditText orderLevel; - public OrderLevelPopupWindow(@NonNull Context context, BattlePassUserInfoBean userInfoBean, - int mCurrentExperience, int mTotalExperience, - String mCurrentLevel, String mBalance, long maxExp, OrderLevelCallback mOrderLevelCallback) { + public OrderLevelPopupWindow(@NonNull Context context, BattlePassUserInfoBean userInfoBean, int mCurrentExperience, int mTotalExperience, String mCurrentLevel, String mBalance, long maxExp, OrderLevelCallback mOrderLevelCallback) { super(context); + this.mContext = context; this.userInfoBean = userInfoBean; currentExperience = mCurrentExperience; totalExperience = mTotalExperience; @@ -67,15 +73,15 @@ public class OrderLevelPopupWindow extends CenterPopupView { progressBar.setProgress(currentExperience); expText.setText(String.format("%s/%s", userInfoBean.getBattlePassExp(), userInfoBean.getNextLevelExp())); current.setText(String.format("Lv%s", currentLevel)); - balanceDiamond.setText(balance); + balanceDiamond.setText((WordUtil.isNewZh() ? "剩餘:" : "Balance:") + balance); findViewById(R.id.sub).setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { float exp = new BigDecimal(buyExp).floatValue(); - if (exp > 100) { - BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).subtract(new BigDecimal("100")); + if (exp > 1) { + BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).subtract(new BigDecimal("1")); buyExp = String.valueOf(buyExpBigDecimal.intValue()); - orderLevelDiamond.setText(String.valueOf(buyExpBigDecimal.floatValue())); + orderLevelDiamond.setText("00 = " + buyExp + "00"); orderLevel.setText(buyExp); } } @@ -84,15 +90,14 @@ public class OrderLevelPopupWindow extends CenterPopupView { @Override public void onClick(View view) { float exp = new BigDecimal(buyExp).floatValue(); - if (exp < maxExp && exp < 10000) { - BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).add(new BigDecimal("100")); + if (exp < maxExp && (exp + 1) < 10000) { + BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).add(new BigDecimal("1")); buyExp = String.valueOf(buyExpBigDecimal.intValue()); - orderLevelDiamond.setText(String.valueOf(buyExpBigDecimal.floatValue())); + orderLevelDiamond.setText("00 = " + buyExp + "00"); orderLevel.setText(buyExp); } else if (exp >= maxExp) { - ToastUtil.show(WordUtil.isNewZh() ? "经验已滿" : "Experience full"); + ToastUtil.show(WordUtil.isNewZh() ? "經驗超出,僅需" + maxExp + "經驗可達滿级" : "Exp exceeds.Only " + maxExp + " exp is needed to reach the max level."); } - } }); ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.war_order_close), new ViewClicksAntiShake.ViewClicksCallBack() { @@ -101,40 +106,68 @@ public class OrderLevelPopupWindow extends CenterPopupView { dialog.dismiss(); } }); + orderLevel.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { + buyExp = charSequence.toString(); + orderLevelDiamond.setText("00 = " + charSequence.toString() + "00"); + } + + @Override + public void afterTextChanged(Editable editable) { + + } + }); ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.buying_experience), new ViewClicksAntiShake.ViewClicksCallBack() { @Override public void onViewClicks() { - LiveNetManager.get(getContext()) - .buyingExperiencePoint(buyExp, new HttpCallback>() { - @Override - public void onSuccess(ResponseModel data) { - - if (orderLevelCallback != null) { - orderLevelCallback.onCallback(data.getData().getCode(), data.getMsg()); - } - dialog.dismiss(); + int input = 0; + try { + input = Integer.parseInt(orderLevel.getText().toString()); + } catch (Exception e) { + input = 0; + } + if (StringUtil.isEmpty(orderLevel.getText().toString()) || input == 0) { + ToastUtil.show(WordUtil.isNewZh() ? "輸入数字不可為0" : "The input number cannot be 0"); + return; + } + if (Integer.parseInt(orderLevel.getText().toString() + "00") <= maxExp) { + LiveNetManager.get(getContext()).buyingExperiencePoint(buyExp + "00", new HttpCallback>() { + @Override + public void onSuccess(ResponseModel data) { + if (orderLevelCallback != null) { + orderLevelCallback.onCallback(data.getData().getCode(), data.getMsg()); } + dialog.dismiss(); + } - @Override - public void onError(String error) { - if (orderLevelCallback != null) { - orderLevelCallback.onCallback(102, error); - } - dialog.dismiss(); + @Override + public void onError(String error) { + if (orderLevelCallback != null) { + orderLevelCallback.onCallback(102, error); } - }); + dialog.dismiss(); + } + }); + } else { + ToastUtil.show(WordUtil.isNewZh() ? "經驗超出,僅需" + maxExp + "經驗可達滿级" : "Exp exceeds.Only " + maxExp + " exp is needed to reach the max level."); + } + } + }); + IMLoginManager.get(getContext()).updateUserCoin(new OnItemClickListener() { + @Override + public void onItemClick(JSONObject bean, int position) { + if (bean != null) { + balance = bean.getString("coin"); + balanceDiamond.setText((WordUtil.isNewZh() ? "剩餘:" : "Balance:") + balance); + } } }); - IMLoginManager.get(getContext()) - .updateUserCoin(new OnItemClickListener() { - @Override - public void onItemClick(JSONObject bean, int position) { - if (bean != null) { - balance = bean.getString("coin"); - balanceDiamond.setText(balance); - } - } - }); } public interface OrderLevelCallback { diff --git a/common/src/main/java/com/yunbao/common/dialog/SudGameDoubleDialog.java b/common/src/main/java/com/yunbao/common/dialog/SudGameDoubleDialog.java new file mode 100644 index 000000000..e79374df3 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/SudGameDoubleDialog.java @@ -0,0 +1,187 @@ +package com.yunbao.common.dialog; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.CountDownTimer; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatImageView; +import androidx.appcompat.widget.AppCompatTextView; + +import com.blankj.utilcode.util.LogUtils; +import com.lxj.xpopup.XPopup; +import com.makeramen.roundedimageview.RoundedImageView; +import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.R; +import com.yunbao.common.bean.SudSettleBean; +import com.yunbao.common.event.CheckRemainingBalanceEvent; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.sud.state.SudMGPMGState; +import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.WordUtil; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +/** + * 双人小游戏结算弹窗 + */ +public class SudGameDoubleDialog extends AbsDialogCenterPopupWindow{ + public SudGameDoubleDialog(@NonNull Context context) { + super(context); + } + @Override + public int bindLayoutId() { + return R.layout.dialog_sub_double; + } + + private AppCompatImageView sub_win_hat,sub_leave,sub_again,sub_title; + private RoundedImageView sub_win_head,sub_loss_head; + private AppCompatTextView sub_win_name,sub_win_score,sub_loss_name,sub_loss_score,sub_time; + private CountDownTimer countDownTimer; + private List settleBeans = new ArrayList<>(); + private boolean containMe; + + @Override + public void buildDialog(XPopup.Builder builder) { + builder.dismissOnTouchOutside(false); + } + + @Override + protected void onCreate() { + super.onCreate(); + sub_title = findViewById(R.id.sub_title);//弹窗标题 + sub_win_hat = findViewById(R.id.sub_win_hat);//胜利皇冠(平局隐藏) + sub_leave = findViewById(R.id.sub_leave);//离开按钮 + sub_again = findViewById(R.id.sub_again);//再来一局按钮 + sub_win_head = findViewById(R.id.sub_win_head);//胜利方头像 + sub_loss_head = findViewById(R.id.sub_loss_head);//失败方头像 + sub_win_name = findViewById(R.id.sub_win_name);//胜利方昵称 + sub_win_score = findViewById(R.id.sub_win_score);//胜利方分数 + sub_loss_name = findViewById(R.id.sub_loss_name);//失败方昵称 + sub_loss_score = findViewById(R.id.sub_loss_score);//失败方分数 + sub_time = findViewById(R.id.sub_time);//关闭倒计时 + + + initData(); + + if (WordUtil.isNewZh()){ + sub_leave.setImageResource(R.mipmap.sub_leave_zh); + sub_again.setImageResource(R.mipmap.sub_again_zh); + }else { + sub_leave.setImageResource(R.mipmap.sub_leave_en); + sub_again.setImageResource(R.mipmap.sub_again_en); + } + + sub_leave.setOnClickListener(v-> destroyDialog()); + sub_again.setOnClickListener(v-> { + Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN).setSubReady(false)); + destroyDialog(); + }); + + } + + @SuppressLint("SetTextI18n") + private void initData() { + if (settleBeans.size() == 2){ + sortByWinNum(settleBeans); + SudSettleBean sudSettleBean1 = settleBeans.get(0); // 第一名 + SudSettleBean sudSettleBean2 = settleBeans.get(1); // 第二名 + checkMe(sudSettleBean1.getUid(),sudSettleBean2.getUid());//判断这场对局是不是包含自己 + + // 检查是否是当前用户 + boolean isFirstMe = CommonAppConfig.getInstance().getUid().equals(sudSettleBean1.getUid()); + boolean isDraw = sudSettleBean1.getWin_num() == sudSettleBean2.getWin_num(); + boolean isZh = WordUtil.isNewZh(); + + if (containMe) { + // 当前用户在游戏中 + SudSettleBean winBean = isFirstMe ? sudSettleBean1 : sudSettleBean2; + SudSettleBean lossBean = isFirstMe ? sudSettleBean2 : sudSettleBean1; + + ImgLoader.display(mContext, winBean.getAvatar_url(), sub_win_head); + ImgLoader.display(mContext, lossBean.getAvatar_url(), sub_loss_head); + sub_win_name.setText(winBean.getNick_name()); + sub_loss_name.setText(lossBean.getNick_name()); + + sub_win_score.setText(winBean.getWin_num() > 0 ? "+" + winBean.getWin_num() : String.valueOf(winBean.getWin_num())); + sub_loss_score.setText(String.valueOf(lossBean.getWin_num())); + + if (isDraw) { + // 平局 + sub_title.setImageResource(isZh ? R.mipmap.sub_draw_zh : R.mipmap.sub_draw_en); + sub_win_hat.setVisibility(View.GONE); + } else { + // 胜利或失败 + sub_title.setImageResource(isZh ? (isFirstMe ? R.mipmap.sub_win_zh : R.mipmap.sub_loss_zh) : (isFirstMe ? R.mipmap.sub_win_en : R.mipmap.sub_loss_en)); + sub_win_hat.setVisibility(View.VISIBLE); + } + } else { + // 当前用户不在游戏中 + ImgLoader.display(mContext, sudSettleBean1.getAvatar_url(), sub_win_head); + ImgLoader.display(mContext, sudSettleBean2.getAvatar_url(), sub_loss_head); + sub_win_name.setText(sudSettleBean1.getNick_name()); + sub_loss_name.setText(sudSettleBean2.getNick_name()); + + sub_win_score.setText(sudSettleBean1.getWin_num() > 0 ? "+" + sudSettleBean1.getWin_num() : String.valueOf(sudSettleBean1.getWin_num())); + sub_loss_score.setText(String.valueOf(sudSettleBean2.getWin_num())); + + if (isDraw) { + // 平局 + sub_title.setImageResource(isZh ? R.mipmap.sub_draw_zh : R.mipmap.sub_draw_en); + sub_win_hat.setVisibility(View.GONE); + } else { + // 非当前用户的胜利 + sub_title.setImageResource(isZh ? R.mipmap.sub_win_zh : R.mipmap.sub_win_en); + sub_win_hat.setVisibility(View.VISIBLE); + } + } + } + } + + private void checkMe(String id1,String id2){ + containMe = CommonAppConfig.getInstance().getUid().equals(id1) || CommonAppConfig.getInstance().getUid().equals(id2); + } + + @Override + protected void onShow() { + super.onShow(); + //关闭倒计时 + countDownTimer = new CountDownTimer(10000, 1000){ + + @Override + public void onTick(long l) { + sub_time.setText(String.valueOf((l+500)/1000)); + } + + @Override + public void onFinish() { + destroyDialog(); + } + }.start(); + initData(); + } + + public void setSudSettleList(List data){ + settleBeans.clear(); + settleBeans.addAll(data); + LogUtils.e("yqw=====>"+settleBeans); + } + + private void sortByWinNum(List list){ + // 按照胜利数排序 settleBeans 列表 + Collections.sort(list, (bean1, bean2) -> { + return Integer.compare(bean2.getWin_num(), bean1.getWin_num()); // 从大到小排序 + }); + } + + private void destroyDialog(){ + dismiss(); + countDownTimer.cancel(); + countDownTimer = null; + } + +} diff --git a/common/src/main/java/com/yunbao/common/dialog/SudGameMultipleDialog.java b/common/src/main/java/com/yunbao/common/dialog/SudGameMultipleDialog.java new file mode 100644 index 000000000..3ad4d68db --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/SudGameMultipleDialog.java @@ -0,0 +1,124 @@ +package com.yunbao.common.dialog; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.CountDownTimer; +import android.view.View; +import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatImageView; +import androidx.appcompat.widget.AppCompatTextView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import com.lxj.xpopup.XPopup; +import com.yunbao.common.R; +import com.yunbao.common.adapter.SudGameAdapter; +import com.yunbao.common.bean.SudSettleBean; +import com.yunbao.common.event.CheckRemainingBalanceEvent; +import com.yunbao.common.sud.state.SudMGPMGState; +import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.WordUtil; +import java.util.ArrayList; +import java.util.List; + +/** + * 多人小游戏弹窗 + */ +public class SudGameMultipleDialog extends AbsDialogCenterPopupWindow{ + public SudGameMultipleDialog(@NonNull Context context) { + super(context); + } + @Override + public int bindLayoutId() { + return R.layout.dialog_sub_multiple; + } + + private RecyclerView sub_recycle_rank; + private AppCompatImageView sub_leave,sub_again,sub_title; + private AppCompatTextView sub_time; + private CountDownTimer countDownTimer; + private SudGameAdapter sudGameAdapter; + private final List settleBeans = new ArrayList<>(); + @Override + public void buildDialog(XPopup.Builder builder) { + builder.dismissOnTouchOutside(false); + } + + @Override + protected void onCreate() { + super.onCreate(); + sub_recycle_rank = findViewById(R.id.sub_recycle_rank);//分数排名 + sub_leave = findViewById(R.id.sub_leave);//离开按钮 + sub_again = findViewById(R.id.sub_again);//再来一局按钮 + sub_title = findViewById(R.id.sub_title);//弹窗标题 + sub_time = findViewById(R.id.sub_time);//关闭倒计时 + + if (WordUtil.isNewZh()){ + sub_leave.setImageResource(R.mipmap.sub_leave_zh); + sub_again.setImageResource(R.mipmap.sub_again_zh); + sub_title.setImageResource(R.mipmap.sub_over_zh); + }else { + sub_leave.setImageResource(R.mipmap.sub_leave_en); + sub_again.setImageResource(R.mipmap.sub_again_en); + sub_title.setImageResource(R.mipmap.sub_over_en); + } + + sub_leave.setOnClickListener(v-> destroyDialog()); + sub_again.setOnClickListener(v-> { + Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN).setSubReady(false)); + destroyDialog(); + }); + + //设置排名数据 + sudGameAdapter = new SudGameAdapter(mContext,settleBeans); + sub_recycle_rank.setLayoutManager(new LinearLayoutManager(mContext)); + sub_recycle_rank.setAdapter(sudGameAdapter); + + } + + @SuppressLint("NotifyDataSetChanged") + @Override + protected void onShow() { + super.onShow(); + //关闭倒计时 + countDownTimer = new CountDownTimer(10000, 1000){ + + @Override + public void onTick(long l) { + sub_time.setText(String.valueOf((l+500)/1000)); + } + + @Override + public void onFinish() { + destroyDialog(); + } + }.start(); + sudGameAdapter.notifyDataSetChanged(); +// limitItem(); + } + + public void setSudSettleList(List data){ + settleBeans.clear(); + settleBeans.addAll(data); + } + + //设置最多显示的高度 + private void limitItem(){ + sub_recycle_rank.post(() -> { + View itemView = sub_recycle_rank.getChildAt(0); + if (itemView != null){ + int height = (int) (itemView.getHeight()*3.5); + ViewGroup.LayoutParams layoutParams = sub_recycle_rank.getLayoutParams(); + layoutParams.height = height; + sub_recycle_rank.setLayoutParams(layoutParams); + } + }); + } + + private void destroyDialog(){ + dismiss(); + countDownTimer.cancel(); + countDownTimer = null; + } + +} diff --git a/common/src/main/java/com/yunbao/common/dialog/SudLoadDialog.java b/common/src/main/java/com/yunbao/common/dialog/SudLoadDialog.java new file mode 100644 index 000000000..d0e074dcc --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/SudLoadDialog.java @@ -0,0 +1,96 @@ +package com.yunbao.common.dialog; + +import android.content.Context; +import android.view.View; +import android.widget.ProgressBar; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatImageView; +import androidx.appcompat.widget.LinearLayoutCompat; +import androidx.core.content.ContextCompat; +import com.lxj.xpopup.XPopup; +import com.yunbao.common.R; +import com.yunbao.common.utils.WordUtil; + +public class SudLoadDialog extends AbsDialogCenterPopupWindow{ + public SudLoadDialog(@NonNull Context context) { + super(context); + } + + private LinearLayoutCompat sud_load_bg; + private AppCompatImageView sud_load,sud_load_skip,sud_load_again; + private ProgressBar sud_load_bar_double,sud_load_bar_multiple; + private int isDouble = 0;//游戏模式 1:双人对战 2:多人游戏 + private int clickStatus = 0;//0:什么都不点击 1:点击跳过 2:点击再来一局 + + public int getClickStatus() { + return clickStatus; + } + + public void setClickStatus(int clickStatus) { + this.clickStatus = clickStatus; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + builder.dismissOnTouchOutside(false); + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_sud_load; + } + + @Override + protected void onCreate() { + super.onCreate(); + sud_load_bg = findViewById(R.id.sud_load_bg); + sud_load = findViewById(R.id.sud_load); + sud_load_skip = findViewById(R.id.sud_load_skip); + sud_load_again = findViewById(R.id.sud_load_again); + sud_load_bar_double = findViewById(R.id.sud_load_bar_double); + sud_load_bar_multiple = findViewById(R.id.sud_load_bar_multiple); + + if (WordUtil.isNewZh()){ + sud_load.setImageResource(R.mipmap.sud_load_zh); + sud_load_skip.setImageResource(R.mipmap.sud_load_skip_zh); + sud_load_again.setImageResource(R.mipmap.sub_again_zh); + }else { + sud_load.setImageResource(R.mipmap.sud_load_en); + sud_load_skip.setImageResource(R.mipmap.sud_load_skip_en); + sud_load_again.setImageResource(R.mipmap.sub_again_en); + } + + sud_load_skip.setOnClickListener(v->{ + clickStatus = 1; + dismiss(); + }); + + sud_load_again.setOnClickListener(v->{ + clickStatus = 2; + dismiss(); + }); + } + + @Override + protected void onShow() { + super.onShow(); + if (isDouble == 1){ + sud_load_bg.setBackground(ContextCompat.getDrawable(mContext,R.mipmap.sud_load_bg_double)); + sud_load_bar_double.setVisibility(View.VISIBLE); + sud_load_bar_multiple.setVisibility(View.GONE); + }else { + sud_load_bg.setBackground(ContextCompat.getDrawable(mContext,R.mipmap.sud_load_bg_multiple)); + sud_load_bar_double.setVisibility(View.GONE); + sud_load_bar_multiple.setVisibility(View.VISIBLE); + } +// new Handler(Looper.getMainLooper()).postDelayed(() -> { +// if (this.isShow()){ +// dismiss(); +// } +// },10000); + } + + public void setDouble(int isDouble){ + this.isDouble = isDouble; + } +} diff --git a/common/src/main/java/com/yunbao/common/event/CheckRemainingBalanceEvent.java b/common/src/main/java/com/yunbao/common/event/CheckRemainingBalanceEvent.java index 09471d14f..928b1e46a 100644 --- a/common/src/main/java/com/yunbao/common/event/CheckRemainingBalanceEvent.java +++ b/common/src/main/java/com/yunbao/common/event/CheckRemainingBalanceEvent.java @@ -1,10 +1,22 @@ package com.yunbao.common.event; import com.yunbao.common.bean.BaseModel; +import com.yunbao.common.sud.state.SudMGPMGState; public class CheckRemainingBalanceEvent extends BaseModel { public int seatIndex=0; private String SudMGPMGState; + private boolean subReady = false;//是否直接自动准备 + private SudMGPMGState.MGCommonGameSettle mgCommonGameSettle;//结算数据 + + public SudMGPMGState.MGCommonGameSettle getMgCommonGameSettle() { + return mgCommonGameSettle; + } + + public CheckRemainingBalanceEvent setMgCommonGameSettle(SudMGPMGState.MGCommonGameSettle mgCommonGameSettle) { + this.mgCommonGameSettle = mgCommonGameSettle; + return this; + } public String getSudMGPMGState() { return SudMGPMGState; @@ -23,4 +35,13 @@ public class CheckRemainingBalanceEvent extends BaseModel { this.seatIndex = seatIndex; return this; } + + public CheckRemainingBalanceEvent setSubReady(boolean subReady){ + this.subReady = subReady; + return this; + } + + public boolean getSubReady(){ + return subReady; + } } diff --git a/common/src/main/java/com/yunbao/common/event/ClosePopupDialogEvent.java b/common/src/main/java/com/yunbao/common/event/ClosePopupDialogEvent.java new file mode 100644 index 000000000..7dab53f00 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/event/ClosePopupDialogEvent.java @@ -0,0 +1,22 @@ +package com.yunbao.common.event; + +import com.yunbao.common.bean.BaseModel; + +public class ClosePopupDialogEvent extends BaseModel { + public Object id=null; + + public ClosePopupDialogEvent(Object id) { + this.id = id; + } + + public Object getId() { + return id; + } + + public void setId(Object id) { + this.id = id; + } + + public ClosePopupDialogEvent() { + } +} diff --git a/common/src/main/java/com/yunbao/common/fragment/GiftWallMainTab1Fragment.java b/common/src/main/java/com/yunbao/common/fragment/GiftWallMainTab1Fragment.java new file mode 100644 index 000000000..23581b91b --- /dev/null +++ b/common/src/main/java/com/yunbao/common/fragment/GiftWallMainTab1Fragment.java @@ -0,0 +1,268 @@ +package com.yunbao.common.fragment; + +import android.graphics.Color; +import android.graphics.LinearGradient; +import android.graphics.Shader; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.XPopup; +import com.opensource.svgaplayer.SVGAParser; +import com.opensource.svgaplayer.SVGAVideoEntity; +import com.yunbao.common.R; +import com.yunbao.common.adapter.GiftWallMainTab1List2Adapter; +import com.yunbao.common.bean.GiftWallBean; +import com.yunbao.common.custom.ItemDecoration; +import com.yunbao.common.dialog.GiftWallMainTab1List2SpinnerDialog; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.util.Locale; + +public class GiftWallMainTab1Fragment extends BaseFragment { + TextView classicGiftsTitle, starGiftsTitle; + TextView classicGiftsNumber, starGiftsNumber; + RecyclerView recyclerView1, recyclerView2; + View spinner; + TextView spinnerText; + ImageView spinnerImage; + + GiftWallMainTab1List2Adapter list1Adapter, list2Adapter; + + int screen; + String toUserId; + String anchorId; + boolean isAnchor; + boolean isLiveRoom; + SVGAVideoEntity drawable; + View classic_layout, star_layout; + TextView show_time; + View show_time_layout; + View hideLayout; + View appbar; + + OnItemClickListener onItemClickListener; + + @Override + public View createView(LayoutInflater inflater, ViewGroup container) { + return inflater.inflate(R.layout.fragment_gift_wall_man_tab_1, container, false); + } + + @Override + protected void initVariables(Bundle bundle) { + + } + + public GiftWallMainTab1Fragment setToUserId(String toUserId) { + this.toUserId = toUserId; + return this; + } + + public GiftWallMainTab1Fragment setAnchorId(String anchorId) { + this.anchorId = anchorId; + return this; + } + + public GiftWallMainTab1Fragment setAnchor(boolean anchor) { + isAnchor = anchor; + return this; + } + + public GiftWallMainTab1Fragment setLiveRoom(boolean liveRoom) { + isLiveRoom = liveRoom; + return this; + } + + public GiftWallMainTab1Fragment setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.onItemClickListener = onItemClickListener; + return this; + } + + @Override + public void updateData() { + super.updateData(); + if (list1Adapter != null) { + list1Adapter.notifyDataSetChanged(); + + } + if (list2Adapter != null) { + list2Adapter.notifyDataSetChanged(); + } + + } + + private void initData() { + if (isAnchor) { + LiveNetManager.get(getContext()) + .liveGiftHall(toUserId, screen, new HttpCallback() { + @Override + public void onSuccess(GiftWallBean data) { + initData(data); + } + + @Override + public void onError(String error) { + + } + }); + } else { + LiveNetManager.get(getContext()) + .singleUserGiftHall(toUserId, screen, new HttpCallback() { + @Override + public void onSuccess(GiftWallBean data) { + initData(data); + } + + @Override + public void onError(String error) { + + } + }); + } + } + + private void initData(GiftWallBean bean) { + onItemClickListener.onItemClick(bean, bean.getGift_hall_rank_hide()); + if (bean.getGift_hall_rank_hide() == 1 && !toUserId.equals(IMLoginManager.get(getContext()).getUserInfo().getId() + "")) { + hideLayout.setVisibility(View.VISIBLE); + appbar.setVisibility(View.GONE); + classic_layout.setVisibility(View.GONE); + return; + } + hideLayout.setVisibility(View.GONE); + appbar.setVisibility(View.VISIBLE); + classic_layout.setVisibility(View.VISIBLE); + + list1Adapter.setDrawable(drawable); + list1Adapter.setList(bean.getIlluminate_data().getWeek_star_data()); + list2Adapter.setList(bean.getIlluminate_data().getGift_data()); + list1Adapter.setLiveRoom(isLiveRoom); + list2Adapter.setLiveRoom(isLiveRoom); + + starGiftsNumber.setText(String.format(Locale.getDefault(), "%s%d/%d", + WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_up), + bean.getIlluminate_data().getWeek_gift_illuminate_num(), + bean.getIlluminate_data().getWeek_star_gift_num() + )); + classicGiftsNumber.setText(String.format(Locale.getDefault(), "%s%d/%d", + WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_up), + bean.getIlluminate_data().getGift_illuminate_num(), + bean.getIlluminate_data().getGift_num() + )); + if (bean.getIlluminate_data().getWeek_star_data() != null) { + show_time.setText(String.format(Locale.getDefault(), "%s%s - %s", + WordUtil.getNewString(R.string.dialog_gift_wall_time_now), + bean.getIlluminate_data().getGift_hall_start_date(), + bean.getIlluminate_data().getGift_hall_end_date())); + } + } + + @Override + protected void initViews(Bundle savedInstanceState, View contentView) { + classicGiftsTitle = contentView.findViewById(R.id.classic_gifts_title); + classicGiftsNumber = contentView.findViewById(R.id.classic_gifts_number); + recyclerView1 = contentView.findViewById(R.id.recyclerView1); + recyclerView2 = contentView.findViewById(R.id.recyclerView2); + starGiftsTitle = contentView.findViewById(R.id.star_gifts_title); + starGiftsNumber = contentView.findViewById(R.id.star_gifts_number); + spinner = contentView.findViewById(R.id.classic_gift_spinner); + spinnerText = contentView.findViewById(R.id.classic_gift_spinner_text); + spinnerImage = contentView.findViewById(R.id.classic_gift_spinner_ic); + classic_layout = contentView.findViewById(R.id.classic_layout); + star_layout = contentView.findViewById(R.id.star_layout); + show_time = contentView.findViewById(R.id.show_time); + show_time_layout = contentView.findViewById(R.id.show_time_layout); + hideLayout = contentView.findViewById(R.id.hideLayout); + appbar = contentView.findViewById(R.id.appbar); + + list1Adapter = new GiftWallMainTab1List2Adapter(getContext()); + list2Adapter = new GiftWallMainTab1List2Adapter(getContext()); + + list1Adapter.setToUid(toUserId); + list2Adapter.setToUid(toUserId); + list1Adapter.setAnchor(isAnchor); + list2Adapter.setAnchor(isAnchor); + list1Adapter.setAnchorId(anchorId); + list2Adapter.setAnchorId(anchorId); + list1Adapter.setStar(true); + + recyclerView1.setAdapter(list1Adapter); + recyclerView2.setAdapter(list2Adapter); + + recyclerView1.addItemDecoration(new ItemDecoration(getContext(), 0x00000000, DpUtil.dp2px(10), DpUtil.dp2px(5))); + recyclerView2.addItemDecoration(new ItemDecoration(getContext(), 0x00000000, DpUtil.dp2px(2), DpUtil.dp2px(5))); + + starGiftsTitle.getPaint().setShader(new LinearGradient(0, 0, 0, classicGiftsTitle.getPaint().getTextSize(), + Color.parseColor("#FEE8C6"), Color.parseColor("#FFD5A3"), Shader.TileMode.CLAMP)); + + classicGiftsTitle.getPaint().setShader(new LinearGradient(0, 0, 0, classicGiftsTitle.getPaint().getTextSize(), + Color.parseColor("#A0E9FF"), Color.parseColor("#72D1FF"), Shader.TileMode.CLAMP)); + XPopup.Builder builder = new XPopup.Builder(getContext()) + .atView(spinner); + spinner.setTag(builder); + + if (!isAnchor) { + show_time_layout.setVisibility(View.GONE); + star_layout.setVisibility(View.GONE); + } + + + ViewClicksAntiShake.clicksAntiShake(spinner, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + spinnerImage.setRotation(180); + ((XPopup.Builder) spinner.getTag()).asCustom(new GiftWallMainTab1List2SpinnerDialog(getContext(), 0, new OnItemClickListener() { + @Override + public void onItemClick(Integer bean, int position) { + if (bean > -1) { + screen = bean; + initData(); + } + switch (bean) { + case 0: + spinnerText.setText(R.string.dialog_gift_wall_list_spinner_all); + break; + case 1: + spinnerText.setText(R.string.dialog_gift_wall_list_spinner_up); + break; + case 2: + spinnerText.setText(R.string.dialog_gift_wall_list_spinner_down); + break; + } + spinnerImage.setRotation(0); + } + })).show(); + + } + }); + new SVGAParser(getContext()).decodeFromAssets("gift_wall_light_up.svga", new SVGAParser.ParseCompletion() { + @Override + public void onComplete(@NonNull SVGAVideoEntity videoItem) { + GiftWallMainTab1Fragment.this.drawable = videoItem; + initData(); + } + + @Override + public void onError() { + System.err.println("-------------SVGA报错了"); + } + }, null); + } + + @Override + protected void loadData() { + + } +} diff --git a/common/src/main/java/com/yunbao/common/fragment/GiftWallMainTab2Fragment.java b/common/src/main/java/com/yunbao/common/fragment/GiftWallMainTab2Fragment.java new file mode 100644 index 000000000..623b8aa57 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/fragment/GiftWallMainTab2Fragment.java @@ -0,0 +1,278 @@ +package com.yunbao.common.fragment; + +import android.graphics.Color; +import android.graphics.LinearGradient; +import android.graphics.Shader; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.angcyo.tablayout.DslTabLayout; +import com.angcyo.tablayout.DslTabLayoutConfig; +import com.lxj.xpopup.XPopup; +import com.yunbao.common.R; +import com.yunbao.common.adapter.GiftWallMainTab2ListAdapter; +import com.yunbao.common.bean.GiftWallTab2Bean; +import com.yunbao.common.custom.ItemDecoration; +import com.yunbao.common.dialog.GiftWallMainTab1List2SpinnerDialog; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.util.Iterator; +import java.util.List; +import java.util.Locale; + +import kotlin.Unit; +import kotlin.jvm.functions.Function1; +import kotlin.jvm.functions.Function4; + +public class GiftWallMainTab2Fragment extends BaseFragment { + TextView classicGiftsTitle, starGiftsTitle; + RecyclerView recyclerView1, recyclerView2; + View spinner; + TextView spinnerText; + ImageView spinnerImage; + GiftWallMainTab2ListAdapter list1Adapter, list2Adapter; + TextView show_time; + DslTabLayout tabLayout; + TextView dslTab1, dslTab2; + + + int screen; + int type = 1; + String toUserId; + String anchorId; + boolean isAnchor; + private boolean isLiveRoom; + private boolean isTab2; + + public GiftWallMainTab2Fragment setToUserId(String toUserId) { + this.toUserId = toUserId; + return this; + } + + public GiftWallMainTab2Fragment setAnchorId(String anchorId) { + this.anchorId = anchorId; + return this; + } + + public GiftWallMainTab2Fragment setAnchor(boolean anchor) { + isAnchor = anchor; + return this; + } + + public GiftWallMainTab2Fragment setLiveRoom(boolean liveRoom) { + isLiveRoom = liveRoom; + return this; + } + + @Override + public View createView(LayoutInflater inflater, ViewGroup container) { + return inflater.inflate(R.layout.fragment_gift_wall_man_tab_2, container, false); + } + + @Override + protected void initVariables(Bundle bundle) { + + } + + @Override + protected void initViews(Bundle savedInstanceState, View contentView) { + classicGiftsTitle = contentView.findViewById(R.id.classic_gifts_title); + recyclerView1 = contentView.findViewById(R.id.recyclerView1); + recyclerView2 = contentView.findViewById(R.id.recyclerView2); + starGiftsTitle = contentView.findViewById(R.id.star_gifts_title); + spinner = contentView.findViewById(R.id.classic_gift_spinner); + spinnerText = contentView.findViewById(R.id.classic_gift_spinner_text); + spinnerImage = contentView.findViewById(R.id.classic_gift_spinner_ic); + show_time = contentView.findViewById(R.id.show_time); + tabLayout = findViewById(R.id.tab_layout); + dslTab1 = findViewById(R.id.dsl_tab1); + dslTab2 = findViewById(R.id.dsl_tab2); + + list1Adapter = new GiftWallMainTab2ListAdapter(getContext()); + list2Adapter = new GiftWallMainTab2ListAdapter(getContext()); + + list1Adapter.setToUid(toUserId); + list2Adapter.setToUid(toUserId); + list1Adapter.setAnchor(isAnchor); + list2Adapter.setAnchor(isAnchor); + list1Adapter.setAnchorId(anchorId); + list2Adapter.setAnchorId(anchorId); + list1Adapter.setLiveRoom(isLiveRoom); + list2Adapter.setLiveRoom(isLiveRoom); + list1Adapter.setStar(true); + + recyclerView1.setAdapter(list1Adapter); + recyclerView2.setAdapter(list2Adapter); + + + //recyclerView1.addItemDecoration(new ItemDecoration(getContext(), 0x00000000, DpUtil.dp2px(3), DpUtil.dp2px(5))); + //recyclerView2.addItemDecoration(new ItemDecoration(getContext(), 0x00000000, DpUtil.dp2px(3), DpUtil.dp2px(5))); + + starGiftsTitle.getPaint().setShader(new LinearGradient(0, 0, 0, classicGiftsTitle.getPaint().getTextSize(), + Color.parseColor("#FEE8C6"), Color.parseColor("#FFD5A3"), Shader.TileMode.CLAMP)); + + classicGiftsTitle.getPaint().setShader(new LinearGradient(0, 0, 0, classicGiftsTitle.getPaint().getTextSize(), + Color.parseColor("#A0E9FF"), Color.parseColor("#72D1FF"), Shader.TileMode.CLAMP)); + + setDslTabColor(dslTab1, dslTab2); + + tabLayout.configTabLayoutConfig(new Function1() { + @Override + public Unit invoke(DslTabLayoutConfig dslTabLayoutConfig) { + dslTabLayoutConfig.setOnSelectItemView(new Function4() { + @Override + public Boolean invoke(View itemView, Integer index, Boolean select, Boolean fromUser) { + //当需要选中itemView时, 触发的回调. + //返回true, 拦截库中的默认处理. + return index == (type - 1); + } + }); + dslTabLayoutConfig.setOnSelectViewChange(new Function4, Boolean, Boolean, Unit>() { + @Override + public Unit invoke(View fromView, List selectViewList, Boolean select, Boolean fromUser) { + //fromView 表示之前选中的view, 多选模式不支持. + //selectViewList 表示目前选中view的集合, 单选模式列表里面只有一个,可以使用selectViewList.get(0)获取. + + return null; + } + }); + dslTabLayoutConfig.setOnSelectIndexChange(new Function4, Boolean, Boolean, Unit>() { + @Override + public Unit invoke(Integer fromIndex, List selectIndexList, Boolean select, Boolean fromUser) { + //参考setOnSelectViewChange + //只不过对象从view,变成了view在ViewGroup中的索引 + if (isTab2 && fromIndex == -1) { + fromIndex = 1; + } else if (fromIndex == 0) { + fromIndex = 1; + } else { + fromIndex = 0; + } + + setDslTabColor(fromIndex == 0 ? dslTab1 : dslTab2, fromIndex == 1 ? dslTab1 : dslTab2); + type = (fromIndex + 1); + list1Adapter.setNowRank(fromIndex == 0); + list2Adapter.setNowRank(fromIndex == 0); + screen = 0; + spinnerText.setText(R.string.dialog_gift_wall_list_spinner_all); + initData(); + + return null; + } + }); + return null; + } + }); + + XPopup.Builder builder = new XPopup.Builder(getContext()) + .atView(spinner); + spinner.setTag(builder); + + ViewClicksAntiShake.clicksAntiShake(spinner, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + spinnerImage.setRotation(180); + ((XPopup.Builder) spinner.getTag()).asCustom(new GiftWallMainTab1List2SpinnerDialog(getContext(), 1, new OnItemClickListener() { + @Override + public void onItemClick(Integer bean, int position) { + if (bean > -1) { + screen = bean; + initData(); + } + switch (bean) { + case 0: + spinnerText.setText(R.string.dialog_gift_wall_list_spinner_all); + break; + case 1: + spinnerText.setText(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_champion_get); + break; + case 2: + spinnerText.setText(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_champion_get_un); + break; + } + spinnerImage.setRotation(0); + } + })).show(); + + } + }); + if (isTab2) { + tabLayout.onPageSelected(1); + } else { + initData(); + } + } + + void setDslTabColor(TextView select, TextView unSelect) { + select.getPaint().setShader(new LinearGradient(0, 0, 0, select.getPaint().getTextSize(), + Color.parseColor("#FEE0B6"), Color.parseColor("#FFCF95"), Shader.TileMode.CLAMP)); + unSelect.setTextColor(Color.parseColor("#FFEED8")); + unSelect.getPaint().setShader(null); + } + + void initData() { + list1Adapter.clear(); + list2Adapter.clear(); + if (type == 2) { + spinner.setVisibility(View.INVISIBLE); + } else { + spinner.setVisibility(View.VISIBLE); + } + LiveNetManager.get(getContext()) + .allGiftHall(String.valueOf(type), new HttpCallback() { + @Override + public void onSuccess(GiftWallTab2Bean data) { + if (screen != 0) { + filtrationData(data); + } + initData(data); + } + + @Override + public void onError(String error) { + + } + }); + } + + void filtrationData(GiftWallTab2Bean bean) { + Iterator iterator = bean.getIlluminateData().getGiftData().iterator(); + while (iterator.hasNext()) { + GiftWallTab2Bean.Gift next = iterator.next(); + if (screen == 1 && next.getIlluminateStatus() != 1) {//已点亮 + iterator.remove(); + } else if (screen == 2 && next.getIlluminateStatus() == 1) {//未点亮 + iterator.remove(); + } + } + } + + void initData(GiftWallTab2Bean bean) { + list1Adapter.setList(bean.getIlluminateData().getWeekStartData()); + list2Adapter.setList(bean.getIlluminateData().getGiftData()); + show_time.setText(String.format(Locale.getDefault(), "%s%s - %s", + WordUtil.getNewString(type == 1 ? R.string.dialog_gift_wall_time_now : R.string.dialog_gift_wall_time_old), + bean.getGift_hall_start_date(), + bean.getGift_hall_end_date())); + } + + @Override + protected void loadData() { + + } + + public void setTab2() { + isTab2 = true; + } +} diff --git a/common/src/main/java/com/yunbao/common/http/LiveHttpUtil.java b/common/src/main/java/com/yunbao/common/http/LiveHttpUtil.java index b52d81384..c560d9d6d 100644 --- a/common/src/main/java/com/yunbao/common/http/LiveHttpUtil.java +++ b/common/src/main/java/com/yunbao/common/http/LiveHttpUtil.java @@ -243,10 +243,11 @@ public class LiveHttpUtil { /** * 举报用户 + 图片 */ - public static void setReport(String touid, String content, File file1, File file2, File file3, String videoId, HttpCallback callback) { + public static void setReport(String touid,String report_argument, String content, File file1, File file2, File file3, String videoId, HttpCallback callback) { PostRequest request = HttpClient.getInstance().post("Live.setReport", LiveHttpConsts.SET_REPORT) .isMultipart(true) .params("touid", touid) + .params("report_argument", report_argument) .params("content", content); if (file1 != null) { request.params("file1", file1); 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 c74051307..aa7831883 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -29,8 +29,12 @@ import com.yunbao.common.bean.FirstLoginBean; import com.yunbao.common.bean.GiftAlreadyWallModel; import com.yunbao.common.bean.GiftGuideModel; import com.yunbao.common.bean.GiftNamingInfoModel; +import com.yunbao.common.bean.GiftWallBean; import com.yunbao.common.bean.GiftWallGiftDetail; +import com.yunbao.common.bean.GiftWallInfoBean; +import com.yunbao.common.bean.GiftWallMainTab2ClassicInfoBean; import com.yunbao.common.bean.GiftWallModel; +import com.yunbao.common.bean.GiftWallTab2Bean; import com.yunbao.common.bean.GuardGetGuardOpenInfoModel; import com.yunbao.common.bean.GuardGetGuardUserInfoModel; import com.yunbao.common.bean.HomeUserExhibitInfoBean; @@ -65,7 +69,6 @@ import com.yunbao.common.bean.NobleRankHideUserListModel; import com.yunbao.common.bean.NobleTrumpetModel; import com.yunbao.common.bean.OpenAdModel; import com.yunbao.common.bean.PkRankBean; -import com.yunbao.common.bean.PrankGiftBean; import com.yunbao.common.bean.PrankGiftResultBean; import com.yunbao.common.bean.PrankHttpTurntableBean; import com.yunbao.common.bean.PrankProgressBean; @@ -84,6 +87,8 @@ import com.yunbao.common.bean.SetAttentsModel; import com.yunbao.common.bean.ShareBean; import com.yunbao.common.bean.SlideInBannerModel; import com.yunbao.common.bean.StarChallengeStatusModel; +import com.yunbao.common.bean.SudGameInfoBean; +import com.yunbao.common.bean.SudGameScoreBean; import com.yunbao.common.bean.SudGameUserModel; import com.yunbao.common.bean.SudRoomListModel; import com.yunbao.common.bean.SudgameCodeModel; @@ -1038,6 +1043,22 @@ public interface PDLiveApi { @GET("/api/public/?service=Sudgame.getCode") Observable>> getCode(); + /** + * 获取房间金豆门槛和赢家获得的金豆 + */ + @GET("/api/public/?service=Sudgameserver.checkRemainingBalance") + Observable> getScore( + @Query("room_id") String roomId + ); + + /** + * 获取游戏中玩家的信息 + */ + @GET("/api/public/?service=Sudgameserver.getGameUser") + Observable>> getSudGameInfo( + @Query("room_id") String roomId + ); + /** * 创建游戏房 * @@ -1335,7 +1356,7 @@ public interface PDLiveApi { Observable> getGuardOpenInfo(@Query("liveuid") String liveUid); @GET("/api/public/?service=Guard.openGuard") - Observable> openGuard(@Query("liveuid") String liveUid, @Query("guard_type") String guardType, @Query("price_key") String priceKey, @Query("stream") String stream); + Observable> openGuard(@Query("liveuid") String liveUid, @Query("guard_type") String guardType, @Query("price_key") String priceKey, @Query("stream") String stream,@Query("coupon_type") String coupon_type,@Query("coupon_id") String coupon_id); @GET("/api/public/?service=Guard.sendMoneyLong") Observable> sendMoneyLong(@Query("liveuid") String liveUid, @Query("gold_num") String goldNum); @@ -1410,4 +1431,62 @@ public interface PDLiveApi { Observable> getPrankList( @Query("type")String type ); + + @GET("/api/public/?service=Gift.getGiftHallMedalList") + Observable> getGiftHallMedalList(@Query("to_uid") String liveUid,@Query("type")String type); + + @GET("/api/public/?service=Gift.useMedal") + Observable>> userUseDress(@Query("users_dress_id")String users_dress_id,@Query("dress_type")int dress_type); + /** + * 个人展馆 + */ + @GET("/api/public/?service=Gift.singleUserGiftHall") + Observable> singleUserGiftHall( + @Query("user_id")String userId, + @Query("screen")int screen + ); + + /** + * 主播展馆 + */ + @GET("/api/public/?service=Gift.liveGiftHall") + Observable> liveGiftHall( + @Query("live_id")String userId, + @Query("screen")int screen + ); + + /** + * 个人展馆详情 + */ + @GET("/api/public/?service=Gift.singleUserGiftHallDetail") + Observable> singleUserGiftHallDetail( + @Query("user_id")String userId, + @Query("gift_id")String gift_id + ); + + /** + * 主播展馆详情 + */ + @GET("/api/public/?service=Gift.liveGiftHallDetail") + Observable> liveGiftHallDetail( + @Query("live_id")String live_id, + @Query("gift_id")String gift_id, + @Query("gift_hall_type")int gift_hall_type, + @Query("list_type")int list_type + ); + + /** + * 全站展馆 + */ + @GET("/api/public/?service=Gift.allGiftHall") + Observable> allGiftHall( + @Query("type")String type + ); + + @GET("/api/public/?service=Gift.lastAllGiftHallWeekStarDetail") + Observable> lastAllGiftHallWeekStarDetail( + @Query("gift_id")String giftId, + @Query("live_uid")String liveUid + ); + } diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index 8baeff80d..bbf5d0bde 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -33,8 +33,12 @@ import com.yunbao.common.bean.FirstLoginBean; import com.yunbao.common.bean.GiftAlreadyWallModel; import com.yunbao.common.bean.GiftGuideModel; import com.yunbao.common.bean.GiftNamingInfoModel; +import com.yunbao.common.bean.GiftWallBean; import com.yunbao.common.bean.GiftWallGiftDetail; +import com.yunbao.common.bean.GiftWallInfoBean; +import com.yunbao.common.bean.GiftWallMainTab2ClassicInfoBean; import com.yunbao.common.bean.GiftWallModel; +import com.yunbao.common.bean.GiftWallTab2Bean; import com.yunbao.common.bean.GuardGetGuardOpenInfoModel; import com.yunbao.common.bean.GuardGetGuardUserInfoModel; import com.yunbao.common.bean.HomeUserExhibitInfoBean; @@ -67,7 +71,6 @@ import com.yunbao.common.bean.NobleRankHideUserListModel; import com.yunbao.common.bean.NobleTrumpetModel; import com.yunbao.common.bean.OpenAdModel; import com.yunbao.common.bean.PkRankBean; -import com.yunbao.common.bean.PrankGiftBean; import com.yunbao.common.bean.PrankGiftResultBean; import com.yunbao.common.bean.PrankHttpTurntableBean; import com.yunbao.common.bean.PrankProgressBean; @@ -84,6 +87,8 @@ import com.yunbao.common.bean.SendMoneyLongModel; import com.yunbao.common.bean.SetAttentsModel; import com.yunbao.common.bean.ShareBean; import com.yunbao.common.bean.StarChallengeStatusModel; +import com.yunbao.common.bean.SudGameInfoBean; +import com.yunbao.common.bean.SudGameScoreBean; import com.yunbao.common.bean.SudGameUserModel; import com.yunbao.common.bean.SudRoomListModel; import com.yunbao.common.bean.SudgameCodeModel; @@ -116,7 +121,6 @@ import io.reactivex.schedulers.Schedulers; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.RequestBody; -import retrofit2.http.Query; /** @@ -900,9 +904,9 @@ public class LiveNetManager { /** * 获取转盘整蛊列表 */ - public void getPrankGiftList(String mLiveUid, String prank_type,HttpCallback callback) { + public void getPrankGiftList(String mLiveUid, String prank_type, HttpCallback callback) { API.get().pdLiveApi(mContext) - .prankList(mLiveUid,prank_type) + .prankList(mLiveUid, prank_type) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(responseModel -> { @@ -922,28 +926,28 @@ public class LiveNetManager { /** * 获取整蛊进度列表 */ - public void getPrankProgressList(String mLiveUid, HttpCallback callback){ + public void getPrankProgressList(String mLiveUid, HttpCallback callback) { API.get().pdLiveApi(mContext) .getPrankProgressList(mLiveUid) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) - .subscribe(responseModel->{ - if (callback != null){ + .subscribe(responseModel -> { + if (callback != null) { callback.onSuccess(responseModel.getData().getInfo()); } - },throwable->{ - if (callback != null){ + }, throwable -> { + if (callback != null) { callback.onError(throwable.getMessage()); } - } ).isDisposed(); + }).isDisposed(); } /** * 设置礼物整蛊 */ - public void setPrankGift(String mLiveUid, String status, String prank_json,String prank_type,String is_cleared, HttpCallback callback) { + public void setPrankGift(String mLiveUid, String status, String prank_json, String prank_type, String is_cleared, HttpCallback callback) { API.get().pdLiveApi(mContext) - .setPrank(mLiveUid, status, prank_json, prank_type,is_cleared) + .setPrank(mLiveUid, status, prank_json, prank_type, is_cleared) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(responseModel -> { @@ -2312,6 +2316,48 @@ public class LiveNetManager { }).isDisposed(); } + /** + * 获取房间金豆门槛和赢家获得的金豆 + * @param roomId + * @param callback + */ + public void getScore(String roomId,HttpCallback callback){ + API.get().pdLiveApi(mContext) + .getScore(roomId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(sudGameScoreBeanResponseModel -> { + if (callback != null){ + callback.onSuccess(sudGameScoreBeanResponseModel.getData().getInfo()); + } + }, throwable -> { + if (callback != null){ + callback.onError(mContext.getString(R.string.net_error)); + } + }).isDisposed(); + } + + /** + * 获取游戏中所有玩家的信息 + * @param roomId + * @param callback + */ + public void getSudGameInfo(String roomId,HttpCallback> callback){ + API.get().pdLiveApi(mContext) + .getSudGameInfo(roomId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(infoModel->{ + if (callback != null){ + callback.onSuccess(infoModel.getData().getInfo()); + } + },throwable -> { + if (callback != null){ + callback.onError(mContext.getString(R.string.net_error)); + } + }).isDisposed(); + } + public void createSudRoom(String roomName, String goldenBeanNumber, String currencyType, String gameId, HttpCallback callback) { API.get().pdLiveApi(mContext) .createSudRoom(roomName, goldenBeanNumber, currencyType, gameId) @@ -3032,9 +3078,9 @@ public class LiveNetManager { } - public void openGuard(String liveUid, String guardType, String priceKey, String stream, HttpCallback callback) { + public void openGuard(String liveUid, String guardType, String priceKey, String stream,String coupon_type,String couponId, HttpCallback callback) { API.get().pdLiveApi(mContext) - .openGuard(liveUid, guardType, priceKey, stream) + .openGuard(liveUid, guardType, priceKey, stream,coupon_type,couponId) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer>() { @@ -3251,7 +3297,7 @@ public class LiveNetManager { String payload , HttpCallback callback) { API.get().pdLiveApi(mContext) - .createGameOrder(roomId, cmd, value, gameId, fromUid, toUid,payload) + .createGameOrder(roomId, cmd, value, gameId, fromUid, toUid, payload) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer>>() { @@ -3299,12 +3345,139 @@ public class LiveNetManager { } + public void singleUserGiftHall(String userId, int screen, HttpCallback callback) { + API.get().pdLiveApi(mContext) + .singleUserGiftHall(userId, screen) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (callback != null) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + throwable.printStackTrace(); + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + + } + + public void liveGiftHall(String userId, int screen, HttpCallback callback) { + API.get().pdLiveApi(mContext) + .liveGiftHall(userId, screen) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (callback != null) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + throwable.printStackTrace(); + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + + } + + public void singleUserGiftHallDetail(String userId, String giftId, HttpCallback callback) { + API.get().pdLiveApi(mContext) + .singleUserGiftHallDetail(userId, giftId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (callback != null) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + throwable.printStackTrace(); + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + + } + + public void liveGiftHallDetail(String liveId, String giftId, int gift_hall_type, int list_type, HttpCallback callback) { + API.get().pdLiveApi(mContext) + .liveGiftHallDetail(liveId, giftId, gift_hall_type, list_type) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (callback != null) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + throwable.printStackTrace(); + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + + } + + public void allGiftHall(String type, HttpCallback callback) { + API.get().pdLiveApi(mContext) + .allGiftHall(type) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (callback != null) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + throwable.printStackTrace(); + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + + } + + public void lastAllGiftHallWeekStarDetail(String giftId, String liveUid, HttpCallback callback) { + API.get().pdLiveApi(mContext) + .lastAllGiftHallWeekStarDetail(giftId, liveUid) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (callback != null) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + throwable.printStackTrace(); + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + + } + /** * 上报日志相关 - * @param type 1为查询,3为删除 + * + * @param type 1为查询,3为删除 * @param callback */ - public void getLogUpdateStatus(String type, HttpCallbackcallback) { + public void getLogUpdateStatus(String type, HttpCallback callback) { API.get().pdLiveApi(mContext) .getPrankList(type) .subscribeOn(Schedulers.io()) @@ -3325,6 +3498,7 @@ public class LiveNetManager { } + public void getPdluserFriend(int p, HttpCallback> callback) { API.get().pdLiveApi(mContext) .getPdluserFriend(p) @@ -3554,7 +3728,7 @@ public class LiveNetManager { }).isDisposed(); } - public void anchorClickFinish(String mLiveId, String giftId, HttpCallback>callback) { + public void anchorClickFinish(String mLiveId, String giftId, HttpCallback> callback) { API.get().pdLiveApi(mContext) .anchorClickFinish(mLiveId, giftId) .subscribeOn(Schedulers.io()) @@ -4016,6 +4190,54 @@ public class LiveNetManager { } }).isDisposed(); } + + public void getGiftHallMedalList(String toUid, String type, HttpCallback callback) { + API.get().pdLiveApi(mContext) + .getGiftHallMedalList(toUid, type) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer>() { + @Override + public void accept(ResponseModel listResponseModel) throws Exception { + if (callback != null) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + } + + public void userUseDress( String usersDressId, HttpCallback callback) { + API.get().pdLiveApi(mContext) + .userUseDress(usersDressId,3) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer>>() { + @Override + public void accept(ResponseModel> responseModel) throws Exception { + if (callback != null) { + HttpCallbackModel model = new HttpCallbackModel(); + model.setCode(responseModel.getData().getCode()); + model.setMsg(responseModel.getData().getMsg()); + callback.onSuccess(model); + } + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + } + private MultipartBody.Part createUploadFile(File file) { RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); return MultipartBody.Part.createFormData("file", file.getName(), requestBody); diff --git a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java index 863aad832..23b380294 100644 --- a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java +++ b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java @@ -128,9 +128,9 @@ public class IMLoginManager extends BaseCacheManager { language = "zh"; } if (!getBoolean(KEY_LANGUAGE, !TextUtils.equals(language, "zh"))) { - return Locale.SIMPLIFIED_CHINESE; + return Locale.CHINA; } else { - return new Locale("en", "rUS"); + return Locale.ROOT; } } diff --git a/common/src/main/java/com/yunbao/common/pay/hw/HwBuilder.java b/common/src/main/java/com/yunbao/common/pay/hw/HwBuilder.java index 776fa3873..9ddab63cd 100644 --- a/common/src/main/java/com/yunbao/common/pay/hw/HwBuilder.java +++ b/common/src/main/java/com/yunbao/common/pay/hw/HwBuilder.java @@ -26,7 +26,7 @@ public class HwBuilder { Object invite = clz.getConstructor(Activity.class).newInstance(mActivity); invite.getClass().getMethod("pay", String.class).invoke(invite, changeid); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } @@ -39,7 +39,7 @@ public class HwBuilder { Object invite = clz.getConstructor(Activity.class).newInstance(mActivity); invite.getClass().getMethod("consume").invoke(invite); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } @@ -49,13 +49,13 @@ public class HwBuilder { * @return */ public JSONObject getPayResult(Intent intent) { - JSONObject object; + JSONObject object = null; try { Class clz = mActivity.getClassLoader().loadClass("com.shayu.lib_huawei.utils.HuaWeiPayManage"); Object invite = clz.getConstructor(Activity.class).newInstance(mActivity); object = (JSONObject) invite.getClass().getMethod("getPayResult", Intent.class).invoke(invite, intent); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } return object; } diff --git a/common/src/main/java/com/yunbao/common/sud/BaseGameViewModel.java b/common/src/main/java/com/yunbao/common/sud/BaseGameViewModel.java index ddda03a1d..9ac3b6be4 100644 --- a/common/src/main/java/com/yunbao/common/sud/BaseGameViewModel.java +++ b/common/src/main/java/com/yunbao/common/sud/BaseGameViewModel.java @@ -10,6 +10,7 @@ import android.view.ViewTreeObserver; import android.widget.Toast; import com.alibaba.fastjson.JSONObject; +import com.yunbao.common.BuildConfig; import com.yunbao.common.sud.decorator.SudFSMMGCache; import com.yunbao.common.sud.decorator.SudFSMMGDecorator; import com.yunbao.common.sud.decorator.SudFSMMGListener; @@ -17,11 +18,13 @@ import com.yunbao.common.sud.decorator.SudFSTAPPDecorator; import com.yunbao.common.sud.model.GameConfigModel; import com.yunbao.common.sud.model.GameViewInfoModel; import com.yunbao.common.sud.state.MGStateResponse; +import com.yunbao.common.sud.state.SudMGPMGState; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.SudJsonUtils; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; +import tech.sud.logger.LogUtils; import tech.sud.mgp.core.ISudFSMStateHandle; import tech.sud.mgp.core.ISudFSTAPP; import tech.sud.mgp.core.ISudListenerInitSDK; @@ -111,6 +114,9 @@ public abstract class BaseGameViewModel implements SudFSMMGListener { String appKey = getAppKey(); boolean testEnv = isTestEnv(); // 初始化sdk + if(BuildConfig.DEBUG) { + SudMGP.setLogLevel(Log.DEBUG); + } SudMGP.initSDK(activity, appId, appKey, testEnv, new ISudListenerInitSDK() { @Override public void onSuccess() { @@ -480,4 +486,13 @@ public abstract class BaseGameViewModel implements SudFSMMGListener { return sudFSMMGDecorator.getSudFSMMGCache(); } + /** + * 游戏结算状态 + */ + @Override + public void onGameMGCommonGameSettle(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameSettle model) { + LogUtils.e("yqw=====>"+model); + } + + } diff --git a/common/src/main/java/com/yunbao/common/sud/QuickStartGameViewModel.java b/common/src/main/java/com/yunbao/common/sud/QuickStartGameViewModel.java index e7fa09b58..6a36e2c1b 100644 --- a/common/src/main/java/com/yunbao/common/sud/QuickStartGameViewModel.java +++ b/common/src/main/java/com/yunbao/common/sud/QuickStartGameViewModel.java @@ -6,8 +6,13 @@ import android.view.View; import androidx.lifecycle.MutableLiveData; +import com.blankj.utilcode.util.LogUtils; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.CommonAppContext; +import com.yunbao.common.bean.PrankProgressBean; +import com.yunbao.common.bean.SudGameInfoBean; +import com.yunbao.common.bean.SudGameScoreBean; +import com.yunbao.common.bean.SudSettleBean; import com.yunbao.common.bean.SudgameCodeModel; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; @@ -15,9 +20,14 @@ import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.sud.model.GameConfigModel; import com.yunbao.common.sud.model.GameViewInfoModel; import com.yunbao.common.sud.state.SudMGPMGState; +import com.yunbao.common.utils.ToastUtil; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Locale; +import java.util.function.Consumer; import tech.sud.mgp.core.ISudFSMMG; import tech.sud.mgp.core.ISudFSMStateHandle; @@ -62,6 +72,22 @@ public class QuickStartGameViewModel extends BaseGameViewModel { public String languageCode = "zh-TW"; public final MutableLiveData gameViewLiveData = new MutableLiveData<>(); // 游戏View回调 + private SudGameScoreBean sudGameScoreBean;//房间金豆的门槛和赢家奖励 + private List sudGameInfoBeanList = new ArrayList<>();//玩家信息 + public final MutableLiveData> listMutableLiveData = new MutableLiveData<>();//玩家排名信息 + + public void setSudGameInfoBeanList(List sudGameInfoBeanList) { + this.sudGameInfoBeanList = sudGameInfoBeanList; + } + + + public SudGameScoreBean getSudGameScoreBean() { + return sudGameScoreBean; + } + + public void setSudGameScoreBean(SudGameScoreBean sudGameScoreBean) { + this.sudGameScoreBean = sudGameScoreBean; + } /** * 向接入方服务器获取code @@ -70,7 +96,7 @@ public class QuickStartGameViewModel extends BaseGameViewModel { protected void getCode(Activity activity, String userId, String appId, GameGetCodeListener listener) { if (IMLoginManager.get(activity).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) { languageCode = "zh-TW"; - }else { + } else { languageCode = "en-US"; } // TODO: 2022/6/10 注意,这里是演示使用OkHttpClient请求hello-sud服务 @@ -147,6 +173,81 @@ public class QuickStartGameViewModel extends BaseGameViewModel { // }); } + /** + * 获取房间的金豆数量和赢家获得的金豆 + */ + public void getScore(String roomId, Activity activity) { + LiveNetManager.get(activity).getScore(roomId, new HttpCallback() { + @Override + public void onSuccess(SudGameScoreBean data) { + sudGameScoreBean = data; + } + + @Override + public void onError(String error) { + ToastUtil.show(error); + } + }); + } + + /** + * 进行排名和结算 + */ + public void sudGameRank(SudMGPMGState.MGCommonGameSettle mgCommonGameSettle) { + List settleBeans = new ArrayList<>(); + int playerNum = mgCommonGameSettle.results.size();//玩家人数 + int winnerNUm = countWinners(mgCommonGameSettle.results);//第一名人数 + int winNum;//赢得或者失去的金豆 + // 构建结算信息 + for (SudMGPMGState.MGCommonGameSettle.PlayerResult playerResult : mgCommonGameSettle.results) { + String uid = playerResult.uid; + int rank = playerResult.rank; + SudGameInfoBean sudGameInfoBean = findGameInfoBean(uid); + if (sudGameInfoBean == null) return; + + if (sudGameScoreBean.getGame_mode() == 1) { + //双人游戏 + if (winnerNUm == 1){ + winNum = (rank == 1) ? (int) (sudGameScoreBean.getRoom_sill() * 0.8) : -sudGameScoreBean.getRoom_sill(); + }else { + winNum = -sudGameScoreBean.getRoom_ticket(); + } + } else { + //多人游戏 + if (rank == 1){ + winNum = (playerNum*sudGameScoreBean.getRoom_win_num()-winnerNUm*sudGameScoreBean.getRoom_sill())/winnerNUm; + }else { + winNum = -sudGameScoreBean.getRoom_sill(); + } + } + settleBeans.add(new SudSettleBean(uid,sudGameInfoBean.getNick_name(),sudGameInfoBean.getAvatar_url(),rank,winNum)); + } + // 更新LiveData + listMutableLiveData.setValue(settleBeans); + } + + // 统计第一名的玩家数量 + private int countWinners(List results) { + int count = 0; + for (SudMGPMGState.MGCommonGameSettle.PlayerResult result : results) { + if (result.rank == 1) { + count++; + } + } + return count; + } + + // 根据uid查找对应的游戏信息Bean + private SudGameInfoBean findGameInfoBean(String uid) { + for (SudGameInfoBean sudGameInfoBean : sudGameInfoBeanList) { + if (sudGameInfoBean.getUid().equals(uid)) { + return sudGameInfoBean; + } + } + return null; + } + + /** * 设置当前用户id(接入方定义) */ @@ -255,7 +356,7 @@ public class QuickStartGameViewModel extends BaseGameViewModel { @Override public void onGameMGCommonGameState(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameState model) { super.onGameMGCommonGameState(handle, model); - Log.e("QuickStartGameViewModel",model.toString()); + Log.e("QuickStartGameViewModel", model.toString()); } } diff --git a/common/src/main/java/com/yunbao/common/sud/decorator/SudFSMMGDecorator.java b/common/src/main/java/com/yunbao/common/sud/decorator/SudFSMMGDecorator.java index 1bfba5b82..43d0d5807 100644 --- a/common/src/main/java/com/yunbao/common/sud/decorator/SudFSMMGDecorator.java +++ b/common/src/main/java/com/yunbao/common/sud/decorator/SudFSMMGDecorator.java @@ -8,6 +8,7 @@ package com.yunbao.common.sud.decorator; import android.util.Log; +import com.blankj.utilcode.util.LogUtils; import com.yunbao.common.event.CheckRemainingBalanceEvent; import com.yunbao.common.sud.state.SudMGPMGState; import com.yunbao.common.utils.Bus; @@ -177,11 +178,11 @@ public class SudFSMMGDecorator implements ISudFSMMG { } else { listener.onGameMGCommonGameSettle(handle, mgCommonGameSettle); } - Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_GAME_SETTLE)); + Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_GAME_SETTLE).setMgCommonGameSettle(mgCommonGameSettle)); break; case SudMGPMGState.MG_COMMON_SELF_CLICK_JOIN_BTN: // 4. 加入游戏按钮点击状态 SudMGPMGState.MGCommonSelfClickJoinBtn mgCommonSelfClickJoinBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickJoinBtn.class); - Bus.get().post(new CheckRemainingBalanceEvent().setSeatIndex(mgCommonSelfClickJoinBtn.seatIndex).setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_JOIN_BTN)); + Bus.get().post(new CheckRemainingBalanceEvent().setSeatIndex(mgCommonSelfClickJoinBtn.seatIndex).setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_JOIN_BTN).setSubReady(false)); // if (listener == null) { // ISudFSMStateHandleUtils.handleSuccess(handle); // } else { @@ -258,7 +259,7 @@ public class SudFSMMGDecorator implements ISudFSMMG { // } else { // listener.onGameMGCommonSelfClickGameSettleAgainBtn(handle, mgCommonSelfClickGameSettleAgainBtn); // } - Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN)); + Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN).setSubReady(false)); break; case SudMGPMGState.MG_COMMON_GAME_SOUND_LIST: // 13. 游戏上报游戏中的声音列表(2021-12-30新增,现在只支持碰碰我最强) SudMGPMGState.MGCommonGameSoundList mgCommonGameSoundList = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameSoundList.class); diff --git a/common/src/main/java/com/yunbao/common/sud/state/SudMGPMGState.java b/common/src/main/java/com/yunbao/common/sud/state/SudMGPMGState.java index dc358b332..082dc1802 100644 --- a/common/src/main/java/com/yunbao/common/sud/state/SudMGPMGState.java +++ b/common/src/main/java/com/yunbao/common/sud/state/SudMGPMGState.java @@ -170,6 +170,15 @@ public class SudMGPMGState implements Serializable { // 游戏结果玩家列表 public List results; + @Override + public String toString() { + return "MGCommonGameSettle{" + + "gameMode=" + gameMode + + ", gameRoundId='" + gameRoundId + '\'' + + ", results=" + results + + '}'; + } + /** * 游戏结果玩家定义 */ @@ -181,6 +190,19 @@ public class SudMGPMGState implements Serializable { public int isEscaped; // 是否逃跑 1:逃跑 0:非逃跑 public String killerId; // 杀自己的玩家的id public int isAI; // 是否是AI玩家,1为AI + + @Override + public String toString() { + return "PlayerResult{" + + "uid='" + uid + '\'' + + ", rank=" + rank + + ", award=" + award + + ", score=" + score + + ", isEscaped=" + isEscaped + + ", killerId='" + killerId + '\'' + + ", isAI=" + isAI + + '}'; + } } } diff --git a/common/src/main/java/com/yunbao/common/utils/AndroidBug5497Workaround.java b/common/src/main/java/com/yunbao/common/utils/AndroidBug5497Workaround.java index ef2fb8c84..741c8d9eb 100644 --- a/common/src/main/java/com/yunbao/common/utils/AndroidBug5497Workaround.java +++ b/common/src/main/java/com/yunbao/common/utils/AndroidBug5497Workaround.java @@ -39,7 +39,6 @@ public class AndroidBug5497Workaround { public void onGlobalLayout() { possiblyResizeChildOfContent(); int heightDiff = mChildOfContent.getRootView().getHeight() - mChildOfContent.getHeight(); - System.out.println("heightDiff = " + heightDiff); if (heightDiff < 100) { frameLayoutParams.height = defHeight; mChildOfContent.requestLayout(); diff --git a/common/src/main/java/com/yunbao/common/utils/AppManager.java b/common/src/main/java/com/yunbao/common/utils/AppManager.java index e0d6cdfa2..61878d50d 100644 --- a/common/src/main/java/com/yunbao/common/utils/AppManager.java +++ b/common/src/main/java/com/yunbao/common/utils/AppManager.java @@ -2,8 +2,8 @@ package com.yunbao.common.utils; import android.app.Activity; import android.util.Log; - import com.yunbao.common.BuildConfig; + import com.yunbao.common.manager.OpenAdManager; import java.util.Stack; diff --git a/common/src/main/java/com/yunbao/common/utils/GoogleUtils.java b/common/src/main/java/com/yunbao/common/utils/GoogleUtils.java index fe8c85b6b..43b45c25d 100644 --- a/common/src/main/java/com/yunbao/common/utils/GoogleUtils.java +++ b/common/src/main/java/com/yunbao/common/utils/GoogleUtils.java @@ -52,7 +52,7 @@ public class GoogleUtils { googlePay = clz.getConstructor(Activity.class).newInstance(mActivity); flag = (boolean) googlePay.getClass().getMethod("getGoogleService").invoke(googlePay); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } return flag; } @@ -88,13 +88,13 @@ public class GoogleUtils { * @return */ public JSONObject getLoginResult(Intent intent) { - JSONObject object; + JSONObject object = null; try { Class clz = mActivity.getClassLoader().loadClass("com.shayu.lib_google.utils.GoogleManage"); Object invite = clz.getConstructor(Activity.class).newInstance(mActivity); object = (JSONObject) invite.getClass().getMethod("getLoginResult", Intent.class).invoke(invite, intent); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } return object; } @@ -109,7 +109,7 @@ public class GoogleUtils { googlePay = clz.getConstructor(Activity.class).newInstance(mActivity); googlePay.getClass().getMethod("initGooglePay").invoke(googlePay); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } @@ -121,7 +121,10 @@ public class GoogleUtils { Object invite = clz.getConstructor(Activity.class).newInstance(mActivity); adId = (String) invite.getClass().getMethod("getAdid").invoke(googlePay); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); + return ""; + + /*throw new RuntimeException(e);*/ } return adId; } @@ -133,7 +136,7 @@ public class GoogleUtils { try { googlePay.getClass().getMethod("checkSku", String.class).invoke(googlePay, skuId); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } @@ -148,7 +151,7 @@ public class GoogleUtils { try { googlePay.getClass().getMethod("initResultCode").invoke(googlePay); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } timer = new Timer(); @@ -171,7 +174,7 @@ public class GoogleUtils { billingListener.onPayFailed(mActivity.getString(R.string.pay_fail)); } } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } }; @@ -184,7 +187,7 @@ public class GoogleUtils { Object invite = clz.getConstructor(Context.class).newInstance(context); invite.getClass().getMethod("initializeApp").invoke(invite); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } @@ -202,7 +205,7 @@ public class GoogleUtils { timer.cancel(); } } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } }; @@ -215,7 +218,7 @@ public class GoogleUtils { googlePay = clz.getConstructor(Activity.class).newInstance(activity); googlePay.getClass().getMethod("initToken").invoke(googlePay); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } @@ -237,7 +240,7 @@ public class GoogleUtils { googlePay = clz.getConstructor(Activity.class).newInstance(mActivity); googlePay.getClass().getMethod("consumeAll").invoke(googlePay); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } @@ -250,7 +253,7 @@ public class GoogleUtils { .getMethod("setFirebaseCrashData", String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class) .invoke(googlePay, uid, userData, isGoogle, cpu, runTime, enterRoom, slidingRoom, playSvga, ActivitySize); } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } @@ -268,7 +271,7 @@ public class GoogleUtils { timer.cancel(); } } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); } } }; diff --git a/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java b/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java index e4c61f85c..4660abed4 100644 --- a/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java +++ b/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java @@ -645,9 +645,13 @@ public class JavascriptInterfaceUtils { .setMethod("androidFansGroupInfo")); } + /** + * 礼物墙 + */ @JavascriptInterface public void toGiftNamingAlertAllPageView(String mAnchorName, String mLiveUid, String mAvatarUrl, int isAnchor) { - RouteUtil.forwardGiftWallActivity("", mAnchorName, mLiveUid, mAvatarUrl, 0, isAnchor == 1); + // RouteUtil.forwardGiftWallActivity("", mAnchorName, mLiveUid, mAvatarUrl, 0, isAnchor == 1); + new com.yunbao.common.dialog.GiftWallDialog(mContext, mLiveUid,mAnchorName, null,isAnchor==1).setFullWindows(true).showDialog(); } @JavascriptInterface diff --git a/common/src/main/java/com/yunbao/common/utils/L.java b/common/src/main/java/com/yunbao/common/utils/L.java index 3cf47f2b8..6c20dc762 100644 --- a/common/src/main/java/com/yunbao/common/utils/L.java +++ b/common/src/main/java/com/yunbao/common/utils/L.java @@ -9,6 +9,11 @@ import java.util.Date; import java.util.Locale; import java.util.UUID; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.UUID; + /** * Created by cxf on 2017/8/3. */ @@ -50,4 +55,5 @@ public class L { public static void e(Exception e) { Log.e("Exception", e.getMessage(), e); } + } diff --git a/common/src/main/java/com/yunbao/common/utils/SVGAViewUtils.java b/common/src/main/java/com/yunbao/common/utils/SVGAViewUtils.java index 7cefb2e2f..1e72292da 100644 --- a/common/src/main/java/com/yunbao/common/utils/SVGAViewUtils.java +++ b/common/src/main/java/com/yunbao/common/utils/SVGAViewUtils.java @@ -13,13 +13,14 @@ import java.util.List; public class SVGAViewUtils { private final static List SVGA_CACHE = new ArrayList<>(); - public static void playEndClear(SVGAImageView svga, boolean isClear, SVGACallback callback) { + public static void playEndClear(SVGAImageView svga, boolean isClear,int loop, SVGACallback callback) { if (!isClear) { if (!SVGA_CACHE.contains(svga)) { SVGA_CACHE.add(svga); } } CrashSaveBean.getInstance().addPlaySvga(); + svga.setLoops(loop); svga.setCallback(new SVGACallback() { @Override public void onPause() { @@ -72,9 +73,11 @@ public class SVGAViewUtils { } SVGA_CACHE.clear(); } - + public static void playEndClear(SVGAImageView svga, boolean isClear, SVGACallback callback) { + playEndClear(svga, isClear,1, null); + } public static void playEndClear(SVGAImageView svga, boolean isClear) { - playEndClear(svga, isClear, null); + playEndClear(svga, isClear,null); } public static void playEndClear(SVGAImageView svga) { diff --git a/common/src/main/java/com/yunbao/common/utils/SpUtil.java b/common/src/main/java/com/yunbao/common/utils/SpUtil.java index 11184c438..e188b7f0d 100644 --- a/common/src/main/java/com/yunbao/common/utils/SpUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/SpUtil.java @@ -4,8 +4,13 @@ import android.content.Context; import android.content.SharedPreferences; import android.text.TextUtils; +import com.alibaba.fastjson.JSONArray; +import com.google.gson.Gson; import com.yunbao.common.CommonAppContext; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -37,9 +42,8 @@ public class SpUtil { public static final String ANCHOR_PK_TIME = "anchorPkTime"; //播放短视频上下滑动引导页 public static final String READ_VIDEO_GUIDE = "readVideoGuide"; - public static final String MESSAGE_SYS_DEL = "FIRST_DEL"; - + public static final String LIVE_GAME_NEWED_LIST = "LIVE_GAME_NEWED_LIST"; public SpUtil() { mSharedPreferences = CommonAppContext.sInstance.getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE); @@ -56,6 +60,41 @@ public class SpUtil { return sInstance; } + public static void setLiveGameId(String gameId) { + String gameMap = getStringValue(LIVE_GAME_NEWED_LIST); + List gameNewList; + gameNewList = JSONArray.parseArray(gameMap, String.class); + L.eSw("gameMap:" + gameMap); + if (gameNewList == null) { + gameNewList = new ArrayList<>(); + } + for (int i = 0; i < gameNewList.size(); i++) { + if (gameNewList.get(i).equals(gameId)) { + gameNewList.remove(i); + break; + } + } + gameNewList.add(gameId); + setStringValue(LIVE_GAME_NEWED_LIST, new Gson().toJson(gameNewList)); + } + + public static boolean isLiveGameNew(String gameId) { + String gameMap = getStringValue(LIVE_GAME_NEWED_LIST); + List gameNewList = new ArrayList<>(); + gameNewList = JSONArray.parseArray(gameMap, String.class); + if (gameNewList == null) { + gameNewList = new ArrayList<>(); + } + boolean isNew = false; + for (int i = 0; i < gameNewList.size(); i++) { + if (gameNewList.get(i).equals(gameId)) { + isNew = true; + } + } + return !isNew; + } + + /** * 保存一个字符串 */ diff --git a/common/src/main/java/com/yunbao/common/views/CustomEllipsizeTextView.java b/common/src/main/java/com/yunbao/common/views/CustomEllipsizeTextView.java new file mode 100644 index 000000000..09e714bdd --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/CustomEllipsizeTextView.java @@ -0,0 +1,46 @@ +package com.yunbao.common.views; + +import android.content.Context; +import android.graphics.Canvas; +import android.text.Layout; +import android.text.TextPaint; +import android.text.TextUtils; +import android.util.AttributeSet; + +import androidx.appcompat.widget.AppCompatTextView; + +public class CustomEllipsizeTextView extends AppCompatTextView { + + public CustomEllipsizeTextView(Context context) { + super(context); + } + + public CustomEllipsizeTextView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public CustomEllipsizeTextView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + CharSequence text = getText(); + float measureText = getPaint().measureText(text, 0, text.length()); + if (measureText > getMeasuredWidth() && text.length() > 5) { + CharSequence end = text.subSequence(text.length() - 5, text.length()); + CharSequence start = text.subSequence(0, text.length() - 5); + CharSequence newCharSequence = getAutoText(start, end, getPaint()); + setText(newCharSequence); + } + } + + private CharSequence getAutoText(CharSequence start, CharSequence end, TextPaint paint) { + CharSequence text = TextUtils.concat(start.subSequence(0, start.length() - 1), "...", end); + if (paint.measureText(text, 0, text.length()) > getMeasuredWidth()) { + return getAutoText(start.subSequence(0, start.length() - 1), end, paint); + } + return text; + } +} \ No newline at end of file diff --git a/common/src/main/java/com/yunbao/common/views/InteractionGamesChildBottomViewHolder.java b/common/src/main/java/com/yunbao/common/views/InteractionGamesChildBottomViewHolder.java new file mode 100644 index 000000000..0eac169ab --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/InteractionGamesChildBottomViewHolder.java @@ -0,0 +1,67 @@ +package com.yunbao.common.views; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.makeramen.roundedimageview.RoundedImageView; +import com.yunbao.common.R; +import com.yunbao.common.bean.CustomSidebarChildModel; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.utils.SpUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +public class InteractionGamesChildBottomViewHolder extends RecyclerView.ViewHolder { + private RoundedImageView funGamePic; + private TextView funGameName; + private Context mContext; + + public InteractionGamesChildBottomViewHolder(@NonNull View itemView, Context context) { + super(itemView); + this.mContext = context; + funGamePic = itemView.findViewById(R.id.fun_game_pic); + funGameName = itemView.findViewById(R.id.fun_game_name); + } + + public void setData(CustomSidebarChildModel model, boolean rigts) { + ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams((int) + (mContext.getResources().getDisplayMetrics().widthPixels / 4.5), + ViewGroup.LayoutParams.WRAP_CONTENT); + itemView.setLayoutParams(layoutParams); + if (rigts) { + ImgLoader.display(itemView.getContext(), model.getIcon(), funGamePic); + } else { + ImgLoader.display(itemView.getContext(), model.getResIcon(), funGamePic); + } + funGameName.setText(model.getTitle()); + if (!TextUtils.isEmpty(model.getSudGameIsNew())&&TextUtils.equals(model.getSudGameIsNew(),"1")&& SpUtil.isLiveGameNew(model.getId())){ + itemView.findViewById(R.id.icon_new_game).setVisibility(View.VISIBLE); + }else { + itemView.findViewById(R.id.icon_new_game).setVisibility(View.GONE); + } + ViewClicksAntiShake.clicksAntiShake(itemView, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + if (interactionGamesCallBack != null) { + interactionGamesCallBack.onItemViewClicks(model, rigts); + } + } + }); + } + + private InteractionGamesCallBack interactionGamesCallBack; + + public void setItemViewClicks(InteractionGamesCallBack callBack) { + interactionGamesCallBack = callBack; + } + + public interface InteractionGamesCallBack { + void onItemViewClicks(CustomSidebarChildModel model, boolean rigts); + } +} diff --git a/common/src/main/java/com/yunbao/common/views/InteractionGamesChildViewHolder.java b/common/src/main/java/com/yunbao/common/views/InteractionGamesChildViewHolder.java index c989802b0..1582856b1 100644 --- a/common/src/main/java/com/yunbao/common/views/InteractionGamesChildViewHolder.java +++ b/common/src/main/java/com/yunbao/common/views/InteractionGamesChildViewHolder.java @@ -1,40 +1,48 @@ package com.yunbao.common.views; +import android.content.Context; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; +import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import com.makeramen.roundedimageview.RoundedImageView; import com.yunbao.common.R; import com.yunbao.common.bean.CustomSidebarChildModel; -import com.yunbao.common.event.CustomDrawerPopupEvent; import com.yunbao.common.glide.ImgLoader; -import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.SpUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; public class InteractionGamesChildViewHolder extends RecyclerView.ViewHolder { - private ImageView funGamePic; + private RoundedImageView funGamePic; private TextView funGameName; + private Context mContext; - public InteractionGamesChildViewHolder(@NonNull View itemView) { + public InteractionGamesChildViewHolder(@NonNull View itemView,Context mContext) { super(itemView); + this.mContext = mContext; funGamePic = itemView.findViewById(R.id.fun_game_pic); funGameName = itemView.findViewById(R.id.fun_game_name); } public void setData(CustomSidebarChildModel model, boolean rigts) { + + ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams((int) + (mContext.getResources().getDisplayMetrics().widthPixels / 4.5), + ViewGroup.LayoutParams.WRAP_CONTENT); + itemView.setLayoutParams(layoutParams); + if (rigts) { ImgLoader.display(itemView.getContext(), model.getIcon(), funGamePic); } else { ImgLoader.display(itemView.getContext(), model.getResIcon(), funGamePic); } - funGameName.setText(model.getTitle()); - if (!TextUtils.isEmpty(model.getSudGameIsNew())&&TextUtils.equals(model.getSudGameIsNew(),"1")){ + if (!TextUtils.isEmpty(model.getSudGameIsNew())&&TextUtils.equals(model.getSudGameIsNew(),"1")&& SpUtil.isLiveGameNew(model.getId())){ itemView.findViewById(R.id.icon_new_game).setVisibility(View.VISIBLE); }else { itemView.findViewById(R.id.icon_new_game).setVisibility(View.GONE); @@ -45,8 +53,6 @@ public class InteractionGamesChildViewHolder extends RecyclerView.ViewHolder { if (interactionGamesCallBack != null) { interactionGamesCallBack.onItemViewClicks(model, rigts); } - - } }); } diff --git a/common/src/main/java/com/yunbao/common/views/LiveNewRoleFunGamesViewHolder.java b/common/src/main/java/com/yunbao/common/views/LiveNewRoleFunGamesViewHolder.java index 731ff761e..ff0bc7364 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveNewRoleFunGamesViewHolder.java +++ b/common/src/main/java/com/yunbao/common/views/LiveNewRoleFunGamesViewHolder.java @@ -1,6 +1,8 @@ package com.yunbao.common.views; +import android.content.Context; import android.view.View; +import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; @@ -25,21 +27,22 @@ public class LiveNewRoleFunGamesViewHolder extends RecyclerView.ViewHolder { private RecyclerView childList; private ImageView selectMoreIcon; boolean isShowMore = true; + private Context mContext; - public LiveNewRoleFunGamesViewHolder(@NonNull View itemView) { + public LiveNewRoleFunGamesViewHolder(@NonNull View itemView, Context context) { super(itemView); + this.mContext = context; sendGoodGift = itemView.findViewById(R.id.send_good_gift); childList = itemView.findViewById(R.id.child_list); selectMoreIcon = itemView.findViewById(R.id.select_more_icon); selectMore = itemView.findViewById(R.id.select_more); - funGamesAdapter = new NewRoleFunGamesAdapter(itemView.getContext(),true); + funGamesAdapter = new NewRoleFunGamesAdapter(itemView.getContext(), true); childList.setLayoutManager(new LinearLayoutManager(itemView.getContext(), LinearLayoutManager.HORIZONTAL, false)); childList.setAdapter(funGamesAdapter); } public void setData(CustomSidebarInfoModel model) { - List sidebarChildModels = model.getChild(); itemView.findViewById(R.id.select_more_layout).setVisibility(sidebarChildModels.size() >= 8 ? View.VISIBLE : View.GONE); sendGoodGift.setText(model.getTitle()); diff --git a/common/src/main/java/com/yunbao/common/views/LiveNewRoleInteractionGamesViewHolder.java b/common/src/main/java/com/yunbao/common/views/LiveNewRoleInteractionGamesViewHolder.java index 4a30f3397..01fb96bdb 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveNewRoleInteractionGamesViewHolder.java +++ b/common/src/main/java/com/yunbao/common/views/LiveNewRoleInteractionGamesViewHolder.java @@ -1,11 +1,13 @@ package com.yunbao.common.views; +import android.content.Context; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.yunbao.common.R; @@ -21,14 +23,14 @@ public class LiveNewRoleInteractionGamesViewHolder extends RecyclerView.ViewHold private RecyclerView childList; private ImageView selectMoreIcon; boolean isShowMore = true; - - public LiveNewRoleInteractionGamesViewHolder(@NonNull View itemView) { + public LiveNewRoleInteractionGamesViewHolder(@NonNull View itemView, Context context) { super(itemView); sendGoodGift = itemView.findViewById(R.id.send_good_gift); childList = itemView.findViewById(R.id.child_list); selectMoreIcon = itemView.findViewById(R.id.select_more_icon); funGamesAdapter = new LiveNewRoleInteractionGamesAdapter(itemView.getContext(), true); - childList.setLayoutManager(new GridLayoutManager(itemView.getContext(), 4)); + LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false); + childList.setLayoutManager(layoutManager); childList.setAdapter(funGamesAdapter); } diff --git a/common/src/main/java/com/yunbao/common/views/LiveNewRoleRigtsInterestsViewHolder.java b/common/src/main/java/com/yunbao/common/views/LiveNewRoleRigtsInterestsViewHolder.java index 43d54460a..c2aa51ee5 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveNewRoleRigtsInterestsViewHolder.java +++ b/common/src/main/java/com/yunbao/common/views/LiveNewRoleRigtsInterestsViewHolder.java @@ -1,10 +1,13 @@ package com.yunbao.common.views; +import android.content.Context; import android.view.View; +import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.yunbao.common.R; @@ -21,19 +24,21 @@ public class LiveNewRoleRigtsInterestsViewHolder extends RecyclerView.ViewHolder private TextView sendGoodGift; private RecyclerView childList; private boolean showRed = false; - public LiveNewRoleRigtsInterestsViewHolder(@NonNull View itemView,boolean showRed) { + private Context mContext; + public LiveNewRoleRigtsInterestsViewHolder(@NonNull View itemView, boolean showRed,Context mContext) { super(itemView); + this.mContext = mContext; sendGoodGift = itemView.findViewById(R.id.send_good_gift); childList = itemView.findViewById(R.id.child_list); sendGoodGift = itemView.findViewById(R.id.send_good_gift); childList = itemView.findViewById(R.id.child_list); funGamesAdapter = new LiveNewRoleFunGamesAdapter(itemView.getContext(), false,showRed); - childList.setLayoutManager(new GridLayoutManager(itemView.getContext(), 4)); + LinearLayoutManager layoutManager = new LinearLayoutManager(itemView.getContext(), LinearLayoutManager.HORIZONTAL, false); + childList.setLayoutManager(layoutManager); childList.setAdapter(funGamesAdapter); } public void setData(CustomSidebarInfoModel model) { - sendGoodGift.setText(model.getTitle()); funGamesAdapter.updateData(generateData()); } diff --git a/common/src/main/java/com/yunbao/common/views/LiveSudGamePopup.java b/common/src/main/java/com/yunbao/common/views/LiveSudGamePopup.java index 9bb18cb88..09ff270a1 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveSudGamePopup.java +++ b/common/src/main/java/com/yunbao/common/views/LiveSudGamePopup.java @@ -2,6 +2,8 @@ package com.yunbao.common.views; import android.app.Activity; import android.content.Context; +import android.os.Handler; +import android.os.Looper; import android.util.Log; import android.view.View; import android.widget.FrameLayout; @@ -11,6 +13,7 @@ import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import com.alibaba.fastjson.JSONObject; +import com.blankj.utilcode.util.LogUtils; import com.lxj.xpopup.XPopup; import com.lxj.xpopup.core.BottomPopupView; import com.makeramen.roundedimageview.RoundedImageView; @@ -19,7 +22,11 @@ import com.yunbao.common.bean.CheckRemainingBalance; import com.yunbao.common.bean.CreateSudRoomModel; import com.yunbao.common.bean.CustomSidebarChildModel; import com.yunbao.common.bean.CustomSidebarInfoModel; -import com.yunbao.common.dialog.DebugDialog; +import com.yunbao.common.bean.SudGameInfoBean; +import com.yunbao.common.bean.SudGameScoreBean; +import com.yunbao.common.dialog.SudGameDoubleDialog; +import com.yunbao.common.dialog.SudGameMultipleDialog; +import com.yunbao.common.dialog.SudLoadDialog; import com.yunbao.common.event.CheckRemainingBalanceEvent; import com.yunbao.common.event.HideShowEvent; import com.yunbao.common.event.LiveSudGamePopupShowOrHideEvent; @@ -31,9 +38,11 @@ import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.sud.QuickStartGameViewModel; import com.yunbao.common.sud.model.GameConfigModel; +import com.yunbao.common.sud.model.GameViewInfoModel; import com.yunbao.common.sud.state.SudMGPAPPState; import com.yunbao.common.sud.state.SudMGPMGState; import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; @@ -57,6 +66,9 @@ public class LiveSudGamePopup extends BottomPopupView { private TextView gameTitle, roomName, roomNumber; private RoundedImageView mAvatar; private boolean selfClick = false; + private SudGameDoubleDialog sudGameDoubleDialog;//双人游戏弹窗 + private SudGameMultipleDialog sudGameMultipleDialog;//多人游戏弹窗 + private SudLoadDialog sudLoadDialog;//加载弹窗 public LiveSudGamePopup(@NonNull Context context, long interactionID, String liveUid) { super(context); @@ -69,7 +81,22 @@ public class LiveSudGamePopup extends BottomPopupView { mCreateSudRoomModel = createSudRoomModel; mInteractionID = mCreateSudRoomModel.getLongSudGameId(); mLiveUid = mCreateSudRoomModel.getSudGameRoomId(); + //第二次进入时,viewmodel数据丢失,所以初始化时直接获取 + gameViewModel.getScore(mCreateSudRoomModel.getSudGameRoomId(),getActivity()); IMLoginManager.get(context).setSudGame(""); + + // 设置游戏安全操作区域 + GameViewInfoModel.GameViewRectModel gameViewRectModel = new GameViewInfoModel.GameViewRectModel(); + gameViewRectModel.left = 0; + gameViewRectModel.top = DpUtil.dp2px(50); //游戏安全区域 + gameViewRectModel.right = 0; + gameViewRectModel.bottom = DpUtil.dp2px(30); + gameViewModel.gameViewRectModel = gameViewRectModel; + + //初始化结算弹窗 + sudGameDoubleDialog = new SudGameDoubleDialog(context);//双人游戏 + sudGameMultipleDialog = new SudGameMultipleDialog(context);//多人游戏 + sudLoadDialog = new SudLoadDialog(context);//加载弹窗 } // 返回自定义弹窗的布局 @@ -98,7 +125,7 @@ public class LiveSudGamePopup extends BottomPopupView { gameTitle.setText(mCreateSudRoomModel.getSudGameName()); roomName.setText(mCreateSudRoomModel.getRoomName()); roomNumber.setText(mCreateSudRoomModel.getSudGameRoomId()); - ImgLoader.display(getContext(), mCreateSudRoomModel.getAvatar(), mAvatar); + //ImgLoader.display(getContext(), mCreateSudRoomModel.getAvatar(), mAvatar); } ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.exit), new ViewClicksAntiShake.ViewClicksCallBack() { @Override @@ -166,6 +193,7 @@ public class LiveSudGamePopup extends BottomPopupView { gameConfigModel.ui.ping.hide = true; // 配置不隐藏ping值 gameConfigModel.ui.level.hide = true; // 配置不隐藏ping值 gameConfigModel.ui.lobby_game_setting.hide = true; // 配置不隐藏ping值 + gameConfigModel.ui.gameSettle.hide = true;//是否隐藏结算界面(false: 显示; true: 隐藏,默认为 false) gameConfigModel.ui.lobby_players.custom = true; gameConfigModel.ui.join_btn.custom = true; @@ -173,6 +201,29 @@ public class LiveSudGamePopup extends BottomPopupView { gameConfigModel.ui.start_btn.custom = true; // SudMGP平台64bit游戏ID gameViewModel.switchGame((Activity) getContext(), mLiveUid, mInteractionID); + + //游戏结算结束 + gameViewModel.listMutableLiveData.observe(this, sudSettleBeans -> { + if (sudLoadDialog.getClickStatus() == 0) { + sudLoadDialog.dismiss(); + if (gameViewModel.getSudGameScoreBean().getGame_mode() == 1) { + //双人游戏 + sudGameDoubleDialog.setSudSettleList(sudSettleBeans); + sudGameDoubleDialog.showDialog(); + } else { + //多人游戏 + sudGameMultipleDialog.setSudSettleList(sudSettleBeans); + sudGameMultipleDialog.showDialog(); + } + } + }); + + //加载弹窗监听 + sudLoadDialog.setOnDismissListener(() -> { + if (sudLoadDialog.getClickStatus() == 2){ + Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN).setSubReady(false)); + } + }); } private List customSidebarChildModels = new ArrayList<>(); @@ -225,11 +276,14 @@ public class LiveSudGamePopup extends BottomPopupView { switch (event.getSudMGPMGState()) { case SudMGPMGState.MG_COMMON_SELF_CLICK_JOIN_BTN: case SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN: - LiveNetManager.get(getContext()).checkRemainingBalance(mCreateSudRoomModel.getSudGameRoomId(), new HttpCallback() { + //获取筹码信息,检查是否足够 + LiveNetManager.get(getContext()).getScore(mCreateSudRoomModel.getSudGameRoomId(), new HttpCallback() { @Override - public void onSuccess(CheckRemainingBalance data) { - if (data.getGoldenBeanRemainingBalance() == 1) { + public void onSuccess(SudGameScoreBean data) { + if (data.getGolden_bean_remaining_balance() == 1) { + gameViewModel.setSudGameScoreBean(data); gameViewModel.sudFSTAPPDecorator.notifyAPPCommonSelfIn(true, event.getSeatIndex(), true, 1); + gameViewModel.sudFSTAPPDecorator.notifyAPPCommonSelfReady(event.getSubReady()); } else { if (IMLoginManager.get(getContext()).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) { ToastUtil.show("貨幣数量不足 "); @@ -251,9 +305,31 @@ public class LiveSudGamePopup extends BottomPopupView { }); break; case SudMGPMGState.MG_COMMON_GAME_SETTLE: + //结算状态 gameViewModel.sudFSTAPPDecorator.notifyAPPCommonSelfIn(false, event.getSeatIndex(), true, 1); + sudLoadDialog.setClickStatus(0); + sudLoadDialog.setDouble(gameViewModel.getSudGameScoreBean().getGame_mode()); + sudLoadDialog.showDialog(); + //获取用户信息 + LiveNetManager.get(getContext()).getSudGameInfo(mCreateSudRoomModel.getSudGameRoomId(), new HttpCallback>() { + @Override + public void onSuccess(List data) { + if (!data.isEmpty()){ + gameViewModel.setSudGameInfoBeanList(data); + gameViewModel.sudGameRank(event.getMgCommonGameSettle()); + }else { + ToastUtil.show(getContext().getString(R.string.net_error)); + } + } + + @Override + public void onError(String error) { + ToastUtil.show(error); + } + }); break; case SudMGPMGState.MG_COMMON_SELF_CLICK_START_BTN: + //点击开始游戏 LiveNetManager.get(getContext()).gameStartCheckRemainingBalance(mCreateSudRoomModel.getSudGameId(), mCreateSudRoomModel.getSudGameRoomId(), new HttpCallback() { @@ -279,9 +355,9 @@ public class LiveSudGamePopup extends BottomPopupView { break; } - } + @Subscribe(threadMode = ThreadMode.MAIN) public void onSudGameStatus(SubGameEvent event) { if (event.getType() == 0) { diff --git a/common/src/main/java/com/yunbao/common/views/NewRoleFunGamesChildViewHolder.java b/common/src/main/java/com/yunbao/common/views/NewRoleFunGamesChildViewHolder.java index 8cab49049..ef144cbfa 100644 --- a/common/src/main/java/com/yunbao/common/views/NewRoleFunGamesChildViewHolder.java +++ b/common/src/main/java/com/yunbao/common/views/NewRoleFunGamesChildViewHolder.java @@ -1,8 +1,10 @@ package com.yunbao.common.views; +import android.content.Context; import android.text.TextUtils; import android.util.Log; import android.view.View; +import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; @@ -27,8 +29,10 @@ public class NewRoleFunGamesChildViewHolder extends RecyclerView.ViewHolder { private View red_point; private boolean showRed = false; private View total_image_red_point; - public NewRoleFunGamesChildViewHolder(@NonNull View itemView, boolean showRed) { + private Context mContext; + public NewRoleFunGamesChildViewHolder(@NonNull View itemView, boolean showRed, Context mContext) { super(itemView); + this.mContext = mContext; this.showRed = showRed; funGamePic = itemView.findViewById(R.id.fun_game_pic); funGameName = itemView.findViewById(R.id.fun_game_name); diff --git a/common/src/main/java/com/yunbao/common/views/RigtsInterestsViewHolder.java b/common/src/main/java/com/yunbao/common/views/RigtsInterestsViewHolder.java index 0edee2dc5..0b671fdfc 100644 --- a/common/src/main/java/com/yunbao/common/views/RigtsInterestsViewHolder.java +++ b/common/src/main/java/com/yunbao/common/views/RigtsInterestsViewHolder.java @@ -27,7 +27,7 @@ public class RigtsInterestsViewHolder extends RecyclerView.ViewHolder { sendGoodGift = itemView.findViewById(R.id.send_good_gift); childList = itemView.findViewById(R.id.child_list); funGamesAdapter = new FunGamesAdapter(itemView.getContext(), false); - childList.setLayoutManager(new GridLayoutManager(itemView.getContext(), 3)); + childList.setLayoutManager(new GridLayoutManager(itemView.getContext(), 4)); childList.setAdapter(funGamesAdapter); } diff --git a/common/src/main/java/com/yunbao/common/views/SudGameUserListViewHolder.java b/common/src/main/java/com/yunbao/common/views/SudGameUserListViewHolder.java index 0ba2aa016..478dc447b 100644 --- a/common/src/main/java/com/yunbao/common/views/SudGameUserListViewHolder.java +++ b/common/src/main/java/com/yunbao/common/views/SudGameUserListViewHolder.java @@ -4,6 +4,7 @@ import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; @@ -25,15 +26,19 @@ public class SudGameUserListViewHolder extends RecyclerView.ViewHolder { private FrameLayout user_layout; private RoundedImageView sud_game_user; private LinearLayout layout; + private TextView userName; + private FrameLayout vacancy_sud_gameLayout; public SudGameUserListViewHolder(@NonNull View itemView) { super(itemView); vacancy_sud_game = itemView.findViewById(R.id.vacancy_sud_game); + vacancy_sud_gameLayout = itemView.findViewById(R.id.vacancy_sud_gameLayout); sud_game_user = itemView.findViewById(R.id.sud_game_user); user_layout = itemView.findViewById(R.id.user_layout); mic_status = itemView.findViewById(R.id.mic_status); layout = itemView.findViewById(R.id.layout); game_status = itemView.findViewById(R.id.game_status); + userName= itemView.findViewById(R.id.userName); } public void upData(SudGameUserModel sudGameUserModel, SudGameUserListAdapter.SudGameSmallCallBack sudGameSmallCallBack, int position) { @@ -46,7 +51,7 @@ public class SudGameUserListViewHolder extends RecyclerView.ViewHolder { // } // }); if (sudGameUserModel.isNullUser()) { - vacancy_sud_game.setVisibility(View.VISIBLE); + vacancy_sud_gameLayout.setVisibility(View.VISIBLE); user_layout.setVisibility(View.GONE); ViewClicksAntiShake.clicksAntiShake(vacancy_sud_game, new ViewClicksAntiShake.ViewClicksCallBack() { @Override @@ -55,7 +60,7 @@ public class SudGameUserListViewHolder extends RecyclerView.ViewHolder { } }); } else { - vacancy_sud_game.setVisibility(View.GONE); + vacancy_sud_gameLayout.setVisibility(View.GONE); user_layout.setVisibility(View.VISIBLE); ImgLoader.display2(itemView.getContext(), sudGameUserModel.getAvatar(), sud_game_user); if (sudGameUserModel.getMicStatus() == 2) { @@ -71,6 +76,7 @@ public class SudGameUserListViewHolder extends RecyclerView.ViewHolder { } else { game_status.setVisibility(View.GONE); } + userName.setText(sudGameUserModel.getUserNicename()); ViewClicksAntiShake.clicksAntiShake(user_layout, new ViewClicksAntiShake.ViewClicksCallBack() { @Override public void onViewClicks() { diff --git a/common/src/main/java/com/yunbao/common/views/weight/NobleNoticeView.java b/common/src/main/java/com/yunbao/common/views/weight/NobleNoticeView.java index 99ea4e543..2dd5c9411 100644 --- a/common/src/main/java/com/yunbao/common/views/weight/NobleNoticeView.java +++ b/common/src/main/java/com/yunbao/common/views/weight/NobleNoticeView.java @@ -27,6 +27,7 @@ import com.opensource.svgaplayer.SVGAVideoEntity; import com.yunbao.common.R; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.utils.BitmapUtil; +import com.yunbao.common.utils.L; import com.yunbao.common.utils.SVGAViewUtils; import org.jetbrains.annotations.NotNull; @@ -56,6 +57,8 @@ public class NobleNoticeView extends FrameLayout { private HorizontalScrollView contextLayout; private RelativeLayout scrollLayout; private ImageView nobleIcon; + private String anchorUid; + private String mLiveId; public NobleNoticeView(@NonNull Context context) { super(context); @@ -97,9 +100,11 @@ public class NobleNoticeView extends FrameLayout { }); } - public NobleNoticeView setRootView(String uHead, String userNameStr, String anchorNicknameStr, String anchorUid) { + public NobleNoticeView setRootView(String uHead, String userNameStr, String anchorNicknameStr, String anchorUid,String mLiveId) { this.uhead = uHead; this.anchorNicknameStr = anchorNicknameStr.trim(); + this.anchorUid = anchorUid; + this.mLiveId = mLiveId; userName.setText(userNameStr); anchorNickname.setText(anchorNicknameStr.trim()); if (TextUtils.isEmpty(anchorNicknameStr.trim())) { @@ -112,6 +117,10 @@ public class NobleNoticeView extends FrameLayout { findViewById(R.id.anchor_nickname).setVisibility(VISIBLE); openNoble.setText(mContext.getString(R.string.open_noble)); } + if(anchorUid.equals(mLiveId)){ + L.eSw("showBuyVipMessage:"+anchorUid+"__"+mLiveId); + gotoRoomView.setVisibility(GONE); + } return this; } @@ -352,13 +361,15 @@ public class NobleNoticeView extends FrameLayout { gotoRoomView.setLayoutParams(layoutParams); contextLayout.setLayoutParams(contextLayoutParams); if (!TextUtils.isEmpty(anchorNicknameStr)) { - gotoRoomView.setVisibility(VISIBLE); + if(mLiveId.equals(anchorUid)){ + gotoRoomView.setVisibility(GONE); + }else{ + gotoRoomView.setVisibility(VISIBLE); + } findViewById(R.id.in).setVisibility(VISIBLE); findViewById(R.id.anchor_nickname).setVisibility(VISIBLE); } contextLayout.setVisibility(VISIBLE); - - }); } diff --git a/common/src/main/res/drawable/anim_loading_double.xml b/common/src/main/res/drawable/anim_loading_double.xml new file mode 100644 index 000000000..2f726ba5d --- /dev/null +++ b/common/src/main/res/drawable/anim_loading_double.xml @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/common/src/main/res/drawable/anim_loading_multiple.xml b/common/src/main/res/drawable/anim_loading_multiple.xml new file mode 100644 index 000000000..70912948d --- /dev/null +++ b/common/src/main/res/drawable/anim_loading_multiple.xml @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/common/src/main/res/drawable/bg_live_sud_game_top_new.xml b/common/src/main/res/drawable/bg_live_sud_game_top_new.xml index cddd65f5b..784608b98 100644 --- a/common/src/main/res/drawable/bg_live_sud_game_top_new.xml +++ b/common/src/main/res/drawable/bg_live_sud_game_top_new.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/common/src/main/res/drawable/bg_live_sud_list.xml b/common/src/main/res/drawable/bg_live_sud_list.xml index 4216aa85c..ccace1e40 100644 --- a/common/src/main/res/drawable/bg_live_sud_list.xml +++ b/common/src/main/res/drawable/bg_live_sud_list.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/common/src/main/res/drawable/dialog_live_sud_game_name_bg.xml b/common/src/main/res/drawable/dialog_live_sud_game_name_bg.xml new file mode 100644 index 000000000..1c10e92bb --- /dev/null +++ b/common/src/main/res/drawable/dialog_live_sud_game_name_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_achieve_wear_disable.xml b/common/src/main/res/drawable/gift_wall_achieve_wear_disable.xml new file mode 100644 index 000000000..2fcfa1f04 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_achieve_wear_disable.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/common/src/main/res/drawable/gift_wall_achieve_wear_sure.xml b/common/src/main/res/drawable/gift_wall_achieve_wear_sure.xml new file mode 100644 index 000000000..8c8bcb446 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_achieve_wear_sure.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/common/src/main/res/drawable/gift_wall_gift_info_bottom_btn_tips.xml b/common/src/main/res/drawable/gift_wall_gift_info_bottom_btn_tips.xml new file mode 100644 index 000000000..a8934c264 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_gift_info_bottom_btn_tips.xml @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_gift_info_btn.xml b/common/src/main/res/drawable/gift_wall_gift_info_btn.xml new file mode 100644 index 000000000..83a17d467 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_gift_info_btn.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_gift_info_btn_un.xml b/common/src/main/res/drawable/gift_wall_gift_info_btn_un.xml new file mode 100644 index 000000000..f4234ae23 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_gift_info_btn_un.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_gift_info_lighten.xml b/common/src/main/res/drawable/gift_wall_gift_info_lighten.xml new file mode 100644 index 000000000..775388468 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_gift_info_lighten.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_gift_info_list_btn_down.xml b/common/src/main/res/drawable/gift_wall_gift_info_list_btn_down.xml new file mode 100644 index 000000000..faf44ecf9 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_gift_info_list_btn_down.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_gift_info_list_btn_up.xml b/common/src/main/res/drawable/gift_wall_gift_info_list_btn_up.xml new file mode 100644 index 000000000..06cade22e --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_gift_info_list_btn_up.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_gift_info_progres.xml b/common/src/main/res/drawable/gift_wall_gift_info_progres.xml new file mode 100644 index 000000000..2a8fb6f44 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_gift_info_progres.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_gift_info_un_lighten.xml b/common/src/main/res/drawable/gift_wall_gift_info_un_lighten.xml new file mode 100644 index 000000000..dc4761119 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_gift_info_un_lighten.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_main_tab_list_item_progres.xml b/common/src/main/res/drawable/gift_wall_main_tab_list_item_progres.xml new file mode 100644 index 000000000..3e1da33e2 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_main_tab_list_item_progres.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_man_tab2_dsl.xml b/common/src/main/res/drawable/gift_wall_man_tab2_dsl.xml new file mode 100644 index 000000000..4caa9da97 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_man_tab2_dsl.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/gift_wall_man_tab_list_title.xml b/common/src/main/res/drawable/gift_wall_man_tab_list_title.xml new file mode 100644 index 000000000..e62c38a90 --- /dev/null +++ b/common/src/main/res/drawable/gift_wall_man_tab_list_title.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/order_level_progress_bg.xml b/common/src/main/res/drawable/order_level_progress_bg.xml index 587aa4c17..ebd60c369 100644 --- a/common/src/main/res/drawable/order_level_progress_bg.xml +++ b/common/src/main/res/drawable/order_level_progress_bg.xml @@ -14,7 +14,7 @@ - + diff --git a/common/src/main/res/drawable/shape_sub_rank.xml b/common/src/main/res/drawable/shape_sub_rank.xml new file mode 100644 index 000000000..a0d1f44c4 --- /dev/null +++ b/common/src/main/res/drawable/shape_sub_rank.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/activity_sud_game.xml b/common/src/main/res/layout/activity_sud_game.xml index 7688f57b5..06a8c86b6 100644 --- a/common/src/main/res/layout/activity_sud_game.xml +++ b/common/src/main/res/layout/activity_sud_game.xml @@ -2,6 +2,8 @@ @@ -14,17 +16,25 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> - - + - - + android:textSize="8sp" /> - + android:layout_height="50dp" + android:layout_marginTop="93dp"> diff --git a/common/src/main/res/layout/dialog_gift_wall.xml b/common/src/main/res/layout/dialog_gift_wall.xml new file mode 100644 index 000000000..e27b0294c --- /dev/null +++ b/common/src/main/res/layout/dialog_gift_wall.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/dialog_gift_wall_achieve.xml b/common/src/main/res/layout/dialog_gift_wall_achieve.xml new file mode 100644 index 000000000..f4404fefc --- /dev/null +++ b/common/src/main/res/layout/dialog_gift_wall_achieve.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/dialog_gift_wall_achieve_wear.xml b/common/src/main/res/layout/dialog_gift_wall_achieve_wear.xml new file mode 100644 index 000000000..de528a426 --- /dev/null +++ b/common/src/main/res/layout/dialog_gift_wall_achieve_wear.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/dialog_gift_wall_achieve_wear_item.xml b/common/src/main/res/layout/dialog_gift_wall_achieve_wear_item.xml new file mode 100644 index 000000000..6bcbcd300 --- /dev/null +++ b/common/src/main/res/layout/dialog_gift_wall_achieve_wear_item.xml @@ -0,0 +1,37 @@ + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/dialog_gift_wall_gift_info.xml b/common/src/main/res/layout/dialog_gift_wall_gift_info.xml new file mode 100644 index 000000000..7c2097297 --- /dev/null +++ b/common/src/main/res/layout/dialog_gift_wall_gift_info.xml @@ -0,0 +1,385 @@ + + + + + + + + + + + + +