宝箱UI和动画

This commit is contained in:
huangjian
2020-04-30 20:56:49 +08:00
parent 5927355004
commit 3f8705a812
44 changed files with 933 additions and 794 deletions

View File

@@ -34,7 +34,6 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 多媒体相关 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 如果需要实时音视频通话模块,下面的权限也是必须的。否则,可以不加 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
@@ -86,6 +85,7 @@
android:resizeableActivity="true"
android:theme="@style/MyMaterialTheme"
android:usesCleartextTraffic="true"
android:requestLegacyExternalStorage="true"
tools:replace="android:name, android:allowBackup">
<!-- 高德地图 begin -->
<meta-data
@@ -1192,6 +1192,8 @@
android:label="一键登录"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
<activity android:name=".ui.webview.DialogWebViewActivity"
android:theme="@style/dialog_web_view_activity"/>
</application>

Binary file not shown.

Binary file not shown.

View File

@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Looper;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -28,6 +29,7 @@ import com.yizhuan.erban.R;
import com.yizhuan.erban.common.widget.CircleImageView;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
import com.yizhuan.erban.ui.webview.DialogWebViewActivity;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.erban.utils.RegexUtil;
import com.yizhuan.xchat_android_core.UriProvider;
@@ -176,8 +178,8 @@ public class MicroViewAdapter extends BaseMicroViewAdapter {
tvCharmValue.setText(GiftValueFormat.longToString(longValue));
llCharmClick.setOnClickListener(v -> {
if (info.mChatRoomMember != null) {
CommonWebViewActivity.start(context,
UriProvider.getPersonalCharismaRank() + "?uid=" + info.mChatRoomMember.getAccount());
DialogWebViewActivity.start(context,
UriProvider.getPersonalCharismaRank() + "?uid=" + info.mChatRoomMember.getAccount(),false);
}
});
llCharmClick.setOnLongClickListener(v -> {

View File

@@ -3,20 +3,26 @@ package com.yizhuan.erban.avroom.fragment;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import androidx.lifecycle.ViewModelProviders;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import androidx.databinding.DataBindingUtil;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.ViewPager;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewStub;
@@ -171,6 +177,7 @@ 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;
import com.yizhuan.xchat_android_core.utils.ActivityUtil;
import com.yizhuan.xchat_android_core.utils.StringUtils;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_core.utils.net.ErrorConsumer;
@@ -1003,6 +1010,7 @@ public class HomePartyRoomFragment extends BaseMvpFragment<IHomePartyView, HomeP
* 左上角的活动,比较特殊,并且能触发暴走倒计时
*/
private List<ActionDialogInfo> specialActivities = new ArrayList<>();
/**
* 显示活动图标
*/
@@ -1184,7 +1192,7 @@ public class HomePartyRoomFragment extends BaseMvpFragment<IHomePartyView, HomeP
microView.bindAdapter(new CpMicroViewAdapter(mContext));
}
} else if (AvRoomDataManager.get().isOpenKTV()){
} else if (AvRoomDataManager.get().isOpenKTV()) {
if (!microType.equals(BaseMicroViewAdapter.MICRO_TYPE_KTV)) {
microView.bindAdapter(new KtvMicroViewAdapter(mContext));
}
@@ -2260,7 +2268,7 @@ public class HomePartyRoomFragment extends BaseMvpFragment<IHomePartyView, HomeP
if (roomInfo == null) return;
if (roomInfo.isCloseScreen()) {
getMvpPresenter().roomOperate(SuperAdminModel.OPEN_PUBLIC_SCREEN);
}else {
} else {
getMvpPresenter().roomOperate(SuperAdminModel.CLOSE_PUBLIC_SCREEN);
}
AvRoomModel.get().closeScreen(roomInfo.getRoomId(),

View File

@@ -13,6 +13,8 @@ import android.net.http.SslError;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import androidx.annotation.LayoutRes;
import androidx.core.app.ActivityCompat;
import android.text.TextUtils;
import android.view.View;
@@ -63,7 +65,7 @@ import io.reactivex.schedulers.Schedulers;
*/
public class CommonWebViewActivity extends BaseActivity implements ShareDialog.OnShareDialogItemClick {
private FrameLayout layoutTitleBar;
protected FrameLayout layoutTitleBar;
private WebView webView;
private ProgressBar mProgressBar;
private CommonWebViewActivity mActivity;
@@ -146,7 +148,7 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_common_web_view);
setContentView(getLayoutId());
Intent intent = getIntent();
url = intent.getStringExtra("url");
mPosition = intent.getIntExtra(POSITION, 0) + 1;
@@ -171,6 +173,10 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O
});
EventBus.getDefault().register(this);
}
@LayoutRes
protected int getLayoutId(){
return R.layout.activity_common_web_view;
}
private void setListener() {
imgShare.setOnClickListener(v -> {

View File

@@ -0,0 +1,41 @@
package com.yizhuan.erban.ui.webview;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.yizhuan.erban.R;
public class DialogWebViewActivity extends CommonWebViewActivity {
private boolean showTitleBar;
public static void start(Context context, String url) {
start(context, url, true);
}
public static void start(Context context, String url, boolean showTitleBar) {
Intent intent = new Intent(context, DialogWebViewActivity.class);
intent.putExtra("url", url);
intent.putExtra("showTitleBar", showTitleBar);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, ScreenUtil.screenHeight / 3 * 2);
getWindow().setGravity(Gravity.BOTTOM);
showTitleBar = getIntent().getBooleanExtra("showTitleBar", true);
if (!showTitleBar) layoutTitleBar.setVisibility(View.GONE);
}
@Override
protected int getLayoutId() {
return R.layout.activity_dialog_web_view;
}
}

View File

@@ -444,7 +444,7 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
// 这个方法能让图片不失真
ImageLoadUtils.laodUsrInfoAvatar(context, userInfo.getAvatar(), avatar);
nick.setText(RegexUtil.getPrintableString(userInfo.getNick()));
erbanId.setText("66号" + userInfo.getErbanNo());
erbanId.setText("66号:" + userInfo.getErbanNo());
ivGender.setImageResource(
userInfo.getGender() == 1 ? R.drawable.ic_gender_male : R.drawable.ic_gender_female);

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- <translate
android:duration="5000"
android:fromYDelta="50%p"
android:fromXDelta="50%p"
android:toYDelta="100%p"
android:toXDelta="100%p"/>-->
<scale
android:duration="300"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:repeatMode="reverse"
android:pivotY="50%"
android:repeatCount="-1"
android:toXScale="1.5"
android:toYScale="1.5" />
</set>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/black_transparent_20"/>
<solid android:color="@color/white_transparent_20"/>
<corners android:bottomRightRadius="0dp"
android:topRightRadius="0dp"
android:bottomLeftRadius="13dp"
android:topLeftRadius="13dp"/>
<corners android:bottomRightRadius="13dp"
android:topRightRadius="13dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="0dp"/>
</shape>

View File

@@ -2,7 +2,7 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="#f0f0f0" />
<solid android:color="#ededed" />
</shape>
</item>
<item android:bottom="1px">

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white"/>
<corners android:topLeftRadius="@dimen/dp_10"
android:topRightRadius="@dimen/dp_10"/>
</shape>

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/shape_white_top_10dp"
android:orientation="vertical"
android:paddingTop="10dp">
<FrameLayout
android:id="@+id/layout_title_bar"
android:layout_width="match_parent"
android:layout_height="48dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_back"
android:layout_width="45dp"
android:layout_height="45dp"
android:scaleType="center"
android:src="@drawable/arrow_left" />
<ImageView
android:id="@+id/iv_close"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_gravity="center_vertical|start"
android:scaleType="center"
android:src="@drawable/ic_webview_close" />
</LinearLayout>
<TextView
android:id="@+id/tv_title"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:textColor="@color/color_333333"
android:textSize="18sp" />
<ImageView
android:id="@+id/img_share"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="15dp"
android:src="@drawable/icon_title_share"
android:visibility="gone" />
<TextView
android:id="@+id/tv_title_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="15dp"
android:textColor="@color/text_tertiary"
android:textSize="14sp"
android:visibility="gone"
tools:text="常见问题" />
</FrameLayout>
<ProgressBar
android:id="@+id/progress_bar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="2dp"
android:max="100"
android:progress="0"
android:progressDrawable="@drawable/progress_drawable" />
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
</LinearLayout>

View File

@@ -17,6 +17,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:visibility="gone"
android:orientation="horizontal">
<TextView

View File

@@ -181,6 +181,27 @@
<item name="android:backgroundDimEnabled">false</item>
</style>
<style name="dialog_web_view_activity" parent="Theme.AppCompat.Dialog">
<item name="android:windowFullscreen">true</item>
<!--设置dialog的背景-->
<item name="android:windowBackground">@android:color/transparent</item>
<!--设置Dialog的windowFrame框为无-->
<item name="android:windowFrame">@null</item>
<!--设置无标题-->
<item name="windowNoTitle">true</item>
<!--是否浮现在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--是否半透明-->
<item name="android:windowIsTranslucent">true</item>
<!--设置窗口内容不覆盖-->
<item name="android:windowContentOverlay">@null</item>
<!--设置动画在这里使用让它继承系统的Animation.Dialog-->
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<!--背景是否模糊显示-->
<item name="android:backgroundDimEnabled">true</item>
</style>
<style name="FullScreenDialog" parent="@android:style/Theme.Dialog">
<!--<item name="android:windowBackground">@drawable/filled_activity_bg</item>-->
<item name="android:backgroundDimEnabled">false</item>

View File

@@ -54,7 +54,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="9dp"
android:text="房间榜>"
android:text="房间榜"
android:textColor="@color/white"
android:textSize="12dp" />
@@ -191,7 +191,6 @@
android:layout_width="wrap_content"
android:layout_height="24dp"
android:layout_alignTop="@id/micro_view"
android:layout_alignParentEnd="true"
android:layout_marginTop="6dp"
android:background="@drawable/bg_contribute_entrance"
android:gravity="center"
@@ -199,21 +198,21 @@
android:orientation="horizontal"
android:visibility="@{(ktvModel || roomInfo.type==5) ? View.GONE : View.VISIBLE}">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="房间榜"
android:textColor="@color/white"
android:textSize="12dp" />
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="2dp"
android:src="@drawable/icon_contribute_left" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="9dp"
android:text="房间榜>"
android:textColor="@color/white"
android:textSize="12dp" />
</LinearLayout>
<ImageView

View File

@@ -117,7 +117,7 @@ public class MusicPlayerView extends FrameLayout implements View.OnClickListener
ObjectAnimator objectAnimatorFlag = ObjectAnimator.ofFloat(
musicFlagLayout,
"translationX",
UIUtil.dip2px(getContext(), -59 - 20),
UIUtil.dip2px(getContext(), 59 + 20),
0)
.setDuration(150);
objectAnimatorFlag.setInterpolator(new AccelerateDecelerateInterpolator());
@@ -137,7 +137,7 @@ public class MusicPlayerView extends FrameLayout implements View.OnClickListener
musicFlagLayout,
"translationX",
0,
UIUtil.dip2px(getContext(), -59-20))
UIUtil.dip2px(getContext(), 59 + 20))
.setDuration(150);
objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimator.start();

View File

@@ -2,8 +2,8 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/black_transparent_20" />
<solid android:color="@color/white_transparent_20" />
<corners
android:topRightRadius="12dp"
android:bottomRightRadius="12dp" />
android:topLeftRadius="12dp"
android:bottomLeftRadius="12dp" />
</shape>

View File

@@ -8,29 +8,29 @@
android:id="@+id/music_flag_layout"
android:layout_width="70dp"
android:layout_height="25dp"
android:layout_gravity="end"
android:layout_marginTop="6dp"
android:background="@drawable/bg_room_music_player"
tools:visibility="visible">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="5dp"
android:layout_marginEnd="14dp"
android:lines="1"
android:text="播放音乐"
android:textColor="@color/white"
android:textSize="10sp" />
<ImageView
android:id="@+id/music_flag"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="end|center_vertical"
android:layout_gravity="start|center_vertical"
android:layout_marginEnd="2dp"
android:src="@drawable/icon_music_flag" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="24dp"
android:lines="1"
android:text="播放音乐"
android:textColor="@color/white"
android:textSize="10sp" />
</FrameLayout>

View File

@@ -1,22 +1,39 @@
package com.yizhuan.erban.treasure_box.activity;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseBindingActivity;
import com.yizhuan.erban.databinding.ActivityTreasureBoxBinding;
import com.yizhuan.erban.treasure_box.service.OpenBoxService;
import com.yizhuan.erban.treasure_box.widget.PrizeFactor;
import com.yizhuan.erban.treasure_box.widget.dialog.BaseBindingDialog;
import com.yizhuan.erban.treasure_box.widget.dialog.BoxMoreDialog;
import com.yizhuan.erban.treasure_box.widget.dialog.BuyKeyDialog;
import com.yizhuan.erban.treasure_box.widget.dialog.KeyDeficiencyDialog;
import com.yizhuan.erban.ui.pay.ChargeActivity;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.treasure_box.bean.PrizeInfo;
import com.yizhuan.treasure_box.model.BoxModel;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.exception.FailReasonException;
@@ -31,6 +48,7 @@ import com.yizhuan.treasure_box.event.AutoOpenBoxEvent;
import com.yizhuan.treasure_box.event.BoxBuyKeyEvent;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.utils.StringUtils;
import com.yizhuan.xchat_android_core.utils.net.BalanceNotEnoughExeption;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
import com.yizhuan.xchat_android_library.utils.FormatUtils;
@@ -40,159 +58,130 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
@ActLayoutRes(R.layout.activity_treasure_box)
public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBoxBinding> {
public class TreasureBoxActivity extends BaseBindingDialog<ActivityTreasureBoxBinding> implements View.OnClickListener {
private volatile double gold;
private int price = 20;
private ImageView ivBox;
private Intent autoOpenBoxService;
private volatile int keyNum;
private AnimationDrawable eggAnim;
private ArrayList<PrizeInfo> cacheList = new ArrayList<>();
private Disposable disposable;
public TreasureBoxActivity(Context context) {
super(context);
width = WindowManager.LayoutParams.MATCH_PARENT;
//这里用MATCH_PARENT 通知栏会变黑.......
height = ScreenUtil.screenHeight;
}
public static void start(Context context) {
Intent starter = new Intent(context, TreasureBoxActivity.class);
new TreasureBoxActivity(context).openDialog();
/* Intent starter = new Intent(context, TreasureBoxActivity.class);
//starter.putExtra();
context.startActivity(starter);
context.startActivity(starter);*/
}
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
// requestWindowFeature(Window.FEATURE_NO_TITLE);
// getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
subscribeEvent();
}
ObjectAnimator objectAnimator;
ObjectAnimator objectAnimator1;
@SuppressLint("CheckResult")
@Override
protected void init() {
autoOpenBoxService = new Intent(this, OpenBoxService.class);
mBinding.setClick(this);
ivBox = mBinding.ivBox;
OpenBoxService.isPublic = !OpenBoxService.isAutoOpenBox || OpenBoxService.isPublic;
mBinding.cbNotShow.setChecked(!OpenBoxService.isPublic);
mBinding.cbNotShow.setOnCheckedChangeListener((buttonView, isChecked) -> OpenBoxService.isPublic = !isChecked);
mBinding.rbAuto.setChecked(OpenBoxService.isAutoOpenBox);//如果正在自动砸,需要选中这个
mBinding.rgCount.setOnCheckedChangeListener((group, checkedId) -> {
if (checkedId != R.id.rb_auto && OpenBoxService.isAutoOpenBox) {//正在自动砸的时候点击除了自动砸以外的rb需要停止自动砸
stopService(autoOpenBoxService);
mBinding.ivOpen.setImageResource(R.drawable.auto_open_box_normal);
mBinding.ivBox.setImageResource(R.drawable.box_close_normal);
}
});
binding.setClick(this);
ivBox = binding.ivBox;
objectAnimator = ObjectAnimator.ofFloat(binding.ivGiftAnim,
"translationX", 0, ScreenUtil.screenWidth / 2f).setDuration(500);
objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimator1 = ObjectAnimator.ofFloat(binding.ivGiftAnim,
"translationY", 0, ScreenUtil.screenHeight / 2f + 100).setDuration(500);
objectAnimator1.setInterpolator(new AccelerateDecelerateInterpolator());
BoxModel.get()
.getKeyInfo()
.compose(bindToLifecycle())
.doOnError(throwable -> toast(throwable.getMessage()))
//.compose(bindToLifecycle())
.doOnError(throwable -> SingleToastUtil.showToast(throwable.getMessage()))
.subscribe(keyInfo -> {
changeKeyNum(keyInfo.getKeyNum());
price = keyInfo.getKeyPrice();
});
}
@Override
protected void onResume() {
super.onResume();
WalletInfo walletInfo = PayModel.get().getCurrentWalletInfo();
if (walletInfo != null) gold = walletInfo.getGoldNum();
mBinding.tvCoinCount.setText(FormatUtils.formatBigDecimal(gold));
mBinding.ivOpen.setImageResource(OpenBoxService.isAutoOpenBox ? R.drawable.stop_open_box_normal : R.drawable.auto_open_box_normal);
mBinding.randomLayout.start();
binding.tvDiamondNum.setText(FormatUtils.formatBigDecimal(gold));
binding.randomLayout.start();
EventBus.getDefault().register(this);
looperPrize();
}
/* @Override
@SuppressLint("CheckResult")
protected void onResume() {
super.onResume();
}
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.stv_buy:
showBuyDialog();
break;
case R.id.stv_help:
BoxHelpActivity.start(this, mBinding.getRoot().getHeight(), mBinding.getRoot().getWidth());
/* case R.id.stv_help:
BoxHelpActivity.start(this, binding.getRoot().getHeight(), binding.getRoot().getWidth());
break;
case R.id.stv_jackpot:
BoxPrizeActivity.start(this, mBinding.getRoot().getHeight(), mBinding.getRoot().getWidth());
break;
case R.id.stv_recharge:
ChargeActivity.start(this);
BoxPrizeActivity.start(this, binding.getRoot().getHeight(), binding.getRoot().getWidth());
break;
case R.id.stv_record:
BoxPrizeRecordActivity.start(this, mBinding.getRoot().getHeight(), mBinding.getRoot().getWidth());
break;
case R.id.ib_close:
finish();
BoxPrizeRecordActivity.start(this, binding.getRoot().getHeight(), binding.getRoot().getWidth());
break;*/
case R.id.iv_more:
new BoxMoreDialog(context).openDialog();
break;
case R.id.iv_open:
handleBoxClick();
binding.svgaOpen.startAnimation();
binding.ivOpen.setEnabled(false);
ivBox.setImageResource(R.drawable.box_close_normal);
openBox(StringUtils.toInt(binding.editNum.getText().toString()));
break;
default:
break;
}
}
private void handleBoxClick() {
ivBox.setImageResource(R.drawable.box_close_normal);
switch (mBinding.rgCount.getCheckedRadioButtonId()) {
case R.id.rb_open_once:
mBinding.ivOpen.setEnabled(false);
openBox(1);
break;
case R.id.rb_open_ten:
mBinding.ivOpen.setEnabled(false);
openBox(10);
break;
case R.id.rb_open_hundred:
mBinding.ivOpen.setEnabled(false);
openBox(100);
break;
case R.id.rb_auto:
if (OpenBoxService.isAutoOpenBox) {
stopService(autoOpenBoxService);
mBinding.ivOpen.setImageResource(R.drawable.auto_open_box_normal);
mBinding.ivBox.setImageResource(R.drawable.box_close_normal);
} else {
if (keyNum == 0) {
SingleToastUtil.showToast("请先购买锤子");
break;
}
startService(autoOpenBoxService);
mBinding.ivOpen.setImageResource(R.drawable.stop_open_box_normal);
mBinding.ivBox.setImageResource(R.drawable.egg6);
}
break;
}
}
private void showBuyDialog() {
new BuyKeyDialog(this, price).show();
new BuyKeyDialog(getContext(), price).show();
}
@Override
/* @Override
protected void onPause() {
super.onPause();
mBinding.randomLayout.stop();
EventBus.getDefault().unregister(this);
binding.randomLayout.stop();
}
*/
/**
* 检查钥匙(锤子)数量
*
* @param count 想要使用的数量
* @return true 表示数量不足,无法进行下一步操作
* false 表示数量没问题,可以继续操作
* false 表示数量没问题,可以继续操作
*/
private boolean checkKeyNum(int count) {
if (keyNum == 0) {
@@ -200,58 +189,77 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
return true;
}
if (keyNum < count) {
new KeyDeficiencyDialog(this, count, count - keyNum).show();
new KeyDeficiencyDialog(getContext(), count, count - keyNum).show();
return true;
}
return false;
}
private Runnable runnableClose = () -> mBinding.ivBox.setImageResource(R.drawable.box_close_normal);
private Runnable runnableClose = () -> binding.ivBox.setImageResource(R.drawable.box_close_normal);
private Runnable runnableOpen = () -> {
if (eggAnim == null) {
eggAnim = (AnimationDrawable) getResources().getDrawable(R.drawable.anim_egg);
eggAnim = (AnimationDrawable) getContext().getResources().getDrawable(R.drawable.anim_egg);
} else {
eggAnim.stop();
}
mBinding.ivBox.setImageDrawable(eggAnim);
binding.ivBox.setImageDrawable(eggAnim);
eggAnim.start();
};
@SuppressLint("CheckResult")
private void openBox(int count) {
if (checkKeyNum(count)) {
mBinding.ivOpen.setEnabled(true);
/* if (checkKeyNum(count)) {
binding.ivOpen.setEnabled(true);
return;
}
changeBoxStatus();
}*/
// changeBoxStatus();
BoxModel.get()
.openBox(count, !mBinding.cbNotShow.isChecked())
.compose(bindToLifecycle())
.delay(1, TimeUnit.SECONDS)
.openBox(count, true)
//.compose(bindToLifecycle())
//.delay(1, TimeUnit.SECONDS)
//delay后让转回主线程不然刷新view会有问题
.observeOn(AndroidSchedulers.mainThread())
.doOnError(throwable -> {
mBinding.ivOpen.setEnabled(true);
binding.ivOpen.setEnabled(true);
if (throwable instanceof FailReasonException) {
FailReasonException failReasonException = (FailReasonException) throwable;
switch (failReasonException.getCode()) {
case BoxModel.ERROR_CODE_KEY_NUM_NOT_ENOUGH:
break;
case BalanceNotEnoughExeption.code:
break;
}
}
toast(throwable.getMessage());
SingleToastUtil.showToast(throwable.getMessage());
})
.subscribe(openBoxResult -> {
mBinding.randomLayout.addPrize(openBoxResult.getPrizeItemList());
//binding.svgaOpen.stopAnimation();
//binding.randomLayout.addPrize(openBoxResult.getPrizeItemList());
changeKeyNum(openBoxResult.getRemainKeyNum());
mBinding.ivOpen.setEnabled(true);
binding.ivOpen.setEnabled(true);
cacheList.addAll(openBoxResult.getPrizeItemList());
});
}
private void looperPrize() {
disposable = Observable.interval(0, 600, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.filter(aLong -> cacheList.size() > 0)
.subscribe(aLong -> {
String url = cacheList.get(0).getPrizeImgUrl();
if (cacheList.size() > 0) cacheList.remove(0);
if (!TextUtils.isEmpty(url)) {
objectAnimator.start();
objectAnimator1.start();
binding.svgaGiftBg.startAnimation();
ImageLoadUtils.loadImage(context, url, binding.ivGiftAnim);
}
}
, e -> looperPrize());//出错了继续looper......
}
private void changeBoxStatus() {
ivBox.removeCallbacks(runnableClose);
@@ -262,21 +270,23 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
/**
* 更新钥匙(锤子)数量
*
* @param num
*/
private void changeKeyNum(int num) {
keyNum = num;
mBinding.tvResidueCount.setText(keyNum + "");
binding.tvKeyNum.setText(keyNum + "");
}
/**
* 更新钱包
*
* @param g
*/
private void setGold(double g) {
gold = g;
mBinding.tvCoinCount.setText(FormatUtils.formatBigDecimal(gold));
binding.tvDiamondNum.setText(FormatUtils.formatBigDecimal(gold));
PayModel.get().getCurrentWalletInfo().setGoldNum(g);
}
@@ -284,12 +294,12 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
public void handleAutoOpenBoxEvent(AutoOpenBoxEvent event) {
if (event.isRunning()) {
OpenBoxResult openBoxResult = event.getOpenBoxResult();
mBinding.randomLayout.addPrize(openBoxResult.getPrizeItemList());
binding.randomLayout.addPrize(openBoxResult.getPrizeItemList());
changeKeyNum(openBoxResult.getRemainKeyNum());
if (openBoxResult.getRemainKeyNum() == 0)
mBinding.ivOpen.setImageResource(R.drawable.auto_open_box_normal);
binding.ivOpen.setImageResource(R.drawable.auto_open_box_normal);
} else {
mBinding.ivOpen.setImageResource(R.drawable.auto_open_box_normal);
binding.ivOpen.setImageResource(R.drawable.auto_open_box_normal);
}
}
@@ -298,9 +308,6 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
if (event.isSuccess()) {
KeyInfo keyInfo = event.getKeyInfo();
int goldNum = keyInfo.getGoldNum();
// if (goldNum == gold) {//购买钥匙成功了如果本地数量与服务器返回的金币数量相等,本地扣除下....
// goldNum = (int) (gold - (keyInfo.getKeyNum() - keyNum) * price);
// }
changeKeyNum(keyInfo.getKeyNum());
setGold(goldNum);
if (event.isKeyDeficiency()) {
@@ -322,25 +329,27 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
private void subscribeEvent() {
//更新金币数量和被踢出房间退出
IMNetEaseManager.get().getChatRoomEventObservable()
.compose(bindToLifecycle())
//.compose(bindToLifecycle())
.subscribe(roomEvent -> {
switch (roomEvent.getEvent()) {
case RoomEvent.WALLET_UPDATE:
setGold(roomEvent.getWalletInfo().getGoldNum());
break;
case RoomEvent.KICK_OUT_ROOM:
finish();
closeDialog();
break;
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
mBinding.randomLayout.stop();
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
EventBus.getDefault().unregister(this);
binding.randomLayout.stop();
ivBox.removeCallbacks(runnableOpen);
ivBox.removeCallbacks(runnableClose);
}
}

View File

@@ -15,6 +15,7 @@ import com.yizhuan.erban.base.BaseBindingActivity;
import com.yizhuan.erban.databinding.ActivityTreasureBoxHonourBinding;
import com.yizhuan.erban.treasure_box.service.OpenBoxService;
import com.yizhuan.erban.treasure_box.service.OpenHonourBoxService;
import com.yizhuan.erban.treasure_box.widget.dialog.BoxMoreDialog;
import com.yizhuan.erban.treasure_box.widget.dialog.BuyKeyDialog;
import com.yizhuan.erban.treasure_box.widget.dialog.KeyDeficiencyDialog;
import com.yizhuan.erban.ui.pay.ChargeActivity;
@@ -35,6 +36,7 @@ import com.yizhuan.xchat_android_core.pay.bean.WalletInfo;
import com.yizhuan.treasure_box.event.AutoOpenBoxEvent;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.utils.StringUtils;
import com.yizhuan.xchat_android_core.utils.net.BalanceNotEnoughExeption;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
import com.yizhuan.xchat_android_library.utils.FormatUtils;
@@ -55,7 +57,6 @@ public class TreasureBoxHonourActivity extends BaseBindingActivity<ActivityTreas
private volatile double gold;
private int price = 20;
private ImageView ivBox;
private Intent autoOpenBoxService;
private volatile int keyNum;
private AnimationDrawable eggAnim;
@@ -75,25 +76,16 @@ public class TreasureBoxHonourActivity extends BaseBindingActivity<ActivityTreas
subscribeEvent();
}
@SuppressLint("CheckResult")
@Override
protected void init() {
autoOpenBoxService = new Intent(this, OpenHonourBoxService.class);
mBinding.setClick(this);
ivBox = mBinding.ivBox;
OpenHonourBoxService.isPublic = !OpenHonourBoxService.isAutoOpenBox || OpenHonourBoxService.isPublic;
mBinding.cbNotShow.setChecked(!OpenHonourBoxService.isPublic);
mBinding.cbNotShow.setOnCheckedChangeListener((buttonView, isChecked) -> OpenHonourBoxService.isPublic = !isChecked);
mBinding.rbAuto.setChecked(OpenHonourBoxService.isAutoOpenBox);//如果正在自动砸,需要选中这个
mBinding.rgCount.setOnCheckedChangeListener((group, checkedId) -> {
if (checkedId != R.id.rb_auto && OpenHonourBoxService.isAutoOpenBox) {//正在自动砸的时候点击除了自动砸以外的rb需要停止自动砸
stopService(autoOpenBoxService);
mBinding.ivOpen.setImageResource(R.drawable.auto_open_box);
mBinding.ivBox.setImageResource(R.drawable.box_close);
}
});
}
@SuppressLint("CheckResult")
@Override
protected void onResume() {
super.onResume();
BoxModel.get()
.getHonourKeyInfo(AuthModel.get().getCurrentUid())
.compose(bindToLifecycle())
@@ -102,15 +94,9 @@ public class TreasureBoxHonourActivity extends BaseBindingActivity<ActivityTreas
changeKeyNum(keyInfo.getKeyNum());
price = keyInfo.getKeyPrice();
});
}
@Override
protected void onResume() {
super.onResume();
WalletInfo walletInfo = PayModel.get().getCurrentWalletInfo();
if (walletInfo != null) gold = walletInfo.getGoldNum();
mBinding.tvCoinCount.setText(FormatUtils.formatBigDecimal(gold));
mBinding.tvDiamondNum.setText(FormatUtils.formatBigDecimal(gold));
mBinding.ivOpen.setImageResource(OpenHonourBoxService.isAutoOpenBox ? R.drawable.stop_open_box : R.drawable.auto_open_box);
mBinding.randomLayout.start();
EventBus.getDefault().register(this);
@@ -119,68 +105,22 @@ public class TreasureBoxHonourActivity extends BaseBindingActivity<ActivityTreas
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.stv_buy:
showBuyDialog();
break;
case R.id.stv_help:
HonourBoxHelpActivity.start(this, mBinding.getRoot().getHeight(), mBinding.getRoot().getWidth());
break;
case R.id.stv_jackpot:
HonourBoxPrizeActivity.start(this, mBinding.getRoot().getHeight(), mBinding.getRoot().getWidth());
break;
case R.id.stv_recharge:
ChargeActivity.start(this);
break;
case R.id.stv_record:
HonourBoxPrizeRecordActivity.start(this, mBinding.getRoot().getHeight(), mBinding.getRoot().getWidth());
break;
case R.id.ib_close:
finish();
break;
case R.id.iv_open:
handleBoxClick();
mBinding.ivOpen.setEnabled(false);
ivBox.setImageResource(R.drawable.box_close_normal);
openBox(StringUtils.toInt(mBinding.editNum.getText().toString()));
break;
case R.id.iv_more:
new BoxMoreDialog(context).openDialog();
break;
default:
break;
}
}
private void handleBoxClick() {
ivBox.setImageResource(R.drawable.box_close);
switch (mBinding.rgCount.getCheckedRadioButtonId()) {
case R.id.rb_open_once:
mBinding.ivOpen.setEnabled(false);
openBox(1);
break;
case R.id.rb_open_ten:
mBinding.ivOpen.setEnabled(false);
openBox(10);
break;
case R.id.rb_open_hundred:
mBinding.ivOpen.setEnabled(false);
openBox(100);
break;
case R.id.rb_auto:
if (OpenHonourBoxService.isAutoOpenBox) {
stopService(autoOpenBoxService);
mBinding.ivOpen.setImageResource(R.drawable.auto_open_box);
mBinding.ivBox.setImageResource(R.drawable.box_close);
} else {
if (keyNum == 0) {
SingleToastUtil.showToast("请先购买锤子");
break;
}
startService(autoOpenBoxService);
mBinding.ivOpen.setImageResource(R.drawable.stop_open_box);
mBinding.ivBox.setImageResource(R.drawable.honour_egg6);
}
break;
}
}
private void showBuyDialog() {
new BuyKeyDialog(this, price, IBoxModel.BOX_TYPE_HONOUR).show();
}
@@ -194,9 +134,10 @@ public class TreasureBoxHonourActivity extends BaseBindingActivity<ActivityTreas
/**
* 检查钥匙(锤子)数量
*
* @param count 想要使用的数量
* @return true 表示数量不足,无法进行下一步操作
* false 表示数量没问题,可以继续操作
* false 表示数量没问题,可以继续操作
*/
private boolean checkKeyNum(int count) {
if (keyNum == 0) {
@@ -230,7 +171,7 @@ public class TreasureBoxHonourActivity extends BaseBindingActivity<ActivityTreas
}
changeBoxStatus();
BoxModel.get()
.openHonourBox(AuthModel.get().getCurrentUid(), !mBinding.cbNotShow.isChecked(),
.openHonourBox(AuthModel.get().getCurrentUid(), false,
AvRoomDataManager.get().mCurrentRoomInfo.getUid(), count,
AuthModel.get().getTicket())
.compose(bindToLifecycle())
@@ -268,21 +209,23 @@ public class TreasureBoxHonourActivity extends BaseBindingActivity<ActivityTreas
/**
* 更新钥匙(锤子)数量
*
* @param num
*/
private void changeKeyNum(int num) {
keyNum = num;
mBinding.tvResidueCount.setText(keyNum + "");
mBinding.tvKeyNum.setText(keyNum + "");
}
/**
* 更新钱包
*
* @param g
*/
private void setGold(double g) {
gold = g;
mBinding.tvCoinCount.setText(FormatUtils.formatBigDecimal(gold));
mBinding.tvDiamondNum.setText(FormatUtils.formatBigDecimal(gold));
PayModel.get().getCurrentWalletInfo().setGoldNum(g);
}
@@ -304,9 +247,6 @@ public class TreasureBoxHonourActivity extends BaseBindingActivity<ActivityTreas
if (event.isSuccess()) {
HonourBuyKeyResultInfo keyInfo = event.getKeyInfo();
int goldNum = keyInfo.getGoldNum();
// if (goldNum == gold) {//购买钥匙成功了如果本地数量与服务器返回的金币数量相等,本地扣除下....
// goldNum = (int) (gold - (keyInfo.getKeyNum() - keyNum) * price);
// }
changeKeyNum(keyInfo.getKeyNum());
setGold(goldNum);
if (event.isKeyDeficiency()) {

View File

@@ -2,9 +2,12 @@ package com.yizhuan.erban.treasure_box.fragment;
import android.app.Dialog;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.DialogFragment;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.Gravity;
@@ -27,8 +30,8 @@ import io.reactivex.disposables.Disposable;
public class ChooseTreasureBoxDialogFragment extends DialogFragment implements View.OnClickListener {
private TextView normalBoxButton, honourBoxButton, honourLimitTip;
private ImageView normalBoxImage, honourBoxImage;
private TextView honourLimitTip;
private ConstraintLayout clBoxNormal, clBoxHonour;
private OnTreasureBoxChooseListener onTreasureBoxChooseListener;
@@ -46,17 +49,13 @@ public class ChooseTreasureBoxDialogFragment extends DialogFragment implements V
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
normalBoxButton = view.findViewById(R.id.tv_select_normal_box);
honourBoxButton = view.findViewById(R.id.tv_select_honour_box);
clBoxNormal = view.findViewById(R.id.cl_box_normal);
clBoxHonour = view.findViewById(R.id.cl_box_honour);
honourLimitTip = view.findViewById(R.id.tv_honour_box_limit);
normalBoxImage = view.findViewById(R.id.iv_select_normal_box);
honourBoxImage = view.findViewById(R.id.iv_select_honour_box);
view.findViewById(R.id.iv_close).setOnClickListener(this);
normalBoxButton.setOnClickListener(this);
honourBoxButton.setOnClickListener(this);
normalBoxImage.setOnClickListener(this);
honourBoxImage.setOnClickListener(this);
clBoxNormal.setOnClickListener(this);
clBoxHonour.setOnClickListener(this);
}
@Override
@@ -84,23 +83,20 @@ public class ChooseTreasureBoxDialogFragment extends DialogFragment implements V
@Override
public void onSuccess(BoxOpenStatusInfo boxOpenStatusInfo) {
if (boxOpenStatusInfo != null) {
honourBoxButton.setEnabled(boxOpenStatusInfo.isOpening());
honourBoxImage.setEnabled(boxOpenStatusInfo.isOpening());
clBoxHonour.setEnabled(boxOpenStatusInfo.isOpening());
String startTime = TextUtils.isEmpty(boxOpenStatusInfo.getStartTime()) ? "" : boxOpenStatusInfo.getStartTime();
String endTime = TextUtils.isEmpty(boxOpenStatusInfo.getEndTime()) ? "" : boxOpenStatusInfo.getEndTime();
honourLimitTip.setText(String.format("限时:%s - %s", startTime, endTime));
} else {
honourBoxButton.setEnabled(false);
honourBoxImage.setEnabled(false);
honourLimitTip.setText("");
clBoxHonour.setEnabled(false);
honourLimitTip.setVisibility(View.GONE);
}
}
@Override
public void onError(Throwable e) {
honourBoxButton.setEnabled(false);
honourBoxImage.setEnabled(false);
honourLimitTip.setText("");
clBoxHonour.setEnabled(false);
honourLimitTip.setVisibility(View.GONE);
}
});
}
@@ -110,21 +106,21 @@ public class ChooseTreasureBoxDialogFragment extends DialogFragment implements V
int id = view.getId();
if (id == R.id.iv_close) {
dismiss();
} else if (id == R.id.iv_select_normal_box || id == R.id.tv_select_normal_box) {
} else if (id == R.id.cl_box_normal) {
if (onTreasureBoxChooseListener != null) {
if (AvRoomDataManager.get().isCpRoom()) {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_CP_ROOM_SMASHEGG_CHOOSE, "开始砸金蛋-陪伴房");
}else {
} else {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_MP_ROOM_SMASHEGG_CHOOSE, "开始砸金蛋-多人房");
}
onTreasureBoxChooseListener.onBoxClick(0);
}
dismiss();
} else if (id == R.id.iv_select_honour_box || id == R.id.tv_select_honour_box) {
} else if (id == R.id.cl_box_honour) {
if (onTreasureBoxChooseListener != null) {
if (AvRoomDataManager.get().isCpRoom()) {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_CP_ROOM_SMASHEGG_CHOOSE, "开始砸至尊蛋-陪伴房");
}else {
} else {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_MP_ROOM_SMASHEGG_CHOOSE, "开始砸至尊蛋-多人房");
}
onTreasureBoxChooseListener.onBoxClick(1);

View File

@@ -23,7 +23,7 @@ import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
public abstract class BaseBindingDialog<T extends ViewDataBinding> extends AppCompatDialog {
private int width, height;
protected int width, height;
protected Context context;
public BaseBindingDialog(Context context) {

View File

@@ -0,0 +1,45 @@
package com.yizhuan.erban.treasure_box.widget.dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import com.yizhuan.erban.R;
import com.yizhuan.erban.databinding.DialogBoxMoreBinding;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
@ActLayoutRes(R.layout.dialog_box_more)
public class BoxMoreDialog extends BaseBindingDialog<DialogBoxMoreBinding> {
public BoxMoreDialog(Context context) {
super(context);
width = WindowManager.LayoutParams.MATCH_PARENT;
height = WindowManager.LayoutParams.WRAP_CONTENT;
}
@Override
protected void onStart() {
super.onStart();
Window window = getWindow();
if (window != null) {
WindowManager.LayoutParams windowParams = window.getAttributes();
windowParams.gravity = Gravity.BOTTOM;
window.setAttributes(windowParams);
}
}
@Override
protected void init() {
binding.tvHistory.setOnClickListener(v -> {
closeDialog();
});
binding.tvBoxRule.setOnClickListener(v -> {
closeDialog();
});
binding.tvGetKey.setOnClickListener(v -> {
closeDialog();
});
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@@ -13,289 +13,211 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginStart="@dimen/dp_15"
android:background="@drawable/treasure_box_bg_normal">
android:layout_height="match_parent">
<ImageButton
android:id="@+id/ib_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:onClick="@{click}"
android:padding="@dimen/dp_9"
android:src="@drawable/icon_room_close_box"
app:layout_constraintRight_toRightOf="parent" />
<ImageView
android:id="@+id/stv_record"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_9"
android:layout_marginTop="60dp"
android:gravity="center"
android:onClick="@{click}"
android:src="@drawable/icon_win_price_record_normal"
android:textColor="@color/color_333333"
android:textSize="12sp"
app:layout_constraintLeft_toLeftOf="parent"
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="387dp"
android:layout_marginStart="@dimen/dp_30"
android:layout_marginTop="17dp"
android:layout_marginEnd="@dimen/dp_30"
android:background="@drawable/treasure_box_bg_normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/stv_jackpot"
android:id="@+id/iv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_9"
android:src="@drawable/treasure_box_title_normal"
app:layout_constraintBottom_toTopOf="@id/view_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/view_bg" />
<TextView
android:id="@+id/tv_rank"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:drawableStart="@drawable/treasure_box_rank"
android:drawablePadding="5dp"
android:gravity="center"
android:onClick="@{click}"
android:src="@drawable/icon_jackpot_normal"
android:textColor="@color/color_333333"
android:textSize="12sp"
app:layout_constraintLeft_toLeftOf="@id/stv_record"
app:layout_constraintTop_toBottomOf="@id/stv_record" />
android:text="排行榜"
android:textColor="@color/white"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="@id/view_bg"
app:layout_constraintTop_toTopOf="@id/view_bg" />
<ImageView
android:id="@+id/stv_help"
android:id="@+id/iv_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginEnd="15dp"
android:gravity="center"
android:onClick="@{click}"
android:padding="@dimen/dp_9"
android:src="@drawable/icon_room_box_help_normal"
android:src="@drawable/icon_room_box_more_normal"
android:text="帮助"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/stv_jackpot" />
app:layout_constraintEnd_toEndOf="@id/view_bg"
app:layout_constraintTop_toTopOf="@id/view_bg" />
<ImageView
android:id="@+id/iv_box_bottom"
android:layout_width="183dp"
android:layout_height="90dp"
android:layout_marginTop="120dp"
android:src="@drawable/box_bottom_normal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_diamond_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:drawableTop="@drawable/treasure_box_diamond"
android:gravity="center"
android:text="200"
android:textColor="#ffffffff"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="@id/iv_more"
app:layout_constraintStart_toStartOf="@id/iv_more"
app:layout_constraintTop_toBottomOf="@id/iv_more" />
<TextView
android:id="@+id/tv_key_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:drawableTop="@drawable/treasure_box_meteor"
android:gravity="center"
android:text="200"
android:textColor="#ffffffff"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="@id/iv_more"
app:layout_constraintStart_toStartOf="@id/iv_more"
app:layout_constraintTop_toBottomOf="@id/tv_diamond_num" />
<ImageView
android:id="@+id/iv_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_marginTop="45dp"
android:onClick="@{click}"
android:src="@drawable/box_close_normal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.yizhuan.erban.treasure_box.widget.PrizeCover
android:id="@+id/random_layout"
android:layout_width="200dp"
android:layout_height="175dp"
android:layout_marginTop="10dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="invisible" />
<RadioGroup
android:id="@+id/rg_count"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:layout_marginTop="35dp"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_box_bottom">
<RadioButton
android:id="@+id/rb_open_once"
android:layout_width="55dp"
android:layout_height="match_parent"
android:background="@drawable/selector_treasure_box__normal_rb"
android:button="@null"
android:checked="true"
android:gravity="center"
android:text="1次"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
<RadioButton
android:id="@+id/rb_open_ten"
android:layout_width="55dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/selector_treasure_box__normal_rb"
android:button="@null"
android:gravity="center"
android:text="10次"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
<RadioButton
android:id="@+id/rb_open_hundred"
android:layout_width="55dp"
android:layout_height="match_parent"
android:background="@drawable/selector_treasure_box__normal_rb"
android:button="@null"
android:gravity="center"
android:text="100次"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
<RadioButton
android:id="@+id/rb_auto"
android:layout_width="55dp"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_10"
android:background="@drawable/selector_treasure_box__normal_rb"
android:button="@null"
android:gravity="center"
android:text="自动砸"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
</RadioGroup>
<androidx.constraintlayout.widget.Placeholder
android:id="@+id/place_holder"
android:layout_width="0dp"
android:layout_height="24dp"
android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@id/rg_count" />
app:layout_constraintTop_toTopOf="@id/view_bg" />
<ImageView
android:id="@+id/iv_hammer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="4dp"
android:src="@drawable/icon_hammer_box_normal"
app:layout_constraintBottom_toBottomOf="@id/place_holder"
app:layout_constraintRight_toLeftOf="@+id/tv_residue"
app:layout_constraintTop_toTopOf="@id/place_holder" />
android:id="@+id/iv_gift_anim"
android:layout_width="50dp"
android:layout_height="50dp"
app:layout_constraintBottom_toBottomOf="@id/iv_box"
app:layout_constraintEnd_toEndOf="@id/iv_box"
app:layout_constraintStart_toStartOf="@id/iv_box"
app:layout_constraintTop_toTopOf="@id/iv_box" />
<TextView
android:id="@+id/tv_residue"
android:id="@+id/tv_continuous_open"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="5dp"
android:text="剩余锤子数:"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="@id/place_holder"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintLeft_toRightOf="@+id/iv_hammer"
app:layout_constraintRight_toLeftOf="@+id/tv_residue_count"
app:layout_constraintTop_toTopOf="@id/place_holder" />
android:layout_marginTop="7dp"
android:text="连续开启"
android:textColor="#fff15fc3"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_box" />
<TextView
android:id="@+id/tv_residue_count"
<ImageView
android:id="@+id/iv_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_20"
android:layout_marginStart="@dimen/dp_5"
android:gravity="center_horizontal"
android:text="0"
android:textColor="@color/color_FF9251"
android:textSize="15sp"
app:layout_constraintBottom_toBottomOf="@id/place_holder"
app:layout_constraintLeft_toRightOf="@id/tv_residue"
app:layout_constraintRight_toLeftOf="@+id/stv_buy"
app:layout_constraintTop_toTopOf="@id/place_holder" />
<com.coorchice.library.SuperTextView
android:id="@+id/stv_buy"
android:layout_width="55dp"
android:layout_height="25dp"
android:gravity="center"
android:layout_marginTop="10dp"
android:onClick="@{click}"
android:text="@string/buy"
android:textColor="@color/white"
android:textSize="@dimen/sp_13"
android:background="@drawable/icon_box_rb_true_normal"
app:corner="12dp"
app:layout_constraintBottom_toBottomOf="@id/place_holder"
app:layout_constraintLeft_toRightOf="@id/tv_residue_count"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/place_holder"
app:stroke_color="@color/white"
app:stroke_width="0dp" />
android:src="@drawable/treasure_box_sub_normal"
app:layout_constraintEnd_toStartOf="@id/edit_num"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_continuous_open" />
<EditText
android:id="@+id/edit_num"
android:layout_width="wrap_content"
android:layout_height="23dp"
android:background="@color/white_transparent_12"
android:gravity="center"
android:minWidth="40dp"
android:text="1"
android:textColor="#ffc33c98"
android:textSize="13sp"
app:layout_constraintBottom_toBottomOf="@id/iv_sub"
app:layout_constraintEnd_toStartOf="@id/iv_add"
app:layout_constraintStart_toEndOf="@id/iv_sub"
app:layout_constraintTop_toTopOf="@id/iv_sub" />
<ImageView
android:id="@+id/iv_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/treasure_box_add_normal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/edit_num"
app:layout_constraintTop_toTopOf="@id/iv_sub" />
<ImageView
android:id="@+id/iv_open"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_16"
android:layout_marginTop="15dp"
android:layout_marginBottom="22dp"
android:onClick="@{click}"
android:src="@drawable/auto_open_box_normal"
app:layout_constraintBottom_toBottomOf="@id/view_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_sub" />
<com.yizhuan.erban.treasure_box.widget.PrizeCover
android:id="@+id/random_layout"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_marginTop="60dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/rg_count" />
app:layout_constraintTop_toTopOf="@id/view_bg"
tools:visibility="gone" />
<CheckBox
android:id="@+id/cb_not_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:button="@null"
android:drawableLeft="@drawable/selector_box_hint"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="不对外提示中奖信息"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/svga_open"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_marginTop="60dp"
app:autoPlay="false"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_open" />
app:layout_constraintTop_toTopOf="@id/view_bg"
app:loopCount="1"
app:source="svga/bubble_pack.svga"
tools:visibility="gone" />
<View
android:id="@+id/bottom_bg_view"
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/svga_gift_bg"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_marginTop="15dp"
app:layout_constraintTop_toBottomOf="@id/cb_not_show" />
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" />
<TextView
android:id="@+id/tv_coin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:text="金币"
android:textColor="@color/color_FF8D50"
android:textSize="@dimen/sp_15"
app:layout_constraintBottom_toBottomOf="@id/bottom_bg_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="@id/bottom_bg_view" />
<TextView
android:id="@+id/tv_coin_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="0"
android:textColor="@color/white"
android:textSize="@dimen/sp_20"
app:layout_constraintBottom_toBottomOf="@id/bottom_bg_view"
app:layout_constraintLeft_toRightOf="@id/tv_coin"
app:layout_constraintTop_toTopOf="@id/bottom_bg_view" />
<TextView
android:id="@+id/stv_recharge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="22dp"
android:background="@drawable/icon_box_charge_normal"
android:gravity="center"
android:onClick="@{click}"
android:text="充值"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
app:layout_constraintBottom_toBottomOf="@id/bottom_bg_view"
app:layout_constraintRight_toRightOf="@id/bottom_bg_view"
app:layout_constraintTop_toTopOf="@id/bottom_bg_view" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -12,289 +12,172 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/root_view"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/treasure_box_bg">
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15">
<ImageButton
android:id="@+id/ib_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:onClick="@{click}"
android:src="@drawable/icon_room_close_box"
android:padding="@dimen/dp_9"
app:layout_constraintRight_toRightOf="parent" />
<ImageView
android:id="@+id/stv_record"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:layout_marginStart="@dimen/dp_9"
android:gravity="center"
android:onClick="@{click}"
android:textColor="@color/color_333333"
android:textSize="12sp"
android:src="@drawable/icon_win_price_record"
app:layout_constraintLeft_toLeftOf="parent"
<View
android:id="@+id/view_bg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="17dp"
android:background="@drawable/treasure_box_bg_normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/stv_jackpot"
android:id="@+id/iv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_9"
android:src="@drawable/treasure_box_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_rank"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:drawableStart="@drawable/treasure_box_rank"
android:drawablePadding="5dp"
android:gravity="center"
android:onClick="@{click}"
android:src="@drawable/icon_jackpot"
android:textColor="@color/color_333333"
android:textSize="12sp"
app:layout_constraintLeft_toLeftOf="@id/stv_record"
app:layout_constraintTop_toBottomOf="@id/stv_record" />
android:text="排行榜"
android:textColor="@color/white"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="@id/view_bg"
app:layout_constraintTop_toTopOf="@id/view_bg" />
<ImageView
android:id="@+id/stv_help"
android:id="@+id/iv_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginEnd="15dp"
android:gravity="center"
android:onClick="@{click}"
android:padding="@dimen/dp_9"
android:gravity="center"
android:onClick="@{click}"
android:src="@drawable/icon_room_box_more_normal"
android:text="帮助"
android:src="@drawable/icon_room_box_help"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/stv_jackpot" />
app:layout_constraintEnd_toEndOf="@id/view_bg"
app:layout_constraintTop_toTopOf="@id/view_bg" />
<TextView
android:id="@+id/tv_diamond_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:drawableTop="@drawable/treasure_box_diamond"
android:gravity="center"
android:text="200"
android:textColor="#ffffffff"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="@id/iv_more"
app:layout_constraintStart_toStartOf="@id/iv_more"
app:layout_constraintTop_toBottomOf="@id/iv_more" />
<TextView
android:id="@+id/tv_key_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:drawableTop="@drawable/treasure_box_meteor"
android:gravity="center"
android:text="200"
android:textColor="#ffffffff"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="@id/iv_more"
app:layout_constraintStart_toStartOf="@id/iv_more"
app:layout_constraintTop_toBottomOf="@id/tv_diamond_num" />
<ImageView
android:id="@+id/iv_box_bottom"
android:layout_width="183dp"
android:layout_height="90dp"
android:src="@drawable/box_bottom"
android:layout_marginTop="120dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<ImageView
android:id="@+id/iv_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_marginTop="60dp"
android:onClick="@{click}"
android:src="@drawable/box_close"
android:src="@drawable/box_close_normal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.yizhuan.erban.treasure_box.widget.PrizeCover
android:id="@+id/random_layout"
android:layout_width="200dp"
android:layout_height="175dp"
android:layout_marginTop="10dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
tools:visibility="invisible" />
<RadioGroup
android:id="@+id/rg_count"
<TextView
android:id="@+id/tv_continuous_open"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:layout_marginTop="35dp"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_box_bottom">
<RadioButton
android:id="@+id/rb_open_once"
android:layout_width="55dp"
android:layout_height="match_parent"
android:background="@drawable/selector_treasure_box_rb"
android:button="@null"
android:checked="true"
android:gravity="center"
android:text="1次"
android:textSize="@dimen/sp_12"
android:textColor="@drawable/selector_treasure_box_rb_text" />
<RadioButton
android:id="@+id/rb_open_ten"
android:layout_width="55dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/selector_treasure_box_rb"
android:button="@null"
android:gravity="center"
android:text="10次"
android:textSize="@dimen/sp_12"
android:textColor="@drawable/selector_treasure_box_rb_text" />
<RadioButton
android:id="@+id/rb_open_hundred"
android:layout_width="55dp"
android:layout_height="match_parent"
android:background="@drawable/selector_treasure_box_rb"
android:button="@null"
android:gravity="center"
android:text="100次"
android:textSize="@dimen/sp_12"
android:textColor="@drawable/selector_treasure_box_rb_text" />
<RadioButton
android:id="@+id/rb_auto"
android:layout_width="55dp"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_10"
android:background="@drawable/selector_treasure_box_rb"
android:button="@null"
android:gravity="center"
android:text="自动砸"
android:textSize="@dimen/sp_12"
android:textColor="@drawable/selector_treasure_box_rb_text" />
</RadioGroup>
<androidx.constraintlayout.widget.Placeholder
android:id="@+id/place_holder"
android:layout_width="0dp"
android:layout_height="24dp"
android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@id/rg_count" />
android:layout_height="wrap_content"
android:layout_marginTop="7dp"
android:text="连续开启"
android:textColor="#fff15fc3"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_box" />
<ImageView
android:id="@+id/iv_hammer"
android:id="@+id/iv_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_hammer_box"
android:layout_marginRight="4dp"
app:layout_constraintBottom_toBottomOf="@id/place_holder"
app:layout_constraintRight_toLeftOf="@+id/tv_residue"
app:layout_constraintTop_toTopOf="@id/place_holder"/>
<TextView
android:id="@+id/tv_residue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="5dp"
android:text="剩余锤子:"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="@id/place_holder"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintLeft_toRightOf="@+id/iv_hammer"
app:layout_constraintRight_toLeftOf="@+id/tv_residue_count"
app:layout_constraintTop_toTopOf="@id/place_holder" />
<TextView
android:id="@+id/tv_residue_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_5"
android:layout_marginEnd="@dimen/dp_20"
android:gravity="center_horizontal"
android:text="0"
android:textColor="@color/color_FFEA03"
android:textSize="15sp"
app:layout_constraintBottom_toBottomOf="@id/place_holder"
app:layout_constraintLeft_toRightOf="@id/tv_residue"
app:layout_constraintRight_toLeftOf="@+id/stv_buy"
app:layout_constraintTop_toTopOf="@id/place_holder" />
<com.coorchice.library.SuperTextView
android:id="@+id/stv_buy"
android:layout_width="55dp"
android:layout_height="25dp"
android:gravity="center"
android:layout_marginTop="10dp"
android:onClick="@{click}"
android:text="@string/buy"
android:textColor="@color/color_AF2D00"
android:textSize="@dimen/sp_13"
android:background="@drawable/icon_box_rb_true"
app:corner="12dp"
app:stroke_color="@color/white"
app:stroke_width="0dp"
app:layout_constraintBottom_toBottomOf="@id/place_holder"
app:layout_constraintLeft_toRightOf="@id/tv_residue_count"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/place_holder" />
android:src="@drawable/treasure_box_sub"
app:layout_constraintEnd_toStartOf="@id/edit_num"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_continuous_open" />
<EditText
android:id="@+id/edit_num"
android:layout_width="wrap_content"
android:layout_height="23dp"
android:background="@color/white_transparent_12"
android:gravity="center"
android:minWidth="40dp"
android:text="9999"
android:textColor="#ffc33c98"
android:textSize="13sp"
app:layout_constraintBottom_toBottomOf="@id/iv_sub"
app:layout_constraintEnd_toStartOf="@id/iv_add"
app:layout_constraintStart_toEndOf="@id/iv_sub"
app:layout_constraintTop_toTopOf="@id/iv_sub" />
<ImageView
android:id="@+id/iv_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{click}"
android:src="@drawable/treasure_box_add"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/edit_num"
app:layout_constraintTop_toTopOf="@id/iv_sub" />
<ImageView
android:id="@+id/iv_open"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_16"
android:onClick="@{click}"
android:layout_marginTop="15dp"
android:layout_marginBottom="22dp"
android:src="@drawable/auto_open_box"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_sub" />
<com.yizhuan.erban.treasure_box.widget.PrizeCover
android:id="@+id/random_layout"
android:layout_width="200dp"
android:layout_height="175dp"
android:layout_marginTop="60dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/rg_count" />
app:layout_constraintTop_toTopOf="parent"
tools:visibility="invisible" />
<CheckBox
android:id="@+id/cb_not_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:button="@null"
android:drawableLeft="@drawable/selector_box_hint"
android:drawablePadding="@dimen/dp_6"
android:gravity="center"
android:text="不对外提示中奖信息"
android:textSize="@dimen/sp_12"
android:textColor="@color/white"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_open" />
<View
android:id="@+id/bottom_bg_view"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_marginTop="12dp"
app:layout_constraintTop_toBottomOf="@id/cb_not_show" />
<TextView
android:id="@+id/tv_coin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:text="金币"
android:textColor="@color/color_FFCF4C"
android:textSize="@dimen/sp_15"
app:layout_constraintBottom_toBottomOf="@id/bottom_bg_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="@id/bottom_bg_view" />
<TextView
android:id="@+id/tv_coin_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="0"
android:textColor="@color/white"
android:textSize="@dimen/sp_20"
app:layout_constraintBottom_toBottomOf="@id/bottom_bg_view"
app:layout_constraintLeft_toRightOf="@id/tv_coin"
app:layout_constraintTop_toTopOf="@id/bottom_bg_view" />
<TextView
android:id="@+id/stv_recharge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="22dp"
android:gravity="center"
android:onClick="@{click}"
android:text="充值"
android:textColor="@color/color_AF2D00"
android:textSize="@dimen/sp_16"
android:background="@drawable/icon_box_charge"
app:layout_constraintBottom_toBottomOf="@id/bottom_bg_view"
app:layout_constraintRight_toRightOf="@id/bottom_bg_view"
app:layout_constraintTop_toTopOf="@id/bottom_bg_view" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="click"
type="android.view.View.OnClickListener" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_white_top_10dp"
android:orientation="vertical"
android:paddingStart="15dp"
android:paddingBottom="80dp"
android:paddingEnd="15dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:text="更多"
android:textColor="#ff333333"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_get_key"
android:layout_width="match_parent"
android:layout_height="43dp"
android:background="@drawable/bottom_line"
android:gravity="center_vertical"
android:text="参与xxx活动获得66流星"
android:textColor="#ff333333"
android:textSize="14sp" />
<TextView
android:id="@+id/tv_history"
android:layout_width="match_parent"
android:layout_height="43dp"
android:background="@drawable/bottom_line"
android:gravity="center_vertical"
android:text="获奖记录"
android:textColor="#ff333333"
android:textSize="14sp" />
<TextView
android:id="@+id/tv_box_rule"
android:layout_width="match_parent"
android:layout_height="43dp"
android:gravity="center_vertical"
android:text="玩法规则"
android:textColor="#ff333333"
android:textSize="14sp" />
</LinearLayout>
</layout>

View File

@@ -1,83 +1,174 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical">
android:orientation="vertical"
tools:background="@color/black_transparent_80">
<LinearLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:orientation="horizontal">
<LinearLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_box_normal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
android:layout_marginStart="@dimen/dp_20"
app:layout_constraintEnd_toStartOf="@id/cl_box_honour"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="14dp"
android:background="@drawable/treasure_box_bg_normal"
app:layout_constraintDimensionRatio="162:195"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_select_normal_box"
android:id="@+id/iv_title"
android:layout_width="100dp"
android:layout_height="27dp"
android:src="@drawable/treasure_box_title_normal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="25dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="25dp"
android:src="@drawable/default_cover"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_title" />
<ImageView
android:id="@+id/iv_open"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:src="@drawable/icon_dialog_normal_egg"
tools:ignore="ContentDescription" />
android:layout_marginTop="15dp"
android:layout_marginBottom="12dp"
android:src="@drawable/bg_treasure_box_dialog_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_box_honour"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginEnd="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/cl_box_normal"
app:layout_constraintTop_toTopOf="parent">
<View
android:id="@+id/view_bg_honour"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="14dp"
android:background="@drawable/treasure_box_bg_normal"
app:layout_constraintDimensionRatio="162:195"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_title_honour"
android:layout_width="100dp"
android:layout_height="27dp"
android:src="@drawable/treasure_box_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="25dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="25dp"
android:src="@drawable/default_cover"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_title_honour" />
<ImageView
android:id="@+id/iv_open_honour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginBottom="12dp"
android:src="@drawable/bg_treasure_box_dialog_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_honour_box_limit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center"
android:textColor="#CCFFFFFF"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="@id/cl_box_honour"
app:layout_constraintStart_toStartOf="@id/cl_box_honour"
app:layout_constraintTop_toBottomOf="@id/cl_box_honour"
tools:ignore="SmallSp"
tools:text="限时22:00 - 02:00" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_honour_box_limit">
<TextView
android:id="@+id/tv_select_normal_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:background="@drawable/bg_treasure_box_dialog_button"
android:enabled="true" />
android:text="参与xxx活动获得"
android:textColor="#ffffffff"
android:textSize="13sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/treasure_box_meteor" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="66流星>"
android:textColor="#ffffffff"
android:textSize="13sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_select_honour_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:src="@drawable/icon_dialog_honour_egg"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv_select_honour_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="9dp"
android:layout_gravity="bottom|center_horizontal"
android:background="@drawable/bg_treasure_box_dialog_button"
android:enabled="true" />
<TextView
android:id="@+id/tv_honour_box_limit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#CCFFFFFF"
android:textSize="14sp"
tools:ignore="SmallSp"
tools:text="限时22:00 - 02:00" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/iv_close"