航海增加svga效果

This commit is contained in:
huangjian
2022-08-19 19:04:02 +08:00
parent 03621f4c15
commit ca1594dcd6
23 changed files with 160 additions and 95 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -20,6 +20,7 @@ import android.widget.RelativeLayout
import android.widget.TextView
import androidx.annotation.CallSuper
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.BaseQuickAdapter
@@ -55,6 +56,7 @@ import com.yizhuan.erban.event.OpenRoomIntroEvent
import com.yizhuan.erban.friend.view.SelectFriendActivity
import com.yizhuan.erban.home.adapter.RoomActAdapter
import com.yizhuan.erban.home.adapter.RoomActAdapter.RoomActClickListener
import com.yizhuan.erban.shipantics.PullRadishActivity
import com.yizhuan.erban.treasure_box.widget.GoldBoxHelper
import com.yizhuan.erban.ui.utils.loadAvatar
import com.yizhuan.erban.ui.webview.DialogWebViewActivity
@@ -83,6 +85,7 @@ import com.yizhuan.xchat_android_core.helper.AtProxy
import com.yizhuan.xchat_android_core.home.bean.BannerInfo
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.initial.InitialModel
import com.yizhuan.xchat_android_core.magic.bean.MagicInfo
import com.yizhuan.xchat_android_core.manager.AudioEngineManager
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
@@ -138,6 +141,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
protected lateinit var inputSend: ImageView
protected lateinit var microView: MicroView
private var musicPlayerView: MusicPlayerView? = null
private var ivRadishEntrance: View? = null
private var mVsMusicPlayer: ViewStub? = null
private var mDisposable: Disposable? = null
private var isCloseScreen = false
@@ -183,6 +187,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
inputSend = mView.findViewById(R.id.input_send)
microView = mView.findViewById(R.id.micro_view)
mVsMusicPlayer = mView.findViewById(R.id.vs_music_player)
ivRadishEntrance = mView.findViewById(R.id.iv_radish_entrance)
messageView.setClickConsumer {
if (!TextUtils.isEmpty(it) && it != "0") {
showUserCardDialog(it)
@@ -266,6 +271,10 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
checkFollowOwner()
mvpPresenter?.loadRoomRank()
GiftValueMrg.get().updateRoomGiftValue(false)
ivRadishEntrance?.isVisible =
(UserModel.get().cacheLoginUserInfo?.userLevelVo?.getExperLevelSeq() ?: 0) >=
(InitialModel.get().cacheInitInfo?.linearlyPoolOpenLevel ?: 999)
}
@CallSuper
@@ -637,6 +646,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
R.id.iv_first_charge_enter -> FirstChargeDialog.start(mContext)
R.id.iv_treasure_box,
R.id.iv_treasure_box_cp -> GoldBoxHelper.handleBoxClick(mContext)
R.id.iv_radish_entrance -> PullRadishActivity.start(mContext)
}
}

View File

@@ -146,8 +146,8 @@ class RoomEffectView @JvmOverloads constructor(
RoomEvent.BOX_NOTIFY -> addBoxNotify(roomEvent.chatRoomMessage)
RoomEvent.DATING_ALL_NOTIFY -> addDatingAllNotify(roomEvent.chatRoomMessage)
RoomEvent.BOX_NOTIFY_SVGA -> addBoxNotifyBySVGA(roomEvent.chatRoomMessage)
RoomEvent.RADISH_NOTIFY -> addRadishNotify(roomEvent.chatRoomMessage)
RoomEvent.RADISH_NOTIFY_SVGA -> addRadishNotifyBySVGA(roomEvent.chatRoomMessage)
RoomEvent.RADISH_NOTIFY,
RoomEvent.RADISH_NOTIFY_SVGA -> addRadishNotify(roomEvent.chatRoomMessage)
RoomEvent.ROOM_GIFT_COMPOUND -> addGiftCompoundNotify(roomEvent.chatRoomMessage)
RoomEvent.RECEIVE_ROOM_LUCKY_BAG_NOTICE, RoomEvent.RECEIVE_SERVICE_LUCKY_BAG_NOTICE -> //全服福袋
//厅内福袋
@@ -520,7 +520,7 @@ class RoomEffectView @JvmOverloads constructor(
val text = SpannableBuilder()
.append("厉害了! ", ForegroundColorSpan(Color.WHITE))
.append(
attachment.nick + " ",
attachment.nick.subAndReplaceDot(6) + " ",
ForegroundColorSpan(resources.getColor(R.color.notice_nick))
)
.append(attachment.boxTypeStr + " 获得", ForegroundColorSpan(Color.WHITE))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -250,7 +250,7 @@
android:id="@+id/iv_first_charge_enter"
android:layout_width="65dp"
android:layout_height="65dp"
android:layout_above="@id/iv_treasure_box"
android:layout_above="@id/iv_radish_entrance"
android:layout_alignParentEnd="true"
android:layout_marginEnd="15dp"
android:layout_marginBottom="6dp"
@@ -259,6 +259,19 @@
android:visibility="gone"
tools:contentDescription="首充红包" />
<ImageView
android:id="@+id/iv_radish_entrance"
android:layout_width="65dp"
android:layout_height="65dp"
android:layout_above="@id/iv_treasure_box"
android:layout_alignParentEnd="true"
android:layout_marginEnd="15dp"
android:layout_marginBottom="6dp"
android:onClick="@{click}"
android:src="@drawable/ic_radish_entrance"
android:visibility="gone"
tools:contentDescription="航海冒险" />
<ImageView
android:id="@+id/iv_treasure_box"
android:layout_width="65dp"

View File

@@ -204,10 +204,23 @@
android:onClick="@{click}"
android:src="@drawable/ic_first_charge_enter"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/iv_treasure_box"
app:layout_constraintBottom_toTopOf="@id/iv_radish_entrance"
app:layout_constraintEnd_toEndOf="parent"
tools:contentDescription="首充红包" />
<ImageView
android:id="@+id/iv_radish_entrance"
android:layout_width="65dp"
android:layout_height="65dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="6dp"
android:onClick="@{click}"
android:src="@drawable/ic_radish_entrance"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/iv_treasure_box"
app:layout_constraintEnd_toEndOf="parent"
tools:contentDescription="航海冒险" />
<ImageView
android:id="@+id/iv_treasure_box"
android:layout_width="65dp"

View File

@@ -12,6 +12,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -71,14 +72,13 @@ public class PullRadishActivity extends BaseBindingActivity<ActivityPullRadishBi
@Override
protected void init() {
mBinding.setClick(this);
ObjectAnimator openXAnimator = ObjectAnimator.ofFloat(mBinding.ivOpen, "scaleX", 1, 0.9f, 1)
ObjectAnimator openXAnimator = ObjectAnimator.ofFloat(mBinding.flOpen, "scaleX", 1, 0.9f, 1)
.setDuration(200);
ObjectAnimator openYAnimator = ObjectAnimator.ofFloat(mBinding.ivOpen, "scaleY", 1, 0.9f, 1)
ObjectAnimator openYAnimator = ObjectAnimator.ofFloat(mBinding.flOpen, "scaleY", 1, 0.9f, 1)
.setDuration(200);
animatorSet = new AnimatorSet()
.setDuration(200);
animatorSet.play(openYAnimator).with(openXAnimator);
mBinding.editNum.addTextChangedListener(new TextWatcherWrapper() {
@Override
public void afterTextChanged(Editable editable) {
@@ -92,9 +92,11 @@ public class PullRadishActivity extends BaseBindingActivity<ActivityPullRadishBi
mBinding.ivBox.setCallback(new SimpleSvgaCallback() {
@Override
public void onFinished() {
mBinding.ivBox.stepToFrame(0, false);
mBinding.ivShip.setVisibility(View.VISIBLE);
}
});
mBinding.checkBox.setChecked(!DemoCache.readRadishTips());
mBinding.checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> DemoCache.saveRadishTips(!isChecked));
}
@Override
@@ -129,16 +131,18 @@ public class PullRadishActivity extends BaseBindingActivity<ActivityPullRadishBi
RadishRankingActivity.start(this);
break;
case R.id.iv_get_key:
DialogWebViewActivity.start(context, UriProvider.getRadishKey(),false);
DialogWebViewActivity.start(context, UriProvider.getRadishKey(), false);
break;
case R.id.iv_open:
case R.id.fl_open:
openBox(StringUtils.toInt(mBinding.editNum.getText().toString(), 0));
break;
case R.id.iv_sub:
mBinding.editNum.setText(openKeyNumbers[keyIndex = Math.max(0, keyIndex - 1)]);
mBinding.tvTips.setText("消耗" + openKeyNumbers[keyIndex] + "燃油连续探索");
break;
case R.id.iv_add:
mBinding.editNum.setText(openKeyNumbers[keyIndex = Math.min(openKeyNumbers.length - 1, keyIndex + 1)]);
mBinding.tvTips.setText("消耗" + openKeyNumbers[keyIndex] + "燃油连续探索");
break;
case R.id.view_bg:
//do nothing
@@ -176,32 +180,45 @@ public class PullRadishActivity extends BaseBindingActivity<ActivityPullRadishBi
if (checkKeyNum(count)) {
return;
}
mBinding.ivOpen.setEnabled(false);
mBinding.ivBox.startAnimation();
mBinding.ivOpen.setPivotY(mBinding.ivOpen.getHeight());
mBinding.flOpen.setEnabled(false);
startBoxAnimation();
mBinding.flOpen.setPivotY(mBinding.flOpen.getHeight());
mBinding.ivShip.setVisibility(View.GONE);
animatorSet.start();
long startTime = System.currentTimeMillis();
RadishModel.get().openBox(boxType, count, true)
.compose(bindToLifecycle())
.doOnError(throwable -> {
mBinding.ivOpen.setEnabled(true);
mBinding.flOpen.setEnabled(true);
SingleToastUtil.showToast(throwable.getMessage());
})
.delay(startTime - System.currentTimeMillis() + 500, TimeUnit.MILLISECONDS)
.toObservable()
.observeOn(AndroidSchedulers.mainThread())
.flatMap(openBoxResult -> {
mBinding.ivOpen.setEnabled(true);
mBinding.flOpen.setEnabled(true);
changeKeyNum(openBoxResult.getRemainKeyNum());
if (openBoxResult.isSpecialStatus()) {
mBinding.svgaSpecial.startAnimation();
}
if (DemoCache.readRadishTips()) {
RadishResultDialog.newInstance(openBoxResult).show(this);
}
mBinding.svgaSpecial.startAnimation();
return Observable.fromIterable(openBoxResult.getPrizeItemList());
})
.filter(prizeInfo -> prizeInfo.getPrizeLevel() > 2)
.subscribe(prizeInfo -> hintPrizeCacheList.add(prizeInfo));
}
//处理打开后svga没解析完成马上开箱的情况
private void startBoxAnimation() {
if (mBinding.ivBox.getDrawable() == null) {
mBinding.ivBox.postDelayed(this::startBoxAnimation, 100);
} else {
mBinding.ivBox.startAnimation();
}
}
@SuppressLint("CheckResult")
private void looperHintPrize() {

View File

@@ -31,6 +31,7 @@ class RadishResultDialog :
return fragment
}
}
private val openBoxResult: OpenBoxResult by lazy { requireArguments().getSerializable("openBoxResult")!! as OpenBoxResult }
private lateinit var rvDelegate: RVDelegate<PrizeInfo>
@@ -54,12 +55,12 @@ class RadishResultDialog :
.build()
rvDelegate.setNewData(openBoxResult.prizeItemList)
binding.ivClose.setOnClickListener { dismissAllowingStateLoss() }
binding.checkBox.setOnCheckedChangeListener { _, isChecked ->
DemoCache.saveRadishTips(!isChecked)
if (openBoxResult.isSpecialStatus) {
binding.root.setBackgroundResource(R.drawable.pull_radish_result_bg_special)
}
binding.ivClose.setOnClickListener { dismissAllowingStateLoss() }
binding.root.alpha = 0f
binding.root.animate().alpha(1f).setDuration(500).start()
}
}

View File

@@ -5,7 +5,6 @@ import android.content.Context;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
import com.yizhuan.erban.shipantics.PullRadishActivity;
import com.yizhuan.erban.treasure_box.activity.TreasureBoxActivity;
import com.yizhuan.erban.treasure_box.activity.TreasureBoxHonourActivity;
import com.yizhuan.erban.treasure_box.fragment.ChooseTreasureBoxDialogFragment;
@@ -68,8 +67,7 @@ public class GoldBoxHelper {
});
chooseTreasureBoxDialogFragment.show(((FragmentActivity) context).getSupportFragmentManager(), "chooseTreasureBoxDialogFragment");
} else {
//TreasureBoxActivity.start(context);
PullRadishActivity.start(context);
TreasureBoxActivity.start(context);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 553 B

After

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 B

After

Width:  |  Height:  |  Size: 663 B

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/pull_radish_open_pressed"/>
<item android:state_focused="true" android:drawable="@drawable/pull_radish_open_pressed"/>
<item android:drawable="@drawable/pull_radish_open_normal"/>
</selector>

View File

@@ -27,6 +27,44 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/iv_ship"
android:layout_width="0dp"
android:layout_height="0dp"
android:onClick="@{click}"
android:src="@drawable/pull_radish_bg_ship"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="750:1030"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/iv_box"
android:layout_width="0dp"
android:layout_height="0dp"
android:onClick="@{click}"
app:autoPlay="false"
app:fillMode="Clear"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="750:1030"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:loopCount="1"
app:source="svga/pull_radish_bg.svga" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/svga_special"
android:layout_width="0dp"
android:layout_height="0dp"
app:autoPlay="false"
app:fillMode="Clear"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="750:1030"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:loopCount="1"
app:source="svga/pull_radish_bg_special.svga" />
<ImageView
android:id="@+id/iv_rank"
android:layout_width="wrap_content"
@@ -58,22 +96,6 @@
app:layout_constraintEnd_toEndOf="@id/iv_rank"
app:layout_constraintTop_toBottomOf="@id/iv_get_key" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/iv_box"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="44dp"
android:onClick="@{click}"
app:autoPlay="false"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/view_bg"
app:layout_constraintWidth_percent="0.80"
app:loopCount="1"
app:source="svga/pull_radish_bg.svga" />
<View
android:id="@+id/view_bottom_bg"
android:layout_width="0dp"
@@ -97,7 +119,6 @@
app:layout_constraintBottom_toBottomOf="@id/view_bottom_bg"
app:layout_constraintStart_toStartOf="@id/view_bottom_bg" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_1"
android:layout_width="0dp"
@@ -150,7 +171,7 @@
android:layout_marginBottom="15dp"
android:onClick="@{click}"
android:src="@drawable/pull_radish_sub"
app:layout_constraintBottom_toTopOf="@id/iv_open"
app:layout_constraintBottom_toTopOf="@id/fl_open"
app:layout_constraintEnd_toStartOf="@id/bg_add_sub" />
<TextView
@@ -178,46 +199,49 @@
app:layout_constraintStart_toEndOf="@id/bg_add_sub"
app:layout_constraintTop_toTopOf="@id/iv_sub" />
<ImageView
android:id="@+id/iv_open"
<FrameLayout
android:id="@+id/fl_open"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:layout_marginBottom="6dp"
android:background="@drawable/pull_radish_open_normal"
android:onClick="@{click}"
android:src="@drawable/click_pull_radish_selector"
app:layout_constraintBottom_toTopOf="@id/tv_tips"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@id/check_box"
app:layout_constraintEnd_toEndOf="@id/view_bg"
app:layout_constraintStart_toStartOf="@id/view_bg" />
app:layout_constraintStart_toStartOf="@id/view_bg">
<TextView
android:id="@+id/tv_tips"
<TextView
android:id="@+id/tv_tips"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="6dp"
android:includeFontPadding="false"
android:text="消耗1燃油连续探索"
android:textColor="#ffa16a2f"
android:textSize="10sp" />
</FrameLayout>
<CheckBox
android:id="@+id/check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:text="消耗1燃油连续探索"
android:textColor="#ffa08161"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="18dp"
android:button="@null"
android:checked="false"
android:drawableStart="@drawable/selector_check_box_radish_tips"
android:drawablePadding="5dp"
android:gravity="center"
android:includeFontPadding="false"
android:text="不展示结果弹窗"
android:textColor="#67431E"
android:textSize="10sp"
app:layout_constraintBottom_toBottomOf="@id/view_bottom_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/svga_gift_bg"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="80dp"
android:layout_marginTop="60dp"
app:autoPlay="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/iv_box"
app:layout_constraintTop_toTopOf="@id/iv_box"
app:loopCount="1"
app:source="svga/bubble_tran_bg.svga"
tools:background="@color/white"
tools:visibility="gone" />
app:layout_constraintEnd_toEndOf="@id/view_bottom_bg"
app:layout_constraintStart_toStartOf="@id/view_bottom_bg" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -25,20 +25,4 @@
android:layout_marginTop="75dp"
android:layout_marginBottom="30dp" />
<CheckBox
android:id="@+id/check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="16dp"
android:button="@null"
android:checked="false"
android:drawableStart="@drawable/selector_check_box_radish_tips"
android:drawablePadding="5dp"
android:gravity="center"
android:includeFontPadding="false"
android:text="不再提示"
android:textColor="#ffe9c57b"
android:textSize="10sp" />
</FrameLayout>

View File

@@ -153,4 +153,6 @@ public class InitInfo implements Serializable {
private int roomBlackListSize;
private double hideCarEffectGiftPrice;
private int linearlyPoolOpenLevel;
}

View File

@@ -7,6 +7,7 @@ public class OpenBoxResult implements Serializable {
private List<PrizeInfo> prizeItemList;
private int remainKeyNum;
private boolean specialStatus;
public List<PrizeInfo> getPrizeItemList() {
return prizeItemList;
@@ -23,4 +24,12 @@ public class OpenBoxResult implements Serializable {
public void setRemainKeyNum(int remainKeyNum) {
this.remainKeyNum = remainKeyNum;
}
public boolean isSpecialStatus() {
return specialStatus;
}
public void setSpecialStatus(boolean specialStatus) {
this.specialStatus = specialStatus;
}
}