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 92a5cfebb..26b151763 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 @@ -52,8 +52,14 @@ 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 -> HomeFairyActivity.start(context)); + binding.llRadish.setOnClickListener(v -> { + PullRadishActivity.start(context); + dismiss(); + }); + binding.llFairy.setOnClickListener(v -> { + HomeFairyActivity.start(context); + dismiss(); + }); } } diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt b/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt index a5b379f93..74d8e2bc6 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt @@ -56,7 +56,7 @@ class FairyViewModel : BaseViewModel() { ) } - private fun initPrizeInfoList() { + fun initPrizeInfoList() { safeLaunch( onError = { _prizeInfoListLiveData.value = null @@ -94,6 +94,7 @@ class FairyViewModel : BaseViewModel() { block = { val result = TreasureFairyModel.drawForestFairy(drawNum, poolLevel) _drawForestLiveData.value = result?.let { Event(it) } + _forestInfoLiveData.value = TreasureFairyModel.getForestInfo() } ) } diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestFairyDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestFairyDialog.kt index 4c23f2348..755c196b6 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/ForestFairyDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestFairyDialog.kt @@ -4,11 +4,14 @@ import android.annotation.SuppressLint import android.os.Bundle import android.view.Gravity import android.view.WindowManager +import androidx.core.view.isInvisible import androidx.core.view.isVisible import androidx.fragment.app.activityViewModels +import com.mango.core.utils.subAndReplaceDot import com.mango.moshen.R import com.mango.moshen.base.BaseDialog import com.mango.moshen.databinding.TreasureFairyDialogForestBinding +import com.mango.moshen.ui.utils.loadAvatar class ForestFairyDialog : BaseDialog() { @@ -33,10 +36,15 @@ class ForestFairyDialog : BaseDialog() { @SuppressLint("CheckResult") override fun init() { - + binding.ivBack.setOnClickListener { + dismissAllowingStateLoss() + } binding.ivRecord.setOnClickListener { ForestRecordDialog.newInstance().show(context) } + binding.ivMyFairy.setOnClickListener { + MyFairyDialog.newInstance().show(context) + } binding.ivPrevious.setOnClickListener { currentType-- @@ -47,41 +55,61 @@ class ForestFairyDialog : BaseDialog() { switchType() } binding.viewBgGrab1.setOnClickListener { + enabledOpenBtn(false) viewModel.drawForestFairy(1, currentType) } binding.viewBgGrab10.setOnClickListener { + enabledOpenBtn(false) viewModel.drawForestFairy(10, currentType) } viewModel.drawForestLiveData.observe(viewLifecycleOwner) { + enabledOpenBtn(true) it?.getContentIfNotHandled()?.let { ForestPrizeDialog.newInstance().show(context) } } + viewModel.getForestInfo() + + viewModel.forestInfoLiveData.observe(viewLifecycleOwner) { + it?.let { + binding.ivAvatar.loadAvatar(it.avatar) + binding.tvNickname.text = it.nick.subAndReplaceDot(7) + binding.tvKeyNumBase.text = it.lowBallNum + binding.tvKeyNumEpic.text = it.middleBallNum + binding.tvKeyNumLegend.text = it.highBallNum + } + } + + } + + private fun enabledOpenBtn(enable: Boolean) { + binding.viewBgGrab1.isEnabled = enable + binding.viewBgGrab10.isEnabled = enable } @SuppressLint("SetTextI18n") private fun switchType() { when (currentType) { BASE -> { - binding.ivPrevious.isVisible = false + binding.ivPrevious.isInvisible = true binding.tvGrabText1.text = "(初级球X1)" binding.tvGrabText10.text = "(初级球X10)" binding.tvTips.text = "使用初级球有一定几率抓到初级精灵" binding.viewBgForestBase.setBackgroundResource(R.drawable.treasure_fairy_bg_forest_base) } EPIC -> { - binding.ivNext.isVisible = true - binding.ivNext.isVisible = true + binding.ivNext.isInvisible = false + binding.ivPrevious.isInvisible = false binding.tvGrabText1.text = "(超级球X1)" binding.tvGrabText10.text = "(超级球X10)" binding.tvTips.text = "使用超级球有一定几率抓到史诗精灵" binding.viewBgForestBase.setBackgroundResource(R.drawable.treasure_fairy_bg_forest_epic) } LEGEND -> { - binding.ivNext.isVisible = false + binding.ivNext.isInvisible = true binding.tvGrabText1.text = "(大师球X1)" binding.tvGrabText10.text = "(大师球X10)" binding.tvTips.text = "使用大师球必定抓到传说精灵" diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestIndicatorAdapter.java b/app/src/main/java/com/mango/moshen/treasurefairy/ForestIndicatorAdapter.java new file mode 100644 index 000000000..2d2146d9a --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestIndicatorAdapter.java @@ -0,0 +1,96 @@ +package com.mango.moshen.treasurefairy; + +import android.content.Context; +import android.graphics.Color; +import android.view.Gravity; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.mango.moshen.R; +import com.mango.moshen.ui.widget.XRecyclerView.ScaleTransitionPagerTitleView; +import com.mango.moshen.ui.widget.magicindicator.buildins.UIUtil; +import com.mango.moshen.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter; +import com.mango.moshen.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator; +import com.mango.moshen.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView; +import com.mango.moshen.ui.widget.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator; + +import java.util.List; + +public class ForestIndicatorAdapter extends CommonNavigatorAdapter { + private final Context mContext; + private final List mTitleList; + + private int textSize = 15; + private float minScale = 1f; + private OnItemSelectListener mOnItemSelectListener; + + public ForestIndicatorAdapter(Context context, List charSequences) { + this.mContext = context; + this.mTitleList = charSequences; + } + + @Override + public int getCount() { + return mTitleList == null ? 0 : mTitleList.size(); + } + + @Override + public IPagerTitleView getTitleView(Context context, final int i) { + ScaleTransitionPagerTitleView scaleTransitionPagerTitleView = new ScaleTransitionPagerTitleView(context, true); + scaleTransitionPagerTitleView.setNormalColor(ContextCompat.getColor(context, R.color.white)); + scaleTransitionPagerTitleView.setSelectedColor(ContextCompat.getColor(context, R.color.white)); + scaleTransitionPagerTitleView.setMinScale(minScale); + scaleTransitionPagerTitleView.setTextSize(textSize); + int padding = UIUtil.dip2px(context, 12); + scaleTransitionPagerTitleView.setPadding(padding, 0, padding, 0); + scaleTransitionPagerTitleView.setText(mTitleList.get(i)); + scaleTransitionPagerTitleView.setOnClickListener(view -> { + if (mOnItemSelectListener != null) { + mOnItemSelectListener.onItemSelect(i, scaleTransitionPagerTitleView); + } + + }); + return scaleTransitionPagerTitleView; + } + + @Override + 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, 2)); + indicator.setLineWidth(UIUtil.dip2px(mContext, 60)); + indicator.setColors(Color.parseColor("#69FFEB"),Color.parseColor("#EAFF89")); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + lp.gravity = Gravity.BOTTOM; + indicator.setLayoutParams(lp); + return indicator; + } + + public int getTextSize() { + return textSize; + } + + public void setTextSize(int textSize) { + this.textSize = textSize; + } + + public float getMinScale() { + return minScale; + } + + public void setMinScale(float minScale) { + this.minScale = minScale; + } + + public void setOnItemSelectListener(OnItemSelectListener onItemSelectListener) { + mOnItemSelectListener = onItemSelectListener; + } + + public interface OnItemSelectListener { + void onItemSelect(int position, TextView view); + } +} diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeAdapter.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeAdapter.kt index 49b9c99db..1ee02b468 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeAdapter.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeAdapter.kt @@ -7,8 +7,14 @@ import com.mango.moshen.R import com.mango.moshen.ui.utils.load import com.mango.core.treasurefairy.PrizeInfo -class ForestPrizeAdapter : - BaseQuickAdapter(R.layout.treasure_fairy_item_forest_prize) { +class ForestPrizeAdapter(val isSingle: Boolean = false) : + BaseQuickAdapter( + if (isSingle) { + R.layout.treasure_fairy_item_forest_prize_single + } else { + R.layout.treasure_fairy_item_forest_prize + } + ) { override fun convert(helper: BaseViewHolder, item: PrizeInfo) { helper.getView(R.id.iv_prize_icon).load(item.rewardPicUrl) diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeDialog.kt index 24db60b7f..da47b5a69 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeDialog.kt @@ -4,10 +4,12 @@ import android.annotation.SuppressLint import android.os.Bundle import android.view.Gravity import android.view.WindowManager +import androidx.constraintlayout.widget.ConstraintLayout import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import com.mango.core.treasurefairy.PrizeInfo +import com.mango.moshen.R import com.mango.moshen.base.BaseDialog import com.mango.moshen.databinding.TreasureFairyDialogForestPrizeBinding import com.mango.moshen.ui.utils.RVDelegate @@ -23,8 +25,9 @@ class ForestPrizeDialog : BaseDialog() { private val viewModel: FairyViewModel by activityViewModels() companion object { - fun newInstance(): ForestPrizeDialog { + fun newInstance(isFairy: Boolean = false): ForestPrizeDialog { val args = Bundle() + args.putBoolean("isFairy", isFairy) val fragment = ForestPrizeDialog() fragment.arguments = args return fragment @@ -36,16 +39,41 @@ class ForestPrizeDialog : BaseDialog() { binding.tvClose.setOnClickListener { dismissAllowingStateLoss() } - prizeAdapter = ForestPrizeAdapter() + val prizeInfoList = viewModel.drawForestLiveData.value?.peekContent() + if (prizeInfoList.isNullOrEmpty()) return + val isSingle = prizeInfoList.size == 1 + val hasSurprise = prizeInfoList.find { it.propType == 1 } != null + val isFairy = + requireArguments().getBoolean("isFairy", true) || !hasSurprise + binding.tvTitle.text = if (isFairy) "获得精灵" else "意外发现" + if (!isFairy && !isSingle && hasSurprise) { + newInstance(true).show(context) + } + val showPrizeInfoList = + prizeInfoList.filter { if (isFairy) (it.propType != 1) else (it.propType == 1) } + val isShowDateSingle = showPrizeInfoList.size == 1 + if (!isShowDateSingle) { + binding.viewBg.setBackgroundResource(R.drawable.treasure_fairy_bg_forest_prize) + val layoutParams = binding.viewBg.layoutParams as ConstraintLayout.LayoutParams + layoutParams.dimensionRatio = "636:766" + layoutParams.matchConstraintPercentWidth = 0.85f + binding.viewBg.layoutParams = layoutParams + } + prizeAdapter = ForestPrizeAdapter(isShowDateSingle) rvDelegate = RVDelegate.Builder() .setAdapter(prizeAdapter) .setRecyclerView(binding.recyclerView) - .setLayoutManager(GridLayoutManager(context, 3, LinearLayoutManager.VERTICAL, false)) + .setLayoutManager( + if (isShowDateSingle) { + LinearLayoutManager(context) + } else { + GridLayoutManager(context, 3, LinearLayoutManager.VERTICAL, false) + } + ) .build() - viewModel.drawForestLiveData.observe(viewLifecycleOwner) { event -> - rvDelegate.setNewData(event.peekContent()) - } + rvDelegate.setNewData(showPrizeInfoList) + } } \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesFragment.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesFragment.kt index 63163ea0c..d741a38fb 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesFragment.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesFragment.kt @@ -42,7 +42,7 @@ class ForestPrizesFragment : BaseViewBindingFragment viewPager.currentItem = position } diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/HomeFairyActivity.kt b/app/src/main/java/com/mango/moshen/treasurefairy/HomeFairyActivity.kt index 9ffc4b265..96a791257 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/HomeFairyActivity.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/HomeFairyActivity.kt @@ -4,12 +4,15 @@ import android.animation.ObjectAnimator import android.annotation.SuppressLint import android.content.Context import android.content.Intent +import android.graphics.Color import android.graphics.Path +import android.text.style.ForegroundColorSpan import android.view.* import android.widget.LinearLayout import android.widget.TextView import androidx.activity.viewModels import androidx.core.content.ContextCompat +import androidx.core.graphics.toColorInt import com.mango.core.UriProvider import com.mango.core.treasurefairy.PrizeInfo import com.mango.moshen.R @@ -17,7 +20,7 @@ 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.FairyDialogWebViewActivity -import com.netease.nim.uikit.common.ui.dialog.CustomPopupWindow +import com.mango.moshen.utils.SpannableBuilder import com.netease.nim.uikit.common.util.sys.ScreenUtil import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers @@ -87,16 +90,7 @@ class HomeFairyActivity : BaseViewBindingActivity event?.getContentIfNotHandled()?.let { - targetIndex = viewModel.prizeInfoListLiveData.value?.indexOf(it[0]) ?: -1 + targetIndex = viewModel.prizeInfoListLiveData.value?.indexOf(it[0]) ?: -2 + if (targetIndex == -2) { + viewModel.initPrizeInfoList() + } hintPrizeCacheList.addAll(it.filter { prizeInfo -> prizeInfo.rewardLevel >= 3 }) } ?: run { targetIndex = -1 @@ -131,7 +128,13 @@ class HomeFairyActivity : BaseViewBindingActivity= 24) { + if (targetIndex != -2) { + fairyItems[selectIndex].isSelected = true + } + if ((selectIndex == targetIndex || targetIndex == -2) && minCount >= 24) { HomePrizeDialog.newInstance().show(context) disposable?.dispose() } } + .doFinally { enabledOpenBtn(true) } .subscribe() } + private fun enabledOpenBtn(enable: Boolean) { + binding.ivOpen1.isEnabled = enable + binding.ivOpen10.isEnabled = enable + binding.ivOpen100.isEnabled = enable + } + @SuppressLint("CheckResult") private fun looperHintPrize() { Observable.interval(0, 250, TimeUnit.MILLISECONDS) diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/HomeMorePopupWindow.kt b/app/src/main/java/com/mango/moshen/treasurefairy/HomeMorePopupWindow.kt new file mode 100644 index 000000000..6050f7059 --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/HomeMorePopupWindow.kt @@ -0,0 +1,37 @@ +package com.mango.moshen.treasurefairy + +import android.content.Context +import android.graphics.Color +import android.view.View +import com.mango.core.UriProvider +import com.mango.moshen.R +import com.mango.moshen.ui.webview.FairyDialogWebViewActivity +import razerdp.basepopup.BasePopupWindow + +class HomeMorePopupWindow(private val context: Context) : BasePopupWindow(context) { + + init { + contentView = createPopupById(R.layout.treasure_fairy_popup_window_home_more) + setOutSideDismiss(true) + setBackgroundColor(Color.TRANSPARENT) + setPopupAnimationStyle(-1) + findViewById(R.id.tv_rule).setOnClickListener { + FairyDialogWebViewActivity.start(context, UriProvider.getFairyRule()) + dismiss() + } + findViewById(R.id.tv_record).setOnClickListener { + FairyDialogWebViewActivity.start(context, UriProvider.getFairyRecord()) + dismiss() + } + findViewById(R.id.tv_rank).setOnClickListener { + FairyDialogWebViewActivity.start(context, UriProvider.getFairySuperior()) + dismiss() + } + } + + fun show(anchor: View?, popupGravity: Int) { + setPopupGravity(popupGravity) + showPopupWindow(anchor) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeAdapter.kt b/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeAdapter.kt index 1ecf96069..3c984d769 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeAdapter.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeAdapter.kt @@ -8,8 +8,14 @@ import com.mango.moshen.ui.utils.load import com.mango.core.room.game.GameInfo import com.mango.core.treasurefairy.PrizeInfo -class HomePrizeAdapter : - BaseQuickAdapter(R.layout.treasure_fairy_item_home_prize) { +class HomePrizeAdapter(val isSingle: Boolean = false) : + BaseQuickAdapter( + if (isSingle) { + R.layout.treasure_fairy_item_home_prize_single + } else { + R.layout.treasure_fairy_item_home_prize + } + ) { override fun convert(helper: BaseViewHolder, item: PrizeInfo) { helper.getView(R.id.iv_prize_icon).load(item.rewardPicUrl) diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeDialog.kt index c274fd9f4..6f6572a57 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeDialog.kt @@ -9,6 +9,7 @@ import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import com.mango.core.room.game.GameInfo import com.mango.core.treasurefairy.PrizeInfo +import com.mango.moshen.R import com.mango.moshen.base.BaseDialog import com.mango.moshen.databinding.TreasureFairyDialogHomePrizeBinding import com.mango.moshen.ui.utils.RVDelegate @@ -36,16 +37,22 @@ class HomePrizeDialog : BaseDialog() { binding.rootView.setOnClickListener { dismissAllowingStateLoss() } - prizeAdapter = HomePrizeAdapter() + val prizeInfoList = viewModel.resultLiveData.value?.peekContent() + if (prizeInfoList.isNullOrEmpty()) return + val isSingle = prizeInfoList.size == 1 + prizeAdapter = HomePrizeAdapter(isSingle) rvDelegate = RVDelegate.Builder() .setAdapter(prizeAdapter) .setRecyclerView(binding.recyclerView) - .setLayoutManager(GridLayoutManager(context, 4, LinearLayoutManager.VERTICAL, false)) + .setLayoutManager( + if (isSingle) { + LinearLayoutManager(context) + } else { + GridLayoutManager(context, 4, LinearLayoutManager.VERTICAL, false) + } + ) .build() - - viewModel.resultLiveData.observe(viewLifecycleOwner) { event -> - rvDelegate.setNewData(event.peekContent()) - } + rvDelegate.setNewData(prizeInfoList) } } \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/MyFairyDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/MyFairyDialog.kt index 20688334f..5545cc1b9 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/MyFairyDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/MyFairyDialog.kt @@ -29,6 +29,9 @@ class MyFairyDialog : BaseDialog() { @SuppressLint("CheckResult") override fun init() { + binding.ivBack.setOnClickListener { + dismissAllowingStateLoss() + } binding.rg.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.rb_base -> binding.viewPager.currentItem = 0 diff --git a/app/src/main/java/com/mango/moshen/ui/widget/magicindicator/buildins/commonnavigator/indicators/LinePagerIndicator.java b/app/src/main/java/com/mango/moshen/ui/widget/magicindicator/buildins/commonnavigator/indicators/LinePagerIndicator.java index a8a787089..eae957598 100644 --- a/app/src/main/java/com/mango/moshen/ui/widget/magicindicator/buildins/commonnavigator/indicators/LinePagerIndicator.java +++ b/app/src/main/java/com/mango/moshen/ui/widget/magicindicator/buildins/commonnavigator/indicators/LinePagerIndicator.java @@ -2,8 +2,10 @@ package com.mango.moshen.ui.widget.magicindicator.buildins.commonnavigator.indic import android.content.Context; import android.graphics.Canvas; +import android.graphics.LinearGradient; import android.graphics.Paint; import android.graphics.RectF; +import android.graphics.Shader; import android.view.View; import android.view.animation.Interpolator; import android.view.animation.LinearInterpolator; @@ -27,7 +29,9 @@ public class LinePagerIndicator extends View implements IPagerIndicator { public static final int MODE_MATCH_EDGE = 0; // 直线宽度 == title宽度 - 2 * mXOffset public static final int MODE_WRAP_CONTENT = 1; // 直线宽度 == title内容宽度 - 2 * mXOffset public static final int MODE_EXACTLY = 2; // 直线宽度 == mLineWidth - + private final int[] mGradientColors = {0xFF5BC8F8, 0xFF66D9D9}; + //渐变位置 + private final float[] mGradientPosition = new float[]{0, 1}; private int mMode; // 默认为MODE_MATCH_EDGE模式 // 控制动画 @@ -69,14 +73,6 @@ public class LinePagerIndicator extends View implements IPagerIndicator { return; } - // 计算颜色 - if (mColors != null && mColors.size() > 0) { - int currentColor = mColors.get(Math.abs(position) % mColors.size()); - int nextColor = mColors.get(Math.abs(position + 1) % mColors.size()); - int color = ArgbEvaluatorHolder.eval(positionOffset, currentColor, nextColor); - mPaint.setColor(color); - } - // 计算锚点位置 PositionData current = FragmentContainerHelper.getImitativePositionData(mPositionDataList, position); PositionData next = FragmentContainerHelper.getImitativePositionData(mPositionDataList, position + 1); @@ -106,13 +102,23 @@ public class LinePagerIndicator extends View implements IPagerIndicator { mLineRect.right = rightX + (nextRightX - rightX) * mEndInterpolator.getInterpolation(positionOffset); mLineRect.top = getHeight() - mLineHeight - mYOffset; mLineRect.bottom = getHeight() - mYOffset; + // 计算颜色 + if (mColors != null && mColors.size() > 0) { + if (mColors.size() == 1) { + mPaint.setColor(mColors.get(0)); + } else { + mGradientColors[0] = mColors.get(0); + mGradientColors[1] = mColors.get(1); + mPaint.setShader(new LinearGradient(mLineRect.left, mLineRect.top, mLineRect.right, mLineRect.bottom, mGradientColors, mGradientPosition, Shader.TileMode.CLAMP)); + } + } invalidate(); } @Override public void onPageSelected(int position) { - onPageScrolled(position,0,0); + onPageScrolled(position, 0, 0); } @Override diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize.png index b69a6d065..dd51bca59 100644 Binary files a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize.png and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize_single.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize_single.png new file mode 100644 index 000000000..b69a6d065 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize_single.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_home_popup_window.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_home_popup_window.png new file mode 100644 index 000000000..40cf17ca2 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_home_popup_window.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_back.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_back.png new file mode 100644 index 000000000..52027eef1 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_back.png differ diff --git a/app/src/main/res/layout/treasure_fairy_dialog_forest.xml b/app/src/main/res/layout/treasure_fairy_dialog_forest.xml index e1ef11277..9305c652a 100644 --- a/app/src/main/res/layout/treasure_fairy_dialog_forest.xml +++ b/app/src/main/res/layout/treasure_fairy_dialog_forest.xml @@ -27,6 +27,16 @@ app:layout_constraintTop_toTopOf="@id/view_bg" app:layout_constraintWidth_percent="0.408" /> + + @@ -254,10 +266,11 @@ android:src="@drawable/default_cover" /> @@ -268,10 +281,11 @@ android:src="@drawable/default_cover" /> diff --git a/app/src/main/res/layout/treasure_fairy_dialog_forest_prize.xml b/app/src/main/res/layout/treasure_fairy_dialog_forest_prize.xml index 96bb5a66e..62ac629b1 100644 --- a/app/src/main/res/layout/treasure_fairy_dialog_forest_prize.xml +++ b/app/src/main/res/layout/treasure_fairy_dialog_forest_prize.xml @@ -10,7 +10,7 @@ android:id="@+id/view_bg" android:layout_width="0dp" android:layout_height="0dp" - android:background="@drawable/treasure_fairy_bg_forest_prize" + android:background="@drawable/treasure_fairy_bg_forest_prize_single" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintDimensionRatio="562:570" app:layout_constraintEnd_toEndOf="parent" @@ -40,7 +40,7 @@ android:layout_marginTop="16dp" android:layout_marginEnd="20dp" android:layout_marginBottom="18dp" - app:layout_constraintBottom_toTopOf="@id/iv_close" + app:layout_constraintBottom_toTopOf="@id/tv_close" app:layout_constraintEnd_toEndOf="@id/view_bg" app:layout_constraintStart_toStartOf="@id/view_bg" app:layout_constraintTop_toBottomOf="@id/tv_title" /> diff --git a/app/src/main/res/layout/treasure_fairy_dialog_forest_record.xml b/app/src/main/res/layout/treasure_fairy_dialog_forest_record.xml index 57935e78c..064e15ba2 100644 --- a/app/src/main/res/layout/treasure_fairy_dialog_forest_record.xml +++ b/app/src/main/res/layout/treasure_fairy_dialog_forest_record.xml @@ -12,7 +12,7 @@ android:layout_height="0dp" android:background="@drawable/treasure_fairy_bg_forest_record" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintDimensionRatio="562:570" + app:layout_constraintDimensionRatio="631:772" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -58,6 +58,10 @@ android:id="@+id/view_pager" android:layout_width="0dp" android:layout_height="0dp" + android:layout_marginTop="24dp" + android:layout_marginStart="15dp" + android:layout_marginEnd="15dp" + android:layout_marginBottom="30dp" app:layout_constraintBottom_toBottomOf="@id/view_bg" app:layout_constraintEnd_toEndOf="@id/view_bg" app:layout_constraintStart_toStartOf="@id/view_bg" diff --git a/app/src/main/res/layout/treasure_fairy_dialog_my_fairy.xml b/app/src/main/res/layout/treasure_fairy_dialog_my_fairy.xml index c91e996c8..9e7f41c73 100644 --- a/app/src/main/res/layout/treasure_fairy_dialog_my_fairy.xml +++ b/app/src/main/res/layout/treasure_fairy_dialog_my_fairy.xml @@ -16,6 +16,16 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> + + diff --git a/app/src/main/res/layout/treasure_fairy_fragment_forest_record.xml b/app/src/main/res/layout/treasure_fairy_fragment_forest_record.xml index 8cac2a9c5..5638a5d21 100644 --- a/app/src/main/res/layout/treasure_fairy_fragment_forest_record.xml +++ b/app/src/main/res/layout/treasure_fairy_fragment_forest_record.xml @@ -40,8 +40,8 @@ - + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="20dp" /> diff --git a/app/src/main/res/layout/treasure_fairy_item_forest_prize_single.xml b/app/src/main/res/layout/treasure_fairy_item_forest_prize_single.xml new file mode 100644 index 000000000..5f659b2c7 --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_item_forest_prize_single.xml @@ -0,0 +1,36 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/treasure_fairy_item_home_prize_single.xml b/app/src/main/res/layout/treasure_fairy_item_home_prize_single.xml new file mode 100644 index 000000000..03456fb7a --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_item_home_prize_single.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/treasure_fairy_popup_window_home_more.xml b/app/src/main/res/layout/treasure_fairy_popup_window_home_more.xml new file mode 100644 index 000000000..298b04d6d --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_popup_window_home_more.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/core/src/main/java/com/mango/core/treasurefairy/ForestInfo.kt b/core/src/main/java/com/mango/core/treasurefairy/ForestInfo.kt index 7c158fcd8..09b2e2ddc 100644 --- a/core/src/main/java/com/mango/core/treasurefairy/ForestInfo.kt +++ b/core/src/main/java/com/mango/core/treasurefairy/ForestInfo.kt @@ -3,9 +3,9 @@ package com.mango.core.treasurefairy data class ForestInfo( val avatar: String = "", val erbanNo: Int = 0, - val highBallNum: Int = 0, - val lowBallNum: Int = 0, - val middleBallNum: Int = 0, + val highBallNum: String = "0", + val lowBallNum: String = "0", + val middleBallNum: String = "0", val nick: String = "", val uid: Int = 0 ) \ No newline at end of file diff --git a/core/src/main/java/com/mango/core/treasurefairy/PrizeInfo.kt b/core/src/main/java/com/mango/core/treasurefairy/PrizeInfo.kt index 02ac10cdc..3dcd9f6fd 100644 --- a/core/src/main/java/com/mango/core/treasurefairy/PrizeInfo.kt +++ b/core/src/main/java/com/mango/core/treasurefairy/PrizeInfo.kt @@ -10,7 +10,8 @@ data class PrizeInfo( val rewardType: String = "", val rewardUnit: String = "", val drawTime: Long = 0, - val poolLevel: Int = 0 + val poolLevel: Int = 0, + val propType: Int? = null ) { override fun equals(other: Any?): Boolean { if (this === other) return true