diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0052510a1..4f8691d90 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1124,7 +1124,7 @@ android:theme="@style/dialog_web_view_activity" android:windowSoftInputMode="adjustPan" /> + + \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/avroom/dialog/RoomPlayDialog.java b/app/src/main/java/com/mango/moshen/avroom/dialog/RoomPlayDialog.java index 217791296..f08ed446d 100644 --- a/app/src/main/java/com/mango/moshen/avroom/dialog/RoomPlayDialog.java +++ b/app/src/main/java/com/mango/moshen/avroom/dialog/RoomPlayDialog.java @@ -15,7 +15,7 @@ import com.mango.moshen.R; import com.mango.moshen.databinding.DialogRoomPlayBinding; import com.mango.moshen.shipantics.PullRadishActivity; import com.mango.moshen.treasure_box.widget.GoldBoxHelper; -import com.netease.nim.uikit.support.glide.GlideApp; +import com.mango.moshen.treasurefairy.HomeDialog; /** @@ -53,6 +53,7 @@ public class RoomPlayDialog extends BottomSheetDialog { private void init() { binding.llRadish.setVisibility(GoldBoxHelper.isShowRadish() ? View.VISIBLE : View.GONE); binding.llRadish.setOnClickListener(v -> PullRadishActivity.start(context)); + binding.llFairy.setOnClickListener(v -> HomeDialog.start(context)); } } diff --git a/app/src/main/java/com/mango/moshen/home/fragment/MeFragment.kt b/app/src/main/java/com/mango/moshen/home/fragment/MeFragment.kt index 65da0ec47..f0987e94a 100644 --- a/app/src/main/java/com/mango/moshen/home/fragment/MeFragment.kt +++ b/app/src/main/java/com/mango/moshen/home/fragment/MeFragment.kt @@ -55,7 +55,6 @@ import com.mango.moshen.home.helper.OpenRoomHelper import com.mango.moshen.module_hall.HallDataManager import com.mango.moshen.skill.activity.SkillHomeActivity import com.mango.moshen.skill.activity.SkillHomeActivity.Companion.start -import com.mango.moshen.treasurefairy.HomeDialog import com.mango.moshen.ui.patriarch.PatriarchModeActivity import com.mango.moshen.ui.pay.ChargeActivity import com.mango.moshen.ui.relation.AttentionListActivity @@ -519,10 +518,6 @@ class MeFragment : BaseFragment(), View.OnClickListener { ) R.id.me_item_setting -> UIHelper.showSettingAct(mContext) R.id.me_item_vip -> { - if (BuildConfig.DEBUG) { - HomeDialog().show(mContext) - return - } VipMainActivity.start(mContext) StatisticManager.Instance() .onEvent(StatisticsProtocol.EVENT_VIP_ENTRANCE_ME_CLICK, "贵族我的入口点击事件") diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/HomeDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/HomeDialog.kt index 3658a6992..9ad9af126 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/HomeDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/HomeDialog.kt @@ -2,18 +2,22 @@ package com.mango.moshen.treasurefairy import android.animation.ObjectAnimator import android.annotation.SuppressLint +import android.content.Context +import android.content.Intent import android.graphics.Path +import android.os.Bundle import android.view.* import android.widget.LinearLayout import android.widget.TextView -import androidx.fragment.app.activityViewModels +import androidx.activity.viewModels import com.mango.core.UriProvider import com.mango.core.treasurefairy.PrizeInfo import com.mango.moshen.R -import com.mango.moshen.base.BaseDialog +import com.mango.moshen.base.BaseViewBindingActivity import com.mango.moshen.common.widget.dialog.DialogManager import com.mango.moshen.databinding.TreasureFairyDialogHomeBinding -import com.mango.moshen.ui.webview.ElfDialogWebViewActivity +import com.mango.moshen.ui.webview.FairyDialogWebViewActivity +import com.netease.nim.uikit.common.ui.dialog.CustomPopupWindow import com.netease.nim.uikit.common.util.sys.ScreenUtil import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers @@ -21,17 +25,23 @@ import io.reactivex.disposables.Disposable import java.util.concurrent.TimeUnit -class HomeDialog : BaseDialog() { +class HomeDialog : BaseViewBindingActivity() { private var selectIndex = 0 private var targetIndex: Int = -1 private val removeRunnable = Runnable { binding.llPrizeHint.removeAllViews() } private val hintPrizeCacheList = ArrayList() - override var width = WindowManager.LayoutParams.MATCH_PARENT - override var gravity = Gravity.BOTTOM private var disposable: Disposable? = null - private val viewModel: FairyViewModel by activityViewModels() + private val viewModel: FairyViewModel by viewModels() + + companion object { + @JvmStatic + fun start(context: Context) { + val starter = Intent(context, HomeDialog::class.java) + context.startActivity(starter) + } + } private val fairyItems by lazy { listOf( @@ -41,11 +51,22 @@ class HomeDialog : BaseDialog() { ) } + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + } + @SuppressLint("SetTextI18n") override fun init() { + //这里的height用MATCH_PARENT状态栏会被顶上去,不知道什么鬼 + window.setLayout( + WindowManager.LayoutParams.MATCH_PARENT, + ScreenUtil.screenHeight - ScreenUtil.getStatusBarHeight(context) + ) + window.setGravity(Gravity.BOTTOM) looperHintPrize() binding.tvKeyNum.setOnClickListener { - ElfDialogWebViewActivity.start(context, UriProvider.getFairyKey()) + FairyDialogWebViewActivity.start(context, UriProvider.getFairyKey()) } binding.ivMyFairy.setOnClickListener { MyFairyDialog.newInstance().show(context) @@ -62,6 +83,24 @@ class HomeDialog : BaseDialog() { rotatePrize() viewModel.drawFairy(100) } + binding.rootView.setOnClickListener { finish() } + binding.viewBg.setOnClickListener { + //do nothing + } + + binding.ivMore.setOnClickListener { + val popupWindow = CustomPopupWindow(context, LinearLayout.VERTICAL) + popupWindow.addItem("规则说明") { + FairyDialogWebViewActivity.start(context, UriProvider.getFairyRule()) + } + popupWindow.addItem("获奖记录") { + FairyDialogWebViewActivity.start(context, UriProvider.getFairyRecord()) + } + popupWindow.addItem("夺宝达人") { + FairyDialogWebViewActivity.start(context, UriProvider.getFairySuperior()) + } + popupWindow.show(binding.ivMore, Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL) + } binding.viewPrizeClick.setOnClickListener { if (disposable?.isDisposed == false && targetIndex != -1) { @@ -74,7 +113,7 @@ class HomeDialog : BaseDialog() { } } - viewModel.resultLiveData.observe(viewLifecycleOwner) { event -> + viewModel.resultLiveData.observe(this) { event -> event?.getContentIfNotHandled()?.let { targetIndex = viewModel.prizeInfoListLiveData.value?.indexOf(it[0]) ?: -1 hintPrizeCacheList.addAll(it.filter { prizeInfo -> prizeInfo.rewardLevel >= 3 }) @@ -84,13 +123,13 @@ class HomeDialog : BaseDialog() { } } - viewModel.prizeInfoListLiveData.observe(viewLifecycleOwner) { + viewModel.prizeInfoListLiveData.observe(this) { it?.forEachIndexed { index, prizeInfo -> fairyItems[index].setPrizeInfo(prizeInfo) } } - viewModel.drawInfoLiveData.observe(viewLifecycleOwner) { + viewModel.drawInfoLiveData.observe(this) { it?.let { binding.tvKeyNum.text = it.drawTicketNum.toString() binding.tvCurrentLuckyValue.text = it.luckyNum.toString() @@ -112,10 +151,10 @@ class HomeDialog : BaseDialog() { } } - viewModel.showGetKeyLiveData.observe(viewLifecycleOwner) { + viewModel.showGetKeyLiveData.observe(this) { it.getContentIfNotHandled()?.let { DialogManager(context).showOkCancelDialog("购买限时装扮活动夺宝券", "去参与", "取消") { - ElfDialogWebViewActivity.start(context, UriProvider.getFairyKey()) + FairyDialogWebViewActivity.start(context, UriProvider.getFairyKey()) } } } diff --git a/app/src/main/java/com/mango/moshen/ui/im/MessageListPanelEx.java b/app/src/main/java/com/mango/moshen/ui/im/MessageListPanelEx.java index 36f129cd3..2471be029 100644 --- a/app/src/main/java/com/mango/moshen/ui/im/MessageListPanelEx.java +++ b/app/src/main/java/com/mango/moshen/ui/im/MessageListPanelEx.java @@ -9,6 +9,7 @@ import android.os.CountDownTimer; import android.os.Handler; import android.text.TextUtils; import android.util.Pair; +import android.view.Gravity; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; @@ -1032,7 +1033,7 @@ public class MessageListPanelEx { CustomPopupWindow alertDialog = new CustomPopupWindow(container.activity, LinearLayout.HORIZONTAL); prepareDialogItems(item, alertDialog); - alertDialog.show(clickView, 0, ScreenUtil.dip2px(5)); + alertDialog.show(clickView, Gravity.TOP | Gravity.CENTER_HORIZONTAL); } // 长按消息item的菜单项准备。如果消息item的MsgViewHolder处理长按事件(MsgViewHolderBase#onItemLongClick),且返回为true, diff --git a/app/src/main/java/com/mango/moshen/ui/im/recent/RecentContactsFragment.java b/app/src/main/java/com/mango/moshen/ui/im/recent/RecentContactsFragment.java index 3e565dc0c..541b6b2d5 100644 --- a/app/src/main/java/com/mango/moshen/ui/im/recent/RecentContactsFragment.java +++ b/app/src/main/java/com/mango/moshen/ui/im/recent/RecentContactsFragment.java @@ -3,6 +3,7 @@ package com.mango.moshen.ui.im.recent; import android.os.Bundle; import android.text.TextUtils; import android.util.Pair; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -425,7 +426,7 @@ public class RecentContactsFragment extends TFragment { refreshMessages(false); StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_CHAT_LIST_TOP_CLICK,"聊天列表长按置顶聊天点击"); }); - alertDialog.show(view, view.getMeasuredWidth() / 2, 0); + alertDialog.show(view, Gravity.TOP | Gravity.CENTER_HORIZONTAL); } private void addTag(RecentContact recent, long tag) { diff --git a/app/src/main/java/com/mango/moshen/ui/setting/LabActivity.java b/app/src/main/java/com/mango/moshen/ui/setting/LabActivity.java index b61e23e6c..89e800789 100644 --- a/app/src/main/java/com/mango/moshen/ui/setting/LabActivity.java +++ b/app/src/main/java/com/mango/moshen/ui/setting/LabActivity.java @@ -10,7 +10,7 @@ import com.mango.moshen.base.BaseActivity; import com.mango.moshen.ui.utils.ImageLoadKt; import com.mango.core.Env; import com.mango.core.auth.AuthModel; -import com.mango.moshen.ui.webview.ElfDialogWebViewActivity; +import com.mango.moshen.ui.webview.FairyDialogWebViewActivity; /** @@ -29,7 +29,7 @@ public class LabActivity extends BaseActivity { ); findViewById(R.id.rb_flutter_test).setOnClickListener(v -> - ElfDialogWebViewActivity.start(this, "http://192.168.9.200:5500/view/yinyou/modules/act-treasureSnatching/index.html") + FairyDialogWebViewActivity.start(this, "http://192.168.9.200:5500/view/yinyou/modules/act-treasureSnatching/index.html") ); //根据ID找到RadioGroup实例 diff --git a/app/src/main/java/com/mango/moshen/ui/webview/ElfDialogWebViewActivity.java b/app/src/main/java/com/mango/moshen/ui/webview/FairyDialogWebViewActivity.java similarity index 86% rename from app/src/main/java/com/mango/moshen/ui/webview/ElfDialogWebViewActivity.java rename to app/src/main/java/com/mango/moshen/ui/webview/FairyDialogWebViewActivity.java index 9dfc14d0c..a25749bfb 100644 --- a/app/src/main/java/com/mango/moshen/ui/webview/ElfDialogWebViewActivity.java +++ b/app/src/main/java/com/mango/moshen/ui/webview/FairyDialogWebViewActivity.java @@ -10,11 +10,11 @@ import android.view.WindowManager; import com.mango.moshen.R; import com.netease.nim.uikit.common.util.sys.ScreenUtil; -public class ElfDialogWebViewActivity extends CommonWebViewActivity { +public class FairyDialogWebViewActivity extends CommonWebViewActivity { public static void start(Context context, String url) { - Intent intent = new Intent(context, ElfDialogWebViewActivity.class); + Intent intent = new Intent(context, FairyDialogWebViewActivity.class); intent.putExtra("url", url); context.startActivity(intent); } diff --git a/app/src/main/res/layout/dialog_room_play.xml b/app/src/main/res/layout/dialog_room_play.xml index b9bf68ef9..45c7594fd 100644 --- a/app/src/main/res/layout/dialog_room_play.xml +++ b/app/src/main/res/layout/dialog_room_play.xml @@ -33,6 +33,32 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> + + + + + + + + (itemText, listener)); } - public void show(View anchor, int xoff, int yoff) { + public void show(View anchor, int popupGravity) { for (Pair pair : itemTextList) { llRoot.addView( createTextView(pair.first, pair.second), new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, ScreenUtil.dip2px(30)) ); } - setPopupGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); + setPopupGravity(popupGravity); showPopupWindow(anchor); }