From 5163c2dc9da50ede7f00f0be99fbd66a1e0e912b Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 23 Oct 2023 20:15:02 +0800 Subject: [PATCH 01/14] =?UTF-8?q?feat:=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=8F=91=E7=BA=A2=E5=8C=85=E5=BC=B9=E7=AA=97UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avroom/dialog/RoomOperationDialog.java | 4 +- .../send/PrivateRedPackageEditorFragment.kt | 121 ++++++ .../send/PublicRedPackageEditorFragment.kt | 17 + .../redpackage/send/RedPackageSendDialog2.kt | 62 +++ .../send/RedPackageTypeItemAdapter.kt | 71 +++ .../redpackage/send/TabIndicatorAdapter.java | 117 +++++ .../adapter/ContactsIndicatorAdapter.java | 12 +- .../erban/ui/setting/SettingActivity.kt | 8 + .../yizhuan/erban/view/WrapHeightViewPager.kt | 37 ++ .../res/drawable/red_package_bg_balance.xml | 11 + .../drawable/red_package_bg_type_selected.xml | 9 + .../drawable/shape_g_ff6060_ff225c_26_lr.xml | 9 + .../layout/red_package_private_fragment.xml | 231 ++++++++++ app/src/main/res/values/colors.xml | 4 + app/src/main/res/values/strings.xml | 9 + .../res/drawable-xxhdpi/red_package_bg.webp | Bin 0 -> 114338 bytes .../res/drawable-xxhdpi/red_package_ic.webp | Bin 0 -> 5692 bytes .../red_package_ic_diamond.webp | Bin 0 -> 3654 bytes .../res/drawable/red_package_ic_add.xml | 12 + .../res/drawable/red_package_ic_help.xml | 22 + .../res/drawable/shape_f8f8fa_8.xml | 7 + .../res/layout/dialog_red_package_send2.xml | 88 ++++ .../layout/red_package_private_item_type.xml | 37 ++ .../layout/red_package_public_fragment.xml | 174 ++++++++ library/build.gradle | 5 + .../net/rxnet/manager/RxNetManager.java | 3 + .../common/application/BaseApp.java | 1 + .../java/com/chuhai/utils/AppUtils.java | 403 ++++++++++++++++++ .../java/com/chuhai/utils/ktx/ResourcesKtx.kt | 195 +++++++++ library/src/module_utils/res/values/ids.xml | 5 + .../src/module_utils/res/values/strings.xml | 3 + 31 files changed, 1670 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageTypeItemAdapter.kt create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/TabIndicatorAdapter.java create mode 100644 app/src/main/java/com/yizhuan/erban/view/WrapHeightViewPager.kt create mode 100644 app/src/main/res/drawable/red_package_bg_balance.xml create mode 100644 app/src/main/res/drawable/red_package_bg_type_selected.xml create mode 100644 app/src/main/res/drawable/shape_g_ff6060_ff225c_26_lr.xml create mode 100644 app/src/main/res/layout/red_package_private_fragment.xml create mode 100644 app/src/module_super_admin/res/drawable-xxhdpi/red_package_bg.webp create mode 100644 app/src/module_super_admin/res/drawable-xxhdpi/red_package_ic.webp create mode 100644 app/src/module_super_admin/res/drawable-xxhdpi/red_package_ic_diamond.webp create mode 100644 app/src/module_super_admin/res/drawable/red_package_ic_add.xml create mode 100644 app/src/module_super_admin/res/drawable/red_package_ic_help.xml create mode 100644 app/src/module_super_admin/res/drawable/shape_f8f8fa_8.xml create mode 100644 app/src/module_super_admin/res/layout/dialog_red_package_send2.xml create mode 100644 app/src/module_super_admin/res/layout/red_package_private_item_type.xml create mode 100644 app/src/module_super_admin/res/layout/red_package_public_fragment.xml create mode 100644 library/src/module_utils/java/com/chuhai/utils/AppUtils.java create mode 100644 library/src/module_utils/java/com/chuhai/utils/ktx/ResourcesKtx.kt create mode 100644 library/src/module_utils/res/values/ids.xml create mode 100644 library/src/module_utils/res/values/strings.xml diff --git a/app/src/main/java/com/yizhuan/erban/avroom/dialog/RoomOperationDialog.java b/app/src/main/java/com/yizhuan/erban/avroom/dialog/RoomOperationDialog.java index 7e3674f47..54455de41 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/dialog/RoomOperationDialog.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/dialog/RoomOperationDialog.java @@ -341,7 +341,9 @@ public class RoomOperationDialog extends BottomSheetDialog { * @param optAdapter */ private void addRedPacketAction(OptAdapter optAdapter) { - if (AvRoomDataManager.get().isRedEnvelopeOpen()) { + // TODO 临时打开 +// if (AvRoomDataManager.get().isRedEnvelopeOpen()) { + if (true) { RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; if (roomInfo == null) { return; diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt new file mode 100644 index 000000000..5f4f92f3b --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt @@ -0,0 +1,121 @@ +package com.yizhuan.erban.avroom.redpackage.send + +import android.graphics.Color +import androidx.core.view.isVisible +import com.chuhai.utils.ktx.getColorById +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseBindingFragment +import com.yizhuan.erban.databinding.RedPackagePrivateFragmentBinding +import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil +import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration +import com.yizhuan.xchat_android_library.annatation.ActLayoutRes + +/** + * Created by Max on 2023/10/23 12:14 + * Desc: + **/ +@ActLayoutRes(R.layout.red_package_private_fragment) +class PrivateRedPackageEditorFragment : BaseBindingFragment() { + override fun initiate() { + initTypeView() + updateTimeView(true) + } + + override fun onSetListener() { + super.onSetListener() + mBinding.tvNow.setOnClickListener { + updateTimeView(true) + } + mBinding.tvDelay.setOnClickListener { + updateTimeView(false) + } + } + + private fun initTypeView() { + mBinding.recyclerView.addItemDecoration( + ColorDecoration( + Color.TRANSPARENT, UIUtil.dip2px(context, 6.0), 0, false + ) + ) + val list = ArrayList() + list.add( + RedPackageTypeItemAdapter.ItemData( + "UNLIMITED", + R.string.red_package_type_unlimited_name, + R.string.red_package_type_unlimited_tips + ) + ) + list.add( + RedPackageTypeItemAdapter.ItemData( + "FOLLOW", + R.string.red_package_type_follow_name, + R.string.red_package_type_follow_tips + ) + ) + list.add( + RedPackageTypeItemAdapter.ItemData( + "SHARE", + R.string.red_package_type_share_name, + R.string.red_package_type_share_tips + ) + ) + list.add( + RedPackageTypeItemAdapter.ItemData( + "MSG", + R.string.red_package_type_msg_name, + R.string.red_package_type_msg_tips + ) + ) + val adapter = RedPackageTypeItemAdapter(list) + adapter.setOnItemClickListener { _, view, position -> + adapter.select(position) + updateTypeView(adapter.getSelect()?.type) + } + mBinding.recyclerView.adapter = adapter + // 默认选择第一个 + adapter.select(0) + updateTypeView(adapter.getSelect()?.type) + } + + /** + * 更新红包类型对应的视图 + */ + private fun updateTypeView(type: String?) { + when (type) { + "UNLIMITED" -> { + mBinding.tvNow.isVisible = true + mBinding.tvDelay.isVisible = true + mBinding.etText.isVisible = false + } + + "MSG" -> { + mBinding.tvNow.isVisible = false + mBinding.tvDelay.isVisible = false + mBinding.etText.isVisible = true + } + + else -> { + mBinding.tvNow.isVisible = false + mBinding.tvDelay.isVisible = false + mBinding.etText.isVisible = false + } + } + } + + /** + * 更新时间选项 + */ + private fun updateTimeView(nowOrDelay: Boolean) { + if (nowOrDelay) { + mBinding.tvNow.setBackgroundResource(R.drawable.red_package_bg_type_selected) + mBinding.tvDelay.setBackgroundResource(R.drawable.shape_f8f8fa_8) + mBinding.tvNow.setTextColor(mBinding.root.context.getColorById(R.color.color_FF285C)) + mBinding.tvDelay.setTextColor(mBinding.root.context.getColorById(R.color.color_767585)) + } else { + mBinding.tvNow.setBackgroundResource(R.drawable.shape_f8f8fa_8) + mBinding.tvDelay.setBackgroundResource(R.drawable.red_package_bg_type_selected) + mBinding.tvNow.setTextColor(mBinding.root.context.getColorById(R.color.color_767585)) + mBinding.tvDelay.setTextColor(mBinding.root.context.getColorById(R.color.color_FF285C)) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt new file mode 100644 index 000000000..12b94ff0f --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt @@ -0,0 +1,17 @@ +package com.yizhuan.erban.avroom.redpackage.send + +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseBindingFragment +import com.yizhuan.erban.databinding.RedPackagePrivateFragmentBinding +import com.yizhuan.erban.databinding.RedPackagePublicFragmentBinding +import com.yizhuan.xchat_android_library.annatation.ActLayoutRes + +/** + * Created by Max on 2023/10/23 12:14 + * Desc: + **/ +@ActLayoutRes(R.layout.red_package_public_fragment) +class PublicRedPackageEditorFragment : BaseBindingFragment() { + override fun initiate() { + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt new file mode 100644 index 000000000..4873edb94 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt @@ -0,0 +1,62 @@ +package com.yizhuan.erban.avroom.redpackage.send + + +import android.annotation.SuppressLint +import android.view.Gravity +import android.view.WindowManager +import com.yizhuan.erban.R +import com.yizhuan.erban.avroom.redpackage.RedPackageEvent +import com.yizhuan.erban.base.BaseDialog +import com.yizhuan.erban.common.ViewPagerAdapter +import com.yizhuan.erban.databinding.DialogRedPackageSend2Binding +import com.yizhuan.erban.home.adapter.ContactsIndicatorAdapter +import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator +import com.yizhuan.xchat_android_core.redpackage.* +import com.yizhuan.xchat_android_library.annatation.ActLayoutRes +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode + +@ActLayoutRes(R.layout.dialog_red_package_send2) +class RedPackageSendDialog2 : BaseDialog() { + + override fun onStart() { + gravity = Gravity.BOTTOM + width = WindowManager.LayoutParams.MATCH_PARENT + height = WindowManager.LayoutParams.WRAP_CONTENT + super.onStart() + } + + @SuppressLint("SetTextI18n") + override fun init() { + EventBus.getDefault().register(this) + val tabTitles = arrayListOf("厅内红包", "全服红包") + val topMagicIndicatorAdapter = ContactsIndicatorAdapter(context, tabTitles, 1) + topMagicIndicatorAdapter.setOnItemSelectListener { + binding.viewPager.currentItem = it + } + val commonNavigator = CommonNavigator(context) + commonNavigator.isAdjustMode = true + commonNavigator.adapter = topMagicIndicatorAdapter + binding.tabLayout.navigator = commonNavigator + val fragments = + arrayListOf(PrivateRedPackageEditorFragment(), PublicRedPackageEditorFragment()) + binding.viewPager.adapter = ViewPagerAdapter( + childFragmentManager, + fragments.toList(), + null + ) + ViewPagerHelper.bind(binding.tabLayout, binding.viewPager) + } + + override fun onDestroy() { + super.onDestroy() + EventBus.getDefault().unregister(this) + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun handleRedPackageDialog(event: RedPackageEvent?) { + dismissAllowingStateLoss() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageTypeItemAdapter.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageTypeItemAdapter.kt new file mode 100644 index 000000000..1d5eb05b1 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageTypeItemAdapter.kt @@ -0,0 +1,71 @@ +package com.yizhuan.erban.avroom.redpackage.send + +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.chuhai.utils.ktx.getColorById +import com.yizhuan.erban.R +import io.realm.internal.Keep + +/** + * Created by Max on 2023/10/23 18:02 + * Desc: + **/ +class RedPackageTypeItemAdapter(list: List) : + BaseQuickAdapter( + R.layout.red_package_private_item_type, + list + ) { + + private var selectPosition = -1 + + @Keep + data class ItemData(val type: String, val name: Int, val tips: Int) + + override fun convert(helper: BaseViewHolder, item: ItemData) { + helper.setText(R.id.tv_name, item.name) + helper.setText(R.id.tv_tips, item.tips) + convertState(helper, item) + } + + override fun convertPayloads( + helper: BaseViewHolder, + item: ItemData, + payloads: MutableList + ) { + super.convertPayloads(helper, item, payloads) + convertState(helper, item) + } + + private fun convertState(helper: BaseViewHolder, item: ItemData) { + if (helper.bindingAdapterPosition == selectPosition) { + helper.setBackgroundRes(R.id.layout_root, R.drawable.red_package_bg_type_selected) + helper.setTextColor( + R.id.tv_name, + helper.itemView.context.getColorById(R.color.color_FF285C) + ) + helper.setTextColor( + R.id.tv_tips, + helper.itemView.context.getColorById(R.color.color_FF285C) + ) + } else { + helper.setBackgroundRes(R.id.layout_root, R.drawable.shape_f8f8fa_8) + helper.setTextColor( + R.id.tv_name, + helper.itemView.context.getColorById(R.color.color_767585) + ) + helper.setTextColor( + R.id.tv_tips, + helper.itemView.context.getColorById(R.color.color_94959C) + ) + } + } + + fun select(position: Int) { + this.selectPosition = position + notifyItemRangeChanged(0, itemCount, true) + } + + fun getSelect(): ItemData? { + return data.getOrNull(selectPosition) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/TabIndicatorAdapter.java b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/TabIndicatorAdapter.java new file mode 100644 index 000000000..ec3905747 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/TabIndicatorAdapter.java @@ -0,0 +1,117 @@ +package com.yizhuan.erban.avroom.redpackage.send; + +import android.content.Context; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; + +import androidx.appcompat.widget.AppCompatTextView; + +import com.yizhuan.erban.R; +import com.yizhuan.erban.common.util.Utils; +import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil; +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter; +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator; +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView; +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator; + +import java.util.List; + +/** + * @author jack + * @Description + * @Date 2018/11/1 + */ +public class TabIndicatorAdapter extends CommonNavigatorAdapter { + private List mTitleList; + private Context mContext; + private int mBottomMargin; + + public TabIndicatorAdapter(Context mContext, List mTitleList, int bottomMargin) { + this.mTitleList = mTitleList; + this.mContext = mContext; + mBottomMargin = bottomMargin; + } + + @Override + public int getCount() { + return mTitleList == null ? 0 : mTitleList.size(); + } + + @Override + public IPagerTitleView getTitleView(Context context, int index) { + ContactsPagerTitleView categoryPagerTitleView = new ContactsPagerTitleView(context, mTitleList.get(index)); + categoryPagerTitleView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (null != mOnItemSelectListener) { + mOnItemSelectListener.onItemSelect(index); + } + } + }); + return categoryPagerTitleView; + } + + @Override + public IPagerIndicator getIndicator(Context context) { + LinePagerIndicator indicator = new LinePagerIndicator(context); + indicator.setMode(LinePagerIndicator.MODE_EXACTLY); + indicator.setLineHeight(UIUtil.dip2px(mContext, 5)); + indicator.setRoundRadius(UIUtil.dip2px(mContext, 5)); + indicator.setLineWidth(UIUtil.dip2px(mContext, 9)); + indicator.setColors(context.getResources().getColor(R.color.app_248cfe)); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); + lp.bottomMargin = mBottomMargin; + indicator.setLayoutParams(lp); + return indicator; + } + + private OnItemSelectListener mOnItemSelectListener; + + public void setOnItemSelectListener(OnItemSelectListener onItemSelectListener) { + mOnItemSelectListener = onItemSelectListener; + } + + public interface OnItemSelectListener { + void onItemSelect(int position); + } + + class ContactsPagerTitleView extends AppCompatTextView implements IPagerTitleView { + + + public ContactsPagerTitleView(Context context, String tabInfo) { + super(context); + setHeight(Utils.dip2px(getContext(), 30)); + setTextSize(16); + setText(tabInfo); + setGravity(Gravity.CENTER); + + } + + + @Override + public void onSelected(int index, int totalCount) { +// setBackgroundResource(R.drawable.shape_bg_contact_indicator_item); + setTextColor(getResources().getColor(R.color.color_333333)); + } + + @Override + public void onDeselected(int index, int totalCount) { +// setBackgroundDrawable(null); + setTextColor(getResources().getColor(R.color.color_666666)); + } + + @Override + public void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) { + + } + + @Override + public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) { + + } + } + + +} diff --git a/app/src/main/java/com/yizhuan/erban/home/adapter/ContactsIndicatorAdapter.java b/app/src/main/java/com/yizhuan/erban/home/adapter/ContactsIndicatorAdapter.java index 3f2853ea8..deb4f7745 100644 --- a/app/src/main/java/com/yizhuan/erban/home/adapter/ContactsIndicatorAdapter.java +++ b/app/src/main/java/com/yizhuan/erban/home/adapter/ContactsIndicatorAdapter.java @@ -57,10 +57,10 @@ public class ContactsIndicatorAdapter extends CommonNavigatorAdapter { public IPagerIndicator getIndicator(Context context) { LinePagerIndicator indicator = new LinePagerIndicator(context); indicator.setMode(LinePagerIndicator.MODE_EXACTLY); - indicator.setLineHeight(UIUtil.dip2px(mContext, 5)); - indicator.setRoundRadius(UIUtil.dip2px(mContext, 5)); - indicator.setLineWidth(UIUtil.dip2px(mContext, 9)); - indicator.setColors(context.getResources().getColor(R.color.app_248cfe)); + indicator.setLineHeight(UIUtil.dip2px(mContext, 4)); + indicator.setRoundRadius(UIUtil.dip2px(mContext, 4)); + indicator.setLineWidth(UIUtil.dip2px(mContext, 12)); + indicator.setColors(context.getResources().getColor(R.color.color_FF285C)); FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); lp.bottomMargin = mBottomMargin; indicator.setLayoutParams(lp); @@ -82,8 +82,8 @@ public class ContactsIndicatorAdapter extends CommonNavigatorAdapter { public ContactsPagerTitleView(Context context, String tabInfo) { super(context); - setHeight(Utils.dip2px(getContext(), 30)); - setTextSize(16); + setHeight(Utils.dip2px(getContext(), 25)); + setTextSize(18); setText(tabInfo); setGravity(Gravity.CENTER); diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt index 00481a7ba..64ab86c65 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt @@ -8,8 +8,10 @@ import android.text.SpannableString import android.view.View import com.netease.nim.uikit.StatusBarUtil import com.tongdaxing.erban.upgrade.AppUpgradeHelper +import com.yizhuan.erban.BuildConfig import com.yizhuan.erban.R import com.yizhuan.erban.UIHelper +import com.yizhuan.erban.avroom.redpackage.send.RedPackageSendDialog2 import com.yizhuan.erban.base.BaseViewBindingActivity import com.yizhuan.erban.common.widget.dialog.DialogManager.OkCancelDialogListener import com.yizhuan.erban.databinding.ActivitySettingBinding @@ -74,6 +76,12 @@ class SettingActivity : BaseViewBindingActivity(), View. binding.tvShieldManager.setOnClickListener(this) binding.rlyPermission.setOnClickListener(this) binding.rlyCheck.setOnClickListener(this) + + if (BuildConfig.DEBUG) { + binding.titleBar.setOnTitleClickListener { + RedPackageSendDialog2().show(this) + } + } } @SuppressLint("CheckResult") diff --git a/app/src/main/java/com/yizhuan/erban/view/WrapHeightViewPager.kt b/app/src/main/java/com/yizhuan/erban/view/WrapHeightViewPager.kt new file mode 100644 index 000000000..2b1523560 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/view/WrapHeightViewPager.kt @@ -0,0 +1,37 @@ +package com.yizhuan.erban.view + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import androidx.viewpager.widget.ViewPager + +/** + * Created by Max on 2022/10/10 15:30 + * 高度自适应(采用最大的子页面高度)-ViewPager + */ +class WrapHeightViewPager : ViewPager { + + constructor(context: Context) : this(context, null) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + var height = 0 + for (i in 0 until childCount) { + val child: View = getChildAt(i) + child.measure( + widthMeasureSpec, + MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED) + ) + val h = child.measuredHeight + if (h > height) { + height = h + } + } + super.onMeasure( + widthMeasureSpec, MeasureSpec.makeMeasureSpec( + height, + MeasureSpec.EXACTLY + ) + ) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/red_package_bg_balance.xml b/app/src/main/res/drawable/red_package_bg_balance.xml new file mode 100644 index 000000000..563c60cf1 --- /dev/null +++ b/app/src/main/res/drawable/red_package_bg_balance.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/red_package_bg_type_selected.xml b/app/src/main/res/drawable/red_package_bg_type_selected.xml new file mode 100644 index 000000000..a93199994 --- /dev/null +++ b/app/src/main/res/drawable/red_package_bg_type_selected.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_g_ff6060_ff225c_26_lr.xml b/app/src/main/res/drawable/shape_g_ff6060_ff225c_26_lr.xml new file mode 100644 index 000000000..2e88e8183 --- /dev/null +++ b/app/src/main/res/drawable/shape_g_ff6060_ff225c_26_lr.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/red_package_private_fragment.xml b/app/src/main/res/layout/red_package_private_fragment.xml new file mode 100644 index 000000000..5eda54be8 --- /dev/null +++ b/app/src/main/res/layout/red_package_private_fragment.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index eeb12a542..953d48518 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -703,5 +703,9 @@ #1E686868 #9E9EA8 #001338 + #FF285C + #322F4D + #EBEEF5 + #94959C diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f2081ca9c..eacc4899c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5143,4 +5143,13 @@ 當前無需選擇解鎖禮物 選擇解鎖禮物 + 無門檻紅包 + 所有人均可參與 + 關註紅包 + 關註主播可參與 + 分享紅包 + 分享房間可參與 + 發彈幕紅包 + 發指定彈幕內容 + \ No newline at end of file diff --git a/app/src/module_super_admin/res/drawable-xxhdpi/red_package_bg.webp b/app/src/module_super_admin/res/drawable-xxhdpi/red_package_bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..7c7c844ba3a24ebe1f0e5f529a9626274cb0e781 GIT binary patch literal 114338 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 F0064`mfHXT literal 0 HcmV?d00001 diff --git a/app/src/module_super_admin/res/drawable-xxhdpi/red_package_ic.webp b/app/src/module_super_admin/res/drawable-xxhdpi/red_package_ic.webp new file mode 100644 index 0000000000000000000000000000000000000000..07bf608f571a7b419addb77f188d02e605d2b419 GIT binary patch literal 5692 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 literal 0 HcmV?d00001 diff --git a/app/src/module_super_admin/res/drawable-xxhdpi/red_package_ic_diamond.webp b/app/src/module_super_admin/res/drawable-xxhdpi/red_package_ic_diamond.webp new file mode 100644 index 0000000000000000000000000000000000000000..12623a70deee45b1baf469852819c9644c1723a7 GIT binary patch literal 3654 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 Ydxo+=JOGnnm}MwHdc1@JhCrWJXTtpj`v3p{ literal 0 HcmV?d00001 diff --git a/app/src/module_super_admin/res/drawable/red_package_ic_add.xml b/app/src/module_super_admin/res/drawable/red_package_ic_add.xml new file mode 100644 index 000000000..c774d9f61 --- /dev/null +++ b/app/src/module_super_admin/res/drawable/red_package_ic_add.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/module_super_admin/res/drawable/red_package_ic_help.xml b/app/src/module_super_admin/res/drawable/red_package_ic_help.xml new file mode 100644 index 000000000..c3905e0c2 --- /dev/null +++ b/app/src/module_super_admin/res/drawable/red_package_ic_help.xml @@ -0,0 +1,22 @@ + + + + diff --git a/app/src/module_super_admin/res/drawable/shape_f8f8fa_8.xml b/app/src/module_super_admin/res/drawable/shape_f8f8fa_8.xml new file mode 100644 index 000000000..103f85690 --- /dev/null +++ b/app/src/module_super_admin/res/drawable/shape_f8f8fa_8.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/module_super_admin/res/layout/dialog_red_package_send2.xml b/app/src/module_super_admin/res/layout/dialog_red_package_send2.xml new file mode 100644 index 000000000..c79a6dac0 --- /dev/null +++ b/app/src/module_super_admin/res/layout/dialog_red_package_send2.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/module_super_admin/res/layout/red_package_private_item_type.xml b/app/src/module_super_admin/res/layout/red_package_private_item_type.xml new file mode 100644 index 000000000..11495e7cf --- /dev/null +++ b/app/src/module_super_admin/res/layout/red_package_private_item_type.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/module_super_admin/res/layout/red_package_public_fragment.xml b/app/src/module_super_admin/res/layout/red_package_public_fragment.xml new file mode 100644 index 000000000..b94af206f --- /dev/null +++ b/app/src/module_super_admin/res/layout/red_package_public_fragment.xml @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/library/build.gradle b/library/build.gradle index 49eb74e47..3f2cc8384 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -35,6 +35,7 @@ android { 'src/module_luban/java', 'src/module_easyphoto/java', 'src/module_common/java', + 'src/module_utils/java', ] @@ -43,6 +44,7 @@ android { 'src/module_easypermission/res', 'src/module_easyphoto/res', 'src/module_common/res', + 'src/module_utils/res', ] @@ -144,6 +146,9 @@ dependencies { api 'com.facebook.android:facebook-android-sdk:16.2.0' api 'com.facebook.android:facebook-login:16.2.0' + // 网络请求chrome数据调试 + implementation 'com.facebook.stetho:stetho:1.5.1' + implementation 'com.facebook.stetho:stetho-okhttp3:1.5.1' } repositories { mavenCentral() diff --git a/library/src/main/java/com/yizhuan/xchat_android_library/net/rxnet/manager/RxNetManager.java b/library/src/main/java/com/yizhuan/xchat_android_library/net/rxnet/manager/RxNetManager.java index f3e6d6813..bcb5187d1 100644 --- a/library/src/main/java/com/yizhuan/xchat_android_library/net/rxnet/manager/RxNetManager.java +++ b/library/src/main/java/com/yizhuan/xchat_android_library/net/rxnet/manager/RxNetManager.java @@ -4,6 +4,7 @@ import android.content.Context; import android.os.Build; import android.util.Log; +import com.facebook.stetho.okhttp3.StethoInterceptor; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.yizhuan.xchat_android_library.BuildConfig; @@ -70,6 +71,8 @@ public final class RxNetManager { }); loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); mBuilder.addInterceptor(loggingInterceptor); + + mBuilder.addNetworkInterceptor(new StethoInterceptor()); } for (Interceptor interceptor : interceptors) { diff --git a/library/src/module_common/java/com/yizhuan/xchat_android_library/common/application/BaseApp.java b/library/src/module_common/java/com/yizhuan/xchat_android_library/common/application/BaseApp.java index 58ee9d3b5..b8a0fa251 100644 --- a/library/src/module_common/java/com/yizhuan/xchat_android_library/common/application/BaseApp.java +++ b/library/src/module_common/java/com/yizhuan/xchat_android_library/common/application/BaseApp.java @@ -26,6 +26,7 @@ public abstract class BaseApp extends Application{ public static void init(Application application) { gContext = application; + com.chuhai.utils.AppUtils.init(application); } /** diff --git a/library/src/module_utils/java/com/chuhai/utils/AppUtils.java b/library/src/module_utils/java/com/chuhai/utils/AppUtils.java new file mode 100644 index 000000000..c232c3605 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/AppUtils.java @@ -0,0 +1,403 @@ +package com.chuhai.utils; + +import android.annotation.SuppressLint; +import android.app.ActivityManager; +import android.app.Application; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.location.LocationManager; +import android.os.Handler; +import android.os.Looper; +import android.provider.Settings; +import android.text.TextUtils; +import android.view.View; +import android.view.Window; +import android.view.inputmethod.InputMethodManager; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + *

+ *     author:
+ *                                      ___           ___           ___         ___
+ *         _____                       /  /\         /__/\         /__/|       /  /\
+ *        /  /::\                     /  /::\        \  \:\       |  |:|      /  /:/
+ *       /  /:/\:\    ___     ___    /  /:/\:\        \  \:\      |  |:|     /__/::\
+ *      /  /:/~/::\  /__/\   /  /\  /  /:/~/::\   _____\__\:\   __|  |:|     \__\/\:\
+ *     /__/:/ /:/\:| \  \:\ /  /:/ /__/:/ /:/\:\ /__/::::::::\ /__/\_|:|____    \  \:\
+ *     \  \:\/:/~/:/  \  \:\  /:/  \  \:\/:/__\/ \  \:\~~\~~\/ \  \:\/:::::/     \__\:\
+ *      \  \::/ /:/    \  \:\/:/    \  \::/       \  \:\  ~~~   \  \::/~~~~      /  /:/
+ *       \  \:\/:/      \  \::/      \  \:\        \  \:\        \  \:\         /__/:/
+ *        \  \::/        \__\/        \  \:\        \  \:\        \  \:\        \__\/
+ *         \__\/                       \__\/         \__\/         \__\/
+ *     blog  : http://blankj.com
+ *     time  : 16/12/08
+ *     desc  : utils about initialization
+ * 
+ */ +public final class AppUtils { + + private static final ExecutorService UTIL_POOL = Executors.newFixedThreadPool(3); + private static final Handler UTIL_HANDLER = new Handler(Looper.getMainLooper()); + + @SuppressLint("StaticFieldLeak") + private static Application sApplication; + + + private AppUtils() { + throw new UnsupportedOperationException("u can't instantiate me..."); + } + + /** + * Init utils. + *

Init it in the class of Application.

+ * + * @param context context + */ + public static void init(final Context context) { + if (context == null) { + init(getApplicationByReflect()); + return; + } + init((Application) context.getApplicationContext()); + } + + /** + * Init utils. + *

Init it in the class of Application.

+ * + * @param app application + */ + public static void init(final Application app) { + if (sApplication == null) { + if (app == null) { + sApplication = getApplicationByReflect(); + } else { + sApplication = app; + } + } else { + sApplication = app; + } + } + + /** + * Return the context of Application object. + * + * @return the context of Application object + */ + public static Application getApp() { + if (sApplication != null) return sApplication; + Application app = getApplicationByReflect(); + init(app); + return app; + } + + + public static String getPackageName(Context context) { + return context.getPackageName(); + } + + /** + * 获取版本名 + * + * @param noSuffix 是否去掉后缀 (如:-debug、-test) + */ + public static String getVersionName(boolean noSuffix) { + PackageInfo packageInfo = getPackageInfo(getApp()); + if (packageInfo != null) { + String versionName = packageInfo.versionName; + if (noSuffix && versionName != null) { + int index = versionName.indexOf("-"); + if (index >= 0) { + return versionName.substring(0, index); + } + } + return versionName; + } + return ""; + } + + //版本号 + public static int getVersionCode() { + PackageInfo packageInfo = getPackageInfo(getApp()); + if (packageInfo != null) { + return packageInfo.versionCode; + } + return 0; + } + + /** + * 比较版本 + * 1 = 大于当前版本 + * 0 = 版本一样 + * -1 = 当前版本大于更新版本 + */ + public static int compareVersionNames(String newVersionName) { + try { + if (TextUtils.isEmpty(newVersionName)) { + return -1; + } + int res = 0; + String currentVersionName = getVersionName(true); + if (currentVersionName.equals(newVersionName)) { + return 0; + } + + String[] oldNumbers = currentVersionName.split("\\."); + String[] newNumbers = newVersionName.split("\\."); + + // To avoid IndexOutOfBounds + int minIndex = Math.min(oldNumbers.length, newNumbers.length); + + for (int i = 0; i < minIndex; i++) { + int oldVersionPart = Integer.parseInt(oldNumbers[i]); + int newVersionPart = Integer.parseInt(newNumbers[i]); + + if (oldVersionPart < newVersionPart) { + res = 1; + break; + } else if (oldVersionPart > newVersionPart) { + res = -1; + break; + } + } + + // If versions are the same so far, but they have different length... + if (res == 0 && oldNumbers.length != newNumbers.length) { + res = (oldNumbers.length > newNumbers.length) ? -1 : 1; + } + + return res; + } catch (Exception e) { + return -1; + } + } + + private static PackageInfo getPackageInfo(Context context) { + PackageInfo packageInfo; + try { + PackageManager pm = context.getPackageManager(); + packageInfo = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_CONFIGURATIONS); + return packageInfo; + } catch (Exception e) { + return null; + } + } + + static Task doAsync(final Task task) { + UTIL_POOL.execute(task); + return task; + } + + public static void runOnUiThread(final Runnable runnable) { + if (Looper.myLooper() == Looper.getMainLooper()) { + runnable.run(); + } else { + AppUtils.UTIL_HANDLER.post(runnable); + } + } + + public static void runOnUiThreadDelayed(final Runnable runnable, long delayMillis) { + AppUtils.UTIL_HANDLER.postDelayed(runnable, delayMillis); + } + + static String getCurrentProcessName() { + String name = getCurrentProcessNameByFile(); + if (!TextUtils.isEmpty(name)) return name; + name = getCurrentProcessNameByAms(); + if (!TextUtils.isEmpty(name)) return name; + name = getCurrentProcessNameByReflect(); + return name; + } + + static void fixSoftInputLeaks(final Window window) { + InputMethodManager imm = + (InputMethodManager) AppUtils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm == null) return; + String[] leakViews = new String[]{"mLastSrvView", "mCurRootView", "mServedView", "mNextServedView"}; + for (String leakView : leakViews) { + try { + Field leakViewField = InputMethodManager.class.getDeclaredField(leakView); + if (leakViewField == null) continue; + if (!leakViewField.isAccessible()) { + leakViewField.setAccessible(true); + } + Object obj = leakViewField.get(imm); + if (!(obj instanceof View)) continue; + View view = (View) obj; + if (view.getRootView() == window.getDecorView().getRootView()) { + leakViewField.set(imm, null); + } + } catch (Throwable ignore) {/**/} + } + } + + + /////////////////////////////////////////////////////////////////////////// + // private method + /////////////////////////////////////////////////////////////////////////// + + private static String getCurrentProcessNameByFile() { + try { + File file = new File("/proc/" + android.os.Process.myPid() + "/" + "cmdline"); + BufferedReader mBufferedReader = new BufferedReader(new FileReader(file)); + String processName = mBufferedReader.readLine().trim(); + mBufferedReader.close(); + return processName; + } catch (Exception e) { + e.printStackTrace(); + return ""; + } + } + + private static String getCurrentProcessNameByAms() { + ActivityManager am = (ActivityManager) AppUtils.getApp().getSystemService(Context.ACTIVITY_SERVICE); + if (am == null) return ""; + List info = am.getRunningAppProcesses(); + if (info == null || info.size() == 0) return ""; + int pid = android.os.Process.myPid(); + for (ActivityManager.RunningAppProcessInfo aInfo : info) { + if (aInfo.pid == pid) { + if (aInfo.processName != null) { + return aInfo.processName; + } + } + } + return ""; + } + + private static String getCurrentProcessNameByReflect() { + String processName = ""; + try { + Application app = AppUtils.getApp(); + Field loadedApkField = app.getClass().getField("mLoadedApk"); + loadedApkField.setAccessible(true); + Object loadedApk = loadedApkField.get(app); + + Field activityThreadField = loadedApk.getClass().getDeclaredField("mActivityThread"); + activityThreadField.setAccessible(true); + Object activityThread = activityThreadField.get(loadedApk); + + Method getProcessName = activityThread.getClass().getDeclaredMethod("getProcessName"); + processName = (String) getProcessName.invoke(activityThread); + } catch (Exception e) { + e.printStackTrace(); + } + return processName; + } + + private static Application getApplicationByReflect() { + try { + @SuppressLint("PrivateApi") + Class activityThread = Class.forName("android.app.ActivityThread"); + Object thread = activityThread.getMethod("currentActivityThread").invoke(null); + Object app = activityThread.getMethod("getApplication").invoke(thread); + if (app == null) { + throw new NullPointerException("u should init first"); + } + return (Application) app; + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + throw new NullPointerException("u should init first"); + } + + + /////////////////////////////////////////////////////////////////////////// + // interface + /////////////////////////////////////////////////////////////////////////// + + public abstract static class Task implements Runnable { + + private static final int NEW = 0; + private static final int COMPLETING = 1; + private static final int CANCELLED = 2; + private static final int EXCEPTIONAL = 3; + + private volatile int state = NEW; + + abstract Result doInBackground(); + + private final Callback mCallback; + + public Task(final Callback callback) { + mCallback = callback; + } + + @Override + public void run() { + try { + final Result t = doInBackground(); + + if (state != NEW) return; + state = COMPLETING; + UTIL_HANDLER.post(new Runnable() { + @Override + public void run() { + mCallback.onCall(t); + } + }); + } catch (Throwable th) { + if (state != NEW) return; + state = EXCEPTIONAL; + } + } + + public void cancel() { + state = CANCELLED; + } + + public boolean isDone() { + return state != NEW; + } + + public boolean isCanceled() { + return state == CANCELLED; + } + } + + public interface Callback { + void onCall(T data); + } + + /** + * 判断是否打开定位 + */ + public static boolean getGpsStatus(Context ctx) { + //从系统服务中获取定位管理器 + LocationManager locationManager + = (LocationManager) ctx.getSystemService(Context.LOCATION_SERVICE); + // 通过GPS卫星定位,定位级别可以精确到街(通过24颗卫星定位,在室外和空旷的地方定位准确、速度快) + boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); + // 通过WLAN或移动网络(3G/2G)确定的位置(也称作AGPS,辅助GPS定位。主要用于在室内或遮盖物(建筑群或茂密的深林等)密集的地方定位) + boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); + if (gps || network) { + return true; + } + return false; + } + + /** + * 打开系统定位界面 + */ + public static void goToOpenGps(Context ctx) { + Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); + ctx.startActivity(intent); + } +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/ktx/ResourcesKtx.kt b/library/src/module_utils/java/com/chuhai/utils/ktx/ResourcesKtx.kt new file mode 100644 index 000000000..d1550c236 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/ktx/ResourcesKtx.kt @@ -0,0 +1,195 @@ +package com.chuhai.utils.ktx + +import android.app.Activity +import android.content.Context +import android.content.res.TypedArray +import android.graphics.drawable.Drawable +import android.util.TypedValue +import androidx.annotation.* +import androidx.core.content.ContextCompat +import androidx.core.content.res.ResourcesCompat +import androidx.fragment.app.Fragment +import com.chuhai.utils.AppUtils + +/** + * 资源工具类 + * @author Max + * @date 2019-11-26. + */ + + +/** + * 获取颜色 + */ +fun Fragment.getColorById(@ColorRes colorResId: Int): Int { + return ContextCompat.getColor(context!!, colorResId) +} + + +/** + * 获取图片 + */ +fun Fragment.getDrawableById(@DrawableRes drawableRedId: Int): Drawable? { + return ContextCompat.getDrawable(context!!, drawableRedId) +} + + +/** + * 获取颜色 + */ +fun Activity.getColorById(@ColorRes colorResId: Int): Int { + return ContextCompat.getColor(this, colorResId) +} + +/** + * 获取图片 + */ +fun Activity.getDrawableById(@DrawableRes drawableRedId: Int): Drawable? { + return ContextCompat.getDrawable(this, drawableRedId) +} + + +/** + * 获取颜色 + */ +fun Context.getColorById(@ColorRes colorResId: Int): Int { + return ContextCompat.getColor(this, colorResId) +} + +/** + * 获取图片 + */ +fun Context.getDrawableById(@DrawableRes drawableRedId: Int): Drawable? { + return ContextCompat.getDrawable(this, drawableRedId) +} + + +/** + * 获取字符串资源 + */ +fun Any.getStringById(@StringRes stringResId: Int): String { + return AppUtils.getApp().getString(stringResId) +} + +/** + * 获取字符串资源 + */ +fun Int.toStringRes(): String { + return AppUtils.getApp().getString(this) +} + +/** + * 获取资源drawable + * */ +fun Int.toDrawableRes(): Drawable? { + return ContextCompat.getDrawable(AppUtils.getApp(), this) +} + +/** + * 获取资源color + * */ +fun Int.toColorRes(): Int { + return ContextCompat.getColor(AppUtils.getApp(), this) +} + +/** + * 通过自定义属性-获取DrawableRes + */ +@DrawableRes +fun Context.getDrawableResFromAttr( + @AttrRes attrResId: Int, + typedValue: TypedValue = TypedValue(), + resolveRefs: Boolean = true +): Int? { + return try { + theme.resolveAttribute(attrResId, typedValue, resolveRefs) + return typedValue.resourceId + } catch (e: Exception) { + e.printStackTrace() + null + } +} + +/** + * 通过自定义属性-获取Drawable + */ +fun Context.getDrawableFromAttr(@AttrRes attrId: Int): Drawable? { + return try { + val drawableRes = getDrawableResFromAttr(attrId) ?: return null + ResourcesCompat.getDrawable(resources, drawableRes, null) + } catch (e: Exception) { + e.printStackTrace() + null + } +} + +/** + * 通过自定义属性-获取ColorRes + */ +@ColorRes +fun Context.getColorResFromAttr( + @AttrRes attrResId: Int, + typedValue: TypedValue = TypedValue(), + resolveRefs: Boolean = true +): Int? { + return try { + theme.resolveAttribute(attrResId, typedValue, resolveRefs) + return typedValue.resourceId + } catch (e: Exception) { + e.printStackTrace() + null + } +} + +/** + * 通过自定义属性-获取Color + */ +@ColorRes +fun Context.getColorFromAttr( + @AttrRes attrResId: Int +): Int? { + return try { + val colorRes = getColorFromAttr(attrResId) ?: return null + ResourcesCompat.getColor(resources, colorRes, null) + } catch (e: Exception) { + e.printStackTrace() + null + } +} + +/** + * 通过自定义属性-获取LayoutRes + */ +@LayoutRes +fun Context.getLayoutResFromAttr( + @AttrRes attrResId: Int, + typedValue: TypedValue = TypedValue(), + resolveRefs: Boolean = true +): Int? { + return try { + theme.resolveAttribute(attrResId, typedValue, resolveRefs) + return typedValue.resourceId + } catch (e: Exception) { + e.printStackTrace() + null + } +} + +/** + * 通过自定义属性-获取Boolean + */ +fun Context.getBooleanResFromAttr( + @AttrRes attrResId: Int, + defValue: Boolean = false +): Boolean { + var attrs: TypedArray? = null + try { + attrs = obtainStyledAttributes(null, intArrayOf(attrResId)) + return attrs.getBoolean(0, defValue) + } catch (e: Exception) { + e.printStackTrace() + } finally { + attrs?.recycle() + } + return defValue +} diff --git a/library/src/module_utils/res/values/ids.xml b/library/src/module_utils/res/values/ids.xml new file mode 100644 index 000000000..78554f9eb --- /dev/null +++ b/library/src/module_utils/res/values/ids.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/library/src/module_utils/res/values/strings.xml b/library/src/module_utils/res/values/strings.xml new file mode 100644 index 000000000..f11f7450a --- /dev/null +++ b/library/src/module_utils/res/values/strings.xml @@ -0,0 +1,3 @@ + + + From ba65ad680f610bbb0fdb9f7e70c8a98656f4b1b0 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 24 Oct 2023 10:29:47 +0800 Subject: [PATCH 02/14] =?UTF-8?q?feat:=E5=AE=8C=E6=88=90=E5=8F=91=E7=BA=A2?= =?UTF-8?q?=E5=8C=85UI=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../send/PrivateRedPackageEditorFragment.kt | 1 + .../redpackage/send/RedPackageSendDialog2.kt | 6 +- .../redpackage/send/TabIndicatorAdapter.java | 23 +++-- .../adapter/ContactsIndicatorAdapter.java | 12 +-- .../layout/red_package_private_fragment.xml | 27 +++--- .../layout/red_package_private_item_type.xml | 0 .../layout/red_package_public_fragment.xml | 14 +-- app/src/main/res/values/strings.xml | 14 +++ .../java/com/chuhai/utils/UiUtils.kt | 86 +++++++++++++++++++ .../java/com/chuhai/utils/ktx/UiKtx.kt | 53 ++++++++++++ 10 files changed, 192 insertions(+), 44 deletions(-) rename app/src/{module_super_admin => main}/res/layout/red_package_private_item_type.xml (100%) rename app/src/{module_super_admin => main}/res/layout/red_package_public_fragment.xml (94%) create mode 100644 library/src/module_utils/java/com/chuhai/utils/UiUtils.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/ktx/UiKtx.kt diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt index 5f4f92f3b..6197ec904 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt @@ -9,6 +9,7 @@ import com.yizhuan.erban.databinding.RedPackagePrivateFragmentBinding import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration import com.yizhuan.xchat_android_library.annatation.ActLayoutRes +import com.yizhuan.xchat_android_library.utils.keyboard.KeyboardUtil /** * Created by Max on 2023/10/23 12:14 diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt index 4873edb94..59289cd05 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt @@ -4,6 +4,8 @@ package com.yizhuan.erban.avroom.redpackage.send import android.annotation.SuppressLint import android.view.Gravity import android.view.WindowManager +import com.chuhai.utils.ktx.dp +import com.chuhai.utils.ktx.toStringRes import com.yizhuan.erban.R import com.yizhuan.erban.avroom.redpackage.RedPackageEvent import com.yizhuan.erban.base.BaseDialog @@ -31,8 +33,8 @@ class RedPackageSendDialog2 : BaseDialog() { @SuppressLint("SetTextI18n") override fun init() { EventBus.getDefault().register(this) - val tabTitles = arrayListOf("厅内红包", "全服红包") - val topMagicIndicatorAdapter = ContactsIndicatorAdapter(context, tabTitles, 1) + val tabTitles = arrayListOf(R.string.red_package_room.toStringRes(), R.string.red_package_public.toStringRes()) + val topMagicIndicatorAdapter = TabIndicatorAdapter(context, tabTitles) topMagicIndicatorAdapter.setOnItemSelectListener { binding.viewPager.currentItem = it } diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/TabIndicatorAdapter.java b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/TabIndicatorAdapter.java index ec3905747..567c14d33 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/TabIndicatorAdapter.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/TabIndicatorAdapter.java @@ -8,6 +8,7 @@ import android.widget.FrameLayout; import androidx.appcompat.widget.AppCompatTextView; +import com.chuhai.utils.UiUtils; import com.yizhuan.erban.R; import com.yizhuan.erban.common.util.Utils; import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil; @@ -26,12 +27,10 @@ import java.util.List; public class TabIndicatorAdapter extends CommonNavigatorAdapter { private List mTitleList; private Context mContext; - private int mBottomMargin; - public TabIndicatorAdapter(Context mContext, List mTitleList, int bottomMargin) { + public TabIndicatorAdapter(Context mContext, List mTitleList ) { this.mTitleList = mTitleList; this.mContext = mContext; - mBottomMargin = bottomMargin; } @Override @@ -57,12 +56,12 @@ public class TabIndicatorAdapter extends CommonNavigatorAdapter { public IPagerIndicator getIndicator(Context context) { LinePagerIndicator indicator = new LinePagerIndicator(context); indicator.setMode(LinePagerIndicator.MODE_EXACTLY); - indicator.setLineHeight(UIUtil.dip2px(mContext, 5)); - indicator.setRoundRadius(UIUtil.dip2px(mContext, 5)); - indicator.setLineWidth(UIUtil.dip2px(mContext, 9)); - indicator.setColors(context.getResources().getColor(R.color.app_248cfe)); + indicator.setLineHeight(UIUtil.dip2px(mContext, 4)); + indicator.setRoundRadius(UIUtil.dip2px(mContext, 4)); + indicator.setLineWidth(UIUtil.dip2px(mContext, 12)); + indicator.setColors(context.getResources().getColor(R.color.color_FF285C)); FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); - lp.bottomMargin = mBottomMargin; + lp.topMargin = UIUtil.dip2px(mContext, 2); indicator.setLayoutParams(lp); return indicator; } @@ -82,8 +81,8 @@ public class TabIndicatorAdapter extends CommonNavigatorAdapter { public ContactsPagerTitleView(Context context, String tabInfo) { super(context); - setHeight(Utils.dip2px(getContext(), 30)); - setTextSize(16); + setHeight(Utils.dip2px(getContext(), 25)); + setTextSize(18); setText(tabInfo); setGravity(Gravity.CENTER); @@ -93,13 +92,13 @@ public class TabIndicatorAdapter extends CommonNavigatorAdapter { @Override public void onSelected(int index, int totalCount) { // setBackgroundResource(R.drawable.shape_bg_contact_indicator_item); - setTextColor(getResources().getColor(R.color.color_333333)); + setTextColor(getResources().getColor(R.color.color_FF285C)); } @Override public void onDeselected(int index, int totalCount) { // setBackgroundDrawable(null); - setTextColor(getResources().getColor(R.color.color_666666)); + setTextColor(getResources().getColor(R.color.color_767585)); } @Override diff --git a/app/src/main/java/com/yizhuan/erban/home/adapter/ContactsIndicatorAdapter.java b/app/src/main/java/com/yizhuan/erban/home/adapter/ContactsIndicatorAdapter.java index deb4f7745..3f2853ea8 100644 --- a/app/src/main/java/com/yizhuan/erban/home/adapter/ContactsIndicatorAdapter.java +++ b/app/src/main/java/com/yizhuan/erban/home/adapter/ContactsIndicatorAdapter.java @@ -57,10 +57,10 @@ public class ContactsIndicatorAdapter extends CommonNavigatorAdapter { public IPagerIndicator getIndicator(Context context) { LinePagerIndicator indicator = new LinePagerIndicator(context); indicator.setMode(LinePagerIndicator.MODE_EXACTLY); - indicator.setLineHeight(UIUtil.dip2px(mContext, 4)); - indicator.setRoundRadius(UIUtil.dip2px(mContext, 4)); - indicator.setLineWidth(UIUtil.dip2px(mContext, 12)); - indicator.setColors(context.getResources().getColor(R.color.color_FF285C)); + indicator.setLineHeight(UIUtil.dip2px(mContext, 5)); + indicator.setRoundRadius(UIUtil.dip2px(mContext, 5)); + indicator.setLineWidth(UIUtil.dip2px(mContext, 9)); + indicator.setColors(context.getResources().getColor(R.color.app_248cfe)); FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); lp.bottomMargin = mBottomMargin; indicator.setLayoutParams(lp); @@ -82,8 +82,8 @@ public class ContactsIndicatorAdapter extends CommonNavigatorAdapter { public ContactsPagerTitleView(Context context, String tabInfo) { super(context); - setHeight(Utils.dip2px(getContext(), 25)); - setTextSize(18); + setHeight(Utils.dip2px(getContext(), 30)); + setTextSize(16); setText(tabInfo); setGravity(Gravity.CENTER); diff --git a/app/src/main/res/layout/red_package_private_fragment.xml b/app/src/main/res/layout/red_package_private_fragment.xml index 5eda54be8..8a3a72e10 100644 --- a/app/src/main/res/layout/red_package_private_fragment.xml +++ b/app/src/main/res/layout/red_package_private_fragment.xml @@ -40,7 +40,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="1dp" - android:text="红包金额" + android:text="@string/red_package_money" android:textColor="@color/color_322F4D" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="@id/et_money" @@ -52,7 +52,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" - android:text="钻" + android:text="@string/red_package_money_unit" android:textColor="@color/color_767585" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="@id/et_money" @@ -91,7 +91,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:text="红包数量" + android:text="@string/red_package_num" android:textColor="@color/color_322F4D" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="@id/et_num" @@ -103,7 +103,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" - android:text="个" + android:text="@string/red_package_num_unit" android:textColor="@color/color_767585" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="@id/et_num" @@ -125,7 +125,7 @@ android:layout_height="wrap_content" android:layout_marginStart="24dp" android:layout_marginTop="16dp" - android:text="抢红包条件" + android:text="@string/red_package_type" android:textColor="@color/color_322F4D" android:textSize="16sp" android:textStyle="bold" @@ -158,7 +158,7 @@ android:layout_marginStart="24dp" android:background="@drawable/shape_f8f8fa_8" android:gravity="center" - android:text="立即生效" + android:text="@string/red_package_now" android:textColor="@color/color_FF285C" android:textSize="16sp" app:layout_constraintEnd_toStartOf="@id/tv_delay" @@ -173,7 +173,7 @@ android:layout_marginEnd="24dp" android:background="@drawable/shape_f8f8fa_8" android:gravity="center" - android:text="即时生效" + android:text="@string/red_package_delay" android:textColor="@color/color_FF285C" android:textSize="16sp" app:layout_constraintEnd_toEndOf="parent" @@ -187,7 +187,7 @@ android:layout_marginHorizontal="24dp" android:background="@drawable/shape_f8f8fa_8" android:gravity="center" - android:hint="輸入指定彈幕內容(最多10個字符)" + android:hint="@string/red_package_msg_hint" android:maxLength="10" android:textColor="@color/color_322F4D" android:textColorHint="@color/color_B3B3C3" @@ -197,13 +197,6 @@ - - @@ -221,7 +214,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" - android:text="未搶完的紅包將在12小時後返還你的錢包" + android:text="@string/red_package_tips" android:textColor="@color/color_94959C" android:textSize="12sp" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/module_super_admin/res/layout/red_package_private_item_type.xml b/app/src/main/res/layout/red_package_private_item_type.xml similarity index 100% rename from app/src/module_super_admin/res/layout/red_package_private_item_type.xml rename to app/src/main/res/layout/red_package_private_item_type.xml diff --git a/app/src/module_super_admin/res/layout/red_package_public_fragment.xml b/app/src/main/res/layout/red_package_public_fragment.xml similarity index 94% rename from app/src/module_super_admin/res/layout/red_package_public_fragment.xml rename to app/src/main/res/layout/red_package_public_fragment.xml index b94af206f..39cb56504 100644 --- a/app/src/module_super_admin/res/layout/red_package_public_fragment.xml +++ b/app/src/main/res/layout/red_package_public_fragment.xml @@ -40,7 +40,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="1dp" - android:text="红包金额" + android:text="@string/red_package_money" android:textColor="@color/color_322F4D" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="@id/et_money" @@ -52,7 +52,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" - android:text="钻" + android:text="@string/red_package_money_unit" android:textColor="@color/color_767585" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="@id/et_money" @@ -91,7 +91,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:text="红包数量" + android:text="@string/red_package_num" android:textColor="@color/color_322F4D" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="@id/et_num" @@ -103,7 +103,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" - android:text="个" + android:text="@string/red_package_num_unit" android:textColor="@color/color_767585" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="@id/et_num" @@ -130,7 +130,7 @@ android:maxLength="20" android:paddingHorizontal="10dp" android:paddingVertical="10dp" - android:text="恭喜發財,大吉大利!" + android:text="@string/red_package_msg_def" android:textColor="@color/color_322F4D" android:textSize="16sp" app:layout_constraintTop_toBottomOf="@id/et_num" /> @@ -155,7 +155,7 @@ android:layout_marginTop="28dp" android:gravity="center" android:background="@drawable/shape_g_ff6060_ff225c_26_lr" - android:text="发红包" + android:text="@string/red_package_send" android:textColor="@color/color_FFFFFF" android:textSize="18sp" app:layout_constraintTop_toBottomOf="@id/et_text" /> @@ -164,7 +164,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" - android:text="未搶完的紅包將在12小時後返還你的錢包" + android:text="@string/red_package_tips" android:textColor="@color/color_94959C" android:textSize="12sp" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eacc4899c..10d612449 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5152,4 +5152,18 @@ 發彈幕紅包 發指定彈幕內容 + 廳內紅包 + 全服紅包 + 紅包金額 + 紅包數量 + + + 搶紅包條件 + 輸入指定彈幕內容(最多10個字符) + 發紅包 + 未搶完的紅包將在12小時後返還你的錢包 + 立即生效 + 即時生效 + 恭喜發財,大吉大利! + \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/UiUtils.kt b/library/src/module_utils/java/com/chuhai/utils/UiUtils.kt new file mode 100644 index 000000000..35e754b22 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/UiUtils.kt @@ -0,0 +1,86 @@ +package com.chuhai.utils + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Build +import android.util.DisplayMetrics +import android.util.TypedValue +import android.view.View +import android.view.WindowManager +import androidx.core.text.TextUtilsCompat +import androidx.core.view.ViewCompat + + +/** + * + * @author Max + * @date 2019-12-10. + */ + + +object UiUtils { + fun getScreenWidth(context: Context): Int { + val wm = context.getSystemService(Context.WINDOW_SERVICE) as? WindowManager + val outMetrics = DisplayMetrics() + wm?.defaultDisplay?.getMetrics(outMetrics) + return outMetrics.widthPixels + } + + fun getScreenHeight(context: Context): Int { + val wm = context.getSystemService(Context.WINDOW_SERVICE) as? WindowManager + val outMetrics = DisplayMetrics() + wm?.defaultDisplay?.getMetrics(outMetrics) + return outMetrics.heightPixels + } + + fun getScreenRatio(context: Context): Float { + return getScreenWidth(context) * 1.0f / getScreenHeight(context) + } + + /** + * 根据手机的分辨率从 dp 的单位 转成为 px(像素) + */ + fun dip2px(dpValue: Float): Int { + return dip2px(AppUtils.getApp(), dpValue) + } + + /** + * 根据手机的分辨率从 px(像素) 的单位 转成为 dp + */ + fun px2dip(pxValue: Float): Float { + return px2dip(AppUtils.getApp(), pxValue) + } + + /** + * 根据手机的分辨率从 dp 的单位 转成为 px(像素) + */ + fun dip2px(context: Context, dpValue: Float): Int { + return (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, context.resources.displayMetrics) + 0.5f).toInt() + } + + /** + * 根据手机的分辨率从 px(像素) 的单位 转成为 dp + */ + fun px2dip(context: Context, pxValue: Float): Float { + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, pxValue, context.resources.displayMetrics) + } + + /** + * 是否从右到左布局 + */ + @SuppressLint("NewApi") + fun isRtl(view: View): Boolean { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + View.LAYOUT_DIRECTION_RTL == view.layoutDirection + } else { + false + } + } + + /** + * 是否从右到左布局 + */ + fun isRtl(context: Context): Boolean { + return TextUtilsCompat.getLayoutDirectionFromLocale(context.resources.configuration.locale) == ViewCompat.LAYOUT_DIRECTION_RTL + } +} diff --git a/library/src/module_utils/java/com/chuhai/utils/ktx/UiKtx.kt b/library/src/module_utils/java/com/chuhai/utils/ktx/UiKtx.kt new file mode 100644 index 000000000..d6f58db48 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/ktx/UiKtx.kt @@ -0,0 +1,53 @@ +package com.chuhai.utils.ktx + +import com.chuhai.utils.UiUtils +import kotlin.math.roundToInt + +/** + * UI + * @author Max + * @date 2020-01-10. + */ + + +/** + * 转换为PX值 + */ +val Float.dp: Int get() = this.toPX() +val Int.dp: Int get() = this.toPX() + +/** + * 转换为DP值 + */ +val Float.px: Int get() = this.toDP().roundToInt() +val Int.px: Int get() = this.toDP().roundToInt() + + +fun Long.toDP(): Float { + return UiUtils.px2dip(this.toFloat()) +} + + +fun Float.toDP(): Float { + return UiUtils.px2dip(this) +} + + +fun Int.toDP(): Float { + return UiUtils.px2dip(this.toFloat()) +} + + +fun Long.toPX(): Int { + return UiUtils.dip2px(this.toFloat()) +} + + +fun Float.toPX(): Int { + return UiUtils.dip2px(this) +} + + +fun Int.toPX(): Int { + return UiUtils.dip2px(this.toFloat()) +} \ No newline at end of file From a0667bdd8dfa4816c18e95a34322f54fa1733fb5 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 24 Oct 2023 14:12:42 +0800 Subject: [PATCH 03/14] =?UTF-8?q?feat:=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E9=A2=86=E7=BA=A2=E5=8C=85=E5=BC=B9=E7=AA=97UI=E6=A1=86?= =?UTF-8?q?=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redpackage/open/RedPackageOpenDialog2.kt | 72 +++++ .../redpackage/send/RedPackageSendDialog2.kt | 12 +- .../erban/ui/setting/SettingActivity.kt | 4 +- .../drawable-xxhdpi/red_package_open_bg.webp | Bin 0 -> 133434 bytes .../red_package_open_btn_bg.webp | Bin 0 -> 46910 bytes .../red_package_open_btn_get.png | Bin 0 -> 3497 bytes .../red_package_opened_bg.webp | Bin 0 -> 118214 bytes .../drawable-xxhdpi/red_package_send_bg.webp} | Bin .../drawable-xxhdpi/red_package_send_ic.webp} | Bin .../red_package_send_ic_diamond.webp} | Bin .../res/drawable/red_package_ic_add.xml | 0 .../res/drawable/red_package_ic_close.xml | 22 ++ .../res/drawable/red_package_ic_help.xml | 0 .../res/drawable/red_package_open_tips_bg.xml | 7 + .../res/drawable/shape_f8f8fa_8.xml | 0 .../res/layout/red_package_open_dialog.xml | 305 ++++++++++++++++++ .../layout/red_package_private_fragment.xml | 2 +- .../layout/red_package_public_fragment.xml | 2 +- .../res/layout/red_package_send_dialog.xml} | 4 +- app/src/main/res/values/colors.xml | 2 +- app/src/main/res/values/strings.xml | 4 + nim_uikit/res/values/colors.xml | 2 + 22 files changed, 427 insertions(+), 11 deletions(-) create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt create mode 100644 app/src/main/res/drawable-xxhdpi/red_package_open_bg.webp create mode 100644 app/src/main/res/drawable-xxhdpi/red_package_open_btn_bg.webp create mode 100644 app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.png create mode 100644 app/src/main/res/drawable-xxhdpi/red_package_opened_bg.webp rename app/src/{module_super_admin/res/drawable-xxhdpi/red_package_bg.webp => main/res/drawable-xxhdpi/red_package_send_bg.webp} (100%) rename app/src/{module_super_admin/res/drawable-xxhdpi/red_package_ic.webp => main/res/drawable-xxhdpi/red_package_send_ic.webp} (100%) rename app/src/{module_super_admin/res/drawable-xxhdpi/red_package_ic_diamond.webp => main/res/drawable-xxhdpi/red_package_send_ic_diamond.webp} (100%) rename app/src/{module_super_admin => main}/res/drawable/red_package_ic_add.xml (100%) create mode 100644 app/src/main/res/drawable/red_package_ic_close.xml rename app/src/{module_super_admin => main}/res/drawable/red_package_ic_help.xml (100%) create mode 100644 app/src/main/res/drawable/red_package_open_tips_bg.xml rename app/src/{module_super_admin => main}/res/drawable/shape_f8f8fa_8.xml (100%) create mode 100644 app/src/main/res/layout/red_package_open_dialog.xml rename app/src/{module_super_admin/res/layout/dialog_red_package_send2.xml => main/res/layout/red_package_send_dialog.xml} (96%) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt new file mode 100644 index 000000000..90b779bb3 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt @@ -0,0 +1,72 @@ +package com.yizhuan.erban.avroom.redpackage.open + + +import android.animation.Animator +import android.animation.AnimatorListenerAdapter +import android.animation.ObjectAnimator +import android.annotation.SuppressLint +import android.view.View +import android.view.WindowManager +import android.view.animation.AccelerateDecelerateInterpolator +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseDialog +import com.yizhuan.erban.databinding.DialogRedPackageOpenBinding +import com.yizhuan.erban.databinding.RedPackageOpenDialogBinding +import com.yizhuan.xchat_android_core.redpackage.* +import com.yizhuan.xchat_android_library.annatation.ActLayoutRes +import com.yizhuan.xchat_android_library.utils.SingleToastUtil + +/** + * Created by Max on 2023/10/24 10:14 + * Desc:领取红包 + **/ +@ActLayoutRes(R.layout.red_package_open_dialog) +class RedPackageOpenDialog2 : BaseDialog() { + + private var mObjectAnimator: ObjectAnimator? = null + + override fun onStart() { + width = WindowManager.LayoutParams.MATCH_PARENT + height = WindowManager.LayoutParams.WRAP_CONTENT + super.onStart() + } + + override fun init() { + dialog?.setCanceledOnTouchOutside(false) + } + + @SuppressLint("CheckResult") + private fun startRedPacketAnim(v: View) { + mObjectAnimator = ObjectAnimator.ofFloat(v, "rotationY", 0f, 360f) + mObjectAnimator?.let { + it.duration = 1500 + it.interpolator = AccelerateDecelerateInterpolator() + it.addListener(object : AnimatorListenerAdapter() { + + var isCanceled = false + override fun onAnimationCancel(animation: Animator) { + isCanceled = true + } + + override fun onAnimationEnd(animation: Animator) { + if (!isCanceled) { + SingleToastUtil.showToast("End") + } + } + }) + it.start() + } + } + + override fun onDestroyView() { + super.onDestroyView() + mObjectAnimator?.cancel() + mObjectAnimator = null + } + + override fun onPause() { + super.onPause() + dismissAllowingStateLoss() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt index 59289cd05..9d1c5ee48 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt @@ -4,14 +4,12 @@ package com.yizhuan.erban.avroom.redpackage.send import android.annotation.SuppressLint import android.view.Gravity import android.view.WindowManager -import com.chuhai.utils.ktx.dp import com.chuhai.utils.ktx.toStringRes import com.yizhuan.erban.R import com.yizhuan.erban.avroom.redpackage.RedPackageEvent import com.yizhuan.erban.base.BaseDialog import com.yizhuan.erban.common.ViewPagerAdapter -import com.yizhuan.erban.databinding.DialogRedPackageSend2Binding -import com.yizhuan.erban.home.adapter.ContactsIndicatorAdapter +import com.yizhuan.erban.databinding.RedPackageSendDialogBinding import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator import com.yizhuan.xchat_android_core.redpackage.* @@ -20,8 +18,12 @@ import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode -@ActLayoutRes(R.layout.dialog_red_package_send2) -class RedPackageSendDialog2 : BaseDialog() { +/** + * Created by Max on 2023/10/23 12:14 + * Desc:发红包 + **/ +@ActLayoutRes(R.layout.red_package_send_dialog) +class RedPackageSendDialog2 : BaseDialog() { override fun onStart() { gravity = Gravity.BOTTOM diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt index 64ab86c65..de0c6a8e5 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt @@ -11,6 +11,7 @@ import com.tongdaxing.erban.upgrade.AppUpgradeHelper import com.yizhuan.erban.BuildConfig import com.yizhuan.erban.R import com.yizhuan.erban.UIHelper +import com.yizhuan.erban.avroom.redpackage.open.RedPackageOpenDialog2 import com.yizhuan.erban.avroom.redpackage.send.RedPackageSendDialog2 import com.yizhuan.erban.base.BaseViewBindingActivity import com.yizhuan.erban.common.widget.dialog.DialogManager.OkCancelDialogListener @@ -79,7 +80,8 @@ class SettingActivity : BaseViewBindingActivity(), View. if (BuildConfig.DEBUG) { binding.titleBar.setOnTitleClickListener { - RedPackageSendDialog2().show(this) +// RedPackageSendDialog2().show(this) + RedPackageOpenDialog2().show(this) } } } diff --git a/app/src/main/res/drawable-xxhdpi/red_package_open_bg.webp b/app/src/main/res/drawable-xxhdpi/red_package_open_bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..5910f3890137786a51e6e7e2b48c895ac9851802 GIT binary patch literal 133434 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 z%0A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 aTqYDJ9}{2y|IwiV#~3(*_y7O^0000DVA$#a literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.png b/app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.png new file mode 100644 index 0000000000000000000000000000000000000000..a02b16ebddb0b9a2abf7f1cf13c6905debd22745 GIT binary patch literal 3497 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 XADhA7dONA!00000NkvXXu0mjfG1HeW literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/red_package_opened_bg.webp b/app/src/main/res/drawable-xxhdpi/red_package_opened_bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..7eb5a61b47e75da9f156fed2a5af64ad41ac98a5 GIT binary patch literal 118214 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%0A2c9O;PY$%K-HH^#!8#j`%x9 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 P000000000000000{r*vW literal 0 HcmV?d00001 diff --git a/app/src/module_super_admin/res/drawable-xxhdpi/red_package_bg.webp b/app/src/main/res/drawable-xxhdpi/red_package_send_bg.webp similarity index 100% rename from app/src/module_super_admin/res/drawable-xxhdpi/red_package_bg.webp rename to app/src/main/res/drawable-xxhdpi/red_package_send_bg.webp diff --git a/app/src/module_super_admin/res/drawable-xxhdpi/red_package_ic.webp b/app/src/main/res/drawable-xxhdpi/red_package_send_ic.webp similarity index 100% rename from app/src/module_super_admin/res/drawable-xxhdpi/red_package_ic.webp rename to app/src/main/res/drawable-xxhdpi/red_package_send_ic.webp diff --git a/app/src/module_super_admin/res/drawable-xxhdpi/red_package_ic_diamond.webp b/app/src/main/res/drawable-xxhdpi/red_package_send_ic_diamond.webp similarity index 100% rename from app/src/module_super_admin/res/drawable-xxhdpi/red_package_ic_diamond.webp rename to app/src/main/res/drawable-xxhdpi/red_package_send_ic_diamond.webp diff --git a/app/src/module_super_admin/res/drawable/red_package_ic_add.xml b/app/src/main/res/drawable/red_package_ic_add.xml similarity index 100% rename from app/src/module_super_admin/res/drawable/red_package_ic_add.xml rename to app/src/main/res/drawable/red_package_ic_add.xml diff --git a/app/src/main/res/drawable/red_package_ic_close.xml b/app/src/main/res/drawable/red_package_ic_close.xml new file mode 100644 index 000000000..24b3ed834 --- /dev/null +++ b/app/src/main/res/drawable/red_package_ic_close.xml @@ -0,0 +1,22 @@ + + + + diff --git a/app/src/module_super_admin/res/drawable/red_package_ic_help.xml b/app/src/main/res/drawable/red_package_ic_help.xml similarity index 100% rename from app/src/module_super_admin/res/drawable/red_package_ic_help.xml rename to app/src/main/res/drawable/red_package_ic_help.xml diff --git a/app/src/main/res/drawable/red_package_open_tips_bg.xml b/app/src/main/res/drawable/red_package_open_tips_bg.xml new file mode 100644 index 000000000..5fe90e3f8 --- /dev/null +++ b/app/src/main/res/drawable/red_package_open_tips_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/module_super_admin/res/drawable/shape_f8f8fa_8.xml b/app/src/main/res/drawable/shape_f8f8fa_8.xml similarity index 100% rename from app/src/module_super_admin/res/drawable/shape_f8f8fa_8.xml rename to app/src/main/res/drawable/shape_f8f8fa_8.xml diff --git a/app/src/main/res/layout/red_package_open_dialog.xml b/app/src/main/res/layout/red_package_open_dialog.xml new file mode 100644 index 000000000..c10c7cc44 --- /dev/null +++ b/app/src/main/res/layout/red_package_open_dialog.xml @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/red_package_private_fragment.xml b/app/src/main/res/layout/red_package_private_fragment.xml index 8a3a72e10..a611469f0 100644 --- a/app/src/main/res/layout/red_package_private_fragment.xml +++ b/app/src/main/res/layout/red_package_private_fragment.xml @@ -31,7 +31,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="9dp" - android:src="@drawable/red_package_ic" + android:src="@drawable/red_package_send_ic" app:layout_constraintBottom_toBottomOf="@id/et_money" app:layout_constraintStart_toStartOf="@id/et_money" app:layout_constraintTop_toTopOf="@id/et_money" /> diff --git a/app/src/main/res/layout/red_package_public_fragment.xml b/app/src/main/res/layout/red_package_public_fragment.xml index 39cb56504..986184bc1 100644 --- a/app/src/main/res/layout/red_package_public_fragment.xml +++ b/app/src/main/res/layout/red_package_public_fragment.xml @@ -31,7 +31,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="9dp" - android:src="@drawable/red_package_ic" + android:src="@drawable/red_package_send_ic" app:layout_constraintBottom_toBottomOf="@id/et_money" app:layout_constraintStart_toStartOf="@id/et_money" app:layout_constraintTop_toTopOf="@id/et_money" /> diff --git a/app/src/module_super_admin/res/layout/dialog_red_package_send2.xml b/app/src/main/res/layout/red_package_send_dialog.xml similarity index 96% rename from app/src/module_super_admin/res/layout/dialog_red_package_send2.xml rename to app/src/main/res/layout/red_package_send_dialog.xml index c79a6dac0..cebdbf387 100644 --- a/app/src/module_super_admin/res/layout/dialog_red_package_send2.xml +++ b/app/src/main/res/layout/red_package_send_dialog.xml @@ -20,7 +20,7 @@ android:layout_height="wrap_content" android:adjustViewBounds="true" android:scaleType="fitXY" - android:src="@drawable/red_package_bg" + android:src="@drawable/red_package_send_bg" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 953d48518..3a3172f22 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -707,5 +707,5 @@ #322F4D #EBEEF5 #94959C - + #FFBF461F diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 10d612449..75d49f75f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5165,5 +5165,9 @@ 立即生效 即時生效 恭喜發財,大吉大利! + 後開搶 + 發彈幕\n搶紅包 + 已存入錢包,請到我的收益確認 + 已領取%s/%s個 \ No newline at end of file diff --git a/nim_uikit/res/values/colors.xml b/nim_uikit/res/values/colors.xml index 92a781bcb..b2daa3da4 100644 --- a/nim_uikit/res/values/colors.xml +++ b/nim_uikit/res/values/colors.xml @@ -79,4 +79,6 @@ #B3333333 #FFF4F4FA + + \ No newline at end of file From 60e56beb438745292565015b22f0da259ef95b87 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 24 Oct 2023 15:40:07 +0800 Subject: [PATCH 04/14] =?UTF-8?q?feat:=E5=AE=8C=E6=88=90=E6=89=93=E5=BC=80?= =?UTF-8?q?=E7=BA=A2=E5=8C=85=E5=BC=B9=E7=AA=97UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redpackage/open/RedPackageOpenDialog2.kt | 39 ++++++++- app/src/main/res/drawable/shape_e03654_28.xml | 7 ++ .../res/layout/red_package_open_dialog.xml | 12 ++- .../layout/red_package_open_item_record.xml | 80 +++++++++++++++++++ .../layout/red_package_private_item_type.xml | 7 +- 5 files changed, 137 insertions(+), 8 deletions(-) create mode 100644 app/src/main/res/drawable/shape_e03654_28.xml create mode 100644 app/src/main/res/layout/red_package_open_item_record.xml diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt index 90b779bb3..076e597a7 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt @@ -4,14 +4,16 @@ package com.yizhuan.erban.avroom.redpackage.open import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.animation.ObjectAnimator +import android.animation.ValueAnimator import android.annotation.SuppressLint import android.view.View import android.view.WindowManager import android.view.animation.AccelerateDecelerateInterpolator +import androidx.core.view.isVisible import com.yizhuan.erban.R import com.yizhuan.erban.base.BaseDialog -import com.yizhuan.erban.databinding.DialogRedPackageOpenBinding import com.yizhuan.erban.databinding.RedPackageOpenDialogBinding +import com.yizhuan.erban.ui.utils.loadAvatar import com.yizhuan.xchat_android_core.redpackage.* import com.yizhuan.xchat_android_library.annatation.ActLayoutRes import com.yizhuan.xchat_android_library.utils.SingleToastUtil @@ -33,13 +35,24 @@ class RedPackageOpenDialog2 : BaseDialog() { override fun init() { dialog?.setCanceledOnTouchOutside(false) + + binding.ivClose.setOnClickListener { + dismissAllowingStateLoss() + } + + binding.layoutBtn.setOnClickListener { + startRedPacketAnim(it) + } } + @SuppressLint("CheckResult") private fun startRedPacketAnim(v: View) { mObjectAnimator = ObjectAnimator.ofFloat(v, "rotationY", 0f, 360f) mObjectAnimator?.let { it.duration = 1500 + it.repeatCount = ValueAnimator.INFINITE + it.repeatMode = ValueAnimator.RESTART it.interpolator = AccelerateDecelerateInterpolator() it.addListener(object : AnimatorListenerAdapter() { @@ -69,4 +82,28 @@ class RedPackageOpenDialog2 : BaseDialog() { dismissAllowingStateLoss() } + /** + * 待领取状态 + */ + private fun switchToPending(data: RedPackageNotifyInfo) { + binding.layoutContent.setBackgroundResource(R.drawable.red_package_open_bg) + binding.groupOpened.isVisible = false + binding.groupOpen.isVisible = true + + binding.ivSendAvatar.loadAvatar(data.sendUserAvatar) + binding.tvSendName.text = data.sendUserNick + } + + /** + * 打开状态 + */ + private fun switchToOpened(data: RedPackageInfo) { + binding.layoutContent.setBackgroundResource(R.drawable.red_package_opened_bg) + binding.groupOpen.isVisible = false + binding.groupOpened.isVisible = true + + binding.ivOpenedSendAvatar.loadAvatar(data.redEnvelopeVO?.userVO?.avatar) + binding.tvOpenedSendName.text = data.redEnvelopeVO?.userVO?.nick ?: "" + binding.tvMoney.text = "" + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_e03654_28.xml b/app/src/main/res/drawable/shape_e03654_28.xml new file mode 100644 index 000000000..be05b6928 --- /dev/null +++ b/app/src/main/res/drawable/shape_e03654_28.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/layout/red_package_open_dialog.xml b/app/src/main/res/layout/red_package_open_dialog.xml index c10c7cc44..cae0ac16e 100644 --- a/app/src/main/res/layout/red_package_open_dialog.xml +++ b/app/src/main/res/layout/red_package_open_dialog.xml @@ -85,14 +85,16 @@ android:layout_height="36dp" android:background="@drawable/red_package_open_tips_bg" android:gravity="center" + android:paddingHorizontal="5dp" android:textColor="@color/white" android:textSize="11dp" - android:paddingHorizontal="5dp" + android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/line_tips_top" app:layout_constraintWidth_percent="0.7064" - tools:text="恭喜发财!" /> + tools:text="恭喜发财!" + tools:visibility="visible" /> + app:layout_constraintWidth_percent="0.6819" + tools:listitem="@layout/red_package_open_item_record" /> + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/red_package_private_item_type.xml b/app/src/main/res/layout/red_package_private_item_type.xml index 11495e7cf..9f321ede9 100644 --- a/app/src/main/res/layout/red_package_private_item_type.xml +++ b/app/src/main/res/layout/red_package_private_item_type.xml @@ -7,8 +7,7 @@ android:id="@+id/layout_root" android:background="@drawable/shape_f8f8fa_8" android:layout_width="94dp" - android:layout_height="62dp" - android:orientation="vertical"> + android:layout_height="62dp"> From c3dab80e7113599de52d596963ed0aa87685c98c Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 24 Oct 2023 19:06:04 +0800 Subject: [PATCH 05/14] =?UTF-8?q?feat:=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E6=88=BF=E9=97=B4=E7=BA=A2=E5=8C=85=E5=85=A5=E5=8F=A3=E7=BB=84?= =?UTF-8?q?=E4=BB=B6UI=20feat:=E5=AE=8C=E5=96=84=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E5=B7=A5=E5=85=B7Stetho=E7=9A=84=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/application/XChatApplication.java | 16 +++ .../fragment/HomePartyRoomFragment.java | 4 +- .../avroom/fragment/SingleRoomFragment.kt | 1 - .../avroom/redpackage/RedPackageWidget.kt | 95 ++++++++++++++++++ .../erban/avroom/widget/MicroView.java | 3 + .../red_package_widget_bg.webp | Bin 0 -> 6348 bytes .../red_package_widget_bg_text.webp | Bin 0 -> 1074 bytes .../main/res/drawable/shape_99292929_8.xml | 7 ++ .../main/res/layout/red_package_widget.xml | 26 +++++ app/src/main/res/values/strings.xml | 2 +- .../res/layout/fragment_av_room_game.xml | 25 ++++- .../res/layout/fragment_single_room.xml | 23 +++-- library/build.gradle | 4 +- 13 files changed, 190 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt create mode 100644 app/src/main/res/drawable-xxhdpi/red_package_widget_bg.webp create mode 100644 app/src/main/res/drawable-xxhdpi/red_package_widget_bg_text.webp create mode 100644 app/src/main/res/drawable/shape_99292929_8.xml create mode 100644 app/src/main/res/layout/red_package_widget.xml diff --git a/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java b/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java index 6438d1cd2..38ffa7001 100644 --- a/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java +++ b/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java @@ -17,6 +17,7 @@ import androidx.multidex.MultiDex; import com.bumptech.glide.request.target.ViewTarget; import com.coorchice.library.utils.LogUtils; +import com.facebook.stetho.Stetho; import com.hjq.toast.ToastUtils; import com.mob.MobSDK; import com.mob.moblink.MobLink; @@ -252,6 +253,7 @@ public class XChatApplication extends BaseApp { //fixed: Glide Exception:"You must not call setTag() on a view Glide is targeting" ViewTarget.setTagId(R.id.tag_glide); + initStetho(context); init(channel); //生命周期监听 @@ -543,4 +545,18 @@ public class XChatApplication extends BaseApp { unregisterActivityLifecycleCallbacks(lifeCycleHelper); } } + + /** + * 初始化Stetho(网络调试) + */ + private static void initStetho(Context context) { + if (Env.isDebug()) { + Stetho.initialize( + Stetho.newInitializerBuilder(context) + .enableDumpapp(Stetho.defaultDumperPluginsProvider(context)) + .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context)) + .build() + ); + } + } } diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java index 44d1c638e..e9a43283c 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java @@ -125,6 +125,9 @@ public class HomePartyRoomFragment extends BaseRoomFragment= 0) { + textView?.text = mmssFormat.format(gap) + } + } + .doOnComplete { + switchUI(false) + } + .subscribe() + } + + /** + * 切换UI + * @param isCountDown 是否倒计时模式?否则为可抢红包模式 + */ + private fun switchUI(isCountDown: Boolean) { + if (isCountDown) { + textView?.setBackgroundResource(R.drawable.shape_99292929_8) + textView?.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10f) + } else { + textView?.setBackgroundResource(R.drawable.red_package_widget_bg_text) + textView?.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 9f) + } + } + + fun onStop() { + if (countDownDisposable?.isDisposed == false) { + countDownDisposable?.dispose() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/widget/MicroView.java b/app/src/main/java/com/yizhuan/erban/avroom/widget/MicroView.java index bc33c63bf..fc57e8e8c 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/widget/MicroView.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/widget/MicroView.java @@ -116,6 +116,9 @@ public class MicroView extends LinearLayout implements View.OnLayoutChangeListen } private void subMsg() { + if (isInEditMode()) { + return; + } subscribe = IMNetEaseManager.get() .getChatRoomEventObservable().subscribe( roomEvent -> onReceiveRoomEvent(roomEvent), diff --git a/app/src/main/res/drawable-xxhdpi/red_package_widget_bg.webp b/app/src/main/res/drawable-xxhdpi/red_package_widget_bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..5161c52062882686eb743e34c6f3e473d054b0fc GIT binary patch literal 6348 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/shape_99292929_8.xml b/app/src/main/res/drawable/shape_99292929_8.xml new file mode 100644 index 000000000..031263cf0 --- /dev/null +++ b/app/src/main/res/drawable/shape_99292929_8.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/layout/red_package_widget.xml b/app/src/main/res/layout/red_package_widget.xml new file mode 100644 index 000000000..ddb01e8bf --- /dev/null +++ b/app/src/main/res/layout/red_package_widget.xml @@ -0,0 +1,26 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 75d49f75f..49d7c0385 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5169,5 +5169,5 @@ 發彈幕\n搶紅包 已存入錢包,請到我的收益確認 已領取%s/%s個 - + 抢红包 \ No newline at end of file diff --git a/app/src/module_mini_world/res/layout/fragment_av_room_game.xml b/app/src/module_mini_world/res/layout/fragment_av_room_game.xml index 52792c507..4c4741517 100644 --- a/app/src/module_mini_world/res/layout/fragment_av_room_game.xml +++ b/app/src/module_mini_world/res/layout/fragment_av_room_game.xml @@ -229,20 +229,33 @@ android:onClick="@{click}" android:src="@drawable/ic_first_charge_enter" android:visibility="gone" - tools:contentDescription="@string/layout_fragment_av_room_game_02" /> + tools:contentDescription="@string/layout_fragment_av_room_game_02" + tools:visibility="visible" /> + tools:contentDescription="@string/layout_fragment_av_room_game_03" + tools:visibility="visible" /> + + + tools:contentDescription="@string/layout_fragment_av_room_game_04" + tools:visibility="visible" /> + tools:contentDescription="@string/layout_fragment_av_room_game_05" + tools:visibility="visible" /> + app:layout_constraintTop_toTopOf="parent" /> @@ -201,10 +201,20 @@ android:onClick="@{click}" android:src="@drawable/ic_radish_entrance" android:visibility="gone" - app:layout_constraintBottom_toTopOf="@id/iv_treasure_box" + tools:visibility="visible" + app:layout_constraintBottom_toTopOf="@id/red_package_widget" app:layout_constraintEnd_toEndOf="parent" tools:contentDescription="@string/layout_fragment_single_room_06" /> + + + tools:contentDescription="@string/layout_fragment_single_room_07" + tools:visibility="visible" /> Date: Wed, 25 Oct 2023 15:17:08 +0800 Subject: [PATCH 06/14] =?UTF-8?q?feat:=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=8F=91=E7=BA=A2=E5=8C=85=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= =?UTF-8?q?=20feat:=E5=A2=9E=E5=8A=A0=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/application/XChatApplication.java | 2 + .../erban/avroom/fragment/BaseRoomFragment.kt | 5 +- .../fragment/HomePartyRoomFragment.java | 5 + .../avroom/redpackage/RedPackageSendDialog.kt | 36 ++-- .../avroom/redpackage/RedPackageWidget.kt | 3 +- .../send/PrivateRedPackageEditorFragment.kt | 162 ++++++++++++++- .../send/PublicRedPackageEditorFragment.kt | 126 +++++++++++- .../redpackage/send/RedPackageSendDialog2.kt | 64 +++++- .../send/RedPackageTypeItemAdapter.kt | 7 +- .../java/com/yizhuan/erban/base/BaseDialog.kt | 1 + .../erban/ui/setting/SettingActivity.kt | 1 - .../layout/red_package_private_fragment.xml | 1 + .../layout/red_package_public_fragment.xml | 5 +- .../res/layout/red_package_send_dialog.xml | 7 +- app/src/main/res/values/strings.xml | 1 + .../interceptor/TimeSyncInterceptor.kt | 57 ++++++ .../redpackage/RedPackageModel.kt | 68 +++++-- .../java/com/chuhai/utils/ServiceTime.kt | 25 +++ .../chuhai/utils/ShapeViewOutlineProvider.kt | 42 ++++ .../java/com/chuhai/utils/ktx/EditTextKtx.kt | 106 ++++++++++ .../java/com/chuhai/utils/ktx/ViewKtx.kt | 192 ++++++++++++++++++ 21 files changed, 852 insertions(+), 64 deletions(-) create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/interceptor/TimeSyncInterceptor.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/ServiceTime.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/ShapeViewOutlineProvider.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/ktx/EditTextKtx.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/ktx/ViewKtx.kt diff --git a/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java b/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java index 38ffa7001..255ab7505 100644 --- a/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java +++ b/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java @@ -65,6 +65,7 @@ import com.yizhuan.xchat_android_core.im.custom.bean.OpenSignInAttachment; import com.yizhuan.xchat_android_core.initial.InitialModel; import com.yizhuan.xchat_android_core.interceptor.NoParamsInterceptor; import com.yizhuan.xchat_android_core.interceptor.ParamsInterceptor; +import com.yizhuan.xchat_android_core.interceptor.TimeSyncInterceptor; import com.yizhuan.xchat_android_core.manager.IMMessageManager; import com.yizhuan.xchat_android_core.manager.IMSystemMsgManager; import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel; @@ -407,6 +408,7 @@ public class XChatApplication extends BaseApp { .setBaseUrl(url) .addInterceptors(new ParamsInterceptor(httpParams)) .addInterceptors(new NoParamsInterceptor())//注意:拦截器的添加顺序,请求的拦截顺序 + .addInterceptors(new TimeSyncInterceptor()) .certificates() .build(); //单例的model 初始化 diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt index 49951dc4e..1232071d2 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt @@ -47,6 +47,7 @@ import com.yizhuan.erban.avroom.dialog.RoomOperationDialog import com.yizhuan.erban.avroom.firstcharge.FirstChargeDialog import com.yizhuan.erban.avroom.presenter.BaseRoomPresenter import com.yizhuan.erban.avroom.redpackage.RedPackageSendDialog +import com.yizhuan.erban.avroom.redpackage.send.RedPackageSendDialog2 import com.yizhuan.erban.avroom.room_album.RoomAlbumModel import com.yizhuan.erban.avroom.view.IBaseRoomView import com.yizhuan.erban.avroom.widget.BottomView @@ -162,7 +163,7 @@ open class BaseRoomFragment?> : * 是否開啟禮物值顯示 */ private var showGiftValue = false - private var redPackageSendDialog: RedPackageSendDialog? = null + private var redPackageSendDialog: RedPackageSendDialog2? = null private val mOnSoftKeyBoardChangeListener: OnSoftKeyBoardChangeListener = object : OnSoftKeyBoardChangeListener { override fun keyBoardShow(height: Int) { @@ -1289,7 +1290,7 @@ open class BaseRoomFragment?> : override fun onMoreBtnClick() { val dialog = RoomOperationDialog(mContext) dialog.setOnActionListener { - redPackageSendDialog = RedPackageSendDialog() + redPackageSendDialog = RedPackageSendDialog2() redPackageSendDialog?.show(activity) } dialog.show() diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java index e9a43283c..e80d0732b 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java @@ -529,6 +529,11 @@ public class HomePartyRoomFragment extends BaseRoomFragment(), GridPass override fun onTextChanged(psw: String) { val password = passWordFragment?.password?.password ?: "" if (password.length == 6) { - dialogManager.showProgressDialog(context) - RedPackageModel.sendRedPackage(binding?.editGoldNum?.text.toString(), - binding?.editRedText?.text.toString().ifEmpty { "恭喜發財,大吉大利!" }, - binding?.editRedNum?.text.toString(), - AvRoomDataManager.get().mCurrentRoomInfo?.uid.toString(), getRedType(), DESUtils.DESAndBase64(password)) - .doOnError { - dialogManager.dismissDialog() - SingleToastUtil.showToast(it.message) - passWordFragment?.password?.clearPassword() - } - .subscribe { _ -> - PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe() - dialogManager.dismissDialog() - SingleToastUtil.showToast("發送成功") - passWordFragment?.dismissAllowingStateLoss() - dismissAllowingStateLoss() - } + LogUtils.d("onTextChanged() editGoldNum:${binding?.editGoldNum?.text.toString()} NUM:${binding?.editRedNum?.text.toString()}") +// dialogManager.showProgressDialog(context) +// RedPackageModel.sendRedPackage(binding?.editGoldNum?.text.toString(), +// binding?.editRedText?.text.toString().ifEmpty { "恭喜發財,大吉大利!" }, +// binding?.editRedNum?.text.toString(), +// AvRoomDataManager.get().mCurrentRoomInfo?.uid.toString(), getRedType(), DESUtils.DESAndBase64(password)) +// .doOnError { +// dialogManager.dismissDialog() +// SingleToastUtil.showToast(it.message) +// passWordFragment?.password?.clearPassword() +// } +// .subscribe { _ -> +// PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe() +// dialogManager.dismissDialog() +// SingleToastUtil.showToast("發送成功") +// passWordFragment?.dismissAllowingStateLoss() +// dismissAllowingStateLoss() +// } } } diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt index a6fffdd76..3491f2b63 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt @@ -9,10 +9,10 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.isVisible import com.yizhuan.erban.R import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo +import com.yizhuan.xchat_android_core.utils.LogUtils import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable -import io.reactivex.functions.Predicate import java.text.SimpleDateFormat import java.util.TimeZone import java.util.concurrent.TimeUnit @@ -52,6 +52,7 @@ class RedPackageWidget : ConstraintLayout { LayoutInflater.from(context) .inflate(R.layout.red_package_widget, this, true) textView = findViewById(R.id.tv_text) + this.setBackgroundResource(R.drawable.red_package_widget_bg) } fun loadData(data: RedPackageNotifyInfo?) { diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt index 6197ec904..a2c8944f5 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt @@ -2,34 +2,60 @@ package com.yizhuan.erban.avroom.redpackage.send import android.graphics.Color import androidx.core.view.isVisible +import com.chuhai.utils.ktx.addDisableFilter import com.chuhai.utils.ktx.getColorById +import com.chuhai.utils.ktx.singleClick import com.yizhuan.erban.R import com.yizhuan.erban.base.BaseBindingFragment import com.yizhuan.erban.databinding.RedPackagePrivateFragmentBinding +import com.yizhuan.erban.pay.password.GiveGoldPassWordFragment +import com.yizhuan.erban.pay.widget.GridPasswordNoFocusView +import com.yizhuan.erban.ui.setting.ModifyPwdActivity import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration +import com.yizhuan.xchat_android_core.auth.AuthModel +import com.yizhuan.xchat_android_core.initial.InitialModel +import com.yizhuan.xchat_android_core.manager.AvRoomDataManager +import com.yizhuan.xchat_android_core.pay.PayModel +import com.yizhuan.xchat_android_core.redpackage.RedPackageModel +import com.yizhuan.xchat_android_core.user.UserModel +import com.yizhuan.xchat_android_core.utils.toIntOrDef import com.yizhuan.xchat_android_library.annatation.ActLayoutRes -import com.yizhuan.xchat_android_library.utils.keyboard.KeyboardUtil +import com.yizhuan.xchat_android_library.utils.ResUtil +import com.yizhuan.xchat_android_library.utils.SingleToastUtil +import com.yizhuan.xchat_android_library.utils.codec.DESUtils +import okhttp3.internal.toLongOrDefault /** * Created by Max on 2023/10/23 12:14 - * Desc: + * Desc: 厅内红包 **/ @ActLayoutRes(R.layout.red_package_private_fragment) class PrivateRedPackageEditorFragment : BaseBindingFragment() { + + private var passWordFragment: GiveGoldPassWordFragment? = null + + private var typeAdapter: RedPackageTypeItemAdapter? = null + + // 生效时间类型 0 立即生效 1 限时生效 + private var timeType = 0 override fun initiate() { + mBinding.etText.addDisableFilter(" ", "\n") initTypeView() updateTimeView(true) } override fun onSetListener() { super.onSetListener() - mBinding.tvNow.setOnClickListener { + mBinding.tvNow.singleClick { updateTimeView(true) } - mBinding.tvDelay.setOnClickListener { + mBinding.tvDelay.singleClick { updateTimeView(false) } + mBinding.tvSend.singleClick { + checkSend() + } } private fun initTypeView() { @@ -41,33 +67,34 @@ class PrivateRedPackageEditorFragment : BaseBindingFragment() list.add( RedPackageTypeItemAdapter.ItemData( - "UNLIMITED", + 1, R.string.red_package_type_unlimited_name, R.string.red_package_type_unlimited_tips ) ) list.add( RedPackageTypeItemAdapter.ItemData( - "FOLLOW", + 2, R.string.red_package_type_follow_name, R.string.red_package_type_follow_tips ) ) list.add( RedPackageTypeItemAdapter.ItemData( - "SHARE", + 3, R.string.red_package_type_share_name, R.string.red_package_type_share_tips ) ) list.add( RedPackageTypeItemAdapter.ItemData( - "MSG", + 4, R.string.red_package_type_msg_name, R.string.red_package_type_msg_tips ) ) val adapter = RedPackageTypeItemAdapter(list) + typeAdapter = adapter adapter.setOnItemClickListener { _, view, position -> adapter.select(position) updateTypeView(adapter.getSelect()?.type) @@ -81,15 +108,15 @@ class PrivateRedPackageEditorFragment : BaseBindingFragment { + 1 -> { mBinding.tvNow.isVisible = true mBinding.tvDelay.isVisible = true mBinding.etText.isVisible = false } - "MSG" -> { + 4 -> { mBinding.tvNow.isVisible = false mBinding.tvDelay.isVisible = false mBinding.etText.isVisible = true @@ -108,15 +135,128 @@ class PrivateRedPackageEditorFragment : BaseBindingFragment maxNum) { + SingleToastUtil.showToast("紅包數量不能小於${minNum}或大於${maxNum}!") + return + } + val goldNum = mBinding?.etMoney?.text.toString().toIntOrDef() + if (goldNum % 10 != 0) { + SingleToastUtil.showToast("鉆石數必須為10的倍數!") + return + } + + if (goldNum < minGold || goldNum > maxGold) { + SingleToastUtil.showToast("鉆石數量不能小於${minGold}或大於${maxGold}!") + return + } + if (goldNum.toFloat() / redNum * rate < 0.1) {//單個手氣紅包價值不低於0.1水晶 + SingleToastUtil.showToast("單個紅包金額過低") + return + } + UserModel.get().cacheLoginUserInfo?.let { + if (!it.isBindPaymentPwd) { + ModifyPwdActivity.start(context, ModifyPwdActivity.PAY_PWD) + return + } + } + GiveGoldPassWordFragment.newInstance( + childFragmentManager, + mBinding?.etMoney?.text.toString() + ).apply { + setListener(object : GridPasswordNoFocusView.OnPasswordChangedListener { + override fun onTextChanged(psw: String?) { + val password = passWordFragment?.password?.password ?: "" + if (password.length == 6) { + send(password) + } + } + + override fun onInputFinish(psw: String?) { + } + }) + passWordFragment = this + } + } + + /** + * 密码输入完成 + */ + private fun send(password: String) { + dialogManager.showProgressDialog(context) + val kind = typeAdapter?.getSelect()?.type ?: 1 + val message = if (kind == 4) { + mBinding.etText.text.trim().toString() + } else { + "" + } + val validityType = if (kind == 1) { + timeType + } else { + 0 + } + RedPackageModel.sendRedPackage( + goldNum = mBinding.etMoney.text.trim().toString().toLongOrDefault(0), + message = message, + num = mBinding.etNum.text.trim().toString().toLongOrDefault(0), + roomUId = AvRoomDataManager.get().mCurrentRoomInfo?.uid.toString(), + type = 1, + kind = kind, + validityType = validityType, + password = DESUtils.DESAndBase64(password) + ) + .compose(bindToLifecycle()) + .doOnError { + dialogManager.dismissDialog() + SingleToastUtil.showToast(it.message) + passWordFragment?.password?.clearPassword() + } + .subscribe { _ -> + PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe() + dialogManager.dismissDialog() + SingleToastUtil.showToast("發送成功") + passWordFragment?.dismissAllowingStateLoss() + (parentFragment as? RedPackageSendDialog2)?.dismissAllowingStateLoss() + } + } + + override fun onDestroy() { + super.onDestroy() + passWordFragment?.dismissAllowingStateLoss() + passWordFragment = null + } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt index 12b94ff0f..063da24db 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt @@ -1,17 +1,139 @@ package com.yizhuan.erban.avroom.redpackage.send +import com.chuhai.utils.ktx.addDisableFilter +import com.chuhai.utils.ktx.setOnInputChangedListener +import com.chuhai.utils.ktx.singleClick +import com.chuhai.utils.ktx.toStringRes import com.yizhuan.erban.R import com.yizhuan.erban.base.BaseBindingFragment -import com.yizhuan.erban.databinding.RedPackagePrivateFragmentBinding import com.yizhuan.erban.databinding.RedPackagePublicFragmentBinding +import com.yizhuan.erban.pay.password.GiveGoldPassWordFragment +import com.yizhuan.erban.pay.widget.GridPasswordNoFocusView +import com.yizhuan.erban.ui.setting.ModifyPwdActivity +import com.yizhuan.xchat_android_core.auth.AuthModel +import com.yizhuan.xchat_android_core.initial.InitialModel +import com.yizhuan.xchat_android_core.initial.bean.InitInfo +import com.yizhuan.xchat_android_core.manager.AvRoomDataManager +import com.yizhuan.xchat_android_core.pay.PayModel +import com.yizhuan.xchat_android_core.redpackage.RedPackageModel +import com.yizhuan.xchat_android_core.user.UserModel +import com.yizhuan.xchat_android_core.utils.toIntOrDef import com.yizhuan.xchat_android_library.annatation.ActLayoutRes +import com.yizhuan.xchat_android_library.utils.SingleToastUtil +import com.yizhuan.xchat_android_library.utils.codec.DESUtils +import okhttp3.internal.toLongOrDefault /** * Created by Max on 2023/10/23 12:14 - * Desc: + * Desc:全服红包 **/ @ActLayoutRes(R.layout.red_package_public_fragment) class PublicRedPackageEditorFragment : BaseBindingFragment() { + + private var passWordFragment: GiveGoldPassWordFragment? = null + override fun initiate() { + mBinding.etText.addDisableFilter("\n") + mBinding.etText.setOnInputChangedListener { + mBinding.tvTextLength.text = + R.string.red_package_opened_count_format.toStringRes().format(this, 20) + true + } + + mBinding.tvSend.singleClick { + checkSend() + } + } + + private fun checkSend() { + val initInfo = InitialModel.get().cacheInitInfo ?: InitInfo() + val minNum = initInfo.redEnvelopeConfig.serverRedEnvelopeMinNum + val maxNum = initInfo.redEnvelopeConfig.serverRedEnvelopeMaxNum + val minGold = initInfo.redEnvelopeConfig.serverRedEnvelopeMinAmount + val maxGold = initInfo.redEnvelopeConfig.serverRedEnvelopeMaxAmount + val rate = + if (initInfo.redEnvelopeConfig.exchangeDiamondsRate == 0.0) 0.68 else initInfo.redEnvelopeConfig.exchangeDiamondsRate + + val redNum = mBinding?.etNum?.text.toString().toIntOrDef() + if (redNum < minNum || redNum > maxNum) { + SingleToastUtil.showToast("紅包數量不能小於${minNum}或大於${maxNum}!") + return + } + val goldNum = mBinding?.etMoney?.text.toString().toIntOrDef() + if (goldNum % 100 != 0) { + SingleToastUtil.showToast("鉆石數必須為100的倍數!") + return + } + if (goldNum < minGold || goldNum > maxGold) { + SingleToastUtil.showToast("鉆石數量不能小於${minGold}或大於${maxGold}!") + return + } + if (goldNum.toFloat() / redNum * rate < 0.1) {//單個手氣紅包價值不低於0.1水晶 + SingleToastUtil.showToast("單個紅包金額過低") + return + } + UserModel.get().cacheLoginUserInfo?.let { + if (!it.isBindPaymentPwd) { + ModifyPwdActivity.start(context, ModifyPwdActivity.PAY_PWD) + return + } + } + GiveGoldPassWordFragment.newInstance( + childFragmentManager, + mBinding?.etMoney?.text.toString() + ).apply { + setListener(object : GridPasswordNoFocusView.OnPasswordChangedListener { + override fun onTextChanged(psw: String?) { + val password = passWordFragment?.password?.password ?: "" + if (password.length == 6) { + send(password) + } + } + + override fun onInputFinish(psw: String?) { + } + }) + passWordFragment = this + } + } + + /** + * 密码输入完成 + */ + private fun send(password: String) { + dialogManager.showProgressDialog(context) + var message = mBinding.etText.text.trim().toString() + if (message.isEmpty()) { + message = R.string.red_package_msg_def.toStringRes() + } + RedPackageModel.sendRedPackage( + goldNum = mBinding.etMoney.text.trim().toString().toLongOrDefault(0), + message = message, + num = mBinding.etNum.text.trim().toString().toLongOrDefault(0), + roomUId = AvRoomDataManager.get().mCurrentRoomInfo?.uid.toString(), + type = 2, + kind = 0, + validityType = 0, + password = DESUtils.DESAndBase64(password) + ) + .compose(bindToLifecycle()) + .doOnError { + dialogManager.dismissDialog() + SingleToastUtil.showToast(it.message) + passWordFragment?.password?.clearPassword() + } + .subscribe { _ -> + PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe() + dialogManager.dismissDialog() + SingleToastUtil.showToast("發送成功") + passWordFragment?.dismissAllowingStateLoss() + (parentFragment as? RedPackageSendDialog2)?.dismissAllowingStateLoss() + } + } + + override fun onDestroy() { + super.onDestroy() + passWordFragment?.dismissAllowingStateLoss() + passWordFragment = null } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt index 9d1c5ee48..4dab83dbd 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt @@ -4,16 +4,30 @@ package com.yizhuan.erban.avroom.redpackage.send import android.annotation.SuppressLint import android.view.Gravity import android.view.WindowManager +import com.bumptech.glide.manager.Lifecycle +import com.chuhai.utils.ktx.singleClick import com.chuhai.utils.ktx.toStringRes import com.yizhuan.erban.R import com.yizhuan.erban.avroom.redpackage.RedPackageEvent import com.yizhuan.erban.base.BaseDialog import com.yizhuan.erban.common.ViewPagerAdapter import com.yizhuan.erban.databinding.RedPackageSendDialogBinding +import com.yizhuan.erban.ui.pay.ChargeActivity +import com.yizhuan.erban.ui.webview.CommonWebViewActivity +import com.yizhuan.erban.ui.webview.DialogWebViewActivity import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator +import com.yizhuan.xchat_android_core.Constants +import com.yizhuan.xchat_android_core.UriProvider +import com.yizhuan.xchat_android_core.initial.InitialModel +import com.yizhuan.xchat_android_core.pay.PayModel +import com.yizhuan.xchat_android_core.pay.event.UpdateWalletInfoEvent import com.yizhuan.xchat_android_core.redpackage.* import com.yizhuan.xchat_android_library.annatation.ActLayoutRes +import com.yizhuan.xchat_android_library.common.util.DeviceUtil +import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil +import com.yizhuan.xchat_android_library.utils.ResUtil +import com.yizhuan.xchat_android_library.utils.SingleToastUtil import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -35,7 +49,24 @@ class RedPackageSendDialog2 : BaseDialog() { @SuppressLint("SetTextI18n") override fun init() { EventBus.getDefault().register(this) - val tabTitles = arrayListOf(R.string.red_package_room.toStringRes(), R.string.red_package_public.toStringRes()) + if (InitialModel.get().cacheInitInfo == null) { + InitialModel.get().init(true) + SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_redpackage_redpackagesenddialog_01)) + dismissAllowingStateLoss() + return + } + initView() + initEvent() + PayModel.get().currentWalletInfo?.let { + binding.tvBalance.text = it.diamondNum.toLong().toString() + } + } + + private fun initView() { + val tabTitles = arrayListOf( + R.string.red_package_room.toStringRes(), + R.string.red_package_public.toStringRes() + ) val topMagicIndicatorAdapter = TabIndicatorAdapter(context, tabTitles) topMagicIndicatorAdapter.setOnItemSelectListener { binding.viewPager.currentItem = it @@ -54,11 +85,42 @@ class RedPackageSendDialog2 : BaseDialog() { ViewPagerHelper.bind(binding.tabLayout, binding.viewPager) } + private fun initEvent() { + binding.ivHelp.singleClick { + DialogWebViewActivity.start( + context, + UriProvider.getRedPacketRule() + ) + } + + binding.tvBalance.singleClick { + if (AppMetaDataUtil.getChannelID() == Constants.GOOGLE) { + ChargeActivity.start(context) + } else { + CommonWebViewActivity.start( + context, UriProvider.getOfficialPay( + 4, + DeviceUtil.getDeviceId(context) + ) + ) + } + } + } + override fun onDestroy() { super.onDestroy() EventBus.getDefault().unregister(this) } + @Subscribe(threadMode = ThreadMode.MAIN) + fun onWalletInfoUpdate(event: UpdateWalletInfoEvent?) { + if (!isViewLoaded) { + return + } + binding.tvBalance.text = PayModel.get().currentWalletInfo?.diamondNum?.toString() + ?: "0" + } + @Subscribe(threadMode = ThreadMode.MAIN) fun handleRedPackageDialog(event: RedPackageEvent?) { dismissAllowingStateLoss() diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageTypeItemAdapter.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageTypeItemAdapter.kt index 1d5eb05b1..60531a202 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageTypeItemAdapter.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageTypeItemAdapter.kt @@ -19,7 +19,12 @@ class RedPackageTypeItemAdapter(list: List) : private var selectPosition = -1 @Keep - data class ItemData(val type: String, val name: Int, val tips: Int) + data class ItemData( + /** + * 红包种类 0 旧版本 1 无门槛红包 2 关注红包 3 分享红包 4 弹幕红包 + */ + val type: Int, val name: Int, val tips: Int + ) override fun convert(helper: BaseViewHolder, item: ItemData) { helper.setText(R.id.tv_name, item.name) diff --git a/app/src/main/java/com/yizhuan/erban/base/BaseDialog.kt b/app/src/main/java/com/yizhuan/erban/base/BaseDialog.kt index ab8b29fd4..9c0afd7b9 100644 --- a/app/src/main/java/com/yizhuan/erban/base/BaseDialog.kt +++ b/app/src/main/java/com/yizhuan/erban/base/BaseDialog.kt @@ -14,6 +14,7 @@ import java.lang.reflect.ParameterizedType abstract class BaseDialog : RxDialogFragment() { + val isViewLoaded: Boolean get() = _binding != null private var _binding: T? = null private var onDismissListener: (() -> Unit)? = null val binding get() = _binding!! diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt index de0c6a8e5..cc3475517 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt @@ -80,7 +80,6 @@ class SettingActivity : BaseViewBindingActivity(), View. if (BuildConfig.DEBUG) { binding.titleBar.setOnTitleClickListener { -// RedPackageSendDialog2().show(this) RedPackageOpenDialog2().show(this) } } diff --git a/app/src/main/res/layout/red_package_private_fragment.xml b/app/src/main/res/layout/red_package_private_fragment.xml index a611469f0..707c0cc84 100644 --- a/app/src/main/res/layout/red_package_private_fragment.xml +++ b/app/src/main/res/layout/red_package_private_fragment.xml @@ -189,6 +189,7 @@ android:gravity="center" android:hint="@string/red_package_msg_hint" android:maxLength="10" + android:singleLine="true" android:textColor="@color/color_322F4D" android:textColorHint="@color/color_B3B3C3" android:textSize="16sp" diff --git a/app/src/main/res/layout/red_package_public_fragment.xml b/app/src/main/res/layout/red_package_public_fragment.xml index 986184bc1..324223a42 100644 --- a/app/src/main/res/layout/red_package_public_fragment.xml +++ b/app/src/main/res/layout/red_package_public_fragment.xml @@ -130,13 +130,14 @@ android:maxLength="20" android:paddingHorizontal="10dp" android:paddingVertical="10dp" - android:text="@string/red_package_msg_def" + android:hint="@string/red_package_msg_def" + android:textColorHint="@color/color_B3B3C3" android:textColor="@color/color_322F4D" android:textSize="16sp" app:layout_constraintTop_toBottomOf="@id/et_num" /> @@ -34,9 +32,10 @@ app:layout_constraintTop_toTopOf="@id/iv_top" /> 已存入錢包,請到我的收益確認
已領取%s/%s個 抢红包 + 请输入弹幕内容 \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/interceptor/TimeSyncInterceptor.kt b/core/src/main/java/com/yizhuan/xchat_android_core/interceptor/TimeSyncInterceptor.kt new file mode 100644 index 000000000..668e30526 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/interceptor/TimeSyncInterceptor.kt @@ -0,0 +1,57 @@ +package com.yizhuan.xchat_android_core.interceptor + +import com.chuhai.utils.AppUtils +import com.chuhai.utils.ServiceTime +import com.yizhuan.xchat_android_core.utils.LogUtils +import com.yizhuan.xchat_android_library.utils.NetworkUtils +import okhttp3.Headers +import okhttp3.Interceptor +import okhttp3.Response + +/** + * Created by Max on 2023/10/25 14:17 AM + * Desc:服务器时间同步器 + */ +class TimeSyncInterceptor : Interceptor { + + private var minResponseTime = Long.MAX_VALUE + + override fun intercept(chain: Interceptor.Chain): Response { + val request = chain.request() + val startTime = System.nanoTime() + val proceed = chain.proceed(request) + val lastTime = System.nanoTime() - startTime + val headers = proceed.headers + calibration(lastTime, headers) + return proceed + } + + private fun calibration(responseTime: Long, headers: Headers?) { + if (headers == null) { + return + } + + //如果这一次的请求响应时间小于上一次,则更新本地维护的时间 + if (responseTime >= minResponseTime) { + return + } + + try { + // 网络无法使用时,不能同步时间 + if (!NetworkUtils.isNetworkAvailable(AppUtils.getApp())) { + return + } + // 网络响应头包含Date字段(世界时间) + // 利用Interceptor记录每次请求响应时间,如果本次网络操作的时间小于上一次网络操作的时间,则获取Date字段,转换时区后更新本地 + val date = headers.getDate("Date") + LogUtils.d("TimeSyncInterceptor date:$date time:${date?.time}") + date?.let { + //客户端请求过程一般大于比收到响应时间耗时,所以没有简单的除2 加上去,而是直接用该时间 + ServiceTime.refreshServiceTime(it.time) + minResponseTime = responseTime + } + } catch (e: Exception) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt index bbaba5f67..746274cea 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt @@ -1,7 +1,6 @@ package com.yizhuan.xchat_android_core.redpackage - import com.yizhuan.xchat_android_core.bean.response.ServiceResult import com.yizhuan.xchat_android_core.utils.net.handleBeanData import com.yizhuan.xchat_android_core.utils.net.handleStringData @@ -20,32 +19,53 @@ object RedPackageModel { api = RxNet.create(Api::class.java) } - fun sendRedPackage(goldNum: String, message: String, num: String, roomUId: String, type: Int, password: String): Single { - return api.sendRedPackage(goldNum, message, num, roomUId, type, password) - .io2main() - .handleStringData() + fun sendRedPackage( + goldNum: Long, message: String, num: Long, roomUId: String, type: Int, + kind: Int, validityType: Int, password: String + ): Single { + return api.sendRedPackage( + goldNum, + message, + num, + roomUId, + type, + kind, + validityType, + password + ) + .io2main() + .handleStringData() } - fun openRedPackage(redEnvelopeId: String): Single { return api.openRedPackage(redEnvelopeId) - .io2main() - .handleBeanData() + .io2main() + .handleBeanData() } fun getRedPackage(uid: Long): Observable { return api.getRedPackage(uid) - .io2main() - .handleBeanData() - .toObservable() - .flatMap { Observable.fromIterable(it) } - .map { RedPackageNotifyInfo(it.id, it.type, it.message, it.userVO?.avatar?:"", it.userVO?.nick?:"", it.roomUId, "") } + .io2main() + .handleBeanData() + .toObservable() + .flatMap { Observable.fromIterable(it) } + .map { + RedPackageNotifyInfo( + it.id, + it.type, + it.message, + it.userVO?.avatar ?: "", + it.userVO?.nick ?: "", + it.roomUId, + "" + ) + } } - fun setRedPackageSwitch(roomUid: Long):Single { + fun setRedPackageSwitch(roomUid: Long): Single { return api.setRedPackageSwitch(roomUid) - .io2main() - .handleBeanData() + .io2main() + .handleBeanData() } private interface Api { @@ -57,12 +77,16 @@ object RedPackageModel { */ @FormUrlEncoded @POST("/red-envelope") - fun sendRedPackage(@Field("goldNum") goldNum: String, - @Field("message") message: String, - @Field("num") num: String, - @Field("roomUId") roomUId: String, - @Field("type") type: Int, - @Field("password") password: String): Single> + fun sendRedPackage( + @Field("goldNum") goldNum: Long, + @Field("message") message: String, + @Field("num") num: Long, + @Field("roomUId") roomUId: String, + @Field("type") type: Int, + @Field("kind") kind: Int, + @Field("validityType") validityType: Int, + @Field("password") password: String + ): Single> /** * 开红包 diff --git a/library/src/module_utils/java/com/chuhai/utils/ServiceTime.kt b/library/src/module_utils/java/com/chuhai/utils/ServiceTime.kt new file mode 100644 index 000000000..9a77a6816 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/ServiceTime.kt @@ -0,0 +1,25 @@ +package com.chuhai.utils + +import android.os.SystemClock + +/** + * Created by Max on 3/4/21 5:00 PM + * Desc:服务器时间 + */ +object ServiceTime { + + // 服务器时间与系统开机时间的时差 + private var serviceTimeDiff: Long? = null + + val time + get() = if (serviceTimeDiff == null) System.currentTimeMillis() + else SystemClock.elapsedRealtime() + serviceTimeDiff!! + + /** + * 刷新服务器时间 + */ + fun refreshServiceTime(time: Long) { + //serviceTimeDiff = 服务器时间 - 此刻系统启动时间 + serviceTimeDiff = time - SystemClock.elapsedRealtime() + } +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/ShapeViewOutlineProvider.kt b/library/src/module_utils/java/com/chuhai/utils/ShapeViewOutlineProvider.kt new file mode 100644 index 000000000..5394bacba --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/ShapeViewOutlineProvider.kt @@ -0,0 +1,42 @@ +package com.chuhai.utils + +import android.graphics.Outline +import android.view.View +import android.view.ViewOutlineProvider +import kotlin.math.min + +/** + * Created by Max on 2/25/21 1:50 PM + * Desc: + */ +class ShapeViewOutlineProvider { + + /** + * Created by Max on 2/25/21 1:48 PM + * Desc:圆角 + */ + class Round(var corner: Float) : ViewOutlineProvider() { + override fun getOutline(view: View, outline: Outline) { + outline.setRoundRect( + 0, + 0, + view.width, + view.height, + corner + ) + } + } + + /** + * Created by Max on 2/25/21 1:48 PM + * Desc:圆形 + */ + class Circle : ViewOutlineProvider() { + override fun getOutline(view: View, outline: Outline) { + val min = min(view.width, view.height) + val left = (view.width - min) / 2 + val top = (view.height - min) / 2 + outline.setOval(left, top, min, min) + } + } +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/ktx/EditTextKtx.kt b/library/src/module_utils/java/com/chuhai/utils/ktx/EditTextKtx.kt new file mode 100644 index 000000000..cd01b47fb --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/ktx/EditTextKtx.kt @@ -0,0 +1,106 @@ +package com.chuhai.utils.ktx + +import android.text.Editable +import android.text.InputFilter +import android.text.InputFilter.LengthFilter +import android.text.Spanned +import android.text.TextWatcher +import android.text.method.HideReturnsTransformationMethod +import android.text.method.PasswordTransformationMethod +import android.widget.EditText + + +/** + * 设置editText输入监听 + * @param onChanged 改变事件 + * @return 是否接受此次文本的改变 + */ +inline fun EditText.setOnInputChangedListener( + /** + * @param Int:当前长度 + * @return 是否接受此次文本的改变 + */ + crossinline onChanged: (Int).() -> Boolean +) { + this.addTextChangedListener(object : TextWatcher { + + var flag = false + + override fun afterTextChanged(p0: Editable?) { + if (flag) { + return + } + if (!onChanged(p0?.length ?: 0)) { + flag = true + this@setOnInputChangedListener.setText( + this@setOnInputChangedListener.getTag( + 1982329101 + ) as? String + ) + this@setOnInputChangedListener.setSelection(this@setOnInputChangedListener.length()) + flag = false + } else { + flag = false + } + } + + override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + this@setOnInputChangedListener.setTag(1982329101, p0?.toString()) + } + + override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + } + }) +} + +/** + * 切换密码可见度 + */ +fun EditText.switchPasswordVisibility(visibility: Boolean) { + transformationMethod = + if (!visibility) HideReturnsTransformationMethod.getInstance() else PasswordTransformationMethod.getInstance() + +} + +/** + * 设置输入功能是否启用(不启用就相当于TextView) + */ +fun EditText.setInputEnabled(isEnabled: Boolean) { + if (isEnabled) { + isFocusable = true + isFocusableInTouchMode = true + isClickable = true + } else { + isFocusable = false + isFocusableInTouchMode = false + isClickable = false + keyListener = null + } +} + +/** + * 添加输入长度限制过滤器 + */ +fun EditText.addLengthFilter(maxLength: Int) { + val newFilters = filters.copyOf(filters.size + 1) + newFilters[newFilters.size - 1] = LengthFilter(maxLength) + filters = newFilters +} + + +/** + * 添加禁用文本过滤器 + * @param disableText 不允许输入该文本 + */ +fun EditText.addDisableFilter(vararg disableText: CharSequence) { + val newFilters = filters.copyOf(filters.size + 1) + newFilters[newFilters.size - 1] = InputFilter { source, p1, p2, p3, p4, p5 -> + disableText.forEach { + if (source.equals(it)) { + return@InputFilter "" + } + } + return@InputFilter null + } + filters = newFilters +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/ktx/ViewKtx.kt b/library/src/module_utils/java/com/chuhai/utils/ktx/ViewKtx.kt new file mode 100644 index 000000000..6d2e4e15c --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/ktx/ViewKtx.kt @@ -0,0 +1,192 @@ +package com.chuhai.utils.ktx + +import android.graphics.* +import android.os.Build +import android.os.SystemClock +import android.view.MotionEvent +import android.view.View +import android.view.ViewGroup +import android.widget.Checkable +import android.widget.TextView +import androidx.core.view.ScrollingView +import com.chuhai.utils.ShapeViewOutlineProvider +import com.chuhai.utils.UiUtils + + +/** + * 是否右-左布局 + */ +fun View.isRtl(): Boolean { + return UiUtils.isRtl(this) +} + + +/** + * 展示or隐藏 + */ +fun View.visibleOrGone(isShow: Boolean) { + visibility = if (isShow) { + View.VISIBLE + } else { + View.GONE + } +} + +/** + * 展示or隐藏 + */ +inline fun View.visibleOrGone(show: View.() -> Boolean = { true }) { + visibility = if (show(this)) { + View.VISIBLE + } else { + View.GONE + } +} + +/** + * 展示or不可见 + */ +inline fun View.visibleOrInvisible(show: View.() -> Boolean = { true }) { + visibility = if (show(this)) { + View.VISIBLE + } else { + View.INVISIBLE + } +} + +/** + * 点击事件 + */ +inline fun T.singleClick(time: Long = 800, crossinline block: (T) -> Unit) { + setOnClickListener(object : View.OnClickListener { + private var lastClickTime: Long = 0L + override fun onClick(v: View?) { + val currentTimeMillis = SystemClock.elapsedRealtime() + if (currentTimeMillis - lastClickTime > time || this is Checkable) { + lastClickTime = currentTimeMillis + block(this@singleClick) + } + } + }) +} + +/** + * 点击事件 + */ +fun T.singleClick(onClickListener: View.OnClickListener, time: Long = 800) { + setOnClickListener(object : View.OnClickListener { + private var lastClickTime: Long = 0L + override fun onClick(v: View?) { + val currentTimeMillis = SystemClock.elapsedRealtime() + if (currentTimeMillis - lastClickTime > time || this is Checkable) { + lastClickTime = currentTimeMillis + onClickListener.onClick(v) + } + } + }) +} + +/** + * 设置View圆角矩形 + */ +fun T.roundCorner(corner: Int) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + if (outlineProvider == null || outlineProvider !is ShapeViewOutlineProvider.Round) { + outlineProvider = ShapeViewOutlineProvider.Round(corner.toFloat()) + } else if (outlineProvider != null && outlineProvider is ShapeViewOutlineProvider.Round) { + (outlineProvider as ShapeViewOutlineProvider.Round).corner = corner.toFloat() + } + clipToOutline = true + } +} + +/** + * 设置View为圆形 + */ +fun T.circle() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + if (outlineProvider == null || outlineProvider !is ShapeViewOutlineProvider.Circle) { + outlineProvider = ShapeViewOutlineProvider.Circle() + } + clipToOutline = true + } +} + +fun View.getBitmap(): Bitmap { + val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) + val canvas = Canvas(bitmap) + canvas.translate(scrollX.toFloat(), scrollY.toFloat()) + draw(canvas) + return bitmap +} + +/** + * 设置边距 + */ +fun View?.setMargin(start: Int? = null, top: Int? = null, end: Int? = null, bottom: Int? = null) { + (this?.layoutParams as? ViewGroup.MarginLayoutParams)?.apply { + start?.let { + this.marginStart = start + } + top?.let { + this.topMargin = top + } + end?.let { + this.marginEnd = end + } + bottom?.let { + this.bottomMargin = bottom + } + } +} + + +/** + * 设置内边距 + */ +fun View?.setPadding2(start: Int? = null, top: Int? = null, end: Int? = null, bottom: Int? = null) { + if (this == null) return + this.setPadding( + start ?: paddingStart, top ?: paddingTop, end ?: paddingEnd, bottom ?: paddingBottom + ) +} + +/** + * 描边宽度 + */ +fun TextView.strokeWidth(width: Float) { + this.paint?.style = Paint.Style.FILL_AND_STROKE + this.paint?.strokeWidth = width + this.invalidate() +} + +/** + * 模拟点击并取消 + */ +fun ScrollingView.simulateClickAndCancel() { + val view = this as? View ?: return + val downEvent = MotionEvent.obtain( + System.currentTimeMillis(), System.currentTimeMillis(), MotionEvent.ACTION_DOWN, (view.right - view.left) / 2f, (view.bottom - view.top) / 2f, 0 + ) + view.dispatchTouchEvent(downEvent) + val cancelEvent = MotionEvent.obtain( + System.currentTimeMillis(), System.currentTimeMillis(), MotionEvent.ACTION_CANCEL, (view.right - view.left) / 2f, (view.bottom - view.top) / 2f, 0 + ) + view.dispatchTouchEvent(cancelEvent) +} + +/** + * 使用灰色滤镜 + */ +fun View.applyGrayFilter(isGray: Boolean) { + try { + val paint = Paint() + val colorMatrix = ColorMatrix() + colorMatrix.setSaturation(if (isGray) 0f else 1f) + paint.colorFilter = ColorMatrixColorFilter(colorMatrix) + setLayerType(View.LAYER_TYPE_HARDWARE, paint) + } catch (e: Exception) { + e.printStackTrace() + } +} + From d93b6fbf6034afc905e770cf28fede556a3752c7 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 25 Oct 2023 16:48:32 +0800 Subject: [PATCH 07/14] =?UTF-8?q?feat:=E6=96=B0=E5=A2=9Ecore=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=EF=BC=88=E6=A0=B8=E5=BF=83=E7=BB=84=E4=BB=B6=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=EF=BC=8C=E6=85=A2=E6=85=A2=E6=95=B4=E7=90=86=E9=87=8D?= =?UTF-8?q?=E6=9E=84=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/build.gradle | 2 + .../java/com/chuhai/core/LifecycleCleared.kt | 62 ++++++++++++++++ .../core/component/SuperBottomSheetDialog.kt | 54 ++++++++++++++ .../java/com/chuhai/utils/ServiceTime.kt | 2 +- .../chuhai/utils/ShapeViewOutlineProvider.kt | 2 +- .../java/com/chuhai/utils/UiUtils.kt | 4 +- .../java/com/chuhai/utils/ktx/ContextKtx.kt | 70 +++++++++++++++++++ .../java/com/chuhai/utils/ktx/ResourcesKtx.kt | 3 +- .../java/com/chuhai/utils/ktx/UiKtx.kt | 4 +- 9 files changed, 193 insertions(+), 10 deletions(-) create mode 100644 library/src/module_core/java/com/chuhai/core/LifecycleCleared.kt create mode 100644 library/src/module_core/java/com/chuhai/core/component/SuperBottomSheetDialog.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/ktx/ContextKtx.kt diff --git a/library/build.gradle b/library/build.gradle index 66c465af5..c29605115 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -36,6 +36,7 @@ android { 'src/module_easyphoto/java', 'src/module_common/java', 'src/module_utils/java', + 'src/module_core/java', ] @@ -45,6 +46,7 @@ android { 'src/module_easyphoto/res', 'src/module_common/res', 'src/module_utils/res', + 'src/module_core/res', ] diff --git a/library/src/module_core/java/com/chuhai/core/LifecycleCleared.kt b/library/src/module_core/java/com/chuhai/core/LifecycleCleared.kt new file mode 100644 index 000000000..c9a5391f5 --- /dev/null +++ b/library/src/module_core/java/com/chuhai/core/LifecycleCleared.kt @@ -0,0 +1,62 @@ +import androidx.lifecycle.* + +/** + * Created by Max on 2023/10/24 15:11 + * Desc:跟随目标生命周期销毁 + **/ +interface LifecycleCleared : LifecycleEventObserver { + + /** + * 是否启用 + */ + fun isEnabledLifecycleClear(): Boolean { + return true + } + + /** + * 获取监听的目标生命周期 + */ + abstract fun getTargetLifecycle(): Lifecycle? + + /** + * 目标生命周期已销毁:执行清除资源操作 + */ + abstract fun onTargetCleared() + + /** + * 获取要执行清理的事件 + */ + fun getClearEvent(): Lifecycle.Event? { + return Lifecycle.Event.ON_DESTROY + } + + /** + * 绑定生命周期 + */ + fun bindLifecycleClear() { + if (!isEnabledLifecycleClear()) { + return + } + getTargetLifecycle()?.addObserver(this) + } + + /** + * 取消绑定生命周期(如果实现类是自己主动销毁的,需要主动调下本方法) + */ + fun unBindLifecycleClear() { + if (!isEnabledLifecycleClear()) { + return + } + getTargetLifecycle()?.removeObserver(this) + } + + override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) { + if (!isEnabledLifecycleClear()) { + return + } + if (getClearEvent() == event) { + unBindLifecycleClear() + onTargetCleared() + } + } +} \ No newline at end of file diff --git a/library/src/module_core/java/com/chuhai/core/component/SuperBottomSheetDialog.kt b/library/src/module_core/java/com/chuhai/core/component/SuperBottomSheetDialog.kt new file mode 100644 index 000000000..9435cf31b --- /dev/null +++ b/library/src/module_core/java/com/chuhai/core/component/SuperBottomSheetDialog.kt @@ -0,0 +1,54 @@ +package com.chuhai.core.component + +import LifecycleCleared +import android.content.Context +import android.content.DialogInterface +import androidx.lifecycle.Lifecycle +import com.chuhai.utils.ktx.asLifecycle +import com.google.android.material.bottomsheet.BottomSheetDialog + + +/** + * Created by Max on 2023/10/24 15:11 + * Desc:BottomSheetDialog + */ +open class SuperBottomSheetDialog : BottomSheetDialog, LifecycleCleared { + + constructor(context: Context) : super(context) { + init() + } + + constructor(context: Context, theme: Int) : super(context, theme) { + init() + } + + constructor( + context: Context, + cancelable: Boolean, + cancelListener: DialogInterface.OnCancelListener? + ) : super(context, cancelable, cancelListener) { + init() + } + + protected open fun init() { + + } + + override fun getTargetLifecycle(): Lifecycle? { + return context.asLifecycle() + } + + override fun onTargetCleared() { + dismiss() + } + + override fun show() { + super.show() + bindLifecycleClear() + } + + override fun dismiss() { + super.dismiss() + unBindLifecycleClear() + } +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/ServiceTime.kt b/library/src/module_utils/java/com/chuhai/utils/ServiceTime.kt index 9a77a6816..fdaf87b46 100644 --- a/library/src/module_utils/java/com/chuhai/utils/ServiceTime.kt +++ b/library/src/module_utils/java/com/chuhai/utils/ServiceTime.kt @@ -3,7 +3,7 @@ package com.chuhai.utils import android.os.SystemClock /** - * Created by Max on 3/4/21 5:00 PM + * Created by Max on 2023/10/24 15:11 * Desc:服务器时间 */ object ServiceTime { diff --git a/library/src/module_utils/java/com/chuhai/utils/ShapeViewOutlineProvider.kt b/library/src/module_utils/java/com/chuhai/utils/ShapeViewOutlineProvider.kt index 5394bacba..c1f975b9e 100644 --- a/library/src/module_utils/java/com/chuhai/utils/ShapeViewOutlineProvider.kt +++ b/library/src/module_utils/java/com/chuhai/utils/ShapeViewOutlineProvider.kt @@ -6,7 +6,7 @@ import android.view.ViewOutlineProvider import kotlin.math.min /** - * Created by Max on 2/25/21 1:50 PM + * Created by Max on 2023/10/24 15:11 * Desc: */ class ShapeViewOutlineProvider { diff --git a/library/src/module_utils/java/com/chuhai/utils/UiUtils.kt b/library/src/module_utils/java/com/chuhai/utils/UiUtils.kt index 35e754b22..0fd1074fb 100644 --- a/library/src/module_utils/java/com/chuhai/utils/UiUtils.kt +++ b/library/src/module_utils/java/com/chuhai/utils/UiUtils.kt @@ -12,9 +12,7 @@ import androidx.core.view.ViewCompat /** - * - * @author Max - * @date 2019-12-10. + * Created by Max on 2023/10/24 15:11 */ diff --git a/library/src/module_utils/java/com/chuhai/utils/ktx/ContextKtx.kt b/library/src/module_utils/java/com/chuhai/utils/ktx/ContextKtx.kt new file mode 100644 index 000000000..65a454613 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/ktx/ContextKtx.kt @@ -0,0 +1,70 @@ +package com.chuhai.utils.ktx + +import android.app.Activity +import android.content.Context +import android.content.ContextWrapper +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner + +/** + * Created by Max on 2023/10/25 15:57 + * Desc:Context相关工具 + **/ + + +/** + * Context转换为Activity + */ +fun Context?.asActivity(): Activity? { + return when { + this is Activity -> { + this + } + (this as? ContextWrapper)?.baseContext?.applicationContext != null -> { + baseContext.asActivity() + } + else -> { + null + } + } +} + +/** + * Context转换为Lifecycle + */ +fun Context?.asLifecycle(): Lifecycle? { + if (this == null) return null + return when (this) { + is Lifecycle -> { + this + } + is LifecycleOwner -> { + this.lifecycle + } + is ContextWrapper -> { + this.baseContext.asLifecycle() + } + else -> { + null + } + } +} + + +/** + * Context转换为LifecycleOwner + */ +fun Context?.asLifecycleOwner(): LifecycleOwner? { + if (this == null) return null + return when (this) { + is LifecycleOwner -> { + this + } + is ContextWrapper -> { + this.baseContext.asLifecycleOwner() + } + else -> { + null + } + } +} diff --git a/library/src/module_utils/java/com/chuhai/utils/ktx/ResourcesKtx.kt b/library/src/module_utils/java/com/chuhai/utils/ktx/ResourcesKtx.kt index d1550c236..b3d3bd66b 100644 --- a/library/src/module_utils/java/com/chuhai/utils/ktx/ResourcesKtx.kt +++ b/library/src/module_utils/java/com/chuhai/utils/ktx/ResourcesKtx.kt @@ -12,9 +12,8 @@ import androidx.fragment.app.Fragment import com.chuhai.utils.AppUtils /** + * Created by Max on 2023/10/24 15:11 * 资源工具类 - * @author Max - * @date 2019-11-26. */ diff --git a/library/src/module_utils/java/com/chuhai/utils/ktx/UiKtx.kt b/library/src/module_utils/java/com/chuhai/utils/ktx/UiKtx.kt index d6f58db48..b0a6784de 100644 --- a/library/src/module_utils/java/com/chuhai/utils/ktx/UiKtx.kt +++ b/library/src/module_utils/java/com/chuhai/utils/ktx/UiKtx.kt @@ -4,9 +4,7 @@ import com.chuhai.utils.UiUtils import kotlin.math.roundToInt /** - * UI - * @author Max - * @date 2020-01-10. + * Created by Max on 2023/10/24 15:11 */ From cf3ab9ce84f62abf2ac982222aeab2f6f59b37eb Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 25 Oct 2023 18:25:31 +0800 Subject: [PATCH 08/14] =?UTF-8?q?feat=EF=BC=9A=E8=B0=83=E6=95=B4=E5=8F=91?= =?UTF-8?q?=E7=BA=A2=E5=8C=85=E9=83=A8=E5=88=86=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redpackage/send/PrivateRedPackageEditorFragment.kt | 5 +++-- app/src/main/res/values/strings.xml | 2 +- .../yizhuan/xchat_android_core/redpackage/RedPackageModel.kt | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt index a2c8944f5..2c74e6c4e 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PrivateRedPackageEditorFragment.kt @@ -222,12 +222,13 @@ class PrivateRedPackageEditorFragment : BaseBindingFragment發紅包 未搶完的紅包將在12小時後返還你的錢包 立即生效 - 即時生效 + 限時生效 恭喜發財,大吉大利! 後開搶 發彈幕\n搶紅包 diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt index 746274cea..f375f927a 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt @@ -20,7 +20,7 @@ object RedPackageModel { } fun sendRedPackage( - goldNum: Long, message: String, num: Long, roomUId: String, type: Int, + goldNum: Long, message: String?, num: Long, roomUId: String, type: Int, kind: Int, validityType: Int, password: String ): Single { return api.sendRedPackage( @@ -79,7 +79,7 @@ object RedPackageModel { @POST("/red-envelope") fun sendRedPackage( @Field("goldNum") goldNum: Long, - @Field("message") message: String, + @Field("message") message: String?, @Field("num") num: Long, @Field("roomUId") roomUId: String, @Field("type") type: Int, From 5ef9be75d2ed06664909b2f305e540acff93ea96 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 26 Oct 2023 20:17:11 +0800 Subject: [PATCH 09/14] =?UTF-8?q?feat:=E5=88=9D=E6=AD=A5=E6=90=AD=E5=BB=BA?= =?UTF-8?q?=E6=96=B0=E6=88=BF=E9=97=B4=E6=A1=86=E6=9E=B6=20feat:=E5=88=9D?= =?UTF-8?q?=E6=AD=A5=E6=90=AD=E5=BB=BA=E7=BA=A2=E5=8C=85=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=99=A8=E4=B8=8E=E7=BB=84=E4=BB=B6=E7=AD=89=EF=BC=88=E6=9C=AA?= =?UTF-8?q?=E5=AE=8C=E6=88=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/avroom/activity/AVRoomActivity.java | 52 +++++--- .../erban/avroom/core/AudioRoomContext.kt | 19 +++ .../erban/avroom/fragment/BaseRoomFragment.kt | 37 +++++- .../fragment/HomePartyRoomFragment.java | 10 +- .../avroom/presenter/AvRoomPresenter.java | 4 + .../avroom/redpackage/RedPackageHandler.kt | 90 ++++++++++++++ .../avroom/redpackage/RedPackageWidget.kt | 98 ++++++++++++++-- .../com/yizhuan/erban/base/BaseActivity.java | 3 +- .../erban/ui/setting/SettingActivity.kt | 27 ++++- .../manager/IMNetEaseManager.java | 6 + .../im/custom/bean/CustomAttachment.java | 1 + .../im/custom/bean/RedPackageAttachment.java | 2 +- .../manager/AvRoomDataManager.java | 5 + .../redpackage/RedEnvelopeVO.kt | 44 ++++--- .../redpackage/RedPackageModel.kt | 51 ++++++-- .../redpackage/RedPackageNotifyInfo.kt | 78 +++++++----- .../room/core/RoomDataService.kt | 10 ++ .../support/room/RoomAbility.kt | 98 ++++++++++++++++ .../support/room/RoomContext.kt | 111 ++++++++++++++++++ .../support/room/RoomHandler.kt | 8 ++ .../support/room/RoomService.kt | 10 ++ .../support/room/RoomView.kt | 23 ++++ .../support/room/RoomWidget.kt | 20 ++++ .../lifecycle/RoomFullLifecycleObserver.kt | 34 ++++++ .../support/room/lifecycle/RoomLifecycle.kt | 35 ++++++ .../room/lifecycle/RoomLifecycleObserver.kt | 18 +++ .../room/lifecycle/RoomLifecycleOwner.kt | 9 ++ .../room/lifecycle/RoomLifecycleRegistry.kt | 62 ++++++++++ .../lifecycle/rx/RoomRxLifecycleEvent.java | 11 ++ .../java/com/chuhai/utils/ICleared.kt | 14 +++ .../com/chuhai/utils/log/AndroidLogPrinter.kt | 13 ++ .../java/com/chuhai/utils/log/ILog.kt | 61 ++++++++++ .../java/com/chuhai/utils/log/LogPrinter.kt | 14 +++ .../java/com/chuhai/utils/log/LogUtil.kt | 101 ++++++++++++++++ 34 files changed, 1086 insertions(+), 93 deletions(-) create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/core/AudioRoomContext.kt create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/room/core/RoomDataService.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomAbility.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomContext.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomHandler.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomService.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomView.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomWidget.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomFullLifecycleObserver.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycle.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleObserver.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleOwner.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleRegistry.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/rx/RoomRxLifecycleEvent.java create mode 100644 library/src/module_utils/java/com/chuhai/utils/ICleared.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/log/AndroidLogPrinter.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/log/ILog.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/log/LogPrinter.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/log/LogUtil.kt diff --git a/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java b/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java index ba0854c1a..682c3113f 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java @@ -16,6 +16,7 @@ import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUS import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_ROOM_PK_NOTIFY; import android.annotation.SuppressLint; +import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.Intent; @@ -38,6 +39,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.fragment.app.DialogFragment; +import androidx.lifecycle.LifecycleOwner; import androidx.viewpager2.widget.ViewPager2; import com.alibaba.fastjson.JSON; @@ -140,6 +142,8 @@ import com.yizhuan.xchat_android_core.room.event.RoomTaskTipsEvent; import com.yizhuan.xchat_android_core.room.pk.event.PKStateEvent; import com.yizhuan.xchat_android_core.super_admin.util.SAdminOptUtil; import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil; +import com.yizhuan.xchat_android_core.support.room.RoomContext; +import com.yizhuan.xchat_android_core.support.room.RoomView; import com.yizhuan.xchat_android_core.treasurefairy.FairyMsgInfoBean; import com.yizhuan.xchat_android_core.user.UserModel; import com.yizhuan.xchat_android_core.user.bean.FirstChargeInfo; @@ -163,7 +167,6 @@ import java.net.URL; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -180,7 +183,7 @@ import io.reactivex.disposables.Disposable; */ @CreatePresenter(AvRoomPresenter.class) public class AVRoomActivity extends BaseMvpActivity - implements View.OnClickListener, IAvRoomView { + implements View.OnClickListener, IAvRoomView, RoomView { public static final int FROM_TYPE_NORMAL = 0; public static final int FROM_TYPE_RECOMMEND = 1; @@ -718,18 +721,18 @@ public class AVRoomActivity extends BaseMvpActivity redMap = DemoCache.readRedPackage(); - RedPackageModel.INSTANCE.getRedPackage(roomInfo.getUid()) - .compose(bindToLifecycle()) - .doFinally(() -> { - if (inRoomNotifyInfo != null && (redMap == null || !redMap.containsKey(inRoomNotifyInfo.getRedEnvelopeId()))) { - showRedPackageOpenDialog(inRoomNotifyInfo); - } - }) - .filter(notifyInfo -> inRoomNotifyInfo == null || !notifyInfo.getRedEnvelopeId().equals(inRoomNotifyInfo.getRedEnvelopeId())) - .subscribe(this::showRedPackageOpenDialog); +// if (roomInfo == null) return; +// RedPackageNotifyInfo inRoomNotifyInfo = (RedPackageNotifyInfo) getIntent().getSerializableExtra("notifyInfo"); +// Map redMap = DemoCache.readRedPackage(); +// RedPackageModel.INSTANCE.getRedPackage(roomInfo.getUid()) +// .compose(bindToLifecycle()) +// .doFinally(() -> { +// if (inRoomNotifyInfo != null && (redMap == null || !redMap.containsKey(inRoomNotifyInfo.getRedEnvelopeId()))) { +// showRedPackageOpenDialog(inRoomNotifyInfo); +// } +// }) +// .filter(notifyInfo -> inRoomNotifyInfo == null || !notifyInfo.getRedEnvelopeId().equals(inRoomNotifyInfo.getRedEnvelopeId())) +// .subscribe(this::showRedPackageOpenDialog); } private void showRedPackageOpenDialog(RedPackageNotifyInfo notifyInfo) { @@ -1062,6 +1065,8 @@ public class AVRoomActivity extends BaseMvpActivity { private WeakReference mReference; @@ -1433,5 +1456,4 @@ public class AVRoomActivity extends BaseMvpActivity) { + super.loadAbility(list) + // 红包处理器 + list[RedPackageHandler::class.java.simpleName] = RedPackageHandler() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt index 1232071d2..2e35f06e5 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt @@ -21,6 +21,8 @@ import android.widget.RelativeLayout import android.widget.TextView import androidx.annotation.CallSuper import androidx.core.content.ContextCompat +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.chad.library.adapter.base.BaseQuickAdapter @@ -105,6 +107,8 @@ import com.yizhuan.xchat_android_core.share.bean.SessionType import com.yizhuan.xchat_android_core.super_admin.SaConstant import com.yizhuan.xchat_android_core.super_admin.model.SuperAdminModel import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil +import com.yizhuan.xchat_android_core.support.room.RoomView +import com.yizhuan.xchat_android_core.support.room.RoomWidget import com.yizhuan.xchat_android_core.user.UserModel import com.yizhuan.xchat_android_core.user.bean.BaseInfo import com.yizhuan.xchat_android_core.user.bean.UserInfo @@ -131,7 +135,8 @@ import org.greenrobot.eventbus.ThreadMode */ open class BaseRoomFragment?> : BaseMvpFragment(), - View.OnClickListener, OnGiftDialogBtnClickListener, IBaseRoomView, OnMicroItemClickListener { + View.OnClickListener, OnGiftDialogBtnClickListener, IBaseRoomView, OnMicroItemClickListener, + RoomView { private var myUid: Long = 0 protected lateinit var messageView: MessageView protected lateinit var bottomView: BottomView @@ -180,6 +185,8 @@ open class BaseRoomFragment?> : private var atProxy: AtProxy? = null + // 房间小组件 + private var widgets: HashMap = HashMap() @CallSuper override fun onFindViews() { @@ -239,6 +246,7 @@ open class BaseRoomFragment?> : @SuppressLint("CheckResult") @CallSuper override fun initiate() { + initWidget() //如果不需要開麥,並且還沒有權限的情況下,重置狀態為需要去打開麥克風 myUid = AuthModel.get().currentUid isCloseScreen = AvRoomDataManager.get().isCloseScreen @@ -638,6 +646,7 @@ open class BaseRoomFragment?> : override fun onDestroyView() { super.onDestroyView() releaseView() + unregisterWidgets() } override fun onDestroy() { @@ -1300,4 +1309,30 @@ open class BaseRoomFragment?> : RoomMsgActivity.start(mContext) } } + + /** + * 注册组件 + */ + protected fun registerWidget(name: String, widget: RoomWidget) { + widgets.put(name, widget) + widget.onStart(this) + } + + /** + * 取消注册组件 + */ + protected fun unregisterWidgets() { + widgets.values.forEach { + it.onStop() + } + widgets.clear() + } + + override fun getLifecycleOwner(): LifecycleOwner { + return this + } + + open fun initWidget() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java index e80d0732b..d56032978 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java @@ -26,6 +26,7 @@ import com.yizhuan.erban.avroom.dialog.PKScoreBoardDialog; import com.yizhuan.erban.avroom.firstcharge.FirstChargePrizeDialog; import com.yizhuan.erban.avroom.giftvalue.GiftValueDialogUiHelper; import com.yizhuan.erban.avroom.presenter.HomePartyPresenter; +import com.yizhuan.erban.avroom.redpackage.RedPackageWidget; import com.yizhuan.erban.avroom.view.IHomePartyView; import com.yizhuan.erban.avroom.widget.PKBoardView; import com.yizhuan.erban.base.BaseMvpActivity; @@ -125,9 +126,6 @@ public class HomePartyRoomFragment extends BaseRoomFragment { .subscribe(roomQueueInfoSparseArray -> { long uid = AuthModel.get().getCurrentUid(); AudioEngineManager.get().startRtcEngine(uid, roomInfo.getAudioSdkType()); + // TODO 临时方案:后续逐步完善整个房间的RoomContext替换计划 + new AudioRoomContext(roomInfo.getUid()).run(); if (getMvpView() != null) { getMvpView().enterRoomSuccess(); } diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt new file mode 100644 index 000000000..8faa4915d --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt @@ -0,0 +1,90 @@ +package com.yizhuan.erban.avroom.redpackage + +import androidx.lifecycle.MutableLiveData +import com.yizhuan.erban.avroom.redpackage.open.RedPackageOpenDialog2 +import com.yizhuan.xchat_android_core.im.custom.bean.RedPackageAttachment +import com.yizhuan.xchat_android_core.manager.IMNetEaseManager +import com.yizhuan.xchat_android_core.manager.RoomEvent +import com.yizhuan.xchat_android_core.redpackage.RedPackageModel +import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo +import com.yizhuan.xchat_android_core.support.room.RoomContext +import com.yizhuan.xchat_android_core.support.room.RoomHandler + +/** + * Created by Max on 2023/10/26 11:26 + * Desc:红包处理器 + **/ +class RedPackageHandler : RoomHandler() { + + // 入口图标-数据 + val iconLiveData: MutableLiveData = MutableLiveData() + + override fun onStart(context: RoomContext) { + super.onStart(context) + registerSignaling() + requestLatestRoomRedPackage() + } + + /** + * 监听房间信令 + */ + private fun registerSignaling() { + // TODO 临时方案:不应在这里直接监听IM,后续会统一分发出口 + // 信令来源:新/旧版的厅内红包,非全服红包 + IMNetEaseManager.get().chatRoomEventObservable + .compose(bindToLifecycle()) + .filter { + it?.event == RoomEvent.RECEIVE_RED_PACKAGE && it?.chatRoomMessage?.attachment is RedPackageAttachment + }.map { + (it.chatRoomMessage.attachment as RedPackageAttachment).getRedPackageNotifyInfo() + } + .subscribe { data: RedPackageNotifyInfo -> + handleRoomRedPackage(data) + } + } + + /** + * 查找最新的厅内红包(新/旧版的厅内红包,非全服红包) + */ + private fun requestLatestRoomRedPackage() { + logD("requestLatestRoomRedPackage()") + val roomId = roomContext?.roomId ?: return + logD("requestLatestRoomRedPackage() roomId:$roomId") + RedPackageModel.getLatestRoomRedPackage(roomId) + .compose(bindToLifecycle()) + .subscribe { data -> + logD("requestLatestRoomRedPackage() data:$data") + handleRoomRedPackage(data) + } + } + + /** + * 处理厅内红包,非全服红包 + */ + private fun handleRoomRedPackage(data: RedPackageNotifyInfo) { + if (data.kind == 0 || (data.kind == 1 && data.validityType == 0)) { + //【旧版本-厅内红包:kind=0】、【新版本-厅内无门槛-立即生效红包:kind=1&validityType=0】 + tryShowOpenDialog(data) + } + updateIcon(data) + } + + /** + * 更新红包入口图标 + */ + private fun updateIcon(data: RedPackageNotifyInfo) { + iconLiveData.postValue(data) + } + + /** + * 尝试展示红包领取弹窗 + */ + private fun tryShowOpenDialog(data: RedPackageNotifyInfo) { + val activity = roomView?.getActivity() ?: return + if (activity.isFinishing) { + return + } + logD("tryShowOpenDialog() data:$data") + RedPackageOpenDialog2().show(activity) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt index 3491f2b63..dccf7c49b 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt @@ -7,22 +7,27 @@ import android.view.LayoutInflater import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.isVisible +import androidx.lifecycle.Observer +import com.chuhai.utils.ServiceTime import com.yizhuan.erban.R import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo -import com.yizhuan.xchat_android_core.utils.LogUtils +import com.yizhuan.xchat_android_core.support.room.RoomContext +import com.yizhuan.xchat_android_core.support.room.RoomView +import com.yizhuan.xchat_android_core.support.room.RoomWidget import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable +import java.lang.RuntimeException import java.text.SimpleDateFormat import java.util.TimeZone import java.util.concurrent.TimeUnit -import kotlin.random.Random /** * Created by Max on 2023/10/24 16:37 * Desc:房间内的红包入口 **/ -class RedPackageWidget : ConstraintLayout { +class RedPackageWidget : ConstraintLayout, RoomWidget { + private var roomView: RoomView? = null private var textView: TextView? = null private var countDownDisposable: Disposable? = null @@ -33,6 +38,19 @@ class RedPackageWidget : ConstraintLayout { } } + // 为了获取到RoomContext + private val contextObserver = object : Observer { + override fun onChanged(value: RoomContext?) { + if (value != null) { + RoomContext.contextLiveData.removeObserver(this) + val view = this@RedPackageWidget.roomView + if (view != null) { + init(view) + } + } + } + } + constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( @@ -49,26 +67,38 @@ class RedPackageWidget : ConstraintLayout { ) : super(context, attrs, defStyleAttr, defStyleRes) init { + // 默认不可见 + this.isVisible = false LayoutInflater.from(context) .inflate(R.layout.red_package_widget, this, true) textView = findViewById(R.id.tv_text) this.setBackgroundResource(R.drawable.red_package_widget_bg) } - fun loadData(data: RedPackageNotifyInfo?) { - this.isVisible = true - switchUI(true) - val time = System.currentTimeMillis() + Random.nextLong(1000, 1000 * 100) - val count = time - System.currentTimeMillis() + /** + * 开始倒计时 + * @param time 开抢时间 + */ + private fun startCountDown(time: Long) { + val count = time - ServiceTime.time + if (count <= 0) { + switchUI(false) + return + } + logD("startCountDown() count:$count") countDownDisposable = Observable.intervalRange(0, count, 0, 500L, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .doOnNext { - val gap = time - System.currentTimeMillis() + val gap = time - ServiceTime.time if (gap >= 0) { textView?.text = mmssFormat.format(gap) + } else { + switchUI(false) + throw RuntimeException("状态已更新") } } .doOnComplete { + logD("doOnComplete()") switchUI(false) } .subscribe() @@ -85,10 +115,58 @@ class RedPackageWidget : ConstraintLayout { } else { textView?.setBackgroundResource(R.drawable.red_package_widget_bg_text) textView?.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 9f) + textView?.setText(R.string.red_package_widget_get) } } - fun onStop() { + override fun onStart(roomView: RoomView) { + this.roomView = roomView + // TODO #临时方案 因为目前View的生命周期比RoomContext还早,暂时这样拿到Context + val context = RoomContext.contextLiveData.value + if (context == null) { + RoomContext.contextLiveData.observeForever(contextObserver) + } else { + init(roomView) + } + } + + private fun init(roomView: RoomView) { + val context = roomView.getRoomContext() + val lifecycleOwner = roomView.getLifecycleOwner() + val handler = + context?.findAbility(RedPackageHandler::class.java.simpleName) + handler?.iconLiveData?.observe(lifecycleOwner) { + loadData(it) + } + } + + /** + * 更新数据 + */ + private fun loadData(data: RedPackageNotifyInfo?) { + stopCountDown() + if (data != null) { + if (data.validityType == 1) { + // 限时生效 + switchUI(true) + startCountDown(data.beginTime) + } else { + // 立即生效 + switchUI(false) + } + this.isVisible = true + } else { + this.isVisible = false + } + } + + override fun onStop() { + RoomContext.contextLiveData.removeObserver(contextObserver) + stopCountDown() + this.roomView = null + } + + private fun stopCountDown() { if (countDownDisposable?.isDisposed == false) { countDownDisposable?.dispose() } diff --git a/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java b/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java index 50111e60a..f12bf2f7b 100644 --- a/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java +++ b/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java @@ -35,7 +35,6 @@ import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; import android.text.style.StyleSpan; -import android.util.Log; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; @@ -51,6 +50,7 @@ import androidx.fragment.app.FragmentManager; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.chuhai.utils.log.ILog; import com.google.gson.Gson; import com.netease.nim.uikit.common.util.log.LogUtil; import com.netease.nimlib.sdk.NIMSDK; @@ -103,7 +103,6 @@ import com.yizhuan.xchat_android_core.UriProvider; import com.yizhuan.xchat_android_core.bean.BaseProtocol; import com.yizhuan.xchat_android_core.gift.bean.LuckyBagNoticeInfo; import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.NotifyH5Attachment; import com.yizhuan.xchat_android_core.im.custom.bean.NotifyH5Info; import com.yizhuan.xchat_android_core.im.custom.bean.PlayEffectInfo; import com.yizhuan.xchat_android_core.im.custom.bean.RoomBoxPrizeInfo; diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt index cc3475517..942853677 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt @@ -6,13 +6,12 @@ import android.os.Build import android.os.Environment import android.text.SpannableString import android.view.View +import com.chuhai.utils.log.ILog import com.netease.nim.uikit.StatusBarUtil import com.tongdaxing.erban.upgrade.AppUpgradeHelper import com.yizhuan.erban.BuildConfig import com.yizhuan.erban.R import com.yizhuan.erban.UIHelper -import com.yizhuan.erban.avroom.redpackage.open.RedPackageOpenDialog2 -import com.yizhuan.erban.avroom.redpackage.send.RedPackageSendDialog2 import com.yizhuan.erban.base.BaseViewBindingActivity import com.yizhuan.erban.common.widget.dialog.DialogManager.OkCancelDialogListener import com.yizhuan.erban.databinding.ActivitySettingBinding @@ -43,7 +42,7 @@ import java.io.File * 设置页 * Created by wushaocheng on 2023/2/1. */ -class SettingActivity : BaseViewBindingActivity(), View.OnClickListener { +class SettingActivity : BaseViewBindingActivity(), View.OnClickListener,ILog { override fun init() { EventBus.getDefault().register(this) initWhiteTitleBar(ResUtil.getString(R.string.ui_setting_settingactivity_01)) @@ -80,7 +79,7 @@ class SettingActivity : BaseViewBindingActivity(), View. if (BuildConfig.DEBUG) { binding.titleBar.setOnTitleClickListener { - RedPackageOpenDialog2().show(this) + debug() } } } @@ -112,6 +111,7 @@ class SettingActivity : BaseViewBindingActivity(), View. BindPhoneActivity.start(this) } } + R.id.rly_contact_us -> UIHelper.openContactUs(this) R.id.rly_help -> UIHelper.showUsinghelp(this) R.id.rly_update -> startActivity(Intent(applicationContext, AboutActivity::class.java)) @@ -124,9 +124,14 @@ class SettingActivity : BaseViewBindingActivity(), View. } ModifyPwdActivity.start(this, ModifyPwdActivity.PAY_PWD) } + R.id.btn_login_out -> { val cacheLoginUserInfo = UserModel.get().cacheLoginUserInfo ?: return - if (!cacheLoginUserInfo.isBindPasswd && !SPUtils.getBoolean(SpConstants.SET_PASSWORD, false)) { + if (!cacheLoginUserInfo.isBindPasswd && !SPUtils.getBoolean( + SpConstants.SET_PASSWORD, + false + ) + ) { dialogManager.showOkCancelWithTitleDialog(ResUtil.getString(R.string.set_login_password), SpannableString(ResUtil.getString(R.string.set_login_password_tip)), ResUtil.getString(R.string.login_fragment_adduserinfofragment_04), @@ -135,7 +140,10 @@ class SettingActivity : BaseViewBindingActivity(), View. override fun onCancel() {} override fun onOk() { SPUtils.putBoolean(SpConstants.SET_PASSWORD, true) - ModifyPwdActivity.start(this@SettingActivity, ModifyPwdActivity.LOGIN_PWD) + ModifyPwdActivity.start( + this@SettingActivity, + ModifyPwdActivity.LOGIN_PWD + ) } }) } else { @@ -143,10 +151,12 @@ class SettingActivity : BaseViewBindingActivity(), View. LogoutHelper.logout() } } + R.id.tv_community_norms -> CommonWebViewActivity.start( this, UriProvider.getCommnunityNorms() ) + R.id.rly_clear_cache -> dialogManager.showOkCancelWithTitleDialog(ResUtil.getString(R.string.ui_setting_settingactivity_07), SpannableString(ResUtil.getString(R.string.ui_setting_settingactivity_08)), ResUtil.getString(R.string.ui_setting_settingactivity_09), @@ -157,6 +167,7 @@ class SettingActivity : BaseViewBindingActivity(), View. clearCache() } }) + R.id.tv_notice_setting -> NoticeSettingActivity.start(context) R.id.tv_shield_manager -> ShieldManageActivity.start(context) R.id.rly_permission -> PermissionGuideActivity.start(context) @@ -203,4 +214,8 @@ class SettingActivity : BaseViewBindingActivity(), View. dialogManager.dismissDialog() EventBus.getDefault().unregister(this) } + + private fun debug() { +// RedPackageOpenDialog2().show(this) + } } \ No newline at end of file diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java index fe9dd00ca..c9c4bfc33 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java @@ -99,6 +99,7 @@ import com.yizhuan.xchat_android_core.im.custom.bean.MonsterHuntingResultAttachm import com.yizhuan.xchat_android_core.im.custom.bean.MonsterStatusAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.MultiGiftAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.NobleAttachment; +import com.yizhuan.xchat_android_core.im.custom.bean.RedPackageAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.RoomBoxPrizeAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.RoomFreeGiftAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.RoomFreeGiftMsgBean; @@ -1148,12 +1149,17 @@ public final class IMNetEaseManager { case CustomAttachment.CUSTOM_MSG_RED_PACKAGE: switch (second) { + // 老版本厅内红包(2.2.0之前) case CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_DIAMOND: noticeRoomEvent(msg, RoomEvent.RECEIVE_RED_PACKAGE); break; case CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_MSG: addMessages(msg); break; + // 新版厅内红包(>=2.2.0版本) + case CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_DIAMOND2: + noticeRoomEvent(msg, RoomEvent.RECEIVE_RED_PACKAGE); + break; } break; diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachment.java b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachment.java index ded3ced58..eb0253bf7 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachment.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachment.java @@ -317,6 +317,7 @@ public class CustomAttachment implements MsgAttachment { public static final int CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_DIAMOND = 602; public static final int CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND = 604;//全服红包 public static final int CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_MSG = 605; + public static final int CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_DIAMOND2 = 606;//新版本-厅内红包 //开福袋飘屏 public static final int CUSTOM_MSG_LUCKY_GIFT = 61; public static final int CUSTOM_MSG_LUCKY_GIFT_ROOM_NOTIFY = 610;// 福袋礼物房间飘屏通知 diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RedPackageAttachment.java b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RedPackageAttachment.java index 69bfbb912..e48be6a34 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RedPackageAttachment.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RedPackageAttachment.java @@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode; @Data public class RedPackageAttachment extends CustomAttachment { - private RedPackageNotifyInfo redPackageNotifyInfo; + public RedPackageNotifyInfo redPackageNotifyInfo; public RedPackageAttachment(int second) { super(CUSTOM_MSG_RED_PACKAGE, second); diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java b/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java index 164e4be89..97ac90106 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java @@ -39,6 +39,7 @@ import com.yizhuan.xchat_android_core.room.game.GameStatus; import com.yizhuan.xchat_android_core.room.giftvalue.helper.GiftValueMrg; import com.yizhuan.xchat_android_core.super_admin.SuperAdminDataMrg; import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil; +import com.yizhuan.xchat_android_core.support.room.RoomContext; import com.yizhuan.xchat_android_core.user.UserModel; import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils; import com.yizhuan.xchat_android_core.utils.LogUtils; @@ -261,6 +262,10 @@ public final class AvRoomDataManager { kickOutRoomUids.clear(); kickOutRoomUids = null; } + RoomContext context = RoomContext.Companion.get(); + if (context != null) { + context.performStop(); + } LogUtils.d(ResUtil.getString(R.string.xchat_android_core_manager_avroomdatamanager_05)); } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedEnvelopeVO.kt b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedEnvelopeVO.kt index e0f6ba12c..c1ecbe5a0 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedEnvelopeVO.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedEnvelopeVO.kt @@ -4,20 +4,32 @@ import com.yizhuan.xchat_android_core.community.UserVo data class RedEnvelopeVO( - var beginTime: Long = 0, - var createTime: Long = 0, - var endTime: Long = 0, - var id: String, - var message: String, - var redEnvelopeAmount: Double = 0.0, - var roomUId: Long = 0, - /** - * 红包类型 1:房间水晶红包 2:全服水晶红包 3:房间礼物红包 4:全服礼物红包 - */ - var type: Int = 0, - var updateTime: Long = 0, - var userId: Long = 0, - var totalNum: String = "", - var pickNum: String = "", - var userVO: UserVo? = null + var beginTime: Long = 0, + var createTime: Long = 0, + var endTime: Long = 0, + var id: String, + var message: String, + var redEnvelopeAmount: Double = 0.0, + var roomUId: Long = 0, + /** + * 红包类型 1:房间水晶红包 2:全服水晶红包 3:房间礼物红包 4:全服礼物红包 + */ + var type: Int = 0, + var updateTime: Long = 0, + var userId: Long = 0, + var totalNum: Long = 0, + var pickNum: Long = 0, + var userVO: UserVo? = null, + /** + * 红包种类 0 旧版本 1 无门槛红包 2 关注红包 3 分享红包 4 弹幕红包 + */ + var kind: Int = 0, + /** + * 生效类型 0 立即生效 1 限时生效 + */ + var validityType: Int = 0, + /** + * 红包状态 1 开抢中 2 过时 3 抢光了 4 抢到了 5 将要开始 6 超时已退还 + */ + var state: Int? ) \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt index f375f927a..bf3e7e67d 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt @@ -44,20 +44,49 @@ object RedPackageModel { } fun getRedPackage(uid: Long): Observable { - return api.getRedPackage(uid) + return api.getRedPackage(true, uid) .io2main() .handleBeanData() .toObservable() .flatMap { Observable.fromIterable(it) } .map { RedPackageNotifyInfo( - it.id, - it.type, - it.message, - it.userVO?.avatar ?: "", - it.userVO?.nick ?: "", - it.roomUId, - "" + redEnvelopeId = it.id, + redEnvelopeType = it.type, + redEnvelopeMessage = it.message, + sendUserAvatar = it.userVO?.avatar ?: "", + sendUserNick = it.userVO?.nick ?: "", + roomUid = it.roomUId, + roomTitle = "", + kind = it.kind, + beginTime = it.beginTime, + redEnvelopeNum = it.totalNum, + validityType = it.validityType + ) + } + } + + /** + * 获取房间最新可用红包 + */ + fun getLatestRoomRedPackage(uid: Long): Observable { + return api.getRedPackage(true, uid) + .io2main() + .handleBeanData() + .toObservable().map { + val item = it.last() + RedPackageNotifyInfo( + redEnvelopeId = item.id, + redEnvelopeType = item.type, + redEnvelopeMessage = item.message, + sendUserAvatar = item.userVO?.avatar ?: "", + sendUserNick = item.userVO?.nick ?: "", + roomUid = item.roomUId, + roomTitle = "", + kind = item.kind, + beginTime = item.beginTime, + redEnvelopeNum = item.totalNum, + validityType = item.validityType ) } } @@ -104,7 +133,10 @@ object RedPackageModel { * @return */ @GET("/room/red-envelop") - fun getRedPackage(@Query("uid") uid: Long): Single>> + fun getRedPackage( + @Query("isShowKind") isShowKind: Boolean, + @Query("uid") uid: Long + ): Single>> /** @@ -114,6 +146,5 @@ object RedPackageModel { fun setRedPackageSwitch(@Path("roomUid") uid: Long): Single> } - } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageNotifyInfo.kt b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageNotifyInfo.kt index 7ce2d7a4b..b71239dae 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageNotifyInfo.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageNotifyInfo.kt @@ -4,38 +4,58 @@ import java.io.Serializable data class RedPackageNotifyInfo( - /** - * 红包 id - */ - var redEnvelopeId: String = "", + /** + * 红包 id + */ + var redEnvelopeId: String = "", - /** - * 红包类型 - */ - var redEnvelopeType: Int = 0, + /** + * 红包类型 1:房间水晶红包 2:全服水晶红包 3:房间礼物红包 4:全服礼物红包 + */ + var redEnvelopeType: Int = 0, - /** - * 红包消息 - */ - var redEnvelopeMessage: String = "", + /** + * 红包消息 + */ + var redEnvelopeMessage: String = "", - /** - * 红包发送者头像 - */ - var sendUserAvatar: String = "", + /** + * 红包发送者头像 + */ + var sendUserAvatar: String = "", - /** - * 红包发送者昵称 - */ - var sendUserNick: String = "", - /** - * 房间uid - */ - var roomUid: Long = 0, + /** + * 红包发送者昵称 + */ + var sendUserNick: String = "", + /** + * 房间uid + */ + var roomUid: Long = 0, - /** - * 房间名称 - */ - var roomTitle: String = "" + /** + * 房间名称 + */ + var roomTitle: String = "", -) : Serializable \ No newline at end of file + /** + * 红包种类 0 旧版本 1 无门槛红包 2 关注红包 3 分享红包 4 弹幕红包 + */ + var kind: Int = 0, + + /** + * 红包可领取时间 + */ + var beginTime: Long = 0, + + /** + * 红包数量 + */ + var redEnvelopeNum: Long = 0, + + /** + * 生效类型 0 立即生效 1 限时生效 + */ + var validityType: Int?, + + ) : Serializable \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/core/RoomDataService.kt b/core/src/main/java/com/yizhuan/xchat_android_core/room/core/RoomDataService.kt new file mode 100644 index 000000000..63a323cf5 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/core/RoomDataService.kt @@ -0,0 +1,10 @@ +package com.yizhuan.xchat_android_core.room.core + +import com.yizhuan.xchat_android_core.support.room.RoomService + +/** + * Created by Max on 2023/10/26 12:36 + * Desc:房间数据服务 + **/ +class RoomDataService : RoomService() { +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomAbility.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomAbility.kt new file mode 100644 index 000000000..1005423a1 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomAbility.kt @@ -0,0 +1,98 @@ +package com.yizhuan.xchat_android_core.support.room + +import androidx.annotation.CallSuper +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleEventObserver +import androidx.lifecycle.LifecycleOwner +import com.chuhai.utils.log.ILog +import com.trello.rxlifecycle3.LifecycleProvider +import com.trello.rxlifecycle3.LifecycleTransformer +import com.trello.rxlifecycle3.OutsideLifecycleException +import com.trello.rxlifecycle3.RxLifecycle +import com.yizhuan.xchat_android_core.support.room.lifecycle.RoomFullLifecycleObserver +import com.yizhuan.xchat_android_core.support.room.lifecycle.RoomLifecycle +import io.reactivex.Observable +import io.reactivex.functions.Function +import io.reactivex.subjects.BehaviorSubject + +/** + * Created by Max on 2023/10/26 11:03 + * Desc:房间-基础能力组件 + **/ +abstract class RoomAbility : LifecycleEventObserver, ILog, RoomFullLifecycleObserver, + LifecycleProvider { + + protected var roomContext: RoomContext? = null + + protected var roomView: RoomView? = null + + // 自定义RxLifeCycle(临时方案:后续替换为Flow) + private val lifecycleSubject = BehaviorSubject.create() + + /** + * 被RoomContext激活 + */ + @CallSuper + open fun onAttach(context: RoomContext) { + this.roomContext = context + context.roomLifecycle.addObserver(this) + } + + /** + * View附加状态 + * @param view + */ + @CallSuper + open fun onViewAttach(view: RoomView) { + roomView?.getLifecycleOwner()?.lifecycle?.removeObserver(this) + roomView = view + view.getLifecycleOwner().lifecycle.addObserver(this) + } + + @CallSuper + override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) { + if (event == Lifecycle.Event.ON_DESTROY) { + roomView?.getLifecycleOwner()?.lifecycle?.removeObserver(this) + roomView = null + } + } + + override fun onStateChanged(context: RoomContext, event: RoomLifecycle.Event) { + super.onStateChanged(context, event) + // 同步更新事件 + lifecycleSubject.onNext(event) + if (event == RoomLifecycle.Event.STOP) { + roomContext?.roomLifecycle?.removeObserver(this) + roomContext = null + } + } + + + + + + + /** + * 下面为RxLifeCycle相关(临时方案,后续替换Flow) + */ + override fun lifecycle(): Observable { + return lifecycleSubject.hide() + } + + override fun bindUntilEvent(event: RoomLifecycle.Event): LifecycleTransformer { + return RxLifecycle.bindUntilEvent(lifecycleSubject, event) + } + + override fun bindToLifecycle(): LifecycleTransformer { + return RxLifecycle.bind(lifecycleSubject, ROOM_LIFECYCLE) + } + + private val ROOM_LIFECYCLE: Function = + Function { lastEvent -> + when (lastEvent) { + RoomLifecycle.Event.START -> RoomLifecycle.Event.STOP + RoomLifecycle.Event.STOP -> throw OutsideLifecycleException("Cannot bind to Room lifecycle when outside of it.") + else -> throw UnsupportedOperationException("Binding to $lastEvent not yet implemented") + } + } +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomContext.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomContext.kt new file mode 100644 index 000000000..5ff404352 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomContext.kt @@ -0,0 +1,111 @@ +package com.yizhuan.xchat_android_core.support.room + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.chuhai.utils.log.ILog +import com.yizhuan.xchat_android_core.support.room.lifecycle.RoomLifecycle +import com.yizhuan.xchat_android_core.support.room.lifecycle.RoomLifecycleRegistry + +/** + * Created by Max on 2023/10/26 11:50 + * Desc:一个房间 + **/ +abstract class RoomContext(val roomId: Long) : ILog { + + /** + * 临时维护在这里,后续逐步改动 + */ + companion object { + private var context: RoomContext? = null + + // TODO:#临时方案 目前房间的生命周期有点出乎意料,未成功进房时,View层都已初始化完毕,所以临时开放这个LiveData供View层获取到Context + private val _contextLiveData = MutableLiveData() + val contextLiveData: LiveData get() = _contextLiveData + fun get(): RoomContext? { + return context + } + + fun set(context: RoomContext?) { + this.context = context + _contextLiveData.postValue(context) + } + } + + /** + * 生命周期处理 + */ + val roomLifecycle: RoomLifecycleRegistry = RoomLifecycleRegistry() + + /** + * 所有能力组件 + */ + private val abilityList = LinkedHashMap() + + init { + initAbility() + } + + /** + * 启动(进入房间) + */ + fun performStart() { + logI("performStart()", filePrinter = true) + roomLifecycle.handleLifecycleEvent(this, RoomLifecycle.Event.START) + } + + /** + * 停止(退出房间) + */ + fun performStop() { + logI("performStop()", filePrinter = true) + roomLifecycle.handleLifecycleEvent(this, RoomLifecycle.Event.STOP) + onCleared() + } + + /** + * 初始化Ability + */ + private fun initAbility() { + loadAbility(abilityList) + abilityList.keys.forEach { + abilityList[it]?.onAttach(this) + } + } + + /** + * 装载能力组件 + */ + open fun loadAbility(list: MutableMap) { + } + + /** + * 查找组件 + */ + fun findAbility(key: String): T? { + return abilityList[key] as? T + } + + /** + * 附加上视图了 + */ + @Deprecated("临时方案:后续逐步完善RoomContext替换计划,到时候不会在这里实现该逻辑") + fun onViewAttach(view: RoomView) { + abilityList.keys.forEach { + abilityList[it]?.onViewAttach(view) + } + } + + /** + * 激活房间(进入房间后) + */ + @Deprecated("临时方案:后续逐步完善RoomContext替换计划,到时候不会在这里实现该逻辑") + fun run() { + set(this) + performStart() + } + + private fun onCleared() { + abilityList.clear() + set(null) + } +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomHandler.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomHandler.kt new file mode 100644 index 000000000..c8cfbc7d5 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomHandler.kt @@ -0,0 +1,8 @@ +package com.yizhuan.xchat_android_core.support.room + +/** + * Created by Max on 2023/10/26 11:02 + * Desc:房间内的业务处理器 + **/ +open class RoomHandler : RoomAbility() { +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomService.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomService.kt new file mode 100644 index 000000000..ef9ef505c --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomService.kt @@ -0,0 +1,10 @@ +package com.yizhuan.xchat_android_core.support.room + +/** + * Created by Max on 2023/10/26 12:31 + * Desc:房间-基础服务组件 + * PS:基于[RoomContext],提供整个房间的基础服务能力。(服务之间可相互提供能力,也可向下提供能力。) + * + **/ +abstract class RoomService : RoomAbility() { +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomView.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomView.kt new file mode 100644 index 000000000..8223a8ca8 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomView.kt @@ -0,0 +1,23 @@ +package com.yizhuan.xchat_android_core.support.room + +import android.app.Activity +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner + +/** + * Created by Max on 2023/10/26 15:05 + * Desc:房间视图层 + * TODO:目前Activity和子Fragment都实现该接口,感觉有些奇怪,PS:还没熟悉现阶段的房间视图层级关系,后续梳理后整体优化 + **/ +interface RoomView { + fun getLifecycleOwner(): LifecycleOwner + + fun getActivity(): Activity? + + /** + * 获取房间上下文 + */ + fun getRoomContext(): RoomContext? { + return RoomContext.get() + } +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomWidget.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomWidget.kt new file mode 100644 index 000000000..67410f18e --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomWidget.kt @@ -0,0 +1,20 @@ +package com.yizhuan.xchat_android_core.support.room + +import com.chuhai.utils.log.ILog + +/** + * Created by Max on 2023/10/26 17:12 + * Desc:房间UI组件 + **/ +interface RoomWidget : ILog { + + /** + * 组件激活 + */ + fun onStart(roomView: RoomView) + + /** + * 组件停止 + */ + fun onStop() +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomFullLifecycleObserver.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomFullLifecycleObserver.kt new file mode 100644 index 000000000..7f21d1a93 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomFullLifecycleObserver.kt @@ -0,0 +1,34 @@ +package com.yizhuan.xchat_android_core.support.room.lifecycle + +import com.yizhuan.xchat_android_core.support.room.RoomContext + + +/** + * Created by Max on 2023/10/26 11:50 + * Desc:房间生命周期事件观察者(完整) + **/ +interface RoomFullLifecycleObserver : RoomLifecycleObserver { + + override fun onStateChanged(context: RoomContext, event: RoomLifecycle.Event) { + when (event) { + RoomLifecycle.Event.START -> { + onStart(context) + } + RoomLifecycle.Event.STOP -> { + onStop(context) + } + } + } + + /** + * 启动房间 + * PS:只会执行一次,相当于Activity的onCreate。 + */ + fun onStart(context: RoomContext) {} + + /** + * 退出房间 + * PS:只会执行一次,相当于Activity的onDestroy。 + */ + fun onStop(context: RoomContext) {} +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycle.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycle.kt new file mode 100644 index 000000000..e2d3de2eb --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycle.kt @@ -0,0 +1,35 @@ +package com.yizhuan.xchat_android_core.support.room.lifecycle + +import com.chuhai.utils.ICleared + +/** + * Created by Max on 2023/10/26 11:50 + * Desc:房间生命周期 + **/ +abstract class RoomLifecycle : ICleared { + + /** + * 添加生命周期监听 + * PS:目前是及时事件分发,对于已发生状态事件不会补充分发。 + */ + abstract fun addObserver(observer: RoomLifecycleObserver) + + /** + * 移除生命周期监听 + */ + abstract fun removeObserver(observer: RoomLifecycleObserver) + + enum class Event { + /** + * 启动房间 + * PS:只会执行一次,相当于Activity的onCreate。 + */ + START, + + /** + * 退出房间 + * PS:只会执行一次,相当于Activity的onDestroy。 + */ + STOP; + } +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleObserver.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleObserver.kt new file mode 100644 index 000000000..27ac33f92 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleObserver.kt @@ -0,0 +1,18 @@ +package com.yizhuan.xchat_android_core.support.room.lifecycle + +import com.yizhuan.xchat_android_core.support.room.RoomContext + + +/** + * Created by Max on 2023/10/26 11:50 + * Desc:房间生命周期事件观察者 + **/ +interface RoomLifecycleObserver { + + /** + * 状态改变 + * @param event 新事件 + */ + fun onStateChanged(context: RoomContext, event: RoomLifecycle.Event) + +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleOwner.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleOwner.kt new file mode 100644 index 000000000..a8a5c007b --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleOwner.kt @@ -0,0 +1,9 @@ +package com.yizhuan.xchat_android_core.support.room.lifecycle + +/** + * Created by Max on 2023/10/26 11:50 + * Desc:房间生命周期持有者 + **/ +interface RoomLifecycleOwner { + fun getLifecycle(): RoomLifecycle +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleRegistry.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleRegistry.kt new file mode 100644 index 000000000..5663a4747 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/RoomLifecycleRegistry.kt @@ -0,0 +1,62 @@ +package com.yizhuan.xchat_android_core.support.room.lifecycle + +import com.chuhai.utils.log.ILog +import com.yizhuan.xchat_android_core.support.room.RoomContext +import java.util.concurrent.CopyOnWriteArrayList + +/** + * Created by Max on 2023/10/26 11:50 + * Desc:房间生命周期简单实现 + * PS:目前是及时事件分发,对于已发生状态事件不会补充分发。 + **/ +class RoomLifecycleRegistry : RoomLifecycle(), ILog { + /** + * 生命周期监听 + */ + private val observers: CopyOnWriteArrayList = CopyOnWriteArrayList() + + /** + * 当前事件 + */ + private var event: Event? = null + + override fun addObserver(observer: RoomLifecycleObserver) { + observers.add(observer) + } + + override fun removeObserver(observer: RoomLifecycleObserver) { + observers.remove(observer) + } + + /** + * 设置最新的事件 + */ + fun handleLifecycleEvent(context: RoomContext, event: Event) { + logI("handleLifecycleEvent() event:$event", filePrinter = true) + if (this.event == Event.STOP) { + // 停止状态 + logI("handleLifecycleEvent() 停止状态", filePrinter = true) + return + } + if (this.event == event) { + // 状态未改变 + return + } + dispatchEvent(context, event) + } + + /** + * 分发事件 + */ + private fun dispatchEvent(context: RoomContext, event: Event) { + logI("dispatchEvent() event:$event", filePrinter = true) + this.event = event + observers.forEach { + it.onStateChanged(context, event) + } + if (event == Event.STOP) { + // 停止后,主动清空下 + observers.clear() + } + } +} \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/rx/RoomRxLifecycleEvent.java b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/rx/RoomRxLifecycleEvent.java new file mode 100644 index 000000000..10fb6b7f3 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/lifecycle/rx/RoomRxLifecycleEvent.java @@ -0,0 +1,11 @@ +package com.yizhuan.xchat_android_core.support.room.lifecycle.rx; + + +/** + * Created by Max on 2023/10/26 11:50 + * Desc:RxLifecycle 房间生命周期 + **/ +public enum RoomRxLifecycleEvent { + START, + STOP +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/ICleared.kt b/library/src/module_utils/java/com/chuhai/utils/ICleared.kt new file mode 100644 index 000000000..63273e7fc --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/ICleared.kt @@ -0,0 +1,14 @@ +package com.chuhai.utils + + +/** + * Created by Max on 2023/10/26 11:50 + * Desc:清除释放统一接口 + **/ +interface ICleared { + + /** + * 清除/释放 + */ + fun onCleared() {} +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/log/AndroidLogPrinter.kt b/library/src/module_utils/java/com/chuhai/utils/log/AndroidLogPrinter.kt new file mode 100644 index 000000000..9a027de2c --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/log/AndroidLogPrinter.kt @@ -0,0 +1,13 @@ +package com.chuhai.utils.log + +import android.util.Log + +/** + * Created by Max on 2023/10/26 10:29 + * Desc:Android日志 + */ +class AndroidLogPrinter : LogPrinter { + override fun println(level: Int, tag: String, message: String) { + Log.println(level, tag, message) + } +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/log/ILog.kt b/library/src/module_utils/java/com/chuhai/utils/log/ILog.kt new file mode 100644 index 000000000..8f748390d --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/log/ILog.kt @@ -0,0 +1,61 @@ +package com.chuhai.utils.log + +/** + * Created by Max on 2023/10/26 10:29 + * Desc:日志快捷使用接口 + */ +interface ILog { + + companion object { + /** + * 清理(退出APP时调用) + */ + fun onCleared() { + + } + } + + /** + * 默认日志Tag + */ + fun getLogTag(): String { + return this::class.java.simpleName + } + + fun logI(message: String, tag: String = getLogTag(), filePrinter: Boolean = false) { + LogUtil.i(tag, message, filePrinter) + } + + fun logV(message: String, tag: String = getLogTag(), filePrinter: Boolean = false) { + LogUtil.v(tag, message, filePrinter) + } + + fun logW(message: String, tag: String = getLogTag(), filePrinter: Boolean = false) { + LogUtil.w(tag, message, filePrinter) + } + + fun logD(message: String, tag: String = getLogTag(), filePrinter: Boolean = false) { + LogUtil.d(tag, message, filePrinter) + } + + fun logE(message: String, tag: String = getLogTag(), filePrinter: Boolean = false) { + LogUtil.e(tag, message, filePrinter) + } + + fun logE( + throwable: Throwable, + tag: String = getLogTag(), + filePrinter: Boolean = false + ) { + LogUtil.e(tag, throwable, filePrinter) + } + + fun logE( + message: String, + throwable: Throwable, + tag: String = getLogTag(), + filePrinter: Boolean = false + ) { + LogUtil.e(tag, message, throwable, filePrinter) + } +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/log/LogPrinter.kt b/library/src/module_utils/java/com/chuhai/utils/log/LogPrinter.kt new file mode 100644 index 000000000..86f231c74 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/log/LogPrinter.kt @@ -0,0 +1,14 @@ +package com.chuhai.utils.log + + +/** + * Created by Max on 2023/10/26 10:29 + * Desc: 日志打印 + */ +interface LogPrinter { + /** + * 打印 + * @param level 级别 [android.util.Log] + */ + fun println(level: Int, tag: String, message: String) +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/log/LogUtil.kt b/library/src/module_utils/java/com/chuhai/utils/log/LogUtil.kt new file mode 100644 index 000000000..a3ce5e7b7 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/log/LogUtil.kt @@ -0,0 +1,101 @@ +package com.chuhai.utils.log + +import android.util.Log + +/** + * Created by Max on 2023/10/26 10:29 + * Desc:日志工具 + */ +object LogUtil { + + private var consolePrinter: LogPrinter? = AndroidLogPrinter() + + private var filePrinter: LogPrinter? = null + + // 是否启动控制台打印 + var consolePrinterEnabled: Boolean = true + + // 是否启动文件打印 + var filePrinterEnabled: Boolean = true + + /** + * 设置文件打印 + */ + fun setFilePrinter(filePrinter: LogPrinter) { + this.filePrinter = filePrinter + } + + fun e(tag: String, message: String, filePrinter: Boolean = false) { + log(Log.ERROR, tag, message, filePrinter) + } + + fun e(tag: String, throwable: Throwable, filePrinter: Boolean = false) { + val cause = Log.getStackTraceString(throwable) + if (cause.isEmpty()) { + return + } + e(tag, cause, filePrinter) + } + + fun e(tag: String, message: String?, throwable: Throwable, filePrinter: Boolean = false) { + val cause = Log.getStackTraceString(throwable) + if (message == null && cause.isEmpty()) { + return + } + e(tag, message + "\t\t" + cause, filePrinter) + } + + fun d(tag: String, message: String, filePrinter: Boolean = false) { + log(Log.DEBUG, tag, message, filePrinter) + } + + fun i(tag: String, message: String, filePrinter: Boolean = false) { + log(Log.INFO, tag, message, filePrinter) + } + + fun v(tag: String, message: String, filePrinter: Boolean = false) { + log(Log.VERBOSE, tag, message, filePrinter) + } + + fun w(tag: String, message: String, filePrinter: Boolean = false) { + log(Log.WARN, tag, message, filePrinter) + } + + /** + * 输出日志 + */ + fun log(level: Int = Log.INFO, tag: String?, message: String?, filePrinter: Boolean = false) { + if (tag.isNullOrEmpty()) { + return + } + if (message.isNullOrEmpty()) { + return + } + // 输出控制台 + logConsole(level, tag, message) + // 输出文件 + if (filePrinter) { + logFile(level, tag, message) + } + } + + /** + * 输出到控制台 + */ + fun logConsole(level: Int = Log.INFO, tag: String, message: String) { + if (!consolePrinterEnabled) { + return + } + consolePrinter?.println(level, tag, message) + } + + /** + * 输出到文件 + */ + fun logFile(level: Int = Log.INFO, tag: String, message: String) { + if (!filePrinterEnabled) { + return + } + filePrinter?.println(level, tag, message) + } +} \ No newline at end of file From b9a2f03184ebd5426ea8cf57260aec9c916e744c Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 27 Oct 2023 02:10:55 +0800 Subject: [PATCH 10/14] =?UTF-8?q?feat:=E5=AE=8C=E5=96=84=E7=BA=A2=E5=8C=85?= =?UTF-8?q?=E5=85=A5=E5=8F=A3=E9=80=BB=E8=BE=91=20feat:=E5=88=9D=E6=AD=A5?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E9=A2=86=E5=8F=96=E7=BA=A2=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avroom/redpackage/RedPackageOpenDialog.kt | 66 ++-- .../avroom/redpackage/RedPackageWidget.kt | 73 +++- .../redpackage/open/RedPackageOpenDialog2.kt | 350 +++++++++++++++--- .../open/RedPackageResultAdapter.kt | 43 +++ .../send/PublicRedPackageEditorFragment.kt | 2 +- ...ned_bg.webp => red_package_result_bg.webp} | Bin .../main/res/drawable/red_package_bg_num.xml | 9 + ...shape_e03654_28.xml => shape_e03654_8.xml} | 2 +- .../res/layout/red_package_open_dialog.xml | 70 +++- ...d.xml => red_package_open_item_result.xml} | 0 .../main/res/layout/red_package_widget.xml | 21 +- app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 18 +- .../im/custom/bean/CustomAttachParser.java | 2 + .../redpackage/RedPackageData.kt | 34 ++ .../redpackage/RedPackageModel.kt | 34 +- .../support/config/Constants.kt | 9 + .../chuhai/utils/spannable/IconTextSpan.java | 156 ++++++++ .../spannable/RoundBackgroundColorSpan.kt | 29 ++ .../utils/spannable/SpannableTextBuilder.kt | 327 ++++++++++++++++ .../utils/spannable/VerticalImageSpan.kt | 66 ++++ 21 files changed, 1178 insertions(+), 134 deletions(-) create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt rename app/src/main/res/drawable-xxhdpi/{red_package_opened_bg.webp => red_package_result_bg.webp} (100%) create mode 100644 app/src/main/res/drawable/red_package_bg_num.xml rename app/src/main/res/drawable/{shape_e03654_28.xml => shape_e03654_8.xml} (83%) rename app/src/main/res/layout/{red_package_open_item_record.xml => red_package_open_item_result.xml} (100%) create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/support/config/Constants.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/spannable/IconTextSpan.java create mode 100644 library/src/module_utils/java/com/chuhai/utils/spannable/RoundBackgroundColorSpan.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/spannable/SpannableTextBuilder.kt create mode 100644 library/src/module_utils/java/com/chuhai/utils/spannable/VerticalImageSpan.kt diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageOpenDialog.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageOpenDialog.kt index 9f2e31b2e..db3a01cc9 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageOpenDialog.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageOpenDialog.kt @@ -77,18 +77,17 @@ class RedPackageOpenDialog : BaseDialog() { @SuppressLint("CheckResult") private fun startRedPacketAnim(v: View) { - RedPackageModel.openRedPackage(redPackageNotifyInfo.redEnvelopeId) + RedPackageModel.openRedPackage(redPackageNotifyInfo.redEnvelopeId.toLong()) .subscribe({ redPackageInfo = it if (mObjectAnimator?.isRunning == false) { openRedPackage() } - } - , { - binding?.ivOpen?.isEnabled = true - mObjectAnimator?.cancel() - SingleToastUtil.showToast(it.message) - }) + }, { + binding?.ivOpen?.isEnabled = true + mObjectAnimator?.cancel() + SingleToastUtil.showToast(it.message) + }) mObjectAnimator = ObjectAnimator.ofFloat(v, "rotationY", 0f, 360f) mObjectAnimator?.let { @@ -120,31 +119,45 @@ class RedPackageOpenDialog : BaseDialog() { binding?.clOpened?.visibility = View.VISIBLE binding?.clRed?.visibility = View.GONE binding?.tvNicknameOpened?.text = redPackageNotifyInfo.sendUserNick - ImageLoadUtils.loadAvatar(context, redPackageNotifyInfo.sendUserAvatar, binding?.ivAvatarOpened) + ImageLoadUtils.loadAvatar( + context, + redPackageNotifyInfo.sendUserAvatar, + binding?.ivAvatarOpened + ) packageInfo.redEnvelopeVO?.apply { binding?.tvContentOpened?.text = message when (packageInfo.redEnvelopeState) { SUCCESS -> { - packageInfo.redEnvelopeItemVOs?.firstOrNull { item -> item.userVO.uid == UserUtils.getUserUid() }?.let { - it.redEnvelopeGiftItemVOs?.apply { - if (!isEmpty()) { - val adapter = RedPackageGiftAdapter(R.layout.item_red_package_gift_top) - binding?.rvGift?.visibility = View.VISIBLE - binding?.tvDiamondNum?.visibility = View.GONE - binding?.rvGift?.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) - binding?.rvGift?.adapter = adapter - adapter.setNewData(this) - binding?.tvTips?.setTextColor(Color.WHITE) - binding?.tvTips?.text = MessageView.SpannableBuilder(binding?.tvTips) - .append(ResUtil.getString(R.string.avroom_redpackage_redpackageopendialog_03)) - .append(it.amount, ForegroundColorSpan(Color.parseColor("#FDCD00"))) - .append(ResUtil.getString(R.string.avroom_redpackage_redpackageopendialog_04)) - .build() + packageInfo.redEnvelopeItemVOs?.firstOrNull { item -> item.userVO.uid == UserUtils.getUserUid() } + ?.let { + it.redEnvelopeGiftItemVOs?.apply { + if (!isEmpty()) { + val adapter = + RedPackageGiftAdapter(R.layout.item_red_package_gift_top) + binding?.rvGift?.visibility = View.VISIBLE + binding?.tvDiamondNum?.visibility = View.GONE + binding?.rvGift?.layoutManager = LinearLayoutManager( + context, + RecyclerView.HORIZONTAL, + false + ) + binding?.rvGift?.adapter = adapter + adapter.setNewData(this) + binding?.tvTips?.setTextColor(Color.WHITE) + binding?.tvTips?.text = + MessageView.SpannableBuilder(binding?.tvTips) + .append(ResUtil.getString(R.string.avroom_redpackage_redpackageopendialog_03)) + .append( + it.amount, + ForegroundColorSpan(Color.parseColor("#FDCD00")) + ) + .append(ResUtil.getString(R.string.avroom_redpackage_redpackageopendialog_04)) + .build() + } } + binding?.tvDiamondNum?.text = it.amount.substringBefore(".") } - binding?.tvDiamondNum?.text = it.amount.substringBefore(".") - } - if (!AvRoomDataManager.get().isRoomFans){ + if (!AvRoomDataManager.get().isRoomFans) { AvRoomDataManager.get().roomUid.let { CollectionRoomModel.get().followRoom("1", it) .subscribe { _: String? -> @@ -154,6 +167,7 @@ class RedPackageOpenDialog : BaseDialog() { } } } + TIME_OUT, REMAIN_ZERO, TIME_OUT_BACK -> { binding?.clOpened?.setBackgroundResource(R.drawable.room_red_package_get_bg) binding?.tvDiamondNum?.visibility = View.GONE diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt index dccf7c49b..f849f91dd 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt @@ -9,15 +9,19 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.isVisible import androidx.lifecycle.Observer import com.chuhai.utils.ServiceTime +import com.chuhai.utils.ktx.singleClick import com.yizhuan.erban.R +import com.yizhuan.erban.avroom.redpackage.open.RedPackageOpenDialog2 +import com.yizhuan.xchat_android_core.redpackage.RedPackageModel import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo import com.yizhuan.xchat_android_core.support.room.RoomContext import com.yizhuan.xchat_android_core.support.room.RoomView import com.yizhuan.xchat_android_core.support.room.RoomWidget import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.Disposable -import java.lang.RuntimeException +import okhttp3.internal.toLongOrDefault import java.text.SimpleDateFormat import java.util.TimeZone import java.util.concurrent.TimeUnit @@ -29,7 +33,9 @@ import java.util.concurrent.TimeUnit class RedPackageWidget : ConstraintLayout, RoomWidget { private var roomView: RoomView? = null private var textView: TextView? = null + private var numView: TextView? = null private var countDownDisposable: Disposable? = null + private var data: RedPackageNotifyInfo? = null // 倒计时格式(分:秒) private val mmssFormat by lazy(LazyThreadSafetyMode.NONE) { @@ -51,6 +57,8 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { } } + private val compositeDisposable = CompositeDisposable() + constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( @@ -72,7 +80,13 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { LayoutInflater.from(context) .inflate(R.layout.red_package_widget, this, true) textView = findViewById(R.id.tv_text) + numView = findViewById(R.id.tv_num) this.setBackgroundResource(R.drawable.red_package_widget_bg) + singleClick { + data?.let { + tryShowRedPackage(it) + } + } } /** @@ -85,23 +99,19 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { switchUI(false) return } - logD("startCountDown() count:$count") - countDownDisposable = Observable.intervalRange(0, count, 0, 500L, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .doOnNext { - val gap = time - ServiceTime.time - if (gap >= 0) { - textView?.text = mmssFormat.format(gap) - } else { - switchUI(false) - throw RuntimeException("状态已更新") + countDownDisposable = + Observable.intervalRange(0, count / 1000, 0, 1000L, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .doOnNext { + val gap = time - ServiceTime.time + if (gap >= 0) { + textView?.text = mmssFormat.format(gap) + } } - } - .doOnComplete { - logD("doOnComplete()") - switchUI(false) - } - .subscribe() + .doOnComplete { + switchUI(false) + } + .subscribe() } /** @@ -144,8 +154,21 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { * 更新数据 */ private fun loadData(data: RedPackageNotifyInfo?) { + logD("loadData() data:$data") + this.data = data stopCountDown() if (data != null) { + val num = data.redEnvelopeNum + if (num > 0) { + if (num > 99) { + numView?.text = "99+" + } else { + numView?.text = num.toString() + } + numView?.isVisible = true + } else { + numView?.isVisible = false + } if (data.validityType == 1) { // 限时生效 switchUI(true) @@ -160,7 +183,23 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { } } + /** + * 尝试展示红包 + */ + private fun tryShowRedPackage(data: RedPackageNotifyInfo) { + val disposable = RedPackageModel.getRedPackage(data.redEnvelopeId.toLongOrDefault(0)) + .subscribe({ data -> + roomView?.getActivity().let { + RedPackageOpenDialog2.newInstance(data).show(it) + } + }, { + // TODO 待实现 + }) + compositeDisposable.add(disposable) + } + override fun onStop() { + compositeDisposable.dispose() RoomContext.contextLiveData.removeObserver(contextObserver) stopCountDown() this.roomView = null diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt index 076e597a7..e9dc0714e 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt @@ -6,17 +6,39 @@ import android.animation.AnimatorListenerAdapter import android.animation.ObjectAnimator import android.animation.ValueAnimator import android.annotation.SuppressLint +import android.os.Bundle import android.view.View import android.view.WindowManager import android.view.animation.AccelerateDecelerateInterpolator import androidx.core.view.isVisible +import com.chuhai.utils.ServiceTime +import com.chuhai.utils.ktx.getColorById +import com.chuhai.utils.ktx.singleClick +import com.chuhai.utils.ktx.toStringRes +import com.chuhai.utils.spannable.spannableBuilder +import com.trello.rxlifecycle3.android.FragmentEvent import com.yizhuan.erban.R +import com.yizhuan.erban.avroom.redpackage.RedPackageOpenDialog import com.yizhuan.erban.base.BaseDialog import com.yizhuan.erban.databinding.RedPackageOpenDialogBinding import com.yizhuan.erban.ui.utils.loadAvatar +import com.yizhuan.erban.utils.UserUtils +import com.yizhuan.xchat_android_core.auth.AuthModel +import com.yizhuan.xchat_android_core.home.event.FollowRoomEvent +import com.yizhuan.xchat_android_core.home.model.CollectionRoomModel +import com.yizhuan.xchat_android_core.manager.AvRoomDataManager +import com.yizhuan.xchat_android_core.pay.PayModel import com.yizhuan.xchat_android_core.redpackage.* +import com.yizhuan.xchat_android_core.support.config.Constants import com.yizhuan.xchat_android_library.annatation.ActLayoutRes import com.yizhuan.xchat_android_library.utils.SingleToastUtil +import io.reactivex.Observable +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import org.greenrobot.eventbus.EventBus +import java.text.SimpleDateFormat +import java.util.TimeZone +import java.util.concurrent.TimeUnit /** * Created by Max on 2023/10/24 10:14 @@ -25,7 +47,36 @@ import com.yizhuan.xchat_android_library.utils.SingleToastUtil @ActLayoutRes(R.layout.red_package_open_dialog) class RedPackageOpenDialog2 : BaseDialog() { - private var mObjectAnimator: ObjectAnimator? = null + private var btnAnimator: ObjectAnimator? = null + + private var countDownDisposable: Disposable? = null + + // 倒计时格式(分:秒) + private val mmssFormat by lazy(LazyThreadSafetyMode.NONE) { + SimpleDateFormat("mm:ss").apply { + timeZone = TimeZone.getTimeZone("GMT+00:00") + } + } + + private val data by lazy(LazyThreadSafetyMode.NONE) { + arguments?.getSerializable(Constants.KEY_INTENT) as? RedPackageData + } + + // 打开红包的结果 + private var openResultRunnable: (() -> Unit)? = null + + // 按钮动画是否有效(至少转过了一周期) + private var isValidOfBtnAnimator: Boolean = false + + companion object { + fun newInstance(data: RedPackageData): RedPackageOpenDialog2 { + return RedPackageOpenDialog2().apply { + arguments = Bundle().apply { + putSerializable(Constants.KEY_INTENT, data) + } + } + } + } override fun onStart() { width = WindowManager.LayoutParams.MATCH_PARENT @@ -34,36 +85,275 @@ class RedPackageOpenDialog2 : BaseDialog() { } override fun init() { + val data = this.data + if (data == null) { + dismissAllowingStateLoss() + return + } dialog?.setCanceledOnTouchOutside(false) - binding.ivClose.setOnClickListener { + binding.ivClose.singleClick { dismissAllowingStateLoss() } - binding.layoutBtn.setOnClickListener { - startRedPacketAnim(it) + binding.layoutBtn.singleClick { + openRedPackage(data) + } + loadData(data) + } + + /** + * 加载红包数据 + */ + private fun loadData(data: RedPackageData) { + // 默认不可见先 + binding.groupOpen.isVisible = true + binding.groupResult.isVisible = false + binding.ivSendAvatar.loadAvatar(data.avatar) + binding.tvSendName.text = data.nick + loadTips(data) + loadBtnState(data) + } + + /** + * 加载红包提示 + */ + private fun loadTips(data: RedPackageData) { + binding.tvOpenTips.isVisible = false + when (data.kind) { + 2 -> { + binding.tvOpenTips.setText(R.string.red_package_open_tips_follow) + binding.tvOpenTips.isVisible = true + } + + 3 -> { + binding.tvOpenTips.setText(R.string.red_package_open_tips_share) + binding.tvOpenTips.isVisible = true + } + + 4 -> { + binding.tvOpenTips.spannableBuilder() + .appendText(text = R.string.red_package_open_tips_msg1.toStringRes()) + .appendText( + text = data.message ?: "", + textColor = getColorById(R.color.color_FFF87A) + ) + .appendText(text = R.string.red_package_open_tips_msg2.toStringRes()).apply() + binding.tvOpenTips.isVisible = true + } + + else -> { + loadTips(data.message) + } + } + } + + /** + * 加载按钮状态 + */ + private fun loadBtnState(data: RedPackageData) { + binding.groupBtnTime.isVisible = false + binding.ivBtnGet.isVisible = false + binding.tvBtnMsg.isVisible = false + binding.layoutBtn.isEnabled = false + + val gap = (data.beginTime ?: 0) - ServiceTime.time + // 开始了? + val started = gap < 0 + if (data.kind == 0) { + // 旧厅内红包or全服红包 + switchToOpenState() + return + } + if (data.kind == 1 || data.finish == true) { + if (started) { + switchToOpenState() + } else { + startCountDown(data.beginTime ?: 0) + } + } else { + binding.tvBtnMsg.isVisible = true + if (started) { + binding.tvBtnMsg.setText(R.string.red_package_open_btn_no) + } else { + when (data.kind) { + 2 -> { + binding.tvBtnMsg.setText(R.string.red_package_open_btn_follow) + } + + 3 -> { + binding.tvBtnMsg.setText(R.string.red_package_open_btn_share) + } + + 4 -> { + binding.tvBtnMsg.setText(R.string.red_package_open_btn_msg) + } + + else -> { + binding.tvBtnMsg.text = "" + } + } + } + } + } + + /** + * 开始倒计时 + * @param time 开抢时间 + */ + private fun startCountDown(time: Long) { + stopCountDown() + val count = time - ServiceTime.time + if (count <= 0) { + switchToOpenState() + return + } + binding.groupBtnTime.isVisible = true + countDownDisposable = + Observable.intervalRange(0, count / 1000, 0, 1000L, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .doOnNext { + val gap = time - ServiceTime.time + if (gap >= 0) { + binding.tvBtnTime.text = mmssFormat.format(gap) + } + } + .doOnComplete { + switchToOpenState() + } + .subscribe() + } + + + private fun stopCountDown() { + if (countDownDisposable?.isDisposed == false) { + countDownDisposable?.dispose() } } + /** + * 切换为可抢状态 + */ + private fun switchToOpenState() { + binding.tvBtnMsg.isVisible = false + binding.groupBtnTime.isVisible = false + binding.ivBtnGet.isVisible = true + binding.layoutBtn.isEnabled = true + } + + private fun loadTips(msg: String?) { + if (msg.isNullOrEmpty()) { + binding.tvOpenTips.isVisible = false + } else { + binding.tvOpenTips.text = msg + binding.tvOpenTips.isVisible = true + } + } + + /** + * 打开红包 + */ + private fun openRedPackage(data: RedPackageData) { + binding.layoutBtn.isEnabled = false + openResultRunnable = null + startRedPacketAnim(binding.layoutBtn) + RedPackageModel.openRedPackage(data.id ?: 0) + .compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW)).subscribe({ + if (isValidOfBtnAnimator) { + btnAnimator?.cancel() + openSuccess(it) + } else { + openResultRunnable = { + openSuccess(it) + } + } + }, { + if (isValidOfBtnAnimator) { + btnAnimator?.cancel() + openFail(it) + } else { + openResultRunnable = { + openFail(it) + } + } + }) + } + + /** + * 打开红包响应成功 + * @param data 结果 + */ + private fun openSuccess(data: RedPackageInfo) { + binding.layoutContent.setBackgroundResource(R.drawable.red_package_result_bg) + binding.groupOpen.isVisible = false + binding.groupResult.isVisible = true + binding.tvResultEmptyTips.isVisible = false + binding.ivResultSendAvatar.loadAvatar(data.redEnvelopeVO?.userVO?.avatar) + binding.tvResultSendName.text = data.redEnvelopeVO?.userVO?.nick ?: "" + binding.tvMessage.text = data.redEnvelopeVO?.message + binding.tvCount.text = R.string.red_package_result_count_format.toStringRes() + .format(data.redEnvelopeVO?.pickNum ?: 0, data.redEnvelopeVO?.totalNum ?: 0) + + val adapter = RedPackageResultAdapter() + binding.recyclerView.adapter = adapter + adapter.setNewData(data.redEnvelopeItemVOs) + PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe() + + when (data.redEnvelopeState) { + RedEnvelopeState.SUCCESS -> { + val item = data.redEnvelopeItemVOs?.firstOrNull { + it.userVO.uid == UserUtils.getUserUid() + } + binding.tvMoney.text = item?.amount?.substringBefore(".") + + // 下面是延续老代码保留的 + if (!AvRoomDataManager.get().isRoomFans) { + AvRoomDataManager.get().roomUid.let { + CollectionRoomModel.get().followRoom("1", it) + .subscribe { _: String? -> + AvRoomDataManager.get().isRoomFans = true + EventBus.getDefault().post(FollowRoomEvent()) + } + } + } + } + + RedEnvelopeState.TIME_OUT, RedEnvelopeState.REMAIN_ZERO, RedEnvelopeState.TIME_OUT_BACK -> { + binding.groupResultMoney.isVisible = false + binding.tvResultEmptyTips.isVisible = true + } + } + } + + /** + * 打开红包响应失败 + */ + private fun openFail(throwable: Throwable) { + switchToOpenState() + btnAnimator?.cancel() + SingleToastUtil.showToast(throwable.message) + } + @SuppressLint("CheckResult") private fun startRedPacketAnim(v: View) { - mObjectAnimator = ObjectAnimator.ofFloat(v, "rotationY", 0f, 360f) - mObjectAnimator?.let { + if (btnAnimator?.isRunning == true) { + btnAnimator?.cancel() + } + isValidOfBtnAnimator = false + btnAnimator = ObjectAnimator.ofFloat(v, "rotationY", 0f, 360f) + btnAnimator?.let { it.duration = 1500 it.repeatCount = ValueAnimator.INFINITE it.repeatMode = ValueAnimator.RESTART it.interpolator = AccelerateDecelerateInterpolator() it.addListener(object : AnimatorListenerAdapter() { - - var isCanceled = false - override fun onAnimationCancel(animation: Animator) { - isCanceled = true - } - - override fun onAnimationEnd(animation: Animator) { - if (!isCanceled) { - SingleToastUtil.showToast("End") + override fun onAnimationRepeat(animation: Animator) { + super.onAnimationRepeat(animation) + isValidOfBtnAnimator = true + if (openResultRunnable != null) { + animation.cancel() + openResultRunnable?.invoke() } } }) @@ -73,37 +363,13 @@ class RedPackageOpenDialog2 : BaseDialog() { override fun onDestroyView() { super.onDestroyView() - mObjectAnimator?.cancel() - mObjectAnimator = null + btnAnimator?.cancel() + btnAnimator = null + stopCountDown() } override fun onPause() { super.onPause() dismissAllowingStateLoss() } - - /** - * 待领取状态 - */ - private fun switchToPending(data: RedPackageNotifyInfo) { - binding.layoutContent.setBackgroundResource(R.drawable.red_package_open_bg) - binding.groupOpened.isVisible = false - binding.groupOpen.isVisible = true - - binding.ivSendAvatar.loadAvatar(data.sendUserAvatar) - binding.tvSendName.text = data.sendUserNick - } - - /** - * 打开状态 - */ - private fun switchToOpened(data: RedPackageInfo) { - binding.layoutContent.setBackgroundResource(R.drawable.red_package_opened_bg) - binding.groupOpen.isVisible = false - binding.groupOpened.isVisible = true - - binding.ivOpenedSendAvatar.loadAvatar(data.redEnvelopeVO?.userVO?.avatar) - binding.tvOpenedSendName.text = data.redEnvelopeVO?.userVO?.nick ?: "" - binding.tvMoney.text = "" - } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt new file mode 100644 index 000000000..755686f66 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt @@ -0,0 +1,43 @@ +package com.yizhuan.erban.avroom.redpackage.open + +import android.graphics.Color +import android.widget.ImageView +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.yizhuan.erban.R +import com.yizhuan.erban.ui.utils.loadAvatar +import com.yizhuan.erban.utils.UserUtils +import com.yizhuan.xchat_android_core.redpackage.RedEnvelopeItemVO +import com.yizhuan.xchat_android_core.utils.subAndReplaceDot +import com.yizhuan.xchat_android_library.utils.ResUtil +import java.text.SimpleDateFormat +import java.util.Locale + +/** + * Created by Max on 2023/10/27 20:24 + * Desc:红包领取结果 + **/ +class RedPackageResultAdapter : + BaseQuickAdapter(R.layout.red_package_open_item_result) { + private val dateFormat = SimpleDateFormat( + ResUtil.getString(R.string.avroom_redpackage_redpackageopenadapter_01), + Locale.CHINA + ) + + override fun convert(helper: BaseViewHolder, item: RedEnvelopeItemVO) { + helper.getView(R.id.iv_avatar).loadAvatar(item.userVO.avatar) + val isSelf = item.userVO.uid == UserUtils.getUserUid() + helper.setText( + R.id.tv_name, + if (isSelf) ResUtil.getString(R.string.avroom_redpackage_redpackageopenadapter_02) else item.userVO.nick.subAndReplaceDot( + 6 + ) + ) + helper.setText(R.id.tv_money, item.amount.substringBefore(".")) + try { + helper.setText(R.id.tv_time, dateFormat.format(item.createTime)) + } catch (e: Exception) { + helper.setText(R.id.tv_time, "") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt index 063da24db..649d357ed 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/PublicRedPackageEditorFragment.kt @@ -36,7 +36,7 @@ class PublicRedPackageEditorFragment : BaseBindingFragment + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_e03654_28.xml b/app/src/main/res/drawable/shape_e03654_8.xml similarity index 83% rename from app/src/main/res/drawable/shape_e03654_28.xml rename to app/src/main/res/drawable/shape_e03654_8.xml index be05b6928..2e33fe459 100644 --- a/app/src/main/res/drawable/shape_e03654_28.xml +++ b/app/src/main/res/drawable/shape_e03654_8.xml @@ -2,6 +2,6 @@ - + diff --git a/app/src/main/res/layout/red_package_open_dialog.xml b/app/src/main/res/layout/red_package_open_dialog.xml index cae0ac16e..57641c66e 100644 --- a/app/src/main/res/layout/red_package_open_dialog.xml +++ b/app/src/main/res/layout/red_package_open_dialog.xml @@ -170,7 +170,8 @@ android:id="@+id/group_open" android:layout_width="wrap_content" android:layout_height="wrap_content" - app:constraint_referenced_ids="layout_btn,iv_send_avatar,tv_send_name,tv_open_tips" /> + app:constraint_referenced_ids="layout_btn,iv_send_avatar,tv_send_name,tv_open_tips" + tools:visibility="visible" /> + + + + + app:layout_constraintTop_toBottomOf="@id/iv_result_send_avatar" /> @@ -289,7 +310,7 @@ android:layout_height="0dp" android:layout_marginTop="8dp" android:layout_marginBottom="5dp" - android:background="@drawable/shape_e03654_28" + android:background="@drawable/shape_e03654_8" android:orientation="vertical" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layout_constraintBottom_toTopOf="@id/tv_count" @@ -297,14 +318,23 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_message" app:layout_constraintWidth_percent="0.6819" - tools:listitem="@layout/red_package_open_item_record" /> + tools:listitem="@layout/red_package_open_item_result" /> + app:constraint_referenced_ids="tv_money,tv_money_tips,iv_money" + tools:visibility="visible" /> + + diff --git a/app/src/main/res/layout/red_package_open_item_record.xml b/app/src/main/res/layout/red_package_open_item_result.xml similarity index 100% rename from app/src/main/res/layout/red_package_open_item_record.xml rename to app/src/main/res/layout/red_package_open_item_result.xml diff --git a/app/src/main/res/layout/red_package_widget.xml b/app/src/main/res/layout/red_package_widget.xml index ddb01e8bf..fd29d57fc 100644 --- a/app/src/main/res/layout/red_package_widget.xml +++ b/app/src/main/res/layout/red_package_widget.xml @@ -4,9 +4,9 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:layout_width="58dp" - tools:layout_height="58dp" android:background="@drawable/red_package_widget_bg" + tools:layout_height="58dp" + tools:layout_width="58dp" tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 3a3172f22..add1856cf 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -708,4 +708,5 @@ #EBEEF5 #94959C #FFBF461F + #FFFFF87A diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1dd9a2571..f6be35434 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5167,8 +5167,18 @@ 恭喜發財,大吉大利! 後開搶 發彈幕\n搶紅包 - 已存入錢包,請到我的收益確認 - 已領取%s/%s個 - 抢红包 - 请输入弹幕内容 + 分享房間\n搶紅包 + 關注主播\n搶紅包 + 未參與活動 + 已存入錢包,請到我的收益確認 + 已領取%s/%s個 + 搶紅包 + 請輸入彈幕內容 + 關注主播可搶紅包 + 分享房間可搶紅包 + 發送彈幕 + 可搶紅包 + 搶完了,下次早點來哦~ + + \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachParser.java b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachParser.java index e5255c18c..42780e771 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachParser.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachParser.java @@ -64,6 +64,7 @@ import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUS import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_PUBLIC_CHAT_HALL_GIFT; import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND; import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_DIAMOND; +import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_DIAMOND2; import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_MSG; import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_DRAW_GIFT_EFFECT; import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_RECEIVE_LUCKY_MONEY; @@ -458,6 +459,7 @@ public class CustomAttachParser implements MsgAttachmentParser { switch (second) { case CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_DIAMOND: case CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND: + case CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_DIAMOND2: attachment = new RedPackageAttachment(second); break; case CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ROOM_MSG: diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt new file mode 100644 index 000000000..cf68f99bc --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt @@ -0,0 +1,34 @@ +package com.yizhuan.xchat_android_core.redpackage + +import java.io.Serializable + + +/** + * Created by Max on 2023/10/24 16:37 + * Desc:红包数据 + **/ +data class RedPackageData( + val amount: Long?, + val avatar: String?, + val beginTime: Long?, + val commissionAmount: Long?, + val createTime: Long?, + val duration: Long?, + val endTime: Long?, + val finish: Boolean?, + val id: Long?, + val kind: Int?, + val message: String?, + val nick: String?, + val num: Long?, + val originalAmount: Long?, + val position: String?, + val roomTitle: String?, + val roomUid: Long?, + //红包状态 1 开抢中 2 过时 3 抢光了 4 抢到了 5 将要开始 6 超时已退还 + val state: Int?, + val type: String?, + val updateTime: Long?, + val userId: Long?, + val validityType: Int? +) : Serializable \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt index bf3e7e67d..058d5e20c 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageModel.kt @@ -37,33 +37,17 @@ object RedPackageModel { .handleStringData() } - fun openRedPackage(redEnvelopeId: String): Single { + fun openRedPackage(redEnvelopeId: Long): Single { return api.openRedPackage(redEnvelopeId) .io2main() .handleBeanData() } - fun getRedPackage(uid: Long): Observable { - return api.getRedPackage(true, uid) + fun getRedPackage(id: Long): Observable { + return api.getRedPackageData(id) .io2main() .handleBeanData() .toObservable() - .flatMap { Observable.fromIterable(it) } - .map { - RedPackageNotifyInfo( - redEnvelopeId = it.id, - redEnvelopeType = it.type, - redEnvelopeMessage = it.message, - sendUserAvatar = it.userVO?.avatar ?: "", - sendUserNick = it.userVO?.nick ?: "", - roomUid = it.roomUId, - roomTitle = "", - kind = it.kind, - beginTime = it.beginTime, - redEnvelopeNum = it.totalNum, - validityType = it.validityType - ) - } } /** @@ -85,7 +69,7 @@ object RedPackageModel { roomTitle = "", kind = item.kind, beginTime = item.beginTime, - redEnvelopeNum = item.totalNum, + redEnvelopeNum = it.size.toLong(), validityType = item.validityType ) } @@ -124,7 +108,7 @@ object RedPackageModel { */ @FormUrlEncoded @POST("/red-envelope/open") - fun openRedPackage(@Field("redEnvelopeId") redEnvelopeId: String): Single> + fun openRedPackage(@Field("redEnvelopeId") redEnvelopeId: Long): Single> /** @@ -138,6 +122,14 @@ object RedPackageModel { @Query("uid") uid: Long ): Single>> + /** + * 获取红包详情 + */ + @GET("/red-envelope/get") + fun getRedPackageData( + @Query("redEnvelopeId") redEnvelopeId: Long, + ): Single> + /** * 房间全服红包开关 diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/config/Constants.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/config/Constants.kt new file mode 100644 index 000000000..9dc4339b2 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/config/Constants.kt @@ -0,0 +1,9 @@ +package com.yizhuan.xchat_android_core.support.config + +/** + * Created by Max on 2023/10/26 22:50 + * Desc:常用变量 + **/ +object Constants { + val KEY_INTENT = "/intent" +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/spannable/IconTextSpan.java b/library/src/module_utils/java/com/chuhai/utils/spannable/IconTextSpan.java new file mode 100644 index 000000000..994e7a798 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/spannable/IconTextSpan.java @@ -0,0 +1,156 @@ +package com.chuhai.utils.spannable; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.RectF; +import android.text.TextPaint; +import android.text.TextUtils; +import android.text.style.ReplacementSpan; +import android.util.TypedValue; + +import androidx.annotation.NonNull; + +/** + * Created by Max on 2023/10/26 20:14 + **/ +public class IconTextSpan extends ReplacementSpan { + private Context mContext; + private int mBgColorResId; //Icon背景颜色 + private String mText; //Icon内文字 + private float mBgHeight; //Icon背景高度 + private float mBgWidth; //Icon背景宽度 + private float mRadius; //Icon圆角半径 + private float mRightMargin; //右边距 + private float mTextSize; //文字大小 + private int mTextColorResId; //文字颜色 + + private Paint mBgPaint; //icon背景画笔 + private Paint mTextPaint; //icon文字画笔 + private int paddingHorizontal = 0; + + public IconTextSpan(Context context, int bgColorResId, String text, int textColor, int mTextSize, int round, int marginRight, int paddingHorizontal) { + if (TextUtils.isEmpty(text)) { + return; + } + + this.paddingHorizontal = paddingHorizontal; + //初始化默认数值 + initDefaultValue(context, bgColorResId, text, textColor, mTextSize, round, marginRight); + //计算背景的宽度 + this.mBgWidth = caculateBgWidth(text); + //初始化画笔 + initPaint(); + } + + /** + * 初始化画笔 + */ + private void initPaint() { + //初始化背景画笔 + mBgPaint = new Paint(); + mBgPaint.setColor(mBgColorResId); + mBgPaint.setStyle(Paint.Style.FILL); + mBgPaint.setAntiAlias(true); + + //初始化文字画笔 + mTextPaint = new TextPaint(); + mTextPaint.setColor(mTextColorResId); + mTextPaint.setTextSize(mTextSize); + mTextPaint.setAntiAlias(true); + mTextPaint.setTextAlign(Paint.Align.CENTER); + } + + /** + * 初始化默认数值 + * + * @param context 上下文 + * @param textColor 字体颜色 + */ + private void initDefaultValue(Context context, int bgColorResId, String text, int textColor, int textSize, int round, int marginRight) { + this.mContext = context.getApplicationContext(); + this.mBgColorResId = bgColorResId; + this.mText = text; + this.mBgHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 18f, mContext.getResources().getDisplayMetrics()); + this.mRightMargin = marginRight; + this.mRadius = round; + this.mTextSize = textSize; + this.mTextColorResId = textColor; + } + + /** + * 计算icon背景宽度 + * + * @param text icon内文字 + */ + private float caculateBgWidth(String text) { +// if (text.length() > 1) { + //多字,宽度=文字宽度+padding + Rect textRect = new Rect(); + Paint paint = new Paint(); + paint.setTextSize(mTextSize); + paint.getTextBounds(text, 0, text.length(), textRect); + float padding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, paddingHorizontal, mContext.getResources().getDisplayMetrics()); + return textRect.width() + padding * 2; +// } else { + //单字,宽高一致为正方形 +// return mBgHeight + paddingHorizontal; +// } + } + + /** + * 设置右边距 + * @param rightMarginDpValue 右边边距 + */ + public void setRightMarginDpValue(int rightMarginDpValue) { + this.mRightMargin = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, rightMarginDpValue, mContext.getResources().getDisplayMetrics()); + } + + /** + * 设置宽度,宽度=背景宽度+右边距 + */ + @Override + public int getSize(@NonNull Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) { + return (int) (mBgWidth + mRightMargin); + } + + /** + * draw + * + * @param text 完整文本 + * @param start setSpan里设置的start + * @param end setSpan里设置的start + * @param top 当前span所在行的上方y + * @param y y其实就是metric里baseline的位置 + * @param bottom 当前span所在行的下方y(包含了行间距),会和下一行的top重合 + * @param paint 使用此span的画笔 + */ + @Override + public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) { + //画背景 + Paint bgPaint = new Paint(); + bgPaint.setColor(mBgColorResId); + bgPaint.setStyle(Paint.Style.FILL); + bgPaint.setAntiAlias(true); + Paint.FontMetrics metrics = paint.getFontMetrics(); + + float textHeight = metrics.descent - metrics.ascent; + //算出背景开始画的y坐标 + float bgStartY = y + (textHeight - mBgHeight) / 2 + metrics.ascent; + + //画背景 + RectF bgRect = new RectF(x, bgStartY, x + mBgWidth , bgStartY + mBgHeight); + canvas.drawRoundRect(bgRect, mRadius, mRadius, bgPaint); + + //把字画在背景中间 + TextPaint textPaint = new TextPaint(); + textPaint.setColor(mTextColorResId); + textPaint.setTextSize(mTextSize); + textPaint.setAntiAlias(true); + textPaint.setTextAlign(Paint.Align.CENTER); //这个只针对x有效 + Paint.FontMetrics fontMetrics = textPaint.getFontMetrics(); + float textRectHeight = fontMetrics.bottom - fontMetrics.top; + canvas.drawText(mText, x + mBgWidth / 2, bgStartY + (mBgHeight - textRectHeight) / 2 - fontMetrics.top, textPaint); + } +} diff --git a/library/src/module_utils/java/com/chuhai/utils/spannable/RoundBackgroundColorSpan.kt b/library/src/module_utils/java/com/chuhai/utils/spannable/RoundBackgroundColorSpan.kt new file mode 100644 index 000000000..84f2c4dbc --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/spannable/RoundBackgroundColorSpan.kt @@ -0,0 +1,29 @@ +package com.chuhai.utils.spannable + +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.RectF +import android.text.style.ReplacementSpan + +/** + * Created by Max on 2023/10/26 20:14 + * Desc:文字 圆背景 + **/ +class RoundBackgroundColorSpan(var textColor: Int, var textSize: Int, var bgColor: Int, var paddingHorizontal: Int, var paddingVertical: Int, var marginHorizontal: Int,var round:Int) : ReplacementSpan() { + + override fun getSize(paint: Paint, text: CharSequence?, start: Int, end: Int, fm: Paint.FontMetricsInt?): Int { + return paint.measureText(text, start, end).toInt()+(paddingHorizontal)+marginHorizontal + } + + override fun draw(canvas: Canvas, text: CharSequence?, start: Int, end: Int, x: Float, top: Int, y: Int, bottom: Int, paint: Paint) { + + paint.color = this.textColor + paint.textSize = textSize.toFloat() + canvas.drawText(text.toString(), start, end, x + paddingHorizontal+marginHorizontal, y.toFloat()-paddingVertical, paint) + paint.color = paint.color + + paint.color = this.bgColor; + val rectF = RectF(x+marginHorizontal, top.toFloat(), (paint.measureText(text.toString())) , bottom.toFloat()) + canvas.drawRoundRect(rectF, round.toFloat(), round.toFloat(), paint) + } +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/spannable/SpannableTextBuilder.kt b/library/src/module_utils/java/com/chuhai/utils/spannable/SpannableTextBuilder.kt new file mode 100644 index 000000000..39d346ef1 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/spannable/SpannableTextBuilder.kt @@ -0,0 +1,327 @@ +package com.chuhai.utils.spannable + +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.TextPaint +import android.text.method.LinkMovementMethod +import android.text.style.* +import android.view.View +import android.widget.TextView +import androidx.annotation.ColorInt +import androidx.annotation.DrawableRes +import com.chuhai.utils.ktx.dp + +/** + * Created by Max on 2023/10/26 20:14 + * Desc:可扩展文本 + **/ +class SpannableTextBuilder(private val textView: TextView) { + + private val spannableBuilder: SpannableStringBuilder by lazy { + SpannableStringBuilder() + } + + /** + * 添加一段文本 + */ + fun appendText(node: TextNode) { + val onClick: ((String) -> Unit)? = if (node.getOnClickListener() != null) { + { + node.getOnClickListener()?.invoke(node) + } + } else { + null + } + appendText( + text = node.getContent(), + textColor = node.getTextColor(), + textSize = node.getTextSize(), + backgroundColor = node.getBackgroundColor(), + underline = node.isUnderline(), + clickListener = onClick + ) + } + + /** + * 添加一段文本 + * @param text 文本 + * @param textColor 文本颜色 + * @param backgroundColor 背景颜色 + * @param textSize 文本大小 + * @param textStyle 文本样式 + * @param underline 是否有下划线 + * @param clickListener 点击事件 + */ + fun appendText( + text: String, + @ColorInt textColor: Int? = null, + @ColorInt backgroundColor: Int? = null, + textSize: Int? = null, + textStyle: Int? = null, + underline: Boolean? = null, + clickListener: ((String) -> Unit)? = null + ): SpannableTextBuilder { + val start = spannableBuilder.length + spannableBuilder.append(text) + val end = spannableBuilder.length + + // 文本颜色 + if (textColor != null) { + spannableBuilder.setSpan( + ForegroundColorSpan(textColor), + start, + end, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + + // 文本背景颜色 + if (backgroundColor != null) { + spannableBuilder.setSpan( + BackgroundColorSpan(backgroundColor), + start, + end, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + + // 文本大小 + if (textSize != null) { + spannableBuilder.setSpan( + AbsoluteSizeSpan(textSize, true), + start, + end, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + + // 文本样式 + if (textStyle != null) { + spannableBuilder.setSpan( + StyleSpan(textStyle), + start, + end, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + + // 下划线 + if (underline == true) { + spannableBuilder.setSpan(UnderlineSpan(), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + } + + // 点击事件 + if (clickListener != null) { + // 设置highlightColor=Color.TRANSPARENT,可以解决点击时的高亮色问题,但光标的区域选中也是透明的,貌似对用户体验不太好 +// textView.highlightColor = Color.TRANSPARENT + textView.movementMethod = LinkMovementMethod.getInstance() + val clickableSpan = TextClickableSpan( + clickListener, text, textColor + ?: textView.currentTextColor, underline ?: false + ) + spannableBuilder.setSpan(clickableSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + } + return this + } + + /** + * 添加图片 + * @param drawable 图片 + * @param clickListener 点击事件 + */ + fun appendDrawable( + @DrawableRes drawable: Int, + clickListener: ((Int) -> Unit)? + ): SpannableTextBuilder { + // 需要时再完善 + val start = spannableBuilder.length + spannableBuilder.append("[icon}") + val end = spannableBuilder.length + + // 图片 + val imageSpan: ImageSpan = VerticalImageSpan(textView.context, drawable) + spannableBuilder.setSpan(imageSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + + // 点击事件 + if (clickListener != null) { + textView.movementMethod = LinkMovementMethod.getInstance() + val clickableSpan = DrawableClickableSpan(clickListener, drawable) + spannableBuilder.setSpan(clickableSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + } + return this + } + + /** + * 添加有背景圆角的文字 + * @param text 文本 + * @param textColor 文本颜色 + * @param backgroundColor 背景颜色 + * @param paddingHorizontal 内横向边距 + * @param paddingVertical 内竖向边距 + * @param marginHorizontal 外横向边距 + */ + fun appendTextRoundBackground( + text: String, + @ColorInt textColor: Int, + textSize: Int, + @ColorInt backgroundColor: Int, + paddingHorizontal: Int, + paddingVertical: Int, + marginHorizontal: Int, + round: Int + ): SpannableTextBuilder { + val start = spannableBuilder.length + spannableBuilder.append(text) + val end = spannableBuilder.length + spannableBuilder.setSpan( + RoundBackgroundColorSpan( + textColor, + textSize, + backgroundColor, + paddingHorizontal, + paddingVertical, + marginHorizontal, + round + ), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ); + return this + } + + /** + * 添加有背景圆角的文字 + * @param text 文本 + * @param textColor 文本颜色 + * @param backgroundColor 背景颜色 + * @param paddingHorizontal 内横向边距 + * @param paddingVertical 内竖向边距 + * @param marginHorizontal 外横向边距 + */ + fun appendIconTextRoundBackground( + text: String, + @ColorInt textColor: Int, + textSize: Int, + @ColorInt backgroundColor: Int, + marginRight: Int, + round: Int + ): SpannableTextBuilder { + val start = spannableBuilder.length + spannableBuilder.append(text) + val end = spannableBuilder.length + spannableBuilder.setSpan( + IconTextSpan( + textView.context, + backgroundColor, + text, + textColor, + textSize, + round, + marginRight, + 2.dp + ), + start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ) + return this + } + + fun build(): SpannableStringBuilder { + return spannableBuilder + } + + /** + * 应用 + */ + fun apply() { + textView.text = spannableBuilder + } + + /** + * 文本点击 + */ + class TextClickableSpan( + private val clickListener: ((String) -> Unit)? = null, + private val text: String, + private val textColor: Int, + private val underline: Boolean + ) : ClickableSpan() { + override fun onClick(widget: View) { + clickListener?.invoke(text) + } + + override fun updateDrawState(ds: TextPaint) { + ds.color = textColor + ds.isUnderlineText = underline + } + } + + + /** + * 图片点击 + */ + class DrawableClickableSpan( + private val clickListener: ((Int) -> Unit)? = null, + private val drawable: Int + ) : ClickableSpan() { + override fun onClick(widget: View) { + clickListener?.invoke(drawable) + } + } + + + interface TextNode { + /** + * 内容 + */ + fun getContent(): String + + /** + * 文本颜色 + */ + fun getTextSize(): Int? { + return null + } + + /** + * 文本颜色 + */ + fun getTextColor(): Int? { + return null + } + + /** + * 文本样式 + */ + fun getTextStyle(): Int? { + return null + } + + /** + * 背景颜色 + */ + fun getBackgroundColor(): Int? { + return null + } + + /** + * 是否有下划线 + */ + fun isUnderline(): Boolean { + return false + } + + /** + * 获取点击事件 + */ + fun getOnClickListener(): ((TextNode) -> Unit)? { + return null + } + } +} + + +/** + * 快速构建生成器 + */ +fun TextView.spannableBuilder(): SpannableTextBuilder { + return SpannableTextBuilder(this) +} \ No newline at end of file diff --git a/library/src/module_utils/java/com/chuhai/utils/spannable/VerticalImageSpan.kt b/library/src/module_utils/java/com/chuhai/utils/spannable/VerticalImageSpan.kt new file mode 100644 index 000000000..c428c7770 --- /dev/null +++ b/library/src/module_utils/java/com/chuhai/utils/spannable/VerticalImageSpan.kt @@ -0,0 +1,66 @@ +package com.chuhai.utils.spannable + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.drawable.Drawable +import android.text.style.ImageSpan + +/** + * Created by Max on 2023/10/26 20:14 + * Desc:垂直居中的ImageSpan + **/ +class VerticalImageSpan : ImageSpan { + constructor(drawable: Drawable) : super(drawable) + constructor(context: Context, resourceId: Int) : super(context, resourceId) + + /** + * update the text line height + */ + override fun getSize( + paint: Paint, text: CharSequence?, start: Int, end: Int, + fontMetricsInt: Paint.FontMetricsInt? + ): Int { + val drawable = drawable + val rect = drawable.bounds + if (fontMetricsInt != null) { + val fmPaint = paint.fontMetricsInt + val fontHeight = fmPaint.descent - fmPaint.ascent + val drHeight = rect.bottom - rect.top + val centerY = fmPaint.ascent + fontHeight / 2 + fontMetricsInt.ascent = centerY - drHeight / 2 + fontMetricsInt.top = fontMetricsInt.ascent + fontMetricsInt.bottom = centerY + drHeight / 2 + fontMetricsInt.descent = fontMetricsInt.bottom + } + return rect.right + } + + /** + * see detail message in android.text.TextLine + * + * @param canvas the canvas, can be null if not rendering + * @param text the text to be draw + * @param start the text start position + * @param end the text end position + * @param x the edge of the replacement closest to the leading margin + * @param top the top of the line + * @param y the baseline + * @param bottom the bottom of the line + * @param paint the work paint + */ + override fun draw( + canvas: Canvas, text: CharSequence, start: Int, end: Int, + x: Float, top: Int, y: Int, bottom: Int, paint: Paint + ) { + val drawable = drawable + canvas.save() + val fmPaint = paint.fontMetricsInt + val fontHeight = fmPaint.descent - fmPaint.ascent + val centerY = y + fmPaint.descent - fontHeight / 2 + val transY = centerY - (drawable.bounds.bottom - drawable.bounds.top) / 2 + canvas.translate(x, transY.toFloat()) + drawable.draw(canvas) + canvas.restore() + } +} \ No newline at end of file From d7da6d4be4875594cc07699a40aa1bda12806954 Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 27 Oct 2023 11:21:13 +0800 Subject: [PATCH 11/14] =?UTF-8?q?feat:=E5=AE=8C=E5=96=84=E6=8A=A2=E7=BA=A2?= =?UTF-8?q?=E5=8C=85=E6=96=87=E6=A1=88=E5=92=8C=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/avroom/fragment/BaseRoomFragment.kt | 3 + .../redpackage/open/RedPackageOpenDialog2.kt | 89 ++++++++++++------ .../open/RedPackageResultAdapter.kt | 4 +- .../redpackage/send/RedPackageSendDialog2.kt | 1 - .../java/com/yizhuan/erban/base/BaseDialog.kt | 1 + .../red_package_open_btn_get.png | Bin 3497 -> 0 bytes .../red_package_open_btn_get.webp | Bin 0 -> 1534 bytes .../red_package_result_bg.webp | Bin 118214 -> 115310 bytes ...shape_e03654_8.xml => shape_e03654_10.xml} | 2 +- .../res/layout/red_package_open_dialog.xml | 6 +- .../layout/red_package_open_item_result.xml | 11 +++ app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 7 +- .../redpackage/RedPackageData.kt | 2 +- .../redpackage/RedPackageInfo.kt | 24 ++--- 15 files changed, 104 insertions(+), 47 deletions(-) delete mode 100644 app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.png create mode 100644 app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.webp rename app/src/main/res/drawable/{shape_e03654_8.xml => shape_e03654_10.xml} (83%) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt index 2e35f06e5..1247e793c 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt @@ -1300,6 +1300,9 @@ open class BaseRoomFragment?> : val dialog = RoomOperationDialog(mContext) dialog.setOnActionListener { redPackageSendDialog = RedPackageSendDialog2() + redPackageSendDialog?.setOnDismissListener { + redPackageSendDialog = null + } redPackageSendDialog?.show(activity) } dialog.show() diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt index e9dc0714e..3460cb288 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt @@ -18,11 +18,10 @@ import com.chuhai.utils.ktx.toStringRes import com.chuhai.utils.spannable.spannableBuilder import com.trello.rxlifecycle3.android.FragmentEvent import com.yizhuan.erban.R -import com.yizhuan.erban.avroom.redpackage.RedPackageOpenDialog import com.yizhuan.erban.base.BaseDialog import com.yizhuan.erban.databinding.RedPackageOpenDialogBinding import com.yizhuan.erban.ui.utils.loadAvatar -import com.yizhuan.erban.utils.UserUtils +import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration import com.yizhuan.xchat_android_core.auth.AuthModel import com.yizhuan.xchat_android_core.home.event.FollowRoomEvent import com.yizhuan.xchat_android_core.home.model.CollectionRoomModel @@ -68,6 +67,12 @@ class RedPackageOpenDialog2 : BaseDialog() { // 按钮动画是否有效(至少转过了一周期) private var isValidOfBtnAnimator: Boolean = false + // 按钮执行函数 + private var btnRunnable: (() -> Unit)? = null + + // 打开红包接口请求中 + private var opening = false + companion object { fun newInstance(data: RedPackageData): RedPackageOpenDialog2 { return RedPackageOpenDialog2().apply { @@ -97,7 +102,7 @@ class RedPackageOpenDialog2 : BaseDialog() { } binding.layoutBtn.singleClick { - openRedPackage(data) + btnRunnable?.invoke() } loadData(data) } @@ -122,12 +127,22 @@ class RedPackageOpenDialog2 : BaseDialog() { binding.tvOpenTips.isVisible = false when (data.kind) { 2 -> { - binding.tvOpenTips.setText(R.string.red_package_open_tips_follow) + binding.tvOpenTips.spannableBuilder() + .appendText( + text = R.string.red_package_open_tips_follow.toStringRes(), + textColor = getColorById(R.color.color_FFF87A) + ) + .appendText(text = R.string.red_package_open_tips_msg_end.toStringRes()).apply() binding.tvOpenTips.isVisible = true } 3 -> { - binding.tvOpenTips.setText(R.string.red_package_open_tips_share) + binding.tvOpenTips.spannableBuilder() + .appendText( + text = R.string.red_package_open_tips_share.toStringRes(), + textColor = getColorById(R.color.color_FFF87A) + ) + .appendText(text = R.string.red_package_open_tips_msg_end.toStringRes()).apply() binding.tvOpenTips.isVisible = true } @@ -138,7 +153,7 @@ class RedPackageOpenDialog2 : BaseDialog() { text = data.message ?: "", textColor = getColorById(R.color.color_FFF87A) ) - .appendText(text = R.string.red_package_open_tips_msg2.toStringRes()).apply() + .appendText(text = R.string.red_package_open_tips_msg_end.toStringRes()).apply() binding.tvOpenTips.isVisible = true } @@ -155,7 +170,7 @@ class RedPackageOpenDialog2 : BaseDialog() { binding.groupBtnTime.isVisible = false binding.ivBtnGet.isVisible = false binding.tvBtnMsg.isVisible = false - binding.layoutBtn.isEnabled = false + btnRunnable = null val gap = (data.beginTime ?: 0) - ServiceTime.time // 开始了? @@ -175,18 +190,30 @@ class RedPackageOpenDialog2 : BaseDialog() { binding.tvBtnMsg.isVisible = true if (started) { binding.tvBtnMsg.setText(R.string.red_package_open_btn_no) + btnRunnable = { + SingleToastUtil.showToast(R.string.red_package_open_no_tips) + } } else { when (data.kind) { 2 -> { binding.tvBtnMsg.setText(R.string.red_package_open_btn_follow) + btnRunnable = { + SingleToastUtil.showToast("2") + } } 3 -> { binding.tvBtnMsg.setText(R.string.red_package_open_btn_share) + btnRunnable = { + SingleToastUtil.showToast("3") + } } 4 -> { binding.tvBtnMsg.setText(R.string.red_package_open_btn_msg) + btnRunnable = { + SingleToastUtil.showToast("4") + } } else -> { @@ -239,7 +266,13 @@ class RedPackageOpenDialog2 : BaseDialog() { binding.tvBtnMsg.isVisible = false binding.groupBtnTime.isVisible = false binding.ivBtnGet.isVisible = true - binding.layoutBtn.isEnabled = true + btnRunnable = { + if (!opening) { + this.data?.let { + openRedPackage(it) + } + } + } } private fun loadTips(msg: String?) { @@ -255,29 +288,29 @@ class RedPackageOpenDialog2 : BaseDialog() { * 打开红包 */ private fun openRedPackage(data: RedPackageData) { - binding.layoutBtn.isEnabled = false + opening = true openResultRunnable = null startRedPacketAnim(binding.layoutBtn) RedPackageModel.openRedPackage(data.id ?: 0) .compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW)).subscribe({ - if (isValidOfBtnAnimator) { - btnAnimator?.cancel() - openSuccess(it) - } else { - openResultRunnable = { + if (isValidOfBtnAnimator) { + btnAnimator?.cancel() openSuccess(it) + } else { + openResultRunnable = { + openSuccess(it) + } } - } - }, { - if (isValidOfBtnAnimator) { - btnAnimator?.cancel() - openFail(it) - } else { - openResultRunnable = { + }, { + if (isValidOfBtnAnimator) { + btnAnimator?.cancel() openFail(it) + } else { + openResultRunnable = { + openFail(it) + } } - } - }) + }) } /** @@ -291,6 +324,8 @@ class RedPackageOpenDialog2 : BaseDialog() { binding.tvResultEmptyTips.isVisible = false binding.ivResultSendAvatar.loadAvatar(data.redEnvelopeVO?.userVO?.avatar) binding.tvResultSendName.text = data.redEnvelopeVO?.userVO?.nick ?: "" + val name = data.redEnvelopeVO?.userVO?.nick ?: "" + binding.tvResultSendName.text = name.take(8) + "..的紅包" binding.tvMessage.text = data.redEnvelopeVO?.message binding.tvCount.text = R.string.red_package_result_count_format.toStringRes() .format(data.redEnvelopeVO?.pickNum ?: 0, data.redEnvelopeVO?.totalNum ?: 0) @@ -302,10 +337,8 @@ class RedPackageOpenDialog2 : BaseDialog() { when (data.redEnvelopeState) { RedEnvelopeState.SUCCESS -> { - val item = data.redEnvelopeItemVOs?.firstOrNull { - it.userVO.uid == UserUtils.getUserUid() - } - binding.tvMoney.text = item?.amount?.substringBefore(".") + binding.tvMoney.text = data.currentUserAmount.toString().substringBefore(".") + binding.groupResultMoney.isVisible = true // 下面是延续老代码保留的 if (!AvRoomDataManager.get().isRoomFans) { @@ -324,6 +357,7 @@ class RedPackageOpenDialog2 : BaseDialog() { binding.tvResultEmptyTips.isVisible = true } } + opening = false } /** @@ -333,6 +367,7 @@ class RedPackageOpenDialog2 : BaseDialog() { switchToOpenState() btnAnimator?.cancel() SingleToastUtil.showToast(throwable.message) + opening = false } @SuppressLint("CheckResult") diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt index 755686f66..e692ab542 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt @@ -1,7 +1,8 @@ package com.yizhuan.erban.avroom.redpackage.open -import android.graphics.Color +import android.view.View import android.widget.ImageView +import androidx.core.view.isVisible import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.yizhuan.erban.R @@ -39,5 +40,6 @@ class RedPackageResultAdapter : } catch (e: Exception) { helper.setText(R.id.tv_time, "") } + helper.getView(R.id.v_line).isVisible = helper.bindingAdapterPosition != itemCount - 1 } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt index 4dab83dbd..115b6c8e4 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/send/RedPackageSendDialog2.kt @@ -4,7 +4,6 @@ package com.yizhuan.erban.avroom.redpackage.send import android.annotation.SuppressLint import android.view.Gravity import android.view.WindowManager -import com.bumptech.glide.manager.Lifecycle import com.chuhai.utils.ktx.singleClick import com.chuhai.utils.ktx.toStringRes import com.yizhuan.erban.R diff --git a/app/src/main/java/com/yizhuan/erban/base/BaseDialog.kt b/app/src/main/java/com/yizhuan/erban/base/BaseDialog.kt index 9c0afd7b9..62424dd55 100644 --- a/app/src/main/java/com/yizhuan/erban/base/BaseDialog.kt +++ b/app/src/main/java/com/yizhuan/erban/base/BaseDialog.kt @@ -71,6 +71,7 @@ abstract class BaseDialog : RxDialogFragment() { override fun onDestroyView() { super.onDestroyView() _binding = null + this.onDismissListener = null } abstract fun init() diff --git a/app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.png b/app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.png deleted file mode 100644 index a02b16ebddb0b9a2abf7f1cf13c6905debd22745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3497 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 XADhA7dONA!00000NkvXXu0mjfG1HeW diff --git a/app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.webp b/app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.webp new file mode 100644 index 0000000000000000000000000000000000000000..47db77031e5b7994cb866eb8062972f2fe814d8d GIT binary patch literal 1534 zcmV~sC`25F<^?Fk37sa7 znWnFJZpbLm{a^vzz@JaR6C2YS|3PAav=I1CUK0+$p$V_P`UeKNCf^CueA-B%ZI~BO z9!kKCcL}zzMiBzbrVs%u(4T+68&by_3nZwK!wrYDGldA8WfRVjCht$MP-+Sjm|qH~ zzFNSL74Q;Bg4(KJkj>6GPN4!HB;RGLe_(-()FFmuQ@GF>hjbWYw;)o|nN%75NSNgm zzAEVwoDsIQdE)N_swtmf0^2H3+~oZS_PoZ9nT;H7a3C1^RN>g9-lV1olmI^(33O=W zaHF=vHj*N*>BERe6__P9`4=~4(_uBU!l*)5NfWpyt9gqC&JSE*U`k_wNW{eU1F8*R zFL_8t)r>RrpjS!t?2*F_&bg_n8X@M;np;E@f-W@@=o3lNxBPnHfi5IX#4kw0hQ$K1 zY#MaLXOdnuTpQaA*6|IE1l?vMRDK=C$Oie=cndN5otZr#g5HV=r&)~!f=EL0qmh7- zC9h!YfcK;cTv3nM&|(3ZS#AwQ2{gdWMkxl<4wWw$Dd%|vr9odw^9_cxH9o|+7D0=f z%nUVr(4j_J0JInVfz}A)szf91Z<0-)$UwV@;}?{|%og*i;VG(Y8*6;x`15U7b+a|S zY5)%+Xzai9ROc40wJ$|g^J0BAjnJzIdgLg( zSQYTDyhECqfPpBYfiY%7@t`jDzyYuNN(FEJG|1wa<;I(;I+`@IJp%2GmsM zv>JrR9$v(yj8*nu?BIx=B;%;f8|7#XzSDPm;laoPcd~sEyCB<6pw=jrP2JSj@{FbQ2qZO7+p4L&kZGhQ&E|r zCdJf(6$%t19h~p&<7Cr=N&GD0qUUzYK2Cbc{ZF0c%U@7dtPF7rNt)Yg5Zs?f$OzXz z#%^N!0kyjfx}=mpcB|Guuu!RN8^Y)&w<9S(;xM@U?}BI5$^!I`pBo8kEuWEbqXK>9 zQ==HbSozTXV0}_P=m+k6nJfV3^T!iRZZ0T6uRQK7xOirU>ky+qa1S}pvRjC*ERUZ$ z)|C1pJv}mg)*ZzzFb&fQlmj`?os${DTU^k?N0fnjlOD3+{txE|8t9f2oDa>E z4A|%B@&3i#+Gtq~obcFeNzSRCMbHrw5e23W(R)V$Ft(YE-h0L!Jq6CF*~a9(XABz! zrV`O(c`48ccl6K+S188NMUPvGLh&j=^jJj-+2;>(^niMWKck1}l`UBGD5hnIoA_~T z$PoMSL!8PuU5p>_BtwiuZ)jdXgg+UgUE}xJf$-zEf;ue8$yRF2zFi5==?67l8(ZOJ zjX`C?dk{YkIwRvo?RLA}Y`Vz)cadLFDuBcXcH7odPC4ZiB2(L4a1EOR*+7kRGa`~x z4&iTo2S02{`Ynn?SOIX+_~N}?g~z6#s3Hq)$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/red_package_result_bg.webp b/app/src/main/res/drawable-xxhdpi/red_package_result_bg.webp index 7eb5a61b47e75da9f156fed2a5af64ad41ac98a5..878bb2fc30b34d8886dde90870c9a866f34b701b 100644 GIT binary patch literal 115310 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%0A(%& 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 literal 118214 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%0A2c9O;PY$%K-HH^#!8#j`%x9 zIwY?K3E~Y{PTE9!BA*_z1mXc3nm&S$-7ogXiK_wzKn?RN8mlCOPlo?=feWj2Og_R| zX;cj>iAI}!;WJ?S6dNR%8ax7|Pc;|mZXZtMQ?u1Oq~vzAj5QNtbK=BdPq;Odj-SLA z>h@=YD@v`Q_|*+a<%agHCAtbv_K1ly(oyPqW+-U+^M>S&*jXr>;~L%bxNT>xZ35cheC182FAS?_xq?=b6Xt% z0knmIM5rj}oNu9s?y|wbBz;8(arob3(n^9vQ>1Cs2BKs=BW-QEe3N%V1d(|vYAm&j zjXgQ>_<-<*nX|*tV+X8%-H`U_lEH{){D1OH?bYHM64XZB%HNGi-T{LS+E6HLECkveJ7U~rhjY# z7USN-SOm+T!&PQ{ER++?cH1tO_*fDS6&w-%9HBQ>r3OUSh~}(5=j8sxv&=g6 z2_)d~(2vx!<<`QGMh~Ne^=Q`CTC+AMswWa7D3{L??Q0VerXkldjwu zX${m(di{RaZlY8us^Q#TogWqAx%Lh@q68#Dlyf|# zX=g$M;x%0#>Uiq@W4b5W1c(a}XNp=^PldHN5>sjns5cF7Kd%|Wzn7vr^2R81)+^Lo;RV zWcjXFi`2tVKA&cZc-j(x9{-$n!VTmd|k;5Z*>%&p#t2dW9jT zidQg~)Ly(vxSXAkWonpr9wN5xO6dg~dMN82Js&OV5qmHJ)9L0d(fb6LO7+mwg{>WB zvaEK`1h^Sp?vnP%*lWhBwLy`_xu%^1yiByu@hPN7N}wFu?LGO@u7mx5v2lX6nR{3m z=g7oF!U-S4QKxiR9ntH0*=Pz`f%?0e1+s+4aB1iS*|0g3DiI+Z00bzeS)Cdr2&b-y z4A3Av$ge7CrtfJD0&#)Db|H7`I32^&>cR#<59AuP9?B&wzTqnJO#tdBv|^4WoeSZ7 zeMBSGBFg+(vXB4(CC@1uWg8Co?s_0V4zj92Uh^8s=DT|}aVcOR?sC*)mSP0v-%5DJ z5lWBiA7MML<8^d)k+HH%uQdmOHp*@IjUU!3cALm5c`3 zMV{x>&t^@wN%`yDA5T6p%g6|YHW_KX->M){)h`Yc=@-b(CPM2TFy!GU=k;_SGUsxG zf2@D2LYoU+puQZH1?uExEypbsF8O{uyjVrHz?#ymc5911&7mT+SBXLKd( zCs~cKc8Y#>4g`NV!M$V*1G1y)7)0IOiy;PuIq5!^7k?P98mt^wAQT{+gF^)MXRu;B zF}Yp0?Wh(Pn&aA^=-l&~5emDW*Y&4r+8^9l#N5ap_nSS6>%CN#9?4{^$NOkxa1eOy zHGLWfg%?q&Lc(6MPJMqtWmHlRiV=OsPT&9mEam)#<))932?7tPDzg9E&ss~0)*9G; zaNUxi9&O_xoo_9sa(YS@RRNR`CM%EUNX~ZmD1|4FRP>=`C*YDR$mjy?P7o`-f%VkK z7hRP@)IqV-T(GS+$TdhH8l(Ao%1Z?0iQIdx=}RgCMl|Z^5-!N#7SNzOvh0uO?@wcM zH`7yOo*#>%dz8}ldzp|yp&R6mvPgYrpP9wZXUVAAyAF3XE@uJH7KuSPg9qdR6a?Ns zd5OXCl$r|&E#ck30jC6x6D2tx*&dN2T%m+=g7N{iP)@wHsZi}*S)9~V@;$uLDMg~H zulU3EC;0f#qpGGy_Hfqk-0R>(ywdGN;C9te} zFfXQUC2mVf9>2gs#%a?q03K(p6XSNA_Uge!4#fPaP?R_yP9VDb9#@id7;*H2Yk2ix zaJ~QFl%9C-tK>?Y2Om)MrsH}l&!-cZKxEw}Fd@0w>Cn|Lv)BLt1kG|OxStXL^T4p6 z(MpsiDqFz94o6(w-rSOPB&qfGSdSpZrW4COiKmM@FaEKd3`sn&2v%0`iC>5K=!2@3 zowTV`&``(2sH|ZKu*(TEf6+%OJ}^yFJv=x)BM@-o@hYdNE$YmaiQgd6V+@-Mv=}%X z(*9$oL@TjT#VAoS)3Gw%Fh=77I+_EaEA9shx!15mwla~H!v~bKzn$4e_?lAuBF0>( zsQo0*rpFXwSh4qo8wcYwq?|^!v~_@IuHt073ViATy$wgIIJBK6jhOj)f`A&~A+B|# zYy@)6kV8F0Xooe1v$`i&MbCU_wLcN%tLvnMDFlCG!EE&*Gq`}ak`QJtU|C>kBU{N# zV3AtUm~snKswt}?8+*KX!TTge@WmbNXP0(+pbL1hSkDj{lq*e zMt?Eb!d4jT@%?40hmJw}p`6Z^m|CNP=!${Aj2Df)6s2_zy#>gP8#!QRi_AqBoro8#z$b@-25DKy2-o>`688I1rNrM#@LxNhe7br?-w zN2DRRjbhc)=h{!q_p9Nj;SJ-A4BJNycU&`?-H=u|tW zJXeY_v3f}kmb9@KV;IJ9_=N84UuZ1#D1SZlMRz*0H4AsCS3ObXyIv1RPEkQn;%Z{B zgofrQgl}mG5O>5%VV@|D(~w8`25QsyWJFaBG2$q+7MIzO*VA(OsPk}uk?~HTYpwPw z!w{;Qi-AUW000fHGm{sGFvYBHh3%gQ4r1Hderglp5}RUY1o$kBU@l#5x&Oj0ASE57 z@|JA8P8t+u#_5jcn+Hso9kP} z9v(-&-JJ8$z%jNpvG_N=xoa;wC}!$OZjM}<=RF_kac=yT50tZ(F?mUV83tU z;+_0`fcQU^K>g;W=3{6{Nvgp{j)J4hAS^!v>4nNtb<^hU8zU z=1}Swy#jJg>S5ZvV-3_d!6`0eh*`sv+bF*GP5Sy({`SF7TJV^9BHn@kHGG;PB(hSW z7r+1mqLOZrWO{%k;DdHx#se2mtWjJ{V`jI*;(hXexe z5m8dh*kW+Y4S;~CCICn+Gz#QkUl7l_M~Lvn2?la9ZECl`FUm`_4pybGNj5(CiH7aV z({y}3RmV?s0s7^Pny1PO}U{`Z=xCcZx%GL3%8bS^gimU_uJ{ApJ^ zWa~<}eCw4%8Sy*!1m7Ex#ppc<8WNp)HlDGP*7FS19-&m==;yvmEYd$lWc44d_&*n6 zyUaRI8^l&dl}y!LGh=>%nDFgQ88lS{y2QUMsAyd)6J<84P$}Oxm0bs{3N8rSp$TD@ zGbb?o`HB(>P5?G&QfBJdk78$pBtc&j`P1x0!?AXT2x21TKC1xy)DMejem6X$z}0=( z|EHovnz)ZZfY8^}ylWpX$H1F?b4S}^)8a=GnBie~#?~FP>HyH_ay8G|cHLy`h z(g2GS=YL|%7wLC4utC582)L9FqVXhimEwYk4c)d-8z`1ZUgMGO0)B6_8^nsUui+Yo+#oY^oZLnHyZ<7z$J z6@R&M<6!6@={-z$Cr^e0SvDtvtkX(F%tu}vu>S`#9VWs! z={*x{O}TFdEDfS@OmxCc-%^=DMG16fiJCr%tY6~7W#ulNa^GoHntC}d-~<^$WfqyC z_=dx^@(tpF0gL%&B>Ab;$cQ*!=sBIJ4Dgw$x}y_`645mg5%(%5E7FGE`T}R@&BZ7x zh0HOk7bNGJMz;#;&|gc>)v&%s8e2a3+0iU8RAZ~XN3bqSM>Po11S*A%vQJ>4stMKd z|9K2fW`2y<$7>r1TGKznRSG+SkdIIXINc$v1^I7~so2FYGXT$Ruh-1IZhtL>cUm95 zbo3tL$s3-?5-%mm7xzfA^6lw)Ds$;H3LWJj`ML;~>DoG{AXiOT`Qj?)jo+N_mR)?> zq0<+nV~~LvAfPIbnOJX$geTgx>Rpj&wK@O*7G$buCCmsPHK_KMaKAM#!DA+TG=9~m zBdJv~JCgLpSMl+>zssMhkrA?3jN4}j9v4#}2sp?3R|F%|F=%QPZ^f+kCVl93`B9kC zR{LC(D0aQ*r>$KAr{aYH5tO`UBXY9&2^s6)D#q2(ycD9;0Nym|t+Jvyny_%Hc+bem z*_0{>6i-k8P6p;F9*0wF@UIIS>&PDYna|00fv(-_qX>4w!7TLkXNr#d* z4?d$fVC|Q_{&1Dd=$Bn$kwGP)x|A(X+MORg>TL7@S%K-I)Ej)VW0s*yt~a&^MW0mb zR$Z=@c(8c`&Wxvy+}J6r^F70Z6_j@pKphz|ublrNnU26t)?2TgO3-rC4i6!!(4$e9 z)(!?gOWNCe@KwR<72EOZsaKTwyuH?wEc`g{KOmoF`#uS$HRoC4%~&L@22pV5K<}RbdmNBo6b#gs28q{x7B9w1m}xZoz~NjKE3#T)=Mbr%K2T6L&+ZQ zHC-_iMJN@7Z6&BlMfgwx!+z<<3tp(KX(1MkQv9!z!v_zC~M$GcToR7usfN*oY)i z2U&u^^^fBj_Ku@Lm(3gW;vJy+#@ulglzt~jzXA;nwX`8Lm}AqU48gdm$GLelY5aWnu}hH`86x&lPfL%zjlCp4M9&9}L;Q7uQ2CD3#M zC6!;rS1AFhJaRx9mb>sGC)x+wY(ghtAe=1Xh_45>!BE|2UqV>g_V$h%L; z23RH$3M`@L@#(c<#5R7!Q*f{CbKu+KUZRwVd%YLa?77io=kH*bvQcwNwq|p!4r3y# zjZ>Nc04c~ENW%Zhqgp{$8t4k6`qKcYb3xDdnWd{gGK~q z6u3KKmj(uWaF$X=;zN)Twh^wE_k$lAgd_M5?;88j|7#^2 zJ3z6%pwEA(80a2^Ji@7(fKFhLv5yf^`NSE7>K|7}2E>dvXe0-e$B~6cFZ4L4{o!nM z7QxqeoC;G=A>Dr#J$cK|&W^E%05Dk1W75meazoUc_YI=2JEv=Q|v4uB}$dPD_l-PFN>eC?&HVhl^gG@hm5QD zXrb3^!t5aoK^7o5*(9NU1>mk(-&f+Yb8h@j2}1O(+>sIjg}u-zh4=3&+|Jy_o(ng; zCxw3n(7!w|FxpS5Ti|*72Z%MK_dSo^8AGlj$GrhFSnOm#XcX!PG8yr%&P~~{F%fO- z5`f%uMv(B+)D@xY<$PaFSFx)8snO|kT4b{bB`|BNgCAmT0;JNx1(q_bJ-8Ta?;j!^ zbifr`mm=c?F+{Yj0@Ld*09|grwhc7~^Bqj@2)aER)#3DDwNkUMXo%YEf$fQJKJXS# zasAk784vSz?MQ$_mtJ|^w{dhu;~-nz{5K<>mWalla5r48V_xXVdW77Bmqtq zSIP?&2b4*u>ZL(O#D6I#G2bsz%k@T~Dta(y(X~?=Gto2_M5YQ??xcKG4^T!1-5tWF z2t0MY8u#5DHD3<%29>b)!yfs|74EGk<+v<3#h=JBLcVnEtdRp%=M$sD2aQ|6HvD-A zSa{urA)ATl6vU#y8$Xf^b8ScL8>>w6auc70_y3%AumAuHy^pFIl+}oo1wnFE4d30U z@hNNuL#HTt&2p5^yEA0qETt>Lp4~JU%uGg>8-Wh_GP+xF&D&Wtl{mtBH3X|@5_!_k zR|=`*9I)0rXl}S18#@FH0O)>EY9y99%emm&JAZ7AU;`}O4l-%g%s%92MSvasBrimj zPlI41r(eE?ZblQt^}@x7(KY8A)I+jKv48pu_utQ3J{DPKG7JL}TQ9Xs_)+cA5wLsw z)U|!+wOu7X?wMk0mor*;=lTz6FL9&(oxX^UkAX70OdA0f*s2SrUuQT}+sE6LHi%f}&FmFRVk7>vspA{j7Lezf_xKCnR4x z?q~$=b{xxKU=8N<{R;#kG9 zp1mDDgjYt^eV`noVY9?-*kgNZ**XX&=CFyy;4?wx))ElGR=jOx2t!Dsqcmtdepfk< z@lJjioM-3X7-yC9_U57XI^8nL&lPV$?sZ@w@QLqYTKNU?sul>F?FTGRA({MLmv2bU zdpYO;0EHX&ZHxEx?rVE-p2=t9ML%wQxgtG2Q%&;-9}6P(yB&*axc@~xC4$lm>RopY z11<7r_-D2Ai3VC#X5MJS%VOjV}R2c;D zQIJSC5MxT}tIEFM*dW)7i9x+FX>_&%g?0i(uxqpI>(DrfZ@+HY zcP?0tcFl1;!%kK#o8eS_UDCv3HZNij$rWY4*|##EH95C8I=Pa2CI;Fk(Ro~B1^{oE zXVrfQ-`njpJY`aO-s1a#+3UYd!D;`-KmY@`kJiBxIj+*)2WEh4^}SWD*3-$ z31O*^_DsH69=FIvqD(lFIg7Rx`&_hXwE)gPy3w0)FkqmJh;j1#-O!9Z@kF{t*k&WF zCBa>LONi;vBCFQ16(fBES*UNJ+q}xwNB8*Q1e3>A&|1I#Se}}jkG8gSW7dP|NPxO& zIwUjzKdx{;6jm%9=G^wqY9ZjL?9HKzhAvPe=}>tBJOFfcAdb~RKwl$}$9^&E?kXz@ z;?Thy!7w;xU^?hp3B-5Asr*}x@ML7sJn*@4N%!H4RmuLS^TTumO1j)pq<;LN2)@{< zw*#Oz3~$%{np@F+I}kyCjzR>}jd z*Y_qohhr14v>hrCy}6aZX(t75-w9fCH_OUS@z07)I(;0C(&%Oce*HyP)J{Ah1GQ@C zZL5o=< z1bK&H7%LPnLp`H`cSJSAZ9j8N!xNX%cpOyX>^e@!{&1OO^U0?lamv~p=vXB7P-H5u z$XETtr3(lq|D02eM}ACBK2#n!kf2~fOL6JFJugctD2;`yDO3c9kNbNpvx(Yi&E^QB zZ{T05bR2#WGUm?1%xFX)xH)V*wGpywn`Nw3;to7LHNq0}6~au-L#G@o8+2`*)$oBb zO)x9$m~*S1GC7WVn-AY(GCt4g8}ez9svRdxOD%>|pw)1pvDcx7YCWa1OX=7UAZHoh zu;+?kIW@<<)p6P36MSXLq;tr|7VU*HcgB$hdx~&6fC5F|-Fc2pS_qno9CZB9R6tQJ z1rDxm#qiN5c3LI((`=PCM+y(0#D%JB88aFF(u+%f;~zN~As4^^1H$!=Rw2(g$b=1% z#u*G*w9%vG)YPRwGPf{b_*A;?Ipt5zTwH2Db#edB3ekxA@)&IXM^>z1OzAVG(5_Sm z1_7AM-m~jCguhE4QB+B;P77$;@#RN!$>W=Ao7|C6lcSy!VO22^q z?_ggomrFn#a`FWT$a82Ubp{?Jx90U(5HJJ)-xg&No4DP7B{fj$OA=nyAy!)j2T=x^9IbsNuN0i|~`YFyFyyfsiJO$`5+T zsQTGFIW8xS1qMT}7}kU}FNAGxqRKM%7cwUX5kj5zgS~gr<;MA$AEKD6zITs72Bh)~ zbKN=PKOZl&2H;Uq5hh>aXjv_)ocPb{;G9Y1p4QdPgRY5+lMyxrEwuk?yPwUAUYOnR zEF@Nn_e(8=d9L#QwZ%hf(A~3bi!%&K(!K{f8YH&>_t_m2Y)-tw=K6pD4g~g%p29+K ziy2m^Ar%mUH3+az8pt&hipBd8T|^xG97vN=`jk)XOcqMe4}L}<8HK0cai!KYDSs__ z#u9zC(=qymXf&K2m7w}&vJqHr1O>8o)3!K0m_>$5vvvOA5IWeYXVaP17GL%4xaBD? z9ty4L`0FtjjQf@9v~N0AvB;*c5%gPeMAn((sL7y8$jh9hb~i7|N%$X6{4g>F93fAB zTbU+Mbt-SEV(R0I(L$QRsGoK0BM4;=IRoqQbvDfw)&(M~c+%ZBX!mc19vNz3{oxQ& ztPe0G?xEVYObhTp=STy%7uXzmO4ge=e$zwTz1|?V|2S^ktQ)^|T>Zjva@TzFjuNZ# zEWjdu$&Q;J9!cb)-ytT85_rydUXqWK`s4V%djC+@fb($Pmz`k1E84V$6tZhKa2yq| z!L40W!^EAbH#m4Dlq9rl&;@d}V>-$-GBt@Sq=}7GhNoL!OyQU&ArQT8IDu=B_8|4qJL!A`T2Ug`iWAK~s?N z*2vJ+ZYSr)4v$EVjgDYKA%Kh-Zbt`@-U40ILT<#QsbIrdMPjN#_duA*;`}^(RL}RC z6|3d6ujq~M{jW68oqr1PrSfvNKc#u3>=_M=AiL+Cc|9zURO==PcmZEAQlgCPhLHaJ zl=Q=SF(5sy_D?({j|cu4o*X8SFf)nUhaJDCiFO|6Vu8>b$-CTr*BK}{@_q|(*f34C0%7q4XfUBhuzuWhW?_3Fh+juR&so<+i zJJD4X#$Y}A)%c7n9=K|4xOV;T*@3c$dWTZAP%*tBKCV#Zo^@a%*3Zf(A~tEhv!KL? z9L-~Cb3O#|x-XhNI(THUT%_o8QuA6gknvw@fGPss>9egUGgSe%N(z7g2SUuOO#H%7 z@F4h$-;d$~_OJ;7fkcCg1P!%xqtU~l^|1*+Uk5Mrp+^lk+LpBp4sP1WJ#qyof|P!t zZ&+E=W-Wn`FWD&0k;PJ7S`KTOUUC2{by8NcCy}30VPg|QRzt}a=K&%apE*QLOE~{u zZ}0fn=K8YB$Dzcqgb;jJZbPCTfrMh}&Zg%}$3N@b?4N`P7!pT7|nAsqVrfh;4Fgkc`L}6SY+xX%x-LVRsQH z4nH%6nuWCDHEMSxtJoG)ID|ayYef4Y*)4aCO-fs>4nvaj`kn9ukJy3krva?DipK!c zG)NF>Ko}%Z9@f)BLbO&|aPeyf=dGaLImQyZAB zxXxD_XdNq6${weW42ZV<89D=sEQnz+xR-grM9`}wL%DZbive<=S8xJRvK%+YWJ;co zOOT9!*?1g;fydEPLy8QN=-unlpHbT)0J~xa&k}gOj7IHjLRiJMaG3_e-b>Kt(%uq9 zCa@cUm9;IfLGI;qrKY0nW9tktCK9UR#sVCec~tXahR+51<6bjDdW=Yg>;4JBHlQ46m0}ORW4#S}|S}J`}q9RBC!6u^AO;`!yj$@bRgCJYMf})Q^#mftbK}|A~ooA{5 z0uo!vD0Fc~BpxB7w_>a9w}v{-2x|M!dCTB{O1Z9hTB(BM?#our`EdLS&fMqc@h4dW z&x7{m2MbG$W#X11b#fp}hNveWxex*r280cSpvYRxEfSn6_j z-UVw0!68|XWk*zkkJaw%%g^1%Y~E2;4?dC;63mWIcwETwcK;E6UmOu$6f@i?7T z&J1+bry0@;T2L2^PlZPdWTEsvfPxLvu0G5vpUuANu*4ABf7rZh%Qr5B_57h~o-)+M zq_BCh*Rfo?>oul}A4+VKm_^=$q6?ZEK`;BPXO989Lni57<)Y$wPb_AmU01ir?V4OQjNj;=5mS{L{bnW6HcWH5$f6F4#+Gi%h%@gygdnGQRVEu}g$%UqNk97~pP=;$S((1?R zZbf)$CtyT;MDpd~dcOxS=cD2L@LBG47WyFlphW<9qlGIcB^@TF;qS@y zGPpb=h-9VUQg_|nx8jg!UZFwuu^#s=P}u0{k@}$hI6tG#;f8&kS(D3{003x@)MGqI zR<)yNN5}{5$t$|E(d2wG^BJ+^q*h&1<7JH4O`!LWX@w@n$;ERl&Z8{M0i9Y0pb9Vi zW=vcH>mW9bNZH;PiNhnlS*@dR^>P_yDpBz$;v$Q@kd|o0IVp+0wo%Z&OQ_La*CPQD zzFrpXg-jF~WnE3S)?e`$cB_i=+T<`UWi)SR63c1l!L?C~|i)@*};%qal+GHn;9pXplSXp09I3_}Q!@LM}rw zpYj2@CnISWuF^ouhd(%vlrq^>5_D925aW|{z&UP-#c0x)lmA95i1_k4LOcT+!Mm4l z8c>iq1r^k6JEPD50YBd<2jz&>wUlvY=cfcsp(kYVUkwdjvXErxUb&rJnm(`6?N3$2 zyZq_S%*R12r|YSJ+atkQ7rPW(c79gpQkH;yAR81_)#-{fT%EU7{sNksw}7fKKWw8@=8^c zE3L>j04iyq2*C|LnU(_G>)s#XOSWjQ7lPm>w4c`JY@;-O=v6bqWU zoHOtymPI&B@g>go(TBNp5%}JVFpiUH#AYmo*Q zjhr9a#w@2dOOsn?)4qO2l%yd}iw@sq+82Yb8}UFnuosi!-IuS~yRettx1-pojg<^s zv0#uk#<`k^#!dMZAL@SJ#qp?^YoNH!5zwcs4`TSP%v_HL0dN*cM$)$dqKPj7!xy zH<_+GFHL)&20sh=fV9P>^$kcWpcTO8hyy>dT+VhEow86BwW_ZxHi4F*O>aCp;;N6g zOXYfePW@;JjWR1?YXe&0;ll9GOjYT*Kw?vYAW}E)U~%-7MD$`8VcGI&Q$BiidK}!+ z`=GMmRE#SI1O)j%G*CWK1qAGGnkrFy7Ws}N>t22lGfzwX*0GsJ%WRA@*2o>8IySd%E0)a)RHw<8le8X`O}^{X{yDI6TC zxSX{CcFen2mqITUI91ppip85brfNaL*IO8Xw^g7w^rm(nyzq*|1(TW)_c>Z z`>^Bh-dK@<2;30QkKH37g}}0D-^)fE_U*#`09L@-*!^Kd$C~xC7M(orz~KMS--QgKdEwf$QLt{NSDiDO8edS& zh;)6zDRvF-0=9d}JV}TZ@#>1ec^U%Rab3C1mou19ju1A=uL7OJ>z&0se=uHw!zM01 z{6Z$V)OJT$gX=f3s4Q?}*2j)-OI+fhA*ZWJq~9c|`m_J9_C=tHHEC1iGSW7;9w5;1 z`t2T3>+R&Gl%Dt2Gb_c}&HtJyF_G+*vV?jE2jS1>{5ik?0-4MRCz&L=!f>a4XEoD2 zVt$3S3YS`CH0d#j3zd+4$=_YGP_@3Ha5(C{(~@#vR!A}quqAL(!lZW8B&$hk-Fy{C zVfB?rUpqj$-EV+`e={x&>%auguRR2<3^oCe%iW@1Ag1!lB2JftnKy|2@fhhV}Mdbtv0Q58)MZGbr4~JKv01$ee{7$vn=?#6cUvm^lb!4n;X-#tvzCS^O+Ct zau|ZbVi1+_!@6qjDNIt;>a@u7+l{_00IQVF1Qwc@9H_Djkml?5tq%4 zhSE0jXAt?M?i>kxq{F)s32&kopyAyEoDW)ZRh^}B*Ojy&SS7;Ef(GuW>Fu+Nl@}nU zS6u6tNM3<zw&(yR zZ}0wgI5A2f%}sfEU3&3pVmOinqmZ$ujO(&e3cwXoD~zco_*h-&&U7DFe$!$n@ScM~ zJxA!Qv+R^V&QmZj-y8QJ(8|wH3QlaAln6vR(C}Bs^AC2Ma4)w-$g%l4Kw!HkD%DTE zxY@j^qBGf3y2MHq&XF<(St|{dfgy#gfI+bTQ6CF`CjDdMiMI$fmnZ#vJ12~tv^_>(YgQt7~X^GChf3gS*t2zfuQi6Wn>8U!b_7x z%ad^^!h&tq5m)2_(gA!FMeNNtl;?_z%uSov0xdb+ekC`mwjapzHpS;pxfV}MT65y_ z7O`#pF*QCF(Z7sPjy;&S(9@Musd~TU$G)|QM3L5LMM3{Kxg#2k2$2gZ`4gHzi71L+!}_` zBWy#a{PTmUBx&&X4a-l?AZL3F7ZGcrI$3E{J?wB}`!7JBxJoY=!L=#P00174tM8h{ z8B8T}<4D}X3_E&N^cu{`cA9s(~=c z;Y~3(W2MC~57DKakOV}`KB@_=sQ>S?Gv_$8T9kC&jwAAC&*F!6x^vE@0OiAW^jUmNB79x_yN zg;;evUFQi)SqkY;<8&~8MC43Nn9`;ND$Sj(CGfm95`5m*kc0~u$dWBrucQboDrMdgbjdS5ci zV;_V!IZ~*_aEooh+RqCxt~Cccn)`Lr6~#MW9C;wq8^h$Gt`0?3#w}bkhjZDzV z$5x^M05HfT6L=M%OEeBf7vfVrx&sLM3&~IRzl|q0cr47wgDwiVDg3D`;Mo|SUdsgWNwJO-LfFV$PBv^Fo|l+fK+2dW|*Lg)@J(c z)g-=O)|I@S?*8_W@sws%b?uyDJL;zle=LXLmsF>a%KZ1p7W5+TAQsLaB2B0Wccw}M9tme!YEO-Tw*s0L8 z)0=_X8r6ZKsHFe7yqjYB;HN4#;sl8FGeTI;u&$5Yd-5OjF8ks42&z0Y(2p+q)__4xy0)8vzTHo_32?WMH~&g>!>A>+gu2|Gyu zyM})vw)-AfBWxBN6eI(*0r-1S#7EH>1^odYnT8+o%|?GJK|6YVZo4F0Gwzjo+l|?~ zMBJc5TLFaJ?R-$h&ZYq1yFc{kFI@=v)`d{3@8QxJHY;&2Yn!!`EW_l?50U5u~E zVtvUzlhPW|x5wuSJr|v6u0{M%FGmoNko}VNaUHEz;rn+|511rnxBvhVM3KawS{W#1 z-O2fcR@G@T_1hXWmLrgoGNN3BNi85=L*_dao6pY*uHYnBfW~G7j9q$x3T?k0_Ryi2 zQ_Gj0zegIa9~joN;4HrZyGp3~!#LST+oaw?YX0;l&^RKV%)OObf4QIcRILQ}mdist zj^DAuFjGM5 z8U__m&Vei(nV?+DMl%-yW(SKQ67vv%CYhzsLAkj$00o9|ISfL%(o{g!(C1j)5{W9A zwfg2uw(7g`8vHY;lMut2ZoWBf;fO}Wz3AR@OQVY~u>TcnhX+Hbn zdLVngX0PMHnyLjxV+i9KH%Lkxc477NBu8}p`$5s`m=F!DImNG;2kX+FmHSW zH4sBUN7C&tHdbA&-Js_2avrUB1Z4;S8d|d^;_T-|w2Oc%g({he=;Hlx1_T1gTDnIz zvWFrO$frtrWQ9UZ=Hs+mm~Zh_2N-VHta>1f;D0=r0gwR`P!jHkXJf8bqU#xg=uVXJ zBFDjOGc?PMm_x_6@NBzS5t)Hfx5Z!=e1k%ef1UT7+3?h02NaF}Z8W+?G)`g%!~uY2 z2axp}RkzwdZqI?w*^F$^zSY*|KjLe*R5VWJ=HLyBqChu0)1x%> zH9v4!WWF)<*jf!0yIj9d2_~aCGQ+3uza##f=W>D{G}B8W=p_e;p-hGb zJ~gNT_QCWn8PH?T&;s2U?9@gAElOo)a6${6^}LH zvOlJKKZQ009^JcS__lIzraOx?bMe><%gr#LnKIJ%e|{+ncc{ z0FAp-#8I;I5@nq4sY{)stam+oQO{nUKo<&8(`CFT4a+d&enDZ#2*EA+J6J`VH|XhL zlH_~j^VO2$z)6d>(r7~x(sfB}h83r%?EGqXxdpXq&L6f4_Hq4TzQuowDDheWrcPv3 zx!N?l(^kPiKqx~9Y`Uz8Z;>NkHh>x{tbA9ixH^Y>~E7D#ly+XJXe|W|`j@0c`XYST<^VeJv1|IQHDfay0xLpm6-z=73A0XM#nyVN41t#J2-YpFnB^ zQnJg*gaJZ!VQ%q;&E`ia&$p=&nBq93uPXWxWhx*=yU=#qyOb#t%^-}hEWibdREPpH zJb<|yH^PsZt*1$C*hQ)tFRivlZk_ zL$@xd_Bi58h?~_alDyO$qxIRS=8U$NwP>#EizO^8_o{OiM-KAf=2Sp`ZQOIg5c~iH zK{;D6>W6kA3o)r(jWsHY1Ri+3oiy3_2&0@$DhOUzpP?%?%H>Y2S^8k10yjNx5yhZo zM2GDM*q(>n0kKu1M4bI8r6hxK!g^RY&5e-xaZ8HJmz}=3#Q8&n_{U^Ng+nRDBJhf# zZG2@n3*JzMU8<3@C4g5e@N8|4QrLnI`R6}*iNQZN8S4LP<3&u)F8ypATSI$=*Zz>@NKHtZW zT{Jg-wTkZa+ZTvtC9U`I%U>$^bYOxI$BMmte81>IJZna4rNH=26k1)N4{A$G6*^Pj z4cxL`pWZ{tt!NbBMXIvtcKqq%opS$iWy*sB zv$k4ePwZ@AQ8#WEI;Z(#MV}sOk>*q)bLgRu3~D(OkruKy0OL(Xb5Mhm$*~nmgN> zsi5Va%464@`<)VWfs0O>oz^7Kf{@5&x#W}EKk5@${n01$3>w*UdZsKIJUUv@UhLmcIQ_)_9q zU?woRW9X}>AqJ-0!Jl_i#UA-I*&Q#U#W%LsdKD}wJY zyHyE=E@oKI3%vDo-h2vh?l_66nLmkQEmW)_PBIB~-UGfjxqvvoN#F)_@J}39?y3x4 z=woHoJdP`i^S^72H8j~X z!xeT1>KT`uN{3NlzP53Z+|_^x?%lwHc|e_)JfSP*yh1wcZfHp5HA1K7+LoU+lEKF^ zbkN39(h)y%Pq}CW?#~78xY)@JdcKeYVpwSTK8J?p=n^)zqkWT+p{f(mYI6>pADLw@ zI9*=yIX{wmFN-aacG?4X>C5KoJ`WXGIDo95*oWJy4cQj`K_+{2-`&4&1Ac%_R<=EA zBsQTnVRe*P+7`)9Bmv03c2Cq3Tx7EnH}{%9MFyBV{C~Y+{4(&Q8u0nsS$W+(wL?mCO1J8H6@QP9h{<2!w?-?0<)_1jYN z(+&bB6kBSPYZve?AF2%ewAyJ`oet$g2Orr-Rqsg|0+8le87!As79mK;6hb6^zA8?C z+Rpo@vW@lPj3{p>R!}w-?Mh-FiDypIS#Wd^YrZKx*ly;cQigfZpn zlM%X5W1}P$L2;NWl079B-mb*PHOE_!+0=^lTp%-xfxg5OdA;K|P3$B2wyZ+L)$)3pYL5jz^_OS?Lz0*ygn#d#CMBwA<|ploimbQfuo9|W8pSgnOvj$B~6#?ikX3B`YYEMIDje>QUj0&{<9SK_1jF~1{*fCf zAfRss)M9P|B||CHBELkJNNFol!q>rgUKm5Ffw-wJ_ zY%uqbB5_bokdQ&>tM6ERAm8BD{>riydj#LJ?W{ipH6QYy9g6V`f5}7>v{$`*Om_nU zYiWjRBURrDK%LlIr!?uM`$)OQ0-rZ*FV2rk6Np)4NC?_L(qp2=Nd3N6G3P`%Gdz$t zh@Fxl=sf%Lo42g_q9!2d!#Cf^2)nEIckJw0h@9fCs?H}D9nJ3ZL3Qmic(ZBGV&SE* z^iPuq$GVQz#j!eXksGA$=S<~1+_A&Dbm1t&bs#wgiTU}KBz zj3v1gO~B?q`%WWn#j7$T;d!WD9os?tVeAnRd_Wo=nZutV8`;RD%iI6^|2cpF1)<0h zzMbe?P-ayXIs9s-vwderGzsK6_-zc0SE{&_$_ljBC{#+6P`&FrqiBeStH3$Tg~b7 zmhL56n!JTkRqj1@f><}AP~gS{nR!c94X~c1bsd*2!XqebPE3B~OorjqKzR>1-Z(%y zO8BWRtOb|`i?Vve@UO|sr`aQCY9ltmB6c)^JzgF{heoL)QPF_O(KzVdS7EA;k%WScBHl47G>NV@?xAy!w^Cp1rf8q6B{Em*$MQkeND_j%UKNGt1}P&YNA6MR#Ix z76>R{wVR6BKHW=8Q?C1h5hC#J8N&o4ATJ%icvu@2-5DyDX3y-dx?h5Pk8_(%{vOOULfOfKJY);#Ombh=uLu2HqT zzb+XTwnjqen^|BXz$!WpFVXi5n$cI3U;D34H3fi7IC?A%6X%}WSStFU4J`u_$Ny=J zhG+LU{N$-H9iysQtK%+kbBB7^|FoQ>rt&|Y4eK8i@rr?Up7tqzeXU}xc>J4r_)u_t zudGN9)$(ai^fm2M=5K%1{SP-lFD~WnVqhLZ?;h(uz8CEf)91j975f~Y!j{x2z$CUM z9R;#Lq@GgGbxzlRF8<2AbZ^D#@3W=4ajb_hgCODiek3z!Vfr6=AGEq1lk}dV*%UIo zTr(T|yuX_*W^5Wo@jSNP_rq;p`(%uhEe-5J35Q}i$)UZ<&H)w7%fr^5W-9#AfUTl=z!0PFU7Y7sk1VP-Tx-i%I1uDp@X)no`rT;j4jw z-60Uwnyk0c^1-ftVW4044?KQ>;6T_LNX8&kbbnh6cs*S)NF1VQ&lBaZ4k`vDE{(^m zcb+E3 zxDS0J6r+*dSd$cwMEri^!V!!Oye+9ae{SC2R;Wrh&%`@dHf>?0B=jq6VO0 z+$pq5)dh24@`S9Lzg$nhfo!SLo(U3Y7?jhO=s#sHvB}d(pLXG!BC#+2@WssFPfD9F zNCSeTUjz0*+POl|47;$EhZgC77@_H0fPKD;MUc(gIr{ZK>&~Ael3`hqk>KG`3CNH0 zCG-Ip;6|_-(#RE3!vIyTh|QHEsE#u+7Q~jb%Y8VJur4H^&})yMI@+f0f!ML+)*~-( z|G`7Y#53z`uR^_2nrK&?w^L%+tLq(UArNc347Z*;E9j)*kgN|$Bte}i#%Xx94v)whjE0he7;V;@Toa^F00|7tK$4AeTLk;1xp)xN zfH0C59#@gR(!h>iV7Oa)vsB}+aQxBm<+^Da-_);`mcW2(S8$3C7ho1KK#gFFdfP*; zw4WL1^L;eqzxihrK@xb~63$>eV)6q*xU!+R(TxQgwfYnSH8G_i|0=GcT~d!A9$7%# z#{kV=`dFLPCx5kCDmhJbZwPp@`XJTH&o(*Z*31{)9vQrJS7JjO9H-*rHZyN-_rQ97 zR9U3d*D|Ck5t(zpJ!hmAktoDt5HqB|=r3epAsm=k)yXbUv0Epl=eYI^Y5uzSaBR^U zTXV@!D}-j)AOB8n4#_?XH>Wtm$9SC;c!Iq{h^wfga8DUjx&m#KV3fg7vAPzs;vvxE z-{es@l-O65YWPs8(lN7`3aB7gDn9JD{06NOq3JW~dIN&akDc>6e!(^gyBl1U&pu3? zt=|2SJMxCr&1wStMvudQu3A-~m>$K~3IVGQ8IFEfSOkwQ1Txvd%?5H*Wb0X6T%tD0 zP3@@X0kf7%y7G&Hm9t8RxE*dl07|Pvr)B3cR0TuW2Y`jkKYhRjU0`ZHs`ILF^zIPR#;?-y%(}{uz z954x?nLc7tQw%>lZeY3uF@}}fade0@fWsf~ zmve;IuAmco{8zRm!d*JiWy+hVPKJeH1R1!w+%H z;R^D}Ob25y4fuh3tJD7B8wQ&$&^GifU1_|!D-4vLwz7t^8w>2GfVNu@MQCl zkcZRocFlZ~mCjr-p;^putBK9u{s>2ip7YRco_YV5oBoc!@1vobC6sdSEGjs=+g`Eg zwShTgIp4->UC8E_l;zR0f%SbdS~_9_+&b0ySNJSB-1K{1Q!@_WyTRo~-%)I}3CXl{ z^xtPqk?~Xm9WX=71)vyjrW92@ty?I&!=b1S3)CwB@9kVPu*~bXofW_AjaDS#8qnzf zujvCq$3eza3L1)2P6&LIl7d6Pk@pU6_^%v>dM(#+?7pPIt?}b`XL<-oc*qm0`}Tkr zdL$RxOdu(e$@dN>(#K6Wh879pn0=dj6*wAF{h?a@9RsxGjJR=l8?o|HKHa6`opSYl zTyk(~2p}U;OnvKtR%tiacJY?UDZZAfs|=_cR8=ldOLi~AVuDb~owf#eTCN}Ihixv= z?WO64t8g~<9a9?FX?lF@QUl>lX|)n=Pn+z80J~snj-{Ng$t-;jMQMf$+&vDS2duMy z>)vFo`#iw>|99NsyUr0)s`Y``m`9~0+M77Ka{TuQlK~2j9|94rce%TrZu9!Re zeS~8}ySqE}Sq(n_MJbvg}H!-u z0X0DW6RjfXGrK0a1^Z8}zl;p{07N$2{tLfOL_@^U-ThcPWrNEs$`!fF`JsK}H5c3v zqyQx6KZKZy70R4Mv5dHhu8*^Vws@4Vndq&VKLJz-fw&gyt_Mv?*FDyIb#kYQ-edA< zP&2fE01oz_B`s&7>>q;=O&@BIGh^VhHkuSuC5W6!3s(vCQYb#DeP>50AZ{9cJ6jPx z&UtOAY6t4Su0yckDu+4DpSCMK3dLa?M5KpUsgkJbKwy$R5byiO*&MpjCINmkKf^mL zQxUs&z0&bPB*xO&i)g{gO~hx!yYX$@wnb>87n5#j2FqQH=&PWFUI4Hwg#RX5dX<(o z*?qb(=1idrA1tk+sTdl!6#Rbi?KiMvbnI3?iUJR@Couv=0YO!gfMQL)Y@MI0;C{+`22o~vXgw5(D?+{_Xrn7I!ZoNuJ0K^uAV?PdrCRvuMlj7b;a@Y66o_Z50ZmTGZxWg*ny z5sstQ1J5sbo5m16Ho5U!O*`pEzs<#qgN-*Xsk=RAH=ICUFUFlwgNCyPt!|<5%>;g? z2@BS{NSuogB^p!#(Oy%I1sy9}9y!zcmqGKcTN?E;}0dfLL0ds%BufsF_&U&C9? z^F*B#k!=dG*#pRZvyr6@++ssqqrKe?=Dk(qeo~BfvB&U7LI^S{S5unI^;jbOn^50A zGlf`5H}_OFf%Y4El9Qtd4aD4Q5*OeFtn^y(v;+Cc-lhHGxcsCKdUsK)G(^-^T4OYlEIu9XlTD@iY3&4VQ-qbmckfJUqI=sQ_qMWTf=M%+Ez%H5`DCGm#Hzof zT-N1rVbFl||8tCk;~uE+HI8Dc(m#@`+CTM@3-SEQSZuZU>_g8D!A0e7g~A+ISWlb<5hG(MOP^@c>&SHapQLty(Xxp8Nnl=!?ieK|I!#pYkWQ7u0ut zQjWX~SIyFSTZ-`o3?Zm7s$pCGu1_<&zP~6nzzv6A zOcD-u^R&U>lz=a&k+Mt+`Uce~bQx?7$}7d$HLNoPzNKzsKjTd~<%E-B-42m90S7V% zUHCDsz8CWq8=@K&1fBU&WYLs-oQGTy(($kw*(&0li-_*a!p>PZNQcF;g*u@fBW_DP zJ@RPI9w2$Z#Ye4oLsWz>NC83Eu-QYB@sYfs$Zbw;rhG6bDWeJ?o!Kie4=+z+M;|(I{~Xw%J0Jy1a&?RoYUJ z^o-Q7Nx)$}UEi}*8p#E(+-10*bI%_GQwX!ZFZ>@==ZM7|b|~%~SDVYEXCA3Z5vfv( zFYcUHWn>x#k=y*Q96_e7i1>&@95_1X8T4PN02X)G!ii@F^sw$*imo<~om5aV`an#< zAZm*TdFTcBXs(BGu++EpVaQ4@00=!^I!e8Pq31SS$^n)OE}EfNgy{dC3cAa(V)xI_ zoTLdPYdv#ex<8%_gz376#SUwn_8W0BK=5$xyWYVNmM9>O1KqMoD|{HREYBd#MW_9Leu1*xk?CJP+|N(vXY3Bj%-st$NDyu(XSIZY z?ul`Z4a@0#=aP#vHbNd@4>`7(Nt<)CNDZRInF(4I@YuEh`A90+%J;Nlu363~GZMWM0v>G45r7jL?5F*Sx3yxio-j8(M>6ktmFYM@}xoF_;O)FBod+vBSVUR6gq5Z$;X^2`MF9&a5!TUju7aO5d^mO!J7^ zjVjMqzXtZ(W_CVKt8b@~z-YqsIt1w4sOc?#g^YfdQ9&%xL$al53jf#71`e-HxZK_I z69v+(4im8fam$BVv3GbuT$-QLRzo+{RySg)Pht}e!(hC_+r2zapMm^Jp@#4!f5zw< zn58BLvnu;oizD8Ob3eR1zR~8+(ZXMt*~{ZwDd25%oDhzDe`%2p6)KO$0K@OmFZ|<4 z%gF3t$Z+b9*|JdL7hX%~TQl@ffP|S5^$hKNFuHA#%7lvHdclZI?~B7w8(Nx#C#$<< zSU*<>0rF4P1C>gwo`uQJPQ2B?2Ou8o#ITaRmSs)1L)sGlJR?pB>y-jf8x5z7p0`%e zzq%1UdS96^CK8E_d`3$INRy^ooRUDzTHxV9T%*gw-0% zsq;SM%vMBN;M>bLl75m#T>@|rNIXlkUEnCSME#LU(jfOcyz9S}ltlPQ8BJMCKgF(4 zD-mRtGx0#RlpyaA!Lea>5Pv12rK%W)gw_3YorMEPd%xl)X_Jo#$)H$|S7VlFxx|Q- zs{Y2)of6fiTm`b{zm=3m1O^7P1-O)tLu;;2g_p((njlE_;TNdLpl_qy8Z0RvoC#yK zA3N>%D8g_Eh`lFM7A5=!AY77S*r;RgvX(^bkJtlqES=)m~tVSA_+ zK%PJipiXw7{Ci=VI6O}FIgcnzmL4}LBac2F= z4?ynG)&zuyO}m)?w6z5B5yi5MN1P@Q{sb+xB>-E~OY*5hBZNS_b}H3>(!>nmPun8< zRi_~W{oH&VhwR*3AZ?|)rUuKJkGt~1hE#V0bfOg@xUBKGEY}g>nAZC1h4OA|x1tZ3 zJQB%pAm4%_2M5Rku>;GC{-R$C+4C_s3U0 zHu14pKGhe)smd)ROd-`;egXyD=1fY_4%j$z!Ny?9h5bb_shSD;GQ5EKbuCOZCPJ$> zv@Mt0141_4%~U{IRGFD-eSN!y`?}taH7hikBY!}~ z;_vY+JlvI+iaK1Sy~nZ^*8*!v%S<1D(x;!1@NDSBoR z`@6>MuDLP>QX>E@C512!%9c%@sdrnHej0}{;Ft-$%jgDE!2s$fin%nNP^mmcq6Qwp zUE!*HVyQUH_~yw5*elS=fRPC035*zVwo5vcR)J!*SA24Bm@fgbRe2r%*^1#_Yi$QYeI))d!lS9lMHPn zkSvy@l7yIbp}Q8D>tLJr7lylIa}c-8PUTT*0H0+)tvZQB5v1ez%m2q?E2?xaf29H# zgfmj`b{Jr)`yTIxGY_pR^Q3)?pD`=nx-tJ>bRyad=R~;N`~lg4^bw6~`;zR!U(%>O z@8_xNZN-3y5B)mK1E;{_w71z z#n*_02KPV!=L~&#H{8iGeW7btPvUTQ2hmkwbgejz%{&lA)@@0=N<-^~Lx#Pk00000 z000000000000000007F{$(vgvGqs3ha{yE?D3Y?ZXGAzPFgg5E0f3L|lU1<9=m2Qj zaq|0GD`tMh4;-#<^SAGL@g@0Gk2y%9o4)lTTPmoO!5A0!zd-LQIVyL&!pNoV>Jn_s z){R~jb?Loz!Xouc5G3N0lJ_n|f}6jir)(rZEB3$}9!H;;Nn@IQ;K49`+-6{@`jiOc z=?{M_S8fg}gV!|X><7Vo;OU!|0! zH1113vFvOe@|`prh#hw!au;B$wgu;OD27o&1gEKH$DEMOP|0FBmpmhpUehcQ*BRAH zm)#g4IDXTcu|`nbeSR<_@;kapQ3w8LG779Qz^G~R9bfSRc|qTd>VAr7+lUse%7|1S z)QGn75RKZ8H>aKqEpbcjW`rAM{6ybawAGFn7luD$4aFZFU44tarK)aMJ4M`~L&{4? zgXwl~z6^UOl0jm(Smr6OWKHVt=}@4uvvk2ScIa*Zt9;l<)>3o!7OMzQI0_<2U$th* zRZL$CGZpFer%A9l_1om*hvA?aw*lE`nW`TaY!3qK+$76f{;iB@)wooDzI-Fwq>M-a z2td)%Mig{h13*%?+;<<9iW)bfKk9NHYG|Jhk^qhtVbx z#*`N@3Bou(9GEMDG|a-M-~a&C`~-_#Xmq6HGzcD6U8=MwnJi^C@(z}_9_MY^koghA z9wIk)9FqX#E21PB7|Q~=BpNRU%8OeOp}vo9Kot18Kgv?IKe}6OiOz6@95D4%0uK?MbUjJm4RY2N`gApqX~X+aw$~&S&ul~mn%#tb zzj^4O3QitKh)n8R1g5ERNwUdHhG3v>et;Jfyv`@TI~)EWpgF;I zat~2r?baRCQ+=LvqfI1K?%j*ol^qcIETMJ47>2}g2zdCwOoosjvF03*2@`?)WsU9u zo62nV&iCcgeE^bH4~7I*;^vw^qy>N#M0qE14?xqg$Jl&@)wW_xK_IDq zzQ%E^^gmw#soapSXIXt7Er0+30000000000jI-Yrcv+TvrOMz$b~_kc}05O(i%buA~LC5Fy!^KQm=YOVCCf;+FnP%-h(hE`ao+< z464pr1%tfj77Ybp^V4Xo)rT`SUIP=!ZIXm_pO_weRyL~pV_L>96!NC{nup~Mi|spP zptuqUb9Bih$Vj*h__l@*YxGN2!BaIt2c%h&^gk2WlsDTp*)I$Gbg&_AC-^cM=((hvdU)z`0XXz z7rLu{LviQn-QBRpi~R^yI8RD8Za+SX#t?|Tw_|wL*+^l!^b+*Va7SaX?Ozb`G&cLk z=4gn07%xo6zWNeeXxJ#Eb4$WTbRV(tCt4&=Rg}A}#mY0&LzgpZ=7(+V4IO`h+(oz5IyHX?Umz6i$A+nRkeJOFx`|*w{b}(5 z8P7;;Hg!NIYqo4HU$2JRI`r9mr5g3(x{{3s`hrYlWdpMQhugXmKLWbprENY|3~$fd z2cc}yua86T4C->v(2=0X^+ZVZ`5h3hpX(Hv{_3w?Hc zGvp6%l1i(B@F;sGW37p_=+M<>&LSLSQZIz(eOaS(EwiSc1820}6Zsnmc`WHnO%bf6 zsB~Dk8D^#z@pm6Ut)tCs!lT7fb8jSEo>2EfdBZv7y5O}dt-`c;(t#^Gw1VjuW+NA> z?y}{0(ydU*Nkm#O_Q!|l14AQH3tX5lM3Fs;4Siq$Ly)I3DD-N^%Wl$6E2Rgle^w7- z$3G@!l`g*(ce_Ek2@lSS!D!^54Wx6zSg?DX3Do{A=R9f|MXUj`hOo1Dt0lP&fz1=l-=c>7b@mgX93RANCahJ z09VKCF6?UwPTG<^j_6RIl@%H~7iz3FUAEgJ7&bf$ANv0000000000 z000000@@Z4K0U+ire_pxjL(MgFfqW>AJXJM#S2OXv#rrs4~aFx$qY7bG@b)$8jj}kVN!q*7Cd!;JC5n)ayA^sNW>vYH zmMBAyJU~>t{9Ntaw=YXaJ|`Ot3vQO%Z){_Bd)s&!Z@SZzA1eY`hEtr71P*#c&+Uaa zY4>^&6CkdT^(OCGHnaysdH%2L|8~p9SJic%dvWm%z4!*GoMgXm6T@P+Kny4_v= zFJ6pnT3_6yb(}YA>`M7SDN@-Be{hcg;~m!HAOF%10000000000000000000000000 P000000000000000{r*vW diff --git a/app/src/main/res/drawable/shape_e03654_8.xml b/app/src/main/res/drawable/shape_e03654_10.xml similarity index 83% rename from app/src/main/res/drawable/shape_e03654_8.xml rename to app/src/main/res/drawable/shape_e03654_10.xml index 2e33fe459..05e670a89 100644 --- a/app/src/main/res/drawable/shape_e03654_8.xml +++ b/app/src/main/res/drawable/shape_e03654_10.xml @@ -2,6 +2,6 @@ - + diff --git a/app/src/main/res/layout/red_package_open_dialog.xml b/app/src/main/res/layout/red_package_open_dialog.xml index 57641c66e..a1e76822c 100644 --- a/app/src/main/res/layout/red_package_open_dialog.xml +++ b/app/src/main/res/layout/red_package_open_dialog.xml @@ -143,6 +143,7 @@ android:id="@+id/tv_btn_msg" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:gravity="center" android:text="@string/red_package_open_btn_msg" android:textColor="@color/color_BF461F" android:textSize="14dp" @@ -199,7 +200,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" - app:layout_constraintGuide_percent="0.8969" /> + app:layout_constraintGuide_percent="0.854" /> + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index add1856cf..3e3ae8b76 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -709,4 +709,5 @@ #94959C #FFBF461F #FFFFF87A + #4CFFFFFF diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f6be35434..945d2c15e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5170,14 +5170,15 @@ 分享房間\n搶紅包 關注主播\n搶紅包 未參與活動 + 未參與活動,無法搶該紅包 已存入錢包,請到我的收益確認 已領取%s/%s個 搶紅包 請輸入彈幕內容 - 關注主播可搶紅包 - 分享房間可搶紅包 + 關注主播 + 对外分享房間 發送彈幕 - 可搶紅包 + 可搶紅包 搶完了,下次早點來哦~ diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt index cf68f99bc..0679ce41d 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt @@ -8,7 +8,7 @@ import java.io.Serializable * Desc:红包数据 **/ data class RedPackageData( - val amount: Long?, + val amount: Double?, val avatar: String?, val beginTime: Long?, val commissionAmount: Long?, diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageInfo.kt b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageInfo.kt index c087d342f..832d42bcd 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageInfo.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageInfo.kt @@ -2,17 +2,19 @@ package com.yizhuan.xchat_android_core.redpackage data class RedPackageInfo( - var redEnvelopeItemVOs: List? = null, - var redEnvelopeVO: RedEnvelopeVO? = null, + var redEnvelopeItemVOs: List? = null, + var redEnvelopeVO: RedEnvelopeVO? = null, - /** - * ING(1, “开抢中”) - * TIME_OUT(2, “过时”) - * REMAIN_ZERO(3, “抢光了”) - * SUCCESS(4, “抢到了”) - * WILL(5, “将要开始”) - * TIME_OUT_BACK(6, “超时已退还”) - */ - var redEnvelopeState: Int = 0 + /** + * ING(1, “开抢中”) + * TIME_OUT(2, “过时”) + * REMAIN_ZERO(3, “抢光了”) + * SUCCESS(4, “抢到了”) + * WILL(5, “将要开始”) + * TIME_OUT_BACK(6, “超时已退还”) + */ + var redEnvelopeState: Int = 0, + // 领取金额 + var currentUserAmount: Double? ) \ No newline at end of file From c7d7d988735b0848831d62efd1cfd0f62eac3dd0 Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 27 Oct 2023 13:01:05 +0800 Subject: [PATCH 12/14] =?UTF-8?q?feat:=E5=AE=8C=E5=96=84=E6=8A=A2=E7=BA=A2?= =?UTF-8?q?=E5=8C=85=E6=9D=A1=E4=BB=B6=E7=9A=84=E5=AE=8C=E6=88=90=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E8=B7=B3=E8=BD=AC=20feat:=E5=AE=8C=E5=96=84=E6=8A=A2?= =?UTF-8?q?=E7=BA=A2=E5=8C=85=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/avroom/fragment/BaseRoomFragment.kt | 36 ++++++++++++++--- .../avroom/redpackage/RedPackageHandler.kt | 17 ++++++-- .../avroom/redpackage/RedPackageWidget.kt | 22 +++++++++-- .../redpackage/open/RedPackageOpenDialog2.kt | 39 +++++++++++++++++-- .../open/RedPackageResultAdapter.kt | 7 ++++ .../home/event/OpenRoomMessageInputEvent.kt | 7 ++++ .../support/room/RoomView.kt | 1 - 7 files changed, 112 insertions(+), 17 deletions(-) create mode 100644 core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/event/OpenRoomMessageInputEvent.kt diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt index 1247e793c..5b9e1e6dc 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt @@ -21,8 +21,9 @@ import android.widget.RelativeLayout import android.widget.TextView import androidx.annotation.CallSuper import androidx.core.content.ContextCompat -import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.withResumed import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.chad.library.adapter.base.BaseQuickAdapter @@ -48,7 +49,6 @@ import com.yizhuan.erban.avroom.dialog.RoomFreeGiftDialog import com.yizhuan.erban.avroom.dialog.RoomOperationDialog import com.yizhuan.erban.avroom.firstcharge.FirstChargeDialog import com.yizhuan.erban.avroom.presenter.BaseRoomPresenter -import com.yizhuan.erban.avroom.redpackage.RedPackageSendDialog import com.yizhuan.erban.avroom.redpackage.send.RedPackageSendDialog2 import com.yizhuan.erban.avroom.room_album.RoomAlbumModel import com.yizhuan.erban.avroom.view.IBaseRoomView @@ -87,6 +87,7 @@ import com.yizhuan.xchat_android_core.gift.bean.GiftInfo import com.yizhuan.xchat_android_core.gift.event.RoomFreeGiftEvent import com.yizhuan.xchat_android_core.helper.AtProxy import com.yizhuan.xchat_android_core.home.bean.BannerInfo +import com.yizhuan.xchat_android_core.home.event.OpenRoomMessageInputEvent import com.yizhuan.xchat_android_core.im.custom.bean.RoomFollowOwnerAttachment import com.yizhuan.xchat_android_core.im.custom.bean.RoomFollowOwnerAttachment2 import com.yizhuan.xchat_android_core.manager.AudioEngineManager @@ -121,6 +122,7 @@ import com.yizhuan.xchat_android_library.rxbus.RxBus import com.yizhuan.xchat_android_library.utils.* import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable +import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -1280,10 +1282,7 @@ open class BaseRoomFragment?> : } override fun onSendMsgBtnClick() { - inputLayout.visibility = View.VISIBLE - inputEdit.isFocusableInTouchMode = true - inputEdit.requestFocus() - KeyBoardUtils.showKeyBoard(context, inputEdit) + openMessageInput(null) } override fun onSendGiftBtnClick() { @@ -1338,4 +1337,29 @@ open class BaseRoomFragment?> : open fun initWidget() { } + + @Subscribe(threadMode = ThreadMode.MAIN) + open fun onOpenRoomMessageInputEvent(event: OpenRoomMessageInputEvent) { + lifecycleScope.launch { + lifecycle.withResumed { + view?.postDelayed({ + openMessageInput(event.text) + }, 500) + } + } + } + + /** + * 打开公屏输入 + */ + fun openMessageInput(text: String?) { + inputLayout.visibility = View.VISIBLE + if (text != null) { + inputEdit.setText(text) + inputEdit.setSelection(inputEdit.length()) + } + inputEdit.isFocusableInTouchMode = true + inputEdit.requestFocus() + KeyBoardUtils.showKeyBoard(context, inputEdit) + } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt index 8faa4915d..ae292bfaf 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt @@ -1,5 +1,7 @@ package com.yizhuan.erban.avroom.redpackage +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.MutableLiveData import com.yizhuan.erban.avroom.redpackage.open.RedPackageOpenDialog2 import com.yizhuan.xchat_android_core.im.custom.bean.RedPackageAttachment @@ -9,6 +11,7 @@ import com.yizhuan.xchat_android_core.redpackage.RedPackageModel import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo import com.yizhuan.xchat_android_core.support.room.RoomContext import com.yizhuan.xchat_android_core.support.room.RoomHandler +import com.yizhuan.xchat_android_core.support.room.lifecycle.RoomLifecycle /** * Created by Max on 2023/10/26 11:26 @@ -22,7 +25,13 @@ class RedPackageHandler : RoomHandler() { override fun onStart(context: RoomContext) { super.onStart(context) registerSignaling() - requestLatestRoomRedPackage() + } + + override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) { + super.onStateChanged(source, event) + if (event == Lifecycle.Event.ON_RESUME) { + requestLatestRoomRedPackage() + } } /** @@ -52,10 +61,12 @@ class RedPackageHandler : RoomHandler() { logD("requestLatestRoomRedPackage() roomId:$roomId") RedPackageModel.getLatestRoomRedPackage(roomId) .compose(bindToLifecycle()) - .subscribe { data -> + .subscribe({ data -> logD("requestLatestRoomRedPackage() data:$data") handleRoomRedPackage(data) - } + }, { + + }) } /** diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt index f849f91dd..46fd829da 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt @@ -12,11 +12,13 @@ import com.chuhai.utils.ServiceTime import com.chuhai.utils.ktx.singleClick import com.yizhuan.erban.R import com.yizhuan.erban.avroom.redpackage.open.RedPackageOpenDialog2 +import com.yizhuan.erban.common.widget.dialog.DialogManager import com.yizhuan.xchat_android_core.redpackage.RedPackageModel import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo import com.yizhuan.xchat_android_core.support.room.RoomContext import com.yizhuan.xchat_android_core.support.room.RoomView import com.yizhuan.xchat_android_core.support.room.RoomWidget +import com.yizhuan.xchat_android_library.utils.SingleToastUtil import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable @@ -37,6 +39,9 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { private var countDownDisposable: Disposable? = null private var data: RedPackageNotifyInfo? = null + // 临时这样实现,后续优化进度弹窗 + private var dialogManager: DialogManager? = null + // 倒计时格式(分:秒) private val mmssFormat by lazy(LazyThreadSafetyMode.NONE) { SimpleDateFormat("mm:ss").apply { @@ -131,6 +136,10 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { override fun onStart(roomView: RoomView) { this.roomView = roomView + roomView.getActivity()?.let { + this.dialogManager = DialogManager(it) + this.dialogManager?.setCanceledOnClickOutside(false) + } // TODO #临时方案 因为目前View的生命周期比RoomContext还早,暂时这样拿到Context val context = RoomContext.contextLiveData.value if (context == null) { @@ -187,13 +196,18 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { * 尝试展示红包 */ private fun tryShowRedPackage(data: RedPackageNotifyInfo) { + dialogManager?.context?.let { + dialogManager?.showProgressDialog(it, false) + } val disposable = RedPackageModel.getRedPackage(data.redEnvelopeId.toLongOrDefault(0)) - .subscribe({ data -> + .subscribe({ item -> + dialogManager?.dismissDialog() roomView?.getActivity().let { - RedPackageOpenDialog2.newInstance(data).show(it) + RedPackageOpenDialog2.newInstance(item).show(it) } }, { - // TODO 待实现 + SingleToastUtil.showToast(it.message) + dialogManager?.dismissDialog() }) compositeDisposable.add(disposable) } @@ -202,6 +216,8 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { compositeDisposable.dispose() RoomContext.contextLiveData.removeObserver(contextObserver) stopCountDown() + this.dialogManager?.dismissDialog() + this.dialogManager = null this.roomView = null } diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt index 3460cb288..ae96ff2f6 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt @@ -21,9 +21,11 @@ import com.yizhuan.erban.R import com.yizhuan.erban.base.BaseDialog import com.yizhuan.erban.databinding.RedPackageOpenDialogBinding import com.yizhuan.erban.ui.utils.loadAvatar -import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration +import com.yizhuan.erban.ui.widget.UserInfoDialog import com.yizhuan.xchat_android_core.auth.AuthModel import com.yizhuan.xchat_android_core.home.event.FollowRoomEvent +import com.yizhuan.xchat_android_core.home.event.OpenRoomMessageInputEvent +import com.yizhuan.xchat_android_core.home.event.ShareRoomEvent import com.yizhuan.xchat_android_core.home.model.CollectionRoomModel import com.yizhuan.xchat_android_core.manager.AvRoomDataManager import com.yizhuan.xchat_android_core.pay.PayModel @@ -104,6 +106,10 @@ class RedPackageOpenDialog2 : BaseDialog() { binding.layoutBtn.singleClick { btnRunnable?.invoke() } + + binding.ivSendAvatar.singleClick { + showUserDialog(data.userId) + } loadData(data) } @@ -198,21 +204,24 @@ class RedPackageOpenDialog2 : BaseDialog() { 2 -> { binding.tvBtnMsg.setText(R.string.red_package_open_btn_follow) btnRunnable = { - SingleToastUtil.showToast("2") + dismissAllowingStateLoss() + showUserDialog(data.userId) } } 3 -> { binding.tvBtnMsg.setText(R.string.red_package_open_btn_share) btnRunnable = { - SingleToastUtil.showToast("3") + dismissAllowingStateLoss() + EventBus.getDefault().post(ShareRoomEvent()) } } 4 -> { binding.tvBtnMsg.setText(R.string.red_package_open_btn_msg) btnRunnable = { - SingleToastUtil.showToast("4") + dismissAllowingStateLoss() + EventBus.getDefault().post(OpenRoomMessageInputEvent(data.message)) } } @@ -322,6 +331,9 @@ class RedPackageOpenDialog2 : BaseDialog() { binding.groupOpen.isVisible = false binding.groupResult.isVisible = true binding.tvResultEmptyTips.isVisible = false + binding.ivResultSendAvatar.singleClick { + showUserDialog(data.redEnvelopeVO?.userVO?.uid) + } binding.ivResultSendAvatar.loadAvatar(data.redEnvelopeVO?.userVO?.avatar) binding.tvResultSendName.text = data.redEnvelopeVO?.userVO?.nick ?: "" val name = data.redEnvelopeVO?.userVO?.nick ?: "" @@ -331,6 +343,13 @@ class RedPackageOpenDialog2 : BaseDialog() { .format(data.redEnvelopeVO?.pickNum ?: 0, data.redEnvelopeVO?.totalNum ?: 0) val adapter = RedPackageResultAdapter() + adapter.setOnItemChildClickListener { _, view, position -> + if (view.id == R.id.iv_avatar) { + adapter.data.getOrNull(position)?.let { + showUserDialog(it.userVO.uid) + } + } + } binding.recyclerView.adapter = adapter adapter.setNewData(data.redEnvelopeItemVOs) PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe() @@ -407,4 +426,16 @@ class RedPackageOpenDialog2 : BaseDialog() { super.onPause() dismissAllowingStateLoss() } + + private fun showUserDialog(uid: Long?) { + if (uid == null) { + return + } + activity?.let { + UserInfoDialog.showNewUserInfoDialog( + activity, + uid + ) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt index e692ab542..49aef987e 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt @@ -1,6 +1,7 @@ package com.yizhuan.erban.avroom.redpackage.open import android.view.View +import android.view.ViewGroup import android.widget.ImageView import androidx.core.view.isVisible import com.chad.library.adapter.base.BaseQuickAdapter @@ -25,6 +26,12 @@ class RedPackageResultAdapter : Locale.CHINA ) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder { + return super.onCreateViewHolder(parent, viewType).apply { + this.addOnClickListener(R.id.iv_avatar) + } + } + override fun convert(helper: BaseViewHolder, item: RedEnvelopeItemVO) { helper.getView(R.id.iv_avatar).loadAvatar(item.userVO.avatar) val isSelf = item.userVO.uid == UserUtils.getUserUid() diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/event/OpenRoomMessageInputEvent.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/event/OpenRoomMessageInputEvent.kt new file mode 100644 index 000000000..985a938ca --- /dev/null +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/event/OpenRoomMessageInputEvent.kt @@ -0,0 +1,7 @@ +package com.yizhuan.xchat_android_core.home.event + +/** + * Created by Max on 2023/10/27 11:56 + * Desc:打开公屏输入 + **/ +class OpenRoomMessageInputEvent(val text: String? = null) \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomView.kt b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomView.kt index 8223a8ca8..da5ee0dc2 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomView.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/support/room/RoomView.kt @@ -1,7 +1,6 @@ package com.yizhuan.xchat_android_core.support.room import android.app.Activity -import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner /** From 57139f1f97015456f113499e26bce29ffebab8a1 Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 27 Oct 2023 16:32:54 +0800 Subject: [PATCH 13/14] =?UTF-8?q?feat:=E5=AE=8C=E5=96=84=E5=85=A8=E6=9C=8D?= =?UTF-8?q?=E7=BA=A2=E5=8C=85=E8=B7=B3=E8=BD=AC=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/avroom/activity/AVRoomActivity.java | 71 ++++------ .../avroom/redpackage/RedPackageHandler.kt | 54 +++++--- .../avroom/redpackage/RedPackageWidget.kt | 26 +++- .../redpackage/open/RedPackageOpenDialog2.kt | 123 ++++++++++++------ .../open/RedPackageResultAdapter.kt | 6 - .../com/yizhuan/erban/base/BaseActivity.java | 3 +- app/src/main/res/values/strings.xml | 3 +- .../redpackage/RedPackageData.kt | 4 +- 8 files changed, 177 insertions(+), 113 deletions(-) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java b/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java index 682c3113f..b65cb15db 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java @@ -67,7 +67,7 @@ import com.yizhuan.erban.avroom.fragment.HomePartyFragment; import com.yizhuan.erban.avroom.fragment.InputPwdDialogFragment; import com.yizhuan.erban.avroom.presenter.AvRoomPresenter; import com.yizhuan.erban.avroom.presenter.HomePartyPresenter; -import com.yizhuan.erban.avroom.redpackage.RedPackageOpenDialog; +import com.yizhuan.erban.avroom.redpackage.RedPackageHandler; import com.yizhuan.erban.avroom.view.IAvRoomView; import com.yizhuan.erban.avroom.widget.VerticalViewPagerAdapter; import com.yizhuan.erban.base.BaseMvpActivity; @@ -130,7 +130,6 @@ import com.yizhuan.xchat_android_core.patriarch.event.CloseMinRoomEvent; import com.yizhuan.xchat_android_core.patriarch.event.ImPushMsgPmLimitTimeEvent; import com.yizhuan.xchat_android_core.patriarch.event.PmDismissAllLimitDialogEvent; import com.yizhuan.xchat_android_core.patriarch.exception.PmRoomLimitException; -import com.yizhuan.xchat_android_core.redpackage.RedPackageModel; import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo; import com.yizhuan.xchat_android_core.room.anotherroompk.ShowGiftDialogEvent; import com.yizhuan.xchat_android_core.room.bean.RoomInfo; @@ -164,9 +163,7 @@ import org.greenrobot.eventbus.ThreadMode; import java.lang.ref.WeakReference; import java.net.MalformedURLException; import java.net.URL; -import java.util.ArrayList; import java.util.LinkedList; -import java.util.List; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -221,7 +218,6 @@ public class AVRoomActivity extends BaseMvpActivity openDialogs; private ViewPager2 viewpager; private VerticalViewPagerAdapter mAdapter; /*********************************显示全服礼物***************************************/ @@ -514,7 +510,6 @@ public class AVRoomActivity extends BaseMvpActivity redMap = DemoCache.readRedPackage(); -// RedPackageModel.INSTANCE.getRedPackage(roomInfo.getUid()) -// .compose(bindToLifecycle()) -// .doFinally(() -> { -// if (inRoomNotifyInfo != null && (redMap == null || !redMap.containsKey(inRoomNotifyInfo.getRedEnvelopeId()))) { -// showRedPackageOpenDialog(inRoomNotifyInfo); -// } -// }) -// .filter(notifyInfo -> inRoomNotifyInfo == null || !notifyInfo.getRedEnvelopeId().equals(inRoomNotifyInfo.getRedEnvelopeId())) -// .subscribe(this::showRedPackageOpenDialog); - } - - private void showRedPackageOpenDialog(RedPackageNotifyInfo notifyInfo) { - if (!isResume) return; - if (openDialogs == null) { - openDialogs = new ArrayList<>(); - } - RedPackageOpenDialog openDialog = RedPackageOpenDialog.Companion.newInstance(notifyInfo); - openDialog.show(this); - if (openDialog.getDialog() != null) { - openDialog.getDialog().setOnDismissListener(dialog -> openDialogs.remove(openDialog)); - } - openDialogs.add(openDialog); - if (openDialogs.size() >= SHOW_RED_DIALOG_MAX) { - openDialogs.get(SHOW_RED_DIALOG_MAX - 1).dismissAllowingStateLoss(); + /** + * 尝试展示来源红包(在房间外点击红包入口进入房间时) + */ + private void tryShowSourceRedPackage() { + try { + RedPackageNotifyInfo inRoomNotifyInfo = (RedPackageNotifyInfo) getIntent().getSerializableExtra("notifyInfo"); + if (inRoomNotifyInfo != null) { + RedPackageHandler handler = getRoomContext().findAbility(RedPackageHandler.class.getSimpleName()); + if (handler != null) { + long id = Long.parseLong(inRoomNotifyInfo.getRedEnvelopeId()); + handler.tryShowRedPackage(id); + } + } + } catch (Exception e) { + e.printStackTrace(); } } private void dismissRedPackageDialog() { - if (openDialogs != null) { - openDialogs.clear(); - } if (mCurrentFragment != null) { mCurrentFragment.dismissSendRedPackageDialog(); } @@ -1065,8 +1051,6 @@ public class AVRoomActivity extends BaseMvpActivity + if (item.state != 3 && item.state != 6 && item.state != 4) { + roomView?.getActivity().let { + RedPackageOpenDialog2.newInstance(item).show(it) + } + } + }, {}) + } + /** * 监听房间信令 */ @@ -48,7 +63,7 @@ class RedPackageHandler : RoomHandler() { (it.chatRoomMessage.attachment as RedPackageAttachment).getRedPackageNotifyInfo() } .subscribe { data: RedPackageNotifyInfo -> - handleRoomRedPackage(data) + handleRoomRedPackage(data, true) } } @@ -63,39 +78,48 @@ class RedPackageHandler : RoomHandler() { .compose(bindToLifecycle()) .subscribe({ data -> logD("requestLatestRoomRedPackage() data:$data") - handleRoomRedPackage(data) - }, { - - }) + handleRoomRedPackage(data, false) + }, {}) } /** * 处理厅内红包,非全服红包 + * @param isSignaling 是否来自信令? */ - private fun handleRoomRedPackage(data: RedPackageNotifyInfo) { - if (data.kind == 0 || (data.kind == 1 && data.validityType == 0)) { - //【旧版本-厅内红包:kind=0】、【新版本-厅内无门槛-立即生效红包:kind=1&validityType=0】 - tryShowOpenDialog(data) - } + private fun handleRoomRedPackage(data: RedPackageNotifyInfo, isSignaling: Boolean) { + tryShowOpenDialog(data, isSignaling) updateIcon(data) } /** * 更新红包入口图标 */ - private fun updateIcon(data: RedPackageNotifyInfo) { + private fun updateIcon(data: RedPackageNotifyInfo?) { iconLiveData.postValue(data) } /** * 尝试展示红包领取弹窗 */ - private fun tryShowOpenDialog(data: RedPackageNotifyInfo) { + private fun tryShowOpenDialog(data: RedPackageNotifyInfo, isSignaling: Boolean) { val activity = roomView?.getActivity() ?: return if (activity.isFinishing) { return } - logD("tryShowOpenDialog() data:$data") - RedPackageOpenDialog2().show(activity) + if (!isSignaling) { + return + } + if (data.kind == 0 || (data.kind == 1 && data.validityType == 0)) { + //【旧版本-厅内红包:kind=0】、【新版本-厅内无门槛-立即生效红包:kind=1&validityType=0】 + RedPackageOpenDialog2.newInstance(data).show(activity) + } + } + + /** + * 请求刷新Icon(数据已过期) + */ + fun requestRefreshIcon() { + updateIcon(null) + requestLatestRoomRedPackage() } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt index 46fd829da..87c177603 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageWidget.kt @@ -38,6 +38,9 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { private var numView: TextView? = null private var countDownDisposable: Disposable? = null private var data: RedPackageNotifyInfo? = null + private val redPackageHandler: RedPackageHandler? + get() = RoomContext.get() + ?.findAbility(RedPackageHandler::class.java.simpleName) // 临时这样实现,后续优化进度弹窗 private var dialogManager: DialogManager? = null @@ -150,11 +153,8 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { } private fun init(roomView: RoomView) { - val context = roomView.getRoomContext() val lifecycleOwner = roomView.getLifecycleOwner() - val handler = - context?.findAbility(RedPackageHandler::class.java.simpleName) - handler?.iconLiveData?.observe(lifecycleOwner) { + redPackageHandler?.iconLiveData?.observe(lifecycleOwner) { loadData(it) } } @@ -202,8 +202,22 @@ class RedPackageWidget : ConstraintLayout, RoomWidget { val disposable = RedPackageModel.getRedPackage(data.redEnvelopeId.toLongOrDefault(0)) .subscribe({ item -> dialogManager?.dismissDialog() - roomView?.getActivity().let { - RedPackageOpenDialog2.newInstance(item).show(it) + when (item.state) { + 3 -> { + redPackageHandler?.requestRefreshIcon() + SingleToastUtil.showToast(R.string.red_package_result_empty_tips) + } + + 6 -> { + redPackageHandler?.requestRefreshIcon() + SingleToastUtil.showToast(R.string.red_package_disabled_tips) + } + + else -> { + roomView?.getActivity().let { + RedPackageOpenDialog2.newInstance(item).show(it) + } + } } }, { SingleToastUtil.showToast(it.message) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt index ae96ff2f6..296350806 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt @@ -76,6 +76,43 @@ class RedPackageOpenDialog2 : BaseDialog() { private var opening = false companion object { + /** + * 此入口来源仅限:【全服红包信令】、【厅内无门槛-立即生效红包信令】 + */ + fun newInstance(data: RedPackageNotifyInfo): RedPackageOpenDialog2 { + /** + * 收到这两种信令直接展示即可,无需再次请求接口查询状态, + * 但由于信令和接口查询的数据格式不一致,所以这里做下转换,达到逻辑共用 + */ + val item = RedPackageData( + amount = null, + avatar = data.sendUserAvatar, + beginTime = data.beginTime, + commissionAmount = null, + createTime = null, + duration = null, + endTime = null, + finish = true, + id = data.redEnvelopeId.toLongOrNull(), + kind = data.kind, + message = data.redEnvelopeMessage, + nick = data.sendUserNick, + num = null, + originalAmount = null, + position = null, + roomTitle = null, + roomUid = data.roomUid, + //红包状态 1 开抢中 2 过时 3 抢光了 4 抢到了 5 将要开始 6 超时已退还 + state = null, + type = null, + updateTime = null, + userId = null, + validityType = data.validityType, + result = null + ) + return newInstance(item) + } + fun newInstance(data: RedPackageData): RedPackageOpenDialog2 { return RedPackageOpenDialog2().apply { arguments = Bundle().apply { @@ -106,10 +143,6 @@ class RedPackageOpenDialog2 : BaseDialog() { binding.layoutBtn.singleClick { btnRunnable?.invoke() } - - binding.ivSendAvatar.singleClick { - showUserDialog(data.userId) - } loadData(data) } @@ -117,7 +150,19 @@ class RedPackageOpenDialog2 : BaseDialog() { * 加载红包数据 */ private fun loadData(data: RedPackageData) { - // 默认不可见先 + //红包状态 1 开抢中 2 过时 3 抢光了 4 抢到了 5 将要开始 6 超时已退还 + if (data.state == 4) { + loadResult(data.result) + } else { + // else简单理解为可领取状态,正常情况下在RedPackageWidget点击时有异常状态过滤 + loadOpen(data) + } + } + + /** + * 加载可领取数据 + */ + private fun loadOpen(data: RedPackageData) { binding.groupOpen.isVisible = true binding.groupResult.isVisible = false binding.ivSendAvatar.loadAvatar(data.avatar) @@ -300,66 +345,70 @@ class RedPackageOpenDialog2 : BaseDialog() { opening = true openResultRunnable = null startRedPacketAnim(binding.layoutBtn) - RedPackageModel.openRedPackage(data.id ?: 0) + val d = RedPackageModel.openRedPackage(data.id ?: 0) .compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW)).subscribe({ if (isValidOfBtnAnimator) { btnAnimator?.cancel() - openSuccess(it) + onOpenSuccess(it) } else { openResultRunnable = { - openSuccess(it) + onOpenSuccess(it) } } }, { if (isValidOfBtnAnimator) { btnAnimator?.cancel() - openFail(it) + onOpenFail(it) } else { openResultRunnable = { - openFail(it) + onOpenFail(it) } } }) } /** - * 打开红包响应成功 - * @param data 结果 + * 加载结果 */ - private fun openSuccess(data: RedPackageInfo) { + private fun loadResult(data: RedPackageInfo?) { binding.layoutContent.setBackgroundResource(R.drawable.red_package_result_bg) binding.groupOpen.isVisible = false binding.groupResult.isVisible = true + binding.groupResultMoney.isVisible = false binding.tvResultEmptyTips.isVisible = false - binding.ivResultSendAvatar.singleClick { - showUserDialog(data.redEnvelopeVO?.userVO?.uid) - } - binding.ivResultSendAvatar.loadAvatar(data.redEnvelopeVO?.userVO?.avatar) - binding.tvResultSendName.text = data.redEnvelopeVO?.userVO?.nick ?: "" - val name = data.redEnvelopeVO?.userVO?.nick ?: "" - binding.tvResultSendName.text = name.take(8) + "..的紅包" - binding.tvMessage.text = data.redEnvelopeVO?.message + binding.ivResultSendAvatar.loadAvatar(data?.redEnvelopeVO?.userVO?.avatar) + binding.tvResultSendName.text = data?.redEnvelopeVO?.userVO?.nick ?: "" + val name = data?.redEnvelopeVO?.userVO?.nick ?: "" + binding.tvResultSendName.text = name?.take(8) + "..的紅包" + binding.tvMessage.text = data?.redEnvelopeVO?.message binding.tvCount.text = R.string.red_package_result_count_format.toStringRes() - .format(data.redEnvelopeVO?.pickNum ?: 0, data.redEnvelopeVO?.totalNum ?: 0) + .format(data?.redEnvelopeVO?.pickNum ?: 0, data?.redEnvelopeVO?.totalNum ?: 0) val adapter = RedPackageResultAdapter() - adapter.setOnItemChildClickListener { _, view, position -> - if (view.id == R.id.iv_avatar) { - adapter.data.getOrNull(position)?.let { - showUserDialog(it.userVO.uid) - } - } - } binding.recyclerView.adapter = adapter - adapter.setNewData(data.redEnvelopeItemVOs) - PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe() + adapter.setNewData(data?.redEnvelopeItemVOs) - when (data.redEnvelopeState) { + when (data?.redEnvelopeState) { RedEnvelopeState.SUCCESS -> { binding.tvMoney.text = data.currentUserAmount.toString().substringBefore(".") binding.groupResultMoney.isVisible = true + } - // 下面是延续老代码保留的 + RedEnvelopeState.TIME_OUT, RedEnvelopeState.REMAIN_ZERO, RedEnvelopeState.TIME_OUT_BACK -> { + binding.tvResultEmptyTips.isVisible = true + } + } + } + + /** + * 打开红包响应成功 + * @param data 结果 + */ + private fun onOpenSuccess(data: RedPackageInfo) { + loadResult(data) + when (data.redEnvelopeState) { + RedEnvelopeState.SUCCESS -> { + // 下面这段是延续老代码保留的 if (!AvRoomDataManager.get().isRoomFans) { AvRoomDataManager.get().roomUid.let { CollectionRoomModel.get().followRoom("1", it) @@ -370,19 +419,15 @@ class RedPackageOpenDialog2 : BaseDialog() { } } } - - RedEnvelopeState.TIME_OUT, RedEnvelopeState.REMAIN_ZERO, RedEnvelopeState.TIME_OUT_BACK -> { - binding.groupResultMoney.isVisible = false - binding.tvResultEmptyTips.isVisible = true - } } + PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe() opening = false } /** * 打开红包响应失败 */ - private fun openFail(throwable: Throwable) { + private fun onOpenFail(throwable: Throwable) { switchToOpenState() btnAnimator?.cancel() SingleToastUtil.showToast(throwable.message) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt index 49aef987e..a7b5b585c 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageResultAdapter.kt @@ -26,12 +26,6 @@ class RedPackageResultAdapter : Locale.CHINA ) - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder { - return super.onCreateViewHolder(parent, viewType).apply { - this.addOnClickListener(R.id.iv_avatar) - } - } - override fun convert(helper: BaseViewHolder, item: RedEnvelopeItemVO) { helper.getView(R.id.iv_avatar).loadAvatar(item.userVO.avatar) val isSelf = item.userVO.uid == UserUtils.getUserUid() diff --git a/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java b/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java index f12bf2f7b..156b0f724 100644 --- a/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java +++ b/app/src/main/java/com/yizhuan/erban/base/BaseActivity.java @@ -70,6 +70,7 @@ import com.yizhuan.erban.avroom.activity.AVRoomActivity; import com.yizhuan.erban.avroom.firstcharge.FirstChargeDialog; import com.yizhuan.erban.avroom.redpackage.RedPackageGoRoomDialog; import com.yizhuan.erban.avroom.redpackage.RedPackageOpenDialog; +import com.yizhuan.erban.avroom.redpackage.open.RedPackageOpenDialog2; import com.yizhuan.erban.common.LoadingFragment; import com.yizhuan.erban.common.NetworkErrorFragment; import com.yizhuan.erban.common.NoDataFragment; @@ -958,7 +959,7 @@ public abstract class BaseActivity extends RxAppCompatActivity RedPackageNotifyInfo notifyInfo = new Gson().fromJson(String.valueOf(baseProtocol.getData()), RedPackageNotifyInfo.class); RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; if (roomInfo != null && roomInfo.getUid() == notifyInfo.getRoomUid() && context instanceof AVRoomActivity) { - RedPackageOpenDialog.Companion.newInstance(notifyInfo).show(BaseActivity.this); + RedPackageOpenDialog2.Companion.newInstance(notifyInfo).show(BaseActivity.this); } else { RedPackageGoRoomDialog.Companion.newInstance(notifyInfo).show(this); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 945d2c15e..d284f457c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5180,6 +5180,7 @@ 發送彈幕 可搶紅包 搶完了,下次早點來哦~ - + 該紅包已失效 + ” \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt index 0679ce41d..7578ece37 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/redpackage/RedPackageData.kt @@ -30,5 +30,7 @@ data class RedPackageData( val type: String?, val updateTime: Long?, val userId: Long?, - val validityType: Int? + val validityType: Int?, + // 结果 + val result: RedPackageInfo? ) : Serializable \ No newline at end of file From 3199114ff61e9204133024f5824f728845c807de Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 27 Oct 2023 17:06:40 +0800 Subject: [PATCH 14/14] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E5=BC=80=E7=BA=A2?= =?UTF-8?q?=E5=8C=85=E7=BB=93=E6=9E=9C=E9=A1=B5=E7=9A=84view=E9=9A=90?= =?UTF-8?q?=E8=97=8F=E5=B1=95=E7=A4=BA=E9=97=AE=E9=A2=98=20fix:=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=8F=91=E7=BA=A2=E5=8C=85=E8=83=8C=E6=99=AF=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avroom/dialog/RoomOperationDialog.java | 5 +--- .../avroom/redpackage/RedPackageHandler.kt | 2 +- .../redpackage/open/RedPackageOpenDialog2.kt | 28 +++++++++++++++---- .../res/layout/red_package_open_dialog.xml | 4 +-- .../res/layout/red_package_send_dialog.xml | 1 + gradle.properties | 4 +-- 6 files changed, 29 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/dialog/RoomOperationDialog.java b/app/src/main/java/com/yizhuan/erban/avroom/dialog/RoomOperationDialog.java index 54455de41..74004e3c9 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/dialog/RoomOperationDialog.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/dialog/RoomOperationDialog.java @@ -341,9 +341,7 @@ public class RoomOperationDialog extends BottomSheetDialog { * @param optAdapter */ private void addRedPacketAction(OptAdapter optAdapter) { - // TODO 临时打开 -// if (AvRoomDataManager.get().isRedEnvelopeOpen()) { - if (true) { + if (AvRoomDataManager.get().isRedEnvelopeOpen()) { RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; if (roomInfo == null) { return; @@ -354,7 +352,6 @@ public class RoomOperationDialog extends BottomSheetDialog { } })); } - } /** diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt index fbd47746e..fd991d352 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/RedPackageHandler.kt @@ -119,7 +119,7 @@ class RedPackageHandler : RoomHandler() { * 请求刷新Icon(数据已过期) */ fun requestRefreshIcon() { - updateIcon(null) +// updateIcon(null) requestLatestRoomRedPackage() } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt index 296350806..a237be886 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/redpackage/open/RedPackageOpenDialog2.kt @@ -15,6 +15,7 @@ import com.chuhai.utils.ServiceTime import com.chuhai.utils.ktx.getColorById import com.chuhai.utils.ktx.singleClick import com.chuhai.utils.ktx.toStringRes +import com.chuhai.utils.log.ILog import com.chuhai.utils.spannable.spannableBuilder import com.trello.rxlifecycle3.android.FragmentEvent import com.yizhuan.erban.R @@ -46,7 +47,7 @@ import java.util.concurrent.TimeUnit * Desc:领取红包 **/ @ActLayoutRes(R.layout.red_package_open_dialog) -class RedPackageOpenDialog2 : BaseDialog() { +class RedPackageOpenDialog2 : BaseDialog(), ILog { private var btnAnimator: ObjectAnimator? = null @@ -163,8 +164,8 @@ class RedPackageOpenDialog2 : BaseDialog() { * 加载可领取数据 */ private fun loadOpen(data: RedPackageData) { - binding.groupOpen.isVisible = true - binding.groupResult.isVisible = false + switchResultViewVisible(false) + switchOpenViewVisible(true) binding.ivSendAvatar.loadAvatar(data.avatar) binding.tvSendName.text = data.nick loadTips(data) @@ -372,14 +373,18 @@ class RedPackageOpenDialog2 : BaseDialog() { */ private fun loadResult(data: RedPackageInfo?) { binding.layoutContent.setBackgroundResource(R.drawable.red_package_result_bg) - binding.groupOpen.isVisible = false - binding.groupResult.isVisible = true + switchOpenViewVisible(false) + switchResultViewVisible(true) binding.groupResultMoney.isVisible = false binding.tvResultEmptyTips.isVisible = false binding.ivResultSendAvatar.loadAvatar(data?.redEnvelopeVO?.userVO?.avatar) binding.tvResultSendName.text = data?.redEnvelopeVO?.userVO?.nick ?: "" val name = data?.redEnvelopeVO?.userVO?.nick ?: "" - binding.tvResultSendName.text = name?.take(8) + "..的紅包" + if (name.length > 8) { + binding.tvResultSendName.text = name?.take(8) + "..的紅包" + } else { + binding.tvResultSendName.text = name + "的紅包" + } binding.tvMessage.text = data?.redEnvelopeVO?.message binding.tvCount.text = R.string.red_package_result_count_format.toStringRes() .format(data?.redEnvelopeVO?.pickNum ?: 0, data?.redEnvelopeVO?.totalNum ?: 0) @@ -460,6 +465,17 @@ class RedPackageOpenDialog2 : BaseDialog() { } } + private fun switchResultViewVisible(isVisible: Boolean) { + binding.groupResult.isVisible = isVisible + binding.groupResultMoney.isVisible = isVisible + binding.tvResultEmptyTips.isVisible = isVisible + } + + private fun switchOpenViewVisible(isVisible: Boolean) { + binding.groupOpen.isVisible = isVisible + binding.tvOpenTips.isVisible = isVisible + } + override fun onDestroyView() { super.onDestroyView() btnAnimator?.cancel() diff --git a/app/src/main/res/layout/red_package_open_dialog.xml b/app/src/main/res/layout/red_package_open_dialog.xml index a1e76822c..e8cd79f96 100644 --- a/app/src/main/res/layout/red_package_open_dialog.xml +++ b/app/src/main/res/layout/red_package_open_dialog.xml @@ -171,7 +171,7 @@ android:id="@+id/group_open" android:layout_width="wrap_content" android:layout_height="wrap_content" - app:constraint_referenced_ids="layout_btn,iv_send_avatar,tv_send_name,tv_open_tips" + app:constraint_referenced_ids="layout_btn,iv_send_avatar,tv_send_name" tools:visibility="visible" /> diff --git a/app/src/main/res/layout/red_package_send_dialog.xml b/app/src/main/res/layout/red_package_send_dialog.xml index f0d9039e0..609e41862 100644 --- a/app/src/main/res/layout/red_package_send_dialog.xml +++ b/app/src/main/res/layout/red_package_send_dialog.xml @@ -18,6 +18,7 @@ android:id="@+id/iv_top" android:layout_width="match_parent" android:layout_height="wrap_content" + android:adjustViewBounds="true" android:src="@drawable/red_package_send_bg" app:layout_constraintTop_toTopOf="parent" /> diff --git a/gradle.properties b/gradle.properties index c1ae39462..084476997 100644 --- a/gradle.properties +++ b/gradle.properties @@ -31,8 +31,8 @@ COMPILE_SDK_VERSION=33 MIN_SDK_VERSION=21 TARGET_SDK_VERSION=33 -version_name=2.1.0 -version_code=2007 +version_name=2.2.0 +version_code=2220 #systemProp.https.proxyHost=127.0.0.1 #systemProp.https.proxyPort=7890 \ No newline at end of file