糖果树UI修改

This commit is contained in:
huangjian
2023-03-13 16:53:08 +08:00
parent aa94a834ce
commit 9290fdbd02
77 changed files with 1363 additions and 1262 deletions

View File

@@ -149,8 +149,8 @@ android {
debug { debug {
buildConfigField "String", "BASE_URL", "\"http://api.uat.lecheng163.com/\"" buildConfigField "String", "BASE_URL", "\"http://api.uat.lecheng163.com/\""
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL" buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
buildConfigField "String", "BASE_URL_STAGING", "\"https://yinyou.api.shengxuanwangluo.com/\"" buildConfigField "String", "BASE_URL_STAGING", "BASE_URL"
buildConfigField "String", "BASE_URL_RELEASE", "\"https://yinyou.api.shengxuanwangluo.com/\"" buildConfigField "String", "BASE_URL_RELEASE", "BASE_URL"
minifyEnabled false minifyEnabled false
shrinkResources false shrinkResources false
signingConfig signingConfigs.v2 signingConfig signingConfigs.v2
@@ -275,7 +275,7 @@ android.applicationVariants.all { variant ->
switch (variant.name) {//变体名称如果没有设置productFlavors就是buildType名称如果有设置productFlavors就是flavor+buildType例如freeRelease、proRelease switch (variant.name) {//变体名称如果没有设置productFlavors就是buildType名称如果有设置productFlavors就是flavor+buildType例如freeRelease、proRelease
case "release": case "release":
androidJunkCode.configMap.put(variant.name, { androidJunkCode.configMap.put(variant.name, {
packageBase = "com.mango.plugin.ui" //生成java类根包名 packageBase = "com.nnbc123.plugin.ui" //生成java类根包名
packageCount = 30 //生成包数量 packageCount = 30 //生成包数量
activityCountPerPackage = 30 //每个包下生成Activity类数量 activityCountPerPackage = 30 //每个包下生成Activity类数量
excludeActivityJavaFile = false excludeActivityJavaFile = false

View File

@@ -120,7 +120,7 @@
-keep public class * extends com.nnbc123.library.base.factory.AbstractMvpPresenter -keep public class * extends com.nnbc123.library.base.factory.AbstractMvpPresenter
# 云信自定义 ViewHolder 配置 # 云信自定义 ViewHolder 配置
-dontwarn com.mango.moshen.ui.im.recent.holder.** -dontwarn com.nnbc123.app.ui.im.recent.holder.**
-keep class com.nnbc123.app.ui.im.recent.holder.** {*;} -keep class com.nnbc123.app.ui.im.recent.holder.** {*;}
-keep class com.nnbc123.app.ui.im.chat.** {*;} -keep class com.nnbc123.app.ui.im.chat.** {*;}
-keep class com.nnbc123.app.luckymoney.viewholder.** {*;} -keep class com.nnbc123.app.luckymoney.viewholder.** {*;}
@@ -207,7 +207,7 @@
<init>(...); <init>(...);
} }
-dontwarn com.mango.moshen.bindadapter.** -dontwarn com.nnbc123.app.bindadapter.**
-keep class com.nnbc123.app.bindadapter.** {*;} -keep class com.nnbc123.app.bindadapter.** {*;}
# Ping++ 混淆过滤 # Ping++ 混淆过滤

View File

@@ -22,7 +22,7 @@ public class ExampleInstrumentedTest {
// Context of the app under test. // Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext(); Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.mango.moshen_android_client", appContext.getPackageName()); assertEquals("com.nnbc123.app_android_client", appContext.getPackageName());
} }
} }

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/dp_12" />
<stroke android:color="#FFE974" android:width="1px"/>
<solid android:color="#0D002F"/>
</shape>

Binary file not shown.

View File

@@ -31,6 +31,7 @@ import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -41,6 +42,8 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator; import androidx.recyclerview.widget.SimpleItemAnimator;
import com.nnbc123.app.ui.utils.ImageLoadKt;
import com.nnbc123.app.utils.UserUtils;
import com.nnbc123.core.im.custom.bean.WishListAttachment; import com.nnbc123.core.im.custom.bean.WishListAttachment;
import com.nnbc123.core.room.wishlist.WishListModel; import com.nnbc123.core.room.wishlist.WishListModel;
import com.netease.nim.uikit.business.uinfo.UserInfoHelper; import com.netease.nim.uikit.business.uinfo.UserInfoHelper;
@@ -737,6 +740,9 @@ public class MessageView extends FrameLayout {
protected void convert(MessageViewHolder baseViewHolder, ChatRoomMessage chatRoomMessage) { protected void convert(MessageViewHolder baseViewHolder, ChatRoomMessage chatRoomMessage) {
if (chatRoomMessage == null) return; if (chatRoomMessage == null) return;
TextView tvContent = baseViewHolder.tvContent; TextView tvContent = baseViewHolder.tvContent;
baseViewHolder.ivAvatar.setVisibility(GONE);
baseViewHolder.tvNickname.setVisibility(GONE);
baseViewHolder.tvTags.setVisibility(GONE);
tvContent.setLineSpacing(0, 1); tvContent.setLineSpacing(0, 1);
tvContent.setTextColor(Color.WHITE); tvContent.setTextColor(Color.WHITE);
tvContent.setOnClickListener(this); tvContent.setOnClickListener(this);
@@ -765,6 +771,7 @@ public class MessageView extends FrameLayout {
} }
} else if (chatRoomMessage.getMsgType() == MsgTypeEnum.text) { } else if (chatRoomMessage.getMsgType() == MsgTypeEnum.text) {
setMsgText(chatRoomMessage, tvContent); setMsgText(chatRoomMessage, tvContent);
setupCommonTag(chatRoomMessage, baseViewHolder);
setVIPMessageBackground(chatRoomMessage, tvContent); setVIPMessageBackground(chatRoomMessage, tvContent);
} else if (chatRoomMessage.getMsgType() == MsgTypeEnum.notification) { } else if (chatRoomMessage.getMsgType() == MsgTypeEnum.notification) {
// 加上勋章 // 加上勋章
@@ -952,6 +959,7 @@ public class MessageView extends FrameLayout {
if (second == CustomAttachment.CUSTOM_MSG_SUB_TYPE_PUBLIC_SCREEN_WELCOME) { if (second == CustomAttachment.CUSTOM_MSG_SUB_TYPE_PUBLIC_SCREEN_WELCOME) {
//麦上用户对你的欢迎语 //麦上用户对你的欢迎语
setMicWelcomeContent(chatRoomMessage, tvContent, baseViewHolder.getAdapterPosition()); setMicWelcomeContent(chatRoomMessage, tvContent, baseViewHolder.getAdapterPosition());
setupCommonTag(chatRoomMessage, baseViewHolder);
} }
} else if (first == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_FOLLOW_ROOM) { } else if (first == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_FOLLOW_ROOM) {
if (second == CustomAttachment.CUSTOM_MSG_SUB_TYPE_FOLLOW_ROOM_SUCCESS) { if (second == CustomAttachment.CUSTOM_MSG_SUB_TYPE_FOLLOW_ROOM_SUCCESS) {
@@ -1000,17 +1008,17 @@ public class MessageView extends FrameLayout {
GiftCompoundMsgBean msgInfo = giftCompoundAttachment.getMsgBean(); GiftCompoundMsgBean msgInfo = giftCompoundAttachment.getMsgBean();
SpannableBuilder text = new SpannableBuilder(tvContent); SpannableBuilder text = new SpannableBuilder(tvContent);
text.append( text.append(
msgInfo.getNick(), msgInfo.getNick(),
new ForegroundColorSpan(roomTipNickColor), new ForegroundColorSpan(roomTipNickColor),
new OriginalDrawStatusClickSpan() { new OriginalDrawStatusClickSpan() {
@Override @Override
public void onClick(@NonNull View widget) { public void onClick(@NonNull View widget) {
if (clickConsumer != null) { if (clickConsumer != null) {
Single.just(String.valueOf(msgInfo.getUid())).subscribe(clickConsumer); Single.just(String.valueOf(msgInfo.getUid())).subscribe(clickConsumer);
}
}
} }
) }
}
)
.append(msgInfo.getMsg(), new ForegroundColorSpan(whiteColor)) .append(msgInfo.getMsg(), new ForegroundColorSpan(whiteColor))
.append(msgInfo.getGiftName(), new ForegroundColorSpan(roomTipNickColor)); .append(msgInfo.getGiftName(), new ForegroundColorSpan(roomTipNickColor));
tvContent.setText(text.build()); tvContent.setText(text.build());
@@ -1143,15 +1151,15 @@ public class MessageView extends FrameLayout {
case CustomAttachment.CUSTOM_MSG_SUB_DATING_PUBLISH_LIKE: case CustomAttachment.CUSTOM_MSG_SUB_DATING_PUBLISH_LIKE:
if (notifyInfo.getHasSelectUser()) { if (notifyInfo.getHasSelectUser()) {
text.append(notifyInfo.getNickname(), new ForegroundColorSpan(roomTipNickColor), text.append(notifyInfo.getNickname(), new ForegroundColorSpan(roomTipNickColor),
new OriginalDrawStatusClickSpan() { new OriginalDrawStatusClickSpan() {
@Override @Override
public void onClick(@NonNull View widget) { public void onClick(@NonNull View widget) {
if (clickConsumer != null) { if (clickConsumer != null) {
Single.just(String.valueOf(notifyInfo.getUid())).subscribe(clickConsumer); Single.just(String.valueOf(notifyInfo.getUid())).subscribe(clickConsumer);
} }
} }
}) })
.append(" 的心动对象是 ", new ForegroundColorSpan(whiteColor)) .append(" 的心动对象是 ", new ForegroundColorSpan(whiteColor))
.append(notifyInfo.getTargetNickname(), new ForegroundColorSpan(roomTipNickColor), .append(notifyInfo.getTargetNickname(), new ForegroundColorSpan(roomTipNickColor),
new OriginalDrawStatusClickSpan() { new OriginalDrawStatusClickSpan() {
@@ -1165,15 +1173,15 @@ public class MessageView extends FrameLayout {
}); });
} else { } else {
text.append(notifyInfo.getNickname(), new ForegroundColorSpan(roomTipNickColor), text.append(notifyInfo.getNickname(), new ForegroundColorSpan(roomTipNickColor),
new OriginalDrawStatusClickSpan() { new OriginalDrawStatusClickSpan() {
@Override @Override
public void onClick(@NonNull View widget) { public void onClick(@NonNull View widget) {
if (clickConsumer != null) { if (clickConsumer != null) {
Single.just(String.valueOf(notifyInfo.getUid())).subscribe(clickConsumer); Single.just(String.valueOf(notifyInfo.getUid())).subscribe(clickConsumer);
} }
} }
}) })
.append(" 未选择心动对象", new ForegroundColorSpan(whiteColor)); .append(" 未选择心动对象", new ForegroundColorSpan(whiteColor));
} }
break; break;
@@ -1431,15 +1439,15 @@ public class MessageView extends FrameLayout {
isHaveInTeam = true; isHaveInTeam = true;
text.append(value.getNick(), new ForegroundColorSpan(roomTipColor), text.append(value.getNick(), new ForegroundColorSpan(roomTipColor),
new OriginalDrawStatusClickSpan() { new OriginalDrawStatusClickSpan() {
@Override @Override
public void onClick(@NonNull View widget) { public void onClick(@NonNull View widget) {
if (clickConsumer != null) { if (clickConsumer != null) {
Single.just(value.getUid()).subscribe(clickConsumer); Single.just(value.getUid()).subscribe(clickConsumer);
} }
} }
}) })
.append("进入"); .append("进入");
if (value.getGroupType() == PKTeamInfo.TEAM_RED) { if (value.getGroupType() == PKTeamInfo.TEAM_RED) {
text.append("红队", new ForegroundColorSpan(tvContent.getResources().getColor(R.color.color_FB3D74))) text.append("红队", new ForegroundColorSpan(tvContent.getResources().getColor(R.color.color_FB3D74)))
@@ -1464,7 +1472,7 @@ public class MessageView extends FrameLayout {
RoomPkData roomPkData = attachment.getRoomPkData(); RoomPkData roomPkData = attachment.getRoomPkData();
SpannableBuilder text = new SpannableBuilder(tvContent) SpannableBuilder text = new SpannableBuilder(tvContent)
.append(String.format(Locale.getDefault(), "管理员发起房间PK本次PK时间为 %s 秒,获得", .append(String.format(Locale.getDefault(), "管理员发起房间PK本次PK时间为 %s 秒,获得",
roomPkData.getDuration()), roomPkData.getDuration()),
new ForegroundColorSpan(whiteColor)); new ForegroundColorSpan(whiteColor));
switch (roomPkData.getVoteMode()) { switch (roomPkData.getVoteMode()) {
case RoomPkData.VOTE_MODE_GIFT: case RoomPkData.VOTE_MODE_GIFT:
@@ -1491,7 +1499,7 @@ public class MessageView extends FrameLayout {
RoomPkData roomPkData = attachment.getRoomPkData(); RoomPkData roomPkData = attachment.getRoomPkData();
SpannableBuilder text = new SpannableBuilder(textView) SpannableBuilder text = new SpannableBuilder(textView)
.append(String.format(Locale.getDefault(), .append(String.format(Locale.getDefault(),
"PK开始啦本次PK时间 %s 秒,快给喜欢的选手投票吧!", roomPkData.getDuration()), "PK开始啦本次PK时间 %s 秒,快给喜欢的选手投票吧!", roomPkData.getDuration()),
new ForegroundColorSpan(greyColor)); new ForegroundColorSpan(greyColor));
textView.setText(text.build()); textView.setText(text.build());
} }
@@ -1500,7 +1508,7 @@ public class MessageView extends FrameLayout {
RoomPkData roomPkData = attachment.getRoomPkData(); RoomPkData roomPkData = attachment.getRoomPkData();
SpannableBuilder text = new SpannableBuilder(tvContent) SpannableBuilder text = new SpannableBuilder(tvContent)
.append(String.format(Locale.getDefault(), "管理员重新开始房间PK本次PK时间为 %s 秒,获得", .append(String.format(Locale.getDefault(), "管理员重新开始房间PK本次PK时间为 %s 秒,获得",
roomPkData.getDuration()), roomPkData.getDuration()),
new ForegroundColorSpan(whiteColor)); new ForegroundColorSpan(whiteColor));
switch (roomPkData.getVoteMode()) { switch (roomPkData.getVoteMode()) {
case RoomPkData.VOTE_MODE_GIFT: case RoomPkData.VOTE_MODE_GIFT:
@@ -1534,8 +1542,8 @@ public class MessageView extends FrameLayout {
text.append("平局!\n", new ForegroundColorSpan(whiteColor)); text.append("平局!\n", new ForegroundColorSpan(whiteColor));
if (blueTeam != null && redTeam != null) { if (blueTeam != null && redTeam != null) {
text.append(String.format(Locale.getDefault(), "PK值 %s : %s", text.append(String.format(Locale.getDefault(), "PK值 %s : %s",
FormatUtils.formatPKValue(blueTeam.getScore()), FormatUtils.formatPKValue(blueTeam.getScore()),
FormatUtils.formatPKValue(redTeam.getScore())), FormatUtils.formatPKValue(redTeam.getScore())),
new ForegroundColorSpan(whiteColor)); new ForegroundColorSpan(whiteColor));
UserInfo redProtector = redTeam.getProtector(); UserInfo redProtector = redTeam.getProtector();
@@ -1545,14 +1553,14 @@ public class MessageView extends FrameLayout {
break; break;
} }
text.append(String.format(Locale.getDefault(), "\n蓝队守护者%s \n", blueProtector.getNick()), text.append(String.format(Locale.getDefault(), "\n蓝队守护者%s \n", blueProtector.getNick()),
new ForegroundColorSpan(whiteColor)) new ForegroundColorSpan(whiteColor))
.append(String.format(Locale.getDefault(), "蓝队守护值:%s \n", .append(String.format(Locale.getDefault(), "蓝队守护值:%s \n",
FormatUtils.formatPKValue(blueTeam.getProtecScore())), FormatUtils.formatPKValue(blueTeam.getProtecScore())),
new ForegroundColorSpan(whiteColor)) new ForegroundColorSpan(whiteColor))
.append(String.format(Locale.getDefault(), "红队守护者:%s \n", redProtector.getNick()), .append(String.format(Locale.getDefault(), "红队守护者:%s \n", redProtector.getNick()),
new ForegroundColorSpan(whiteColor)) new ForegroundColorSpan(whiteColor))
.append(String.format(Locale.getDefault(), "红队守护值:%s", .append(String.format(Locale.getDefault(), "红队守护值:%s",
FormatUtils.formatPKValue(redTeam.getProtecScore())), FormatUtils.formatPKValue(redTeam.getProtecScore())),
new ForegroundColorSpan(whiteColor)); new ForegroundColorSpan(whiteColor));
} }
break; break;
@@ -1561,21 +1569,21 @@ public class MessageView extends FrameLayout {
text.append("蓝队胜利!\n", new ForegroundColorSpan(whiteColor)); text.append("蓝队胜利!\n", new ForegroundColorSpan(whiteColor));
if (blueTeam != null && redTeam != null) { if (blueTeam != null && redTeam != null) {
text.append(String.format(Locale.getDefault(), "PK值 %s : %s \n", text.append(String.format(Locale.getDefault(), "PK值 %s : %s \n",
FormatUtils.formatPKValue(blueTeam.getScore()), FormatUtils.formatPKValue(blueTeam.getScore()),
FormatUtils.formatPKValue(redTeam.getScore())), FormatUtils.formatPKValue(redTeam.getScore())),
new ForegroundColorSpan(whiteColor)); new ForegroundColorSpan(whiteColor));
UserInfo blueProtector = blueTeam.getProtector(); UserInfo blueProtector = blueTeam.getProtector();
if (blueProtector == null) { if (blueProtector == null) {
text.append(String.format(Locale.getDefault(), "胜利方战斗值:%s", text.append(String.format(Locale.getDefault(), "胜利方战斗值:%s",
FormatUtils.formatPKValue(blueTeam.getScore())), FormatUtils.formatPKValue(blueTeam.getScore())),
new ForegroundColorSpan(whiteColor)); new ForegroundColorSpan(whiteColor));
} else { } else {
text.append(String.format(Locale.getDefault(), "胜方守护者:%s \n", blueProtector.getNick()), text.append(String.format(Locale.getDefault(), "胜方守护者:%s \n", blueProtector.getNick()),
new ForegroundColorSpan(whiteColor)) new ForegroundColorSpan(whiteColor))
.append(String.format(Locale.getDefault(), "胜方守护值:%s", .append(String.format(Locale.getDefault(), "胜方守护值:%s",
FormatUtils.formatPKValue(blueTeam.getProtecScore())), FormatUtils.formatPKValue(blueTeam.getProtecScore())),
new ForegroundColorSpan(whiteColor)); new ForegroundColorSpan(whiteColor));
} }
} }
@@ -1585,20 +1593,20 @@ public class MessageView extends FrameLayout {
text.append("红队胜利!\n", new ForegroundColorSpan(whiteColor)); text.append("红队胜利!\n", new ForegroundColorSpan(whiteColor));
if (blueTeam != null && redTeam != null) { if (blueTeam != null && redTeam != null) {
text.append(String.format(Locale.getDefault(), "PK值 %s : %s \n", text.append(String.format(Locale.getDefault(), "PK值 %s : %s \n",
FormatUtils.formatPKValue(redTeam.getScore()), FormatUtils.formatPKValue(redTeam.getScore()),
FormatUtils.formatPKValue(blueTeam.getScore())), FormatUtils.formatPKValue(blueTeam.getScore())),
new ForegroundColorSpan(whiteColor)); new ForegroundColorSpan(whiteColor));
UserInfo redProtector = redTeam.getProtector(); UserInfo redProtector = redTeam.getProtector();
if (redProtector == null) { if (redProtector == null) {
text.append(String.format(Locale.getDefault(), "胜利方战斗值:%s", text.append(String.format(Locale.getDefault(), "胜利方战斗值:%s",
FormatUtils.formatPKValue(redTeam.getScore())), FormatUtils.formatPKValue(redTeam.getScore())),
new ForegroundColorSpan(whiteColor)); new ForegroundColorSpan(whiteColor));
} else { } else {
text.append(String.format(Locale.getDefault(), "红队守护者:%s \n", redProtector.getNick()), text.append(String.format(Locale.getDefault(), "红队守护者:%s \n", redProtector.getNick()),
new ForegroundColorSpan(whiteColor)) new ForegroundColorSpan(whiteColor))
.append(String.format(Locale.getDefault(), "红队守护值:%s", .append(String.format(Locale.getDefault(), "红队守护值:%s",
FormatUtils.formatPKValue(redTeam.getProtecScore())), FormatUtils.formatPKValue(redTeam.getProtecScore())),
new ForegroundColorSpan(whiteColor)); new ForegroundColorSpan(whiteColor));
} }
@@ -1929,12 +1937,8 @@ public class MessageView extends FrameLayout {
* @param tvContent - * @param tvContent -
*/ */
private void setMsgText(ChatRoomMessage chatRoomMessage, TextView tvContent) { private void setMsgText(ChatRoomMessage chatRoomMessage, TextView tvContent) {
ChatRoomMessageExtension extension = chatRoomMessage.getChatRoomMessageExtension();
SpannableBuilder text = new SpannableBuilder(tvContent); SpannableBuilder text = new SpannableBuilder(tvContent);
addCommonTag(chatRoomMessage, text, tvContent); text.append(chatRoomMessage.getContent(), new ForegroundColorSpan(whiteColor));
String nickName = extension == null ? "" : RegexUtil.getPrintableString(extension.getSenderNick());
text.append(nickName, new ForegroundColorSpan(greyColor))
.append(": " + chatRoomMessage.getContent(), new ForegroundColorSpan(whiteColor));
List<String> atUids = ExtensionUtil.getListExtension(chatRoomMessage, UserInfo.AT_UIDS); List<String> atUids = ExtensionUtil.getListExtension(chatRoomMessage, UserInfo.AT_UIDS);
List<String> atNames = ExtensionUtil.getListExtension(chatRoomMessage, UserInfo.AT_NAMES); List<String> atNames = ExtensionUtil.getListExtension(chatRoomMessage, UserInfo.AT_NAMES);
if (!ListUtils.isListEmpty(atUids) && !ListUtils.isListEmpty(atNames)) { if (!ListUtils.isListEmpty(atUids) && !ListUtils.isListEmpty(atNames)) {
@@ -1954,33 +1958,26 @@ public class MessageView extends FrameLayout {
} }
} }
} }
if (Objects.equals(chatRoomMessage.getFromAccount(), String.valueOf(AuthModel.get().getCurrentUid()))) {
tvContent.setOnLongClickListener(null);
} else {
tvContent.setOnLongClickListener(v -> {
if (onLongClickListener != null) {
onLongClickListener.onLongClick(v, chatRoomMessage.getFromAccount(), nickName);
}
return true;
});
}
tvContent.setText(text.build()); tvContent.setText(text.build());
} }
private void addCommonTag(ChatRoomMessage chatRoomMessage, @NonNull SpannableBuilder builder, TextView tvContent) { private void setupCommonTag(ChatRoomMessage chatRoomMessage, MessageViewHolder viewHolder) {
viewHolder.ivAvatar.setVisibility(VISIBLE);
viewHolder.tvNickname.setVisibility(VISIBLE);
viewHolder.tvTags.setVisibility(VISIBLE);
SpannableBuilder builder = new SpannableBuilder(viewHolder.tvTags);
ChatRoomMessageExtension extension = chatRoomMessage.getChatRoomMessageExtension(); ChatRoomMessageExtension extension = chatRoomMessage.getChatRoomMessageExtension();
String userLevel = NobleUtil.getLevel(UserLevelResourceType.EXPER_URL, chatRoomMessage); String userLevel = NobleUtil.getLevel(UserLevelResourceType.EXPER_URL, chatRoomMessage);
String charmLevel = NobleUtil.getLevel(UserLevelResourceType.CHARM_URL, chatRoomMessage);
boolean isOfficial = NobleUtil.getIsOfficial(UserInfo.IS_OFFICIAL, chatRoomMessage); boolean isOfficial = NobleUtil.getIsOfficial(UserInfo.IS_OFFICIAL, chatRoomMessage);
String vipIcon = NobleUtil.getResource(UserInfo.VIP_ICON, chatRoomMessage);
builder.append(vipIcon, expLevelHeight) builder.append(isOfficial ? ResourcesCompat.getDrawable(getResources(),
.append(isOfficial ? ResourcesCompat.getDrawable(getResources(), R.mipmap.ic_user_official_13dp, null) : null,
R.mipmap.ic_user_official_13dp, null) : null, badgeWidth, badgeHeight)
badgeWidth, badgeHeight)
.append(getNewUserDrawable(chatRoomMessage), badgeWidth, badgeHeight) .append(getNewUserDrawable(chatRoomMessage), badgeWidth, badgeHeight)
.append(AvRoomDataManager.get().isSuperAdmin(chatRoomMessage.getFromAccount()) ? ResourcesCompat.getDrawable(getResources(), .append(AvRoomDataManager.get().isSuperAdmin(chatRoomMessage.getFromAccount()) ? ResourcesCompat.getDrawable(getResources(),
R.drawable.ic_room_super_admin, null) : null, R.drawable.ic_room_super_admin, null) : null,
SizeUtils.dp2px(tvContent.getContext(), 23), expLevelHeight); SizeUtils.dp2px(mContext, 23), expLevelHeight);
// 官方主播认证 // 官方主播认证
String tvOfficialMask = NobleUtil.getLevel(UserInfo.OAC_NAME, chatRoomMessage).trim(); String tvOfficialMask = NobleUtil.getLevel(UserInfo.OAC_NAME, chatRoomMessage).trim();
@@ -1988,10 +1985,11 @@ public class MessageView extends FrameLayout {
if (!TextUtils.isEmpty(tvOfficialMask) && !TextUtils.isEmpty(ivOfficialMask) && extension != null) { // extension != null 表示自己 if (!TextUtils.isEmpty(tvOfficialMask) && !TextUtils.isEmpty(ivOfficialMask) && extension != null) { // extension != null 表示自己
builder.appendBgAndContent(ivOfficialMask, tvOfficialMask); builder.appendBgAndContent(ivOfficialMask, tvOfficialMask);
} else if (!TextUtils.isEmpty(ivOfficialMask)) { } else if (!TextUtils.isEmpty(ivOfficialMask)) {
builder.append(ivOfficialMask, SizeUtils.dp2px(tvContent.getContext(), 62), expLevelHeight); builder.append(ivOfficialMask, SizeUtils.dp2px(mContext, 62), expLevelHeight);
} }
//等级 //等级
builder.append(userLevel, expLevelWidth, expLevelHeight); builder.append(userLevel, expLevelWidth, expLevelHeight);
builder.append(charmLevel, expLevelWidth, expLevelHeight);
//铭牌 //铭牌
String tvNamePlate = NobleUtil.getNamePlate(UserInfo.NAMEPLATE_WORD, chatRoomMessage).trim(); String tvNamePlate = NobleUtil.getNamePlate(UserInfo.NAMEPLATE_WORD, chatRoomMessage).trim();
String ivNamePlate = NobleUtil.getNamePlate(UserInfo.NAMEPLATE_PIC, chatRoomMessage); String ivNamePlate = NobleUtil.getNamePlate(UserInfo.NAMEPLATE_PIC, chatRoomMessage);
@@ -2000,6 +1998,25 @@ public class MessageView extends FrameLayout {
} else if (!TextUtils.isEmpty(ivNamePlate)) { } else if (!TextUtils.isEmpty(ivNamePlate)) {
builder.append(ivNamePlate, expLevelHeight); builder.append(ivNamePlate, expLevelHeight);
} }
viewHolder.tvTags.setText(builder.build());
String vipIcon = NobleUtil.getResource(UserInfo.VIP_ICON, chatRoomMessage);
String nickname = extension == null ? "" : RegexUtil.getPrintableString(extension.getSenderNick());
SpannableBuilder nicknameBuilder = new SpannableBuilder(viewHolder.tvNickname)
.append(vipIcon, expLevelHeight)
.append(nickname);
viewHolder.tvNickname.setText(nicknameBuilder.build());
ImageLoadKt.loadAvatar(viewHolder.ivAvatar, extension == null ? UserUtils.getUserInfo().getAvatar() : extension.getSenderAvatar());
if (Objects.equals(chatRoomMessage.getFromAccount(), String.valueOf(AuthModel.get().getCurrentUid()))) {
viewHolder.tvNickname.setOnLongClickListener(null);
} else {
viewHolder.tvNickname.setOnLongClickListener(v -> {
if (onLongClickListener != null) {
onLongClickListener.onLongClick(v, chatRoomMessage.getFromAccount(), nickname);
}
return true;
});
}
} }
/** /**
@@ -2273,13 +2290,13 @@ public class MessageView extends FrameLayout {
for (GiftReceiver targetUser : attachment.getGiftMultiReceiverInfo().getTargetUsers()) { for (GiftReceiver targetUser : attachment.getGiftMultiReceiverInfo().getTargetUsers()) {
text.append(targetUser.getNick(), new ForegroundColorSpan(roomTipNickColor), new OriginalDrawStatusClickSpan() { text.append(targetUser.getNick(), new ForegroundColorSpan(roomTipNickColor), new OriginalDrawStatusClickSpan() {
@Override @Override
public void onClick(@NonNull View widget) { public void onClick(@NonNull View widget) {
if (clickConsumer != null) { if (clickConsumer != null) {
Single.just(targetUser.getUid() + "").subscribe(clickConsumer); Single.just(targetUser.getUid() + "").subscribe(clickConsumer);
} }
} }
}) })
.append(","); .append(",");
} }
Editable msg = text.builder; Editable msg = text.builder;
@@ -2353,13 +2370,13 @@ public class MessageView extends FrameLayout {
for (MagicReceiver targetUser : magicMultiReceiverInfo.getTargetUsers()) { for (MagicReceiver targetUser : magicMultiReceiverInfo.getTargetUsers()) {
text.append(targetUser.getNick(), new ForegroundColorSpan(roomTipNickColor), new OriginalDrawStatusClickSpan() { text.append(targetUser.getNick(), new ForegroundColorSpan(roomTipNickColor), new OriginalDrawStatusClickSpan() {
@Override @Override
public void onClick(@NonNull View widget) { public void onClick(@NonNull View widget) {
if (clickConsumer != null) { if (clickConsumer != null) {
Single.just(targetUser.getUid() + "").subscribe(clickConsumer); Single.just(targetUser.getUid() + "").subscribe(clickConsumer);
} }
} }
}) })
.append(","); .append(",");
} }
Editable msg = text.builder; Editable msg = text.builder;
@@ -2487,9 +2504,10 @@ public class MessageView extends FrameLayout {
// 座驾 // 座驾
String carName = NobleUtil.getCarName(CarInfo.CAR_NAME, chatRoomMessage); String carName = NobleUtil.getCarName(CarInfo.CAR_NAME, chatRoomMessage);
carName = TextUtils.isEmpty(carName) ? "" : "\"" + carName + "\""; carName = TextUtils.isEmpty(carName) ? "" : "\"" + carName + "\"";
String userLevel = NobleUtil.getLevel(UserLevelResourceType.EXPER_URL, chatRoomMessage);
SpannableBuilder text = new SpannableBuilder(tvContent); SpannableBuilder text = new SpannableBuilder(tvContent);
addCommonTag(chatRoomMessage, text, tvContent); //等级
text.append(userLevel, expLevelWidth, expLevelHeight);
text.append(senderNick, new ForegroundColorSpan(roomTipColor), text.append(senderNick, new ForegroundColorSpan(roomTipColor),
new OriginalDrawStatusClickSpan() { new OriginalDrawStatusClickSpan() {
@Override @Override
@@ -2556,14 +2574,14 @@ public class MessageView extends FrameLayout {
mMessageAdapter.notifyItemChanged(position); mMessageAdapter.notifyItemChanged(position);
long targetUid = JavaUtil.str2long(chatRoomMessage.getFromAccount()); long targetUid = JavaUtil.str2long(chatRoomMessage.getFromAccount());
Single.zip(AvRoomModel.get().getWelcomeConfig(targetUid), Single.zip(AvRoomModel.get().getWelcomeConfig(targetUid),
UserModel.get().getUserInfo(targetUid), (roomWelcomeConfig, info) -> { UserModel.get().getUserInfo(targetUid), (roomWelcomeConfig, info) -> {
WelcomeInfo welcomeInfo = new WelcomeInfo(); WelcomeInfo welcomeInfo = new WelcomeInfo();
welcomeInfo.setContent(roomWelcomeConfig.getMsg()); welcomeInfo.setContent(roomWelcomeConfig.getMsg());
welcomeInfo.setTargetUid(targetUid); welcomeInfo.setTargetUid(targetUid);
welcomeInfo.setTargetNick(info.getNick()); welcomeInfo.setTargetNick(info.getNick());
welcomeInfo.setFans(roomWelcomeConfig.isFans()); welcomeInfo.setFans(roomWelcomeConfig.isFans());
return welcomeInfo; return welcomeInfo;
}) })
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.flatMap((Function<WelcomeInfo, SingleSource<ChatRoomMessage>>) welcomeInfo -> { .flatMap((Function<WelcomeInfo, SingleSource<ChatRoomMessage>>) welcomeInfo -> {
WelcomeAttachment attachment = new WelcomeAttachment(); WelcomeAttachment attachment = new WelcomeAttachment();
@@ -2718,16 +2736,15 @@ public class MessageView extends FrameLayout {
// 内容 // 内容
String fromAccount = chatRoomMessage.getFromAccount(); String fromAccount = chatRoomMessage.getFromAccount();
SpannableBuilder text = new SpannableBuilder(tvContent); SpannableBuilder text = new SpannableBuilder(tvContent);
addCommonTag(chatRoomMessage, text, tvContent);
text.append(extension == null ? "" : RegexUtil.getPrintableString(extension.getSenderNick()), text.append(extension == null ? "" : RegexUtil.getPrintableString(extension.getSenderNick()),
new ForegroundColorSpan(greyColor), new ForegroundColorSpan(greyColor),
new OriginalDrawStatusClickSpan() { new OriginalDrawStatusClickSpan() {
@Override @Override
public void onClick(@NonNull View widget) { public void onClick(@NonNull View widget) {
Single.just(String.valueOf(chatRoomMessage.getFromAccount())) Single.just(String.valueOf(chatRoomMessage.getFromAccount()))
.doOnSuccess(clickConsumer).subscribe(); .doOnSuccess(clickConsumer).subscribe();
} }
}) })
.append("" + welcomeInfo.getLastConent(), new ForegroundColorSpan(whiteColor)) .append("" + welcomeInfo.getLastConent(), new ForegroundColorSpan(whiteColor))
.append(welcomeInfo.getTargetNick(), new ForegroundColorSpan(roomTipNickColor), .append(welcomeInfo.getTargetNick(), new ForegroundColorSpan(roomTipNickColor),
new OriginalDrawStatusClickSpan() { new OriginalDrawStatusClickSpan() {
@@ -2884,10 +2901,18 @@ public class MessageView extends FrameLayout {
class MessageViewHolder extends RecyclerView.ViewHolder { class MessageViewHolder extends RecyclerView.ViewHolder {
TextView tvContent; TextView tvContent;
ImageView ivAvatar;
TextView tvNickname;
TextView tvTags;
View llUserinfo;
public MessageViewHolder(View itemView) { public MessageViewHolder(View itemView) {
super(itemView); super(itemView);
tvContent = itemView.findViewById(R.id.tv_content); tvContent = itemView.findViewById(R.id.tv_content);
ivAvatar = itemView.findViewById(R.id.iv_avatar);
tvNickname = itemView.findViewById(R.id.tv_nickname);
tvTags = itemView.findViewById(R.id.tv_tags);
llUserinfo = itemView.findViewById(R.id.ll_userinfo);
} }
} }
} }

View File

@@ -1,6 +1,8 @@
package com.nnbc123.app.common; package com.nnbc123.app.common;
import android.content.Context; import android.content.Context;
import android.graphics.Color;
import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@@ -21,6 +23,16 @@ public class EmptyViewHelper {
return view; return view;
} }
public static TextView createEmptyTextView(Context context,CharSequence text) {
TextView textView = new TextView(context);
textView.setGravity(Gravity.CENTER);
textView.setTextColor(Color.WHITE);
textView.setTextSize(12);
textView.setSingleLine(true);
textView.setText(text);
return textView;
}
public static View createDarkEmptyView(Context context, String text) { public static View createDarkEmptyView(Context context, String text) {
if (!NetworkUtils.isNetworkAvailable(context)) text = "网络异常,请检查网络再试~"; if (!NetworkUtils.isNetworkAvailable(context)) text = "网络异常,请检查网络再试~";
View view = LayoutInflater.from(context).inflate(R.layout.layout_ktv_empty, null); View view = LayoutInflater.from(context).inflate(R.layout.layout_ktv_empty, null);

View File

@@ -30,6 +30,7 @@ import com.nnbc123.app.home.helper.BannerHelper
import com.nnbc123.app.home.helper.OpenRoomHelper import com.nnbc123.app.home.helper.OpenRoomHelper
import com.nnbc123.app.skill.activity.SkillHomeActivity import com.nnbc123.app.skill.activity.SkillHomeActivity
import com.nnbc123.app.skill.activity.SkillHomeActivity.Companion.start import com.nnbc123.app.skill.activity.SkillHomeActivity.Companion.start
import com.nnbc123.app.treasure_box.widget.GoldBoxHelper
import com.nnbc123.app.ui.patriarch.PatriarchModeActivity import com.nnbc123.app.ui.patriarch.PatriarchModeActivity
import com.nnbc123.app.ui.pay.ChargeActivity import com.nnbc123.app.ui.pay.ChargeActivity
import com.nnbc123.app.ui.relation.AttentionListActivity import com.nnbc123.app.ui.relation.AttentionListActivity
@@ -390,6 +391,9 @@ class MeFragment : BaseFragment(), View.OnClickListener {
mContext, mContext,
UriProvider.getTutuRealNamePage() UriProvider.getTutuRealNamePage()
) )
R.id.tv_me_service->{
}
else -> {} else -> {}
} }
} }

View File

@@ -12,7 +12,7 @@ import java.security.MessageDigest;
* splash 适配图片 * splash 适配图片
*/ */
public class SplashBitmapTransformation extends BitmapTransformation { public class SplashBitmapTransformation extends BitmapTransformation {
private static final String ID = "com.mango.moshen.other.SplashBitmapTransformation"; private static final String ID = "com.nnbc123.app.other.SplashBitmapTransformation";
private static final byte[] ID_BYTES = ID.getBytes(CHARSET); private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
public SplashBitmapTransformation() { public SplashBitmapTransformation() {

View File

@@ -55,7 +55,7 @@ public class RegexUtil {
} }
public static String getNotPrintableStringReg() { public static String getNotPrintableStringReg() {
// bug-fixed java.lang.RuntimeException:Unable to resume activity {com.mango.moshen/com.mango.moshen.MainActivity}: kotlin.KotlinNullPointerException // bug-fixed java.lang.RuntimeException:Unable to resume activity {com.nnbc123.app/com.nnbc123.app.MainActivity}: kotlin.KotlinNullPointerException
return TextUtils.isEmpty(NOT_VISIBLE_CHARS) ? "" : NOT_VISIBLE_CHARS; return TextUtils.isEmpty(NOT_VISIBLE_CHARS) ? "" : NOT_VISIBLE_CHARS;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="100dp" />
<solid android:color="#0D002F" />
</shape>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#ffe7991a"
android:startColor="#ffffe2bb"
android:type="linear"
android:useLevel="true" />
<corners android:radius="@dimen/dp_100" />
</shape>

View File

@@ -10,6 +10,10 @@
android:right="6dp" android:right="6dp"
android:top="2dp" />--> android:top="2dp" />-->
<corners android:radius="8dp" /> <!-- 圆角的程度 --> <corners
android:bottomLeftRadius="11dp"
android:bottomRightRadius="11dp"
android:topLeftRadius="4dp"
android:topRightRadius="11dp" />
</shape> </shape>

View File

@@ -1,97 +1,83 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_common_touch_while" android:layout_marginStart="5dp"
android:orientation="vertical"> android:layout_marginTop="6dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="6dp"
android:orientation="horizontal">
<LinearLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="30dp"
android:layout_height="60dp" android:layout_height="match_parent"
android:orientation="horizontal" android:layout_gravity="center">
android:paddingEnd="@dimen/dp_15"
>
<FrameLayout <ImageView
android:layout_width="0dp" android:id="@+id/iv_position"
android:layout_weight="0.3" android:layout_width="@dimen/dp_20"
android:layout_height="match_parent" android:visibility="gone"
android:layout_gravity="center" android:layout_height="@dimen/dp_20"
android:paddingStart="@dimen/dp_8" android:layout_gravity="center" />
>
<ImageView
android:id="@+id/iv_position"
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:layout_gravity="center"
/>
<TextView
android:id="@+id/tv_position"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/dp_13"
android:textColor="@color/color_666666"
android:layout_gravity="center_vertical"
tools:text="100"
android:gravity="center"
/>
</FrameLayout>
<com.nnbc123.app.ui.widget.NobleAvatarView <TextView
android:id="@+id/noble_avatar_view" android:id="@+id/tv_position"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/dp_16"
tools:text="100" />
</FrameLayout>
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
/> android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginStart="10dp" android:layout_marginStart="5dp"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="vertical"> android:orientation="vertical">
<TextView
android:id="@+id/tv_userName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:textColor="@color/color_333333"
android:textSize="15sp"
tools:text="我的我的我的我的我的我的"
app:layout_flexShrink="1"
/>
</LinearLayout>
<TextView <TextView
android:id="@+id/tv_amount" android:id="@+id/tv_userName"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="0.7" android:ellipsize="end"
tools:text="1236843" android:lines="1"
android:gravity="end" android:textColor="@color/white"
android:textColor="#1093F5" android:textSize="13sp"
android:textSize="@dimen/dp_15" app:layout_flexShrink="1"
android:layout_gravity="center_vertical" tools:text="我的我的我的我的我的我的" />
android:drawableEnd="@drawable/treasure_box_diamond"
android:drawablePadding="5dp"
/>
</LinearLayout> </LinearLayout>
<View <TextView
android:id="@+id/view_line" android:id="@+id/tv_amount"
android:background="@color/color_F4F4F4" android:layout_width="60dp"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_height="1px" android:layout_gravity="center_vertical"
android:layout_marginStart="90dp" android:drawableStart="@drawable/treasure_box_diamond"
android:layout_marginEnd="@dimen/dp_15" android:drawablePadding="2dp"
android:visibility="gone" android:gravity="start|center_vertical"
/> android:includeFontPadding="false"
</LinearLayout> android:lines="1"
android:textColor="#FFD477"
android:textSize="@dimen/dp_12"
tools:text="1236843" />
</LinearLayout>

View File

@@ -14,7 +14,7 @@ xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/app_bar_layout" android:id="@+id/app_bar_layout"
android:background="@color/transparent" android:background="@color/transparent"
app:elevation="0dp" app:elevation="0dp"
app:layout_behavior="@string/behavior_fix_app_bar" app:layout_behavior="com.nnbc123.app.ui.behavior.FixAppBarBehavior"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">

View File

@@ -35,7 +35,7 @@
android:layout_width="@dimen/dp_room_boss_mic_radius" android:layout_width="@dimen/dp_room_boss_mic_radius"
android:layout_height="@dimen/dp_room_boss_mic_radius" android:layout_height="@dimen/dp_room_boss_mic_radius"
android:layout_gravity="center" android:layout_gravity="center"
android:src="@drawable/icon_room_up_micro_boss" android:src="@drawable/icon_room_up_micro"
tools:visibility="gone" /> tools:visibility="gone" />
<ImageView <ImageView
@@ -43,7 +43,7 @@
android:layout_width="@dimen/dp_room_boss_mic_radius" android:layout_width="@dimen/dp_room_boss_mic_radius"
android:layout_height="@dimen/dp_room_boss_mic_radius" android:layout_height="@dimen/dp_room_boss_mic_radius"
android:layout_gravity="center" android:layout_gravity="center"
android:src="@drawable/icon_room_lock_micro_boss" android:src="@drawable/icon_room_lock_micro"
android:visibility="invisible" android:visibility="invisible"
tools:visibility="visible" /> tools:visibility="visible" />

View File

@@ -62,7 +62,7 @@
android:id="@+id/up_image" android:id="@+id/up_image"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:src="@drawable/icon_room_up_micro_boss" android:src="@drawable/icon_room_up_micro"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.76" app:layout_constraintHeight_percent="0.76"
@@ -75,7 +75,7 @@
android:id="@+id/lock_image" android:id="@+id/lock_image"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:src="@drawable/icon_room_lock_micro_boss" android:src="@drawable/icon_room_lock_micro"
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@@ -49,7 +49,7 @@
android:layout_marginStart="40dp" android:layout_marginStart="40dp"
android:layout_marginTop="26dp" android:layout_marginTop="26dp"
android:layout_marginEnd="40dp" android:layout_marginEnd="40dp"
android:src="@drawable/icon_room_up_micro_boss" android:src="@drawable/icon_room_up_micro"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@@ -62,7 +62,7 @@
android:layout_marginStart="40dp" android:layout_marginStart="40dp"
android:layout_marginTop="26dp" android:layout_marginTop="26dp"
android:layout_marginEnd="40dp" android:layout_marginEnd="40dp"
android:src="@drawable/icon_room_lock_micro_boss" android:src="@drawable/icon_room_lock_micro"
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View File

@@ -1,21 +1,55 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"
tools:background="#ff0"> tools:background="#ff0">
<com.nnbc123.app.avroom.widget.FixRoomTitleTextView <com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/tv_content" android:id="@+id/iv_avatar"
android:layout_width="34dp"
android:layout_height="34dp"
android:layout_marginStart="15dp"
android:src="@drawable/default_avatar" />
<LinearLayout
android:id="@+id/ll_userinfo"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginStart="7dp"
android:background="@drawable/shape_room_message_bg" android:orientation="vertical">
android:gravity="left|center_vertical"
android:textColor="@android:color/white"
android:textDirection="ltr"
android:textSize="12sp"
tools:text="这是名字😄"
tools:textColor="#000" />
</FrameLayout> <TextView
android:id="@+id/tv_nickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="12sp"
tools:text="用户昵称..." />
<TextView
android:id="@+id/tv_tags"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="12sp"
tools:text="用户tag..." />
<com.nnbc123.app.avroom.widget.FixRoomTitleTextView
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:background="@drawable/shape_room_message_bg"
android:gravity="left|center_vertical"
android:textColor="@android:color/white"
android:textDirection="ltr"
android:textSize="12sp"
tools:text="这是名字😄"
tools:textColor="#000" />
</LinearLayout>
</LinearLayout>

View File

@@ -868,8 +868,6 @@
<string name="privacy_setting">隐私设置</string> <string name="privacy_setting">隐私设置</string>
<string name="notice_setting">通知提醒设置</string> <string name="notice_setting">通知提醒设置</string>
<string name="behavior_fix_app_bar">com.mango.moshen.ui.behavior.FixAppBarBehavior</string>
<string name="label_search_history">搜索记录</string> <string name="label_search_history">搜索记录</string>
<string name="label_room_history">进房记录</string> <string name="label_room_history">进房记录</string>
<string name="label_clear">清空</string> <string name="label_clear">清空</string>

View File

@@ -224,9 +224,8 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_above="@+id/fl_speedy_message" android:layout_above="@+id/fl_speedy_message"
android:layout_below="@id/micro_view" android:layout_below="@id/micro_view"
android:layout_marginStart="12dp"
android:layout_marginTop="@dimen/dp_5" android:layout_marginTop="@dimen/dp_5"
android:layout_marginEnd="90dp" android:layout_marginEnd="85dp"
android:layout_marginBottom="@dimen/dp_10" /> android:layout_marginBottom="@dimen/dp_10" />
<com.coorchice.library.SuperTextView <com.coorchice.library.SuperTextView

View File

@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:background="@color/color_666666">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="360dp"
android:layout_gravity="bottom"
android:background="@drawable/shape_white_top_14dp"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<com.flyco.tablayout.SlidingTabLayout
android:id="@+id/view_indicator"
android:layout_width="match_parent"
android:layout_height="46dp"
android:background="@drawable/shape_white_top_14dp"
app:tl_indicator_color="@color/appColor"
app:tl_indicator_corner_radius="2dp"
app:tl_indicator_height="@dimen/dp_3"
app:tl_indicator_width="@dimen/dp_9"
app:tl_tab_space_equal="true"
app:tl_textSelectColor="@color/color_333333"
app:tl_textUnselectColor="@color/text_tertiary"
app:tl_textsize="@dimen/dp_16" />
<ImageView
android:id="@+id/iv_refresh"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/refresh"
android:layout_gravity="end"
android:paddingStart="@dimen/dp_15"
android:paddingEnd="@dimen/dp_15"
/>
</FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/color_f5f5f5" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</FrameLayout>

View File

@@ -1,56 +1,33 @@
package com.nnbc123.app.treasure_box.activity; package com.nnbc123.app.treasure_box.activity;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.widget.ImageView;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import com.flyco.tablayout.SlidingTabLayout;
import com.nnbc123.app.R;
import com.nnbc123.app.base.BaseActivity;
import com.nnbc123.app.common.ViewPagerAdapter;
import com.nnbc123.app.decoration.view.widgets.CarMagicIndicator;
import com.nnbc123.core.room.treasure_box.event.RefreshBoxRankingEvent;
import com.nnbc123.app.treasure_box.fragment.BoxRankingFragment;
import com.nnbc123.app.room_chat.event.ClickRootViewEvent;
import com.nnbc123.core.home.bean.TabInfo; import com.nnbc123.core.home.bean.TabInfo;
import com.nnbc123.core.manager.IMNetEaseManager; import com.nnbc123.app.R;
import com.nnbc123.core.manager.RoomEvent; import com.nnbc123.app.base.BaseViewBindingFragment;
import com.nnbc123.app.common.ViewPagerAdapter;
import org.greenrobot.eventbus.EventBus; import com.nnbc123.app.databinding.ActivityRoomBoxRankingBinding;
import org.greenrobot.eventbus.Subscribe; import com.nnbc123.app.treasure_box.fragment.BoxRankingFragment;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class BoxRankingActivity extends BaseViewBindingFragment<ActivityRoomBoxRankingBinding> {
public class BoxRankingActivity extends BaseActivity implements CarMagicIndicator.OnItemSelectListener {
@BindView(R.id.view_indicator)
SlidingTabLayout viewIndicator;
@BindView(R.id.viewpager)
ViewPager viewpager;
@BindView(R.id.iv_refresh)
ImageView ivRefresh;
private String[] titles = {"今日榜单", "昨日榜单"};
public static final int TYPE_TODAY = 1;//今日 public static final int TYPE_TODAY = 1;//今日
public static final int TYPE_YESTERDAY = 2;//今日 public static final int TYPE_YESTERDAY = 2;//今日
private String[] titles = {"今日榜单", "昨日榜单"};
public static BoxRankingActivity newInstance() {
public static void start(Context context) { Bundle args = new Bundle();
Intent starter = new Intent(context, BoxRankingActivity.class); BoxRankingActivity fragment = new BoxRankingActivity();
//starter.putExtra(); fragment.setArguments(args);
context.startActivity(starter); return fragment;
} }
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
@@ -59,36 +36,24 @@ public class BoxRankingActivity extends BaseActivity implements CarMagicIndicato
for (int i = 0; i < titles.length; i++) { for (int i = 0; i < titles.length; i++) {
tabInfoList.add(new TabInfo(i, titles[i])); tabInfoList.add(new TabInfo(i, titles[i]));
} }
viewpager.setOffscreenPageLimit(2); getBinding().viewpager.setOffscreenPageLimit(2);
viewpager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager(), getFragment(), titles)); getBinding().viewpager.setAdapter(new ViewPagerAdapter(getChildFragmentManager(), getFragment(), titles));
viewIndicator.setViewPager(viewpager, titles, this, getFragment()); getBinding().viewpager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
IMNetEaseManager.get().getChatRoomEventObservable() public void onPageSelected(int position) {
.compose(bindToLifecycle()) if (position == 0) {
.filter(roomEvent -> roomEvent.getEvent() == RoomEvent.KICK_OUT_ROOM) getBinding().rbToday.setChecked(true);
.subscribe(roomEvent -> finish()); } else {
getBinding().rbYesterday.setChecked(true);
ivRefresh.setOnClickListener(v -> EventBus.getDefault().post(new RefreshBoxRankingEvent())); }
}
});
getBinding().rg.setOnCheckedChangeListener((group, checkedId) -> getBinding().viewpager.setCurrentItem(checkedId == R.id.rb_today ? 0 : 1));
} }
@Override @Override
protected boolean needSteepStateBar() { public int getRootLayoutId() {
return false; return R.layout.activity_room_box_ranking;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_room_box_ranking);
ButterKnife.bind(this);
EventBus.getDefault().register(this);
init();
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
} }
private ArrayList<Fragment> getFragment() { private ArrayList<Fragment> getFragment() {
@@ -97,19 +62,4 @@ public class BoxRankingActivity extends BaseActivity implements CarMagicIndicato
list.add(BoxRankingFragment.newInstance(TYPE_YESTERDAY)); list.add(BoxRankingFragment.newInstance(TYPE_YESTERDAY));
return list; return list;
} }
@Override
public void onItemSelect(int position) {
viewpager.setCurrentItem(position);
}
@OnClick(R.id.root_view)
public void onViewClicked() {
finish();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRootViewClicked(ClickRootViewEvent event) {
onViewClicked();
}
} }

View File

@@ -1,48 +1,53 @@
package com.nnbc123.app.treasure_box.activity; package com.nnbc123.app.treasure_box.activity;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator; import android.animation.ObjectAnimator;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.TextUtils;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.WindowManager; import android.view.WindowManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.nnbc123.core.statistic.StatisticManager; import androidx.fragment.app.Fragment;
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.nnbc123.app.R;
import com.nnbc123.app.base.BaseBindingActivity;
import com.nnbc123.app.databinding.ActivityTreasureBoxBinding;
import com.nnbc123.app.treasure_box.widget.dialog.BoxMoreDialog;
import com.nnbc123.app.ui.utils.ImageLoadUtils;
import com.nnbc123.app.ui.webview.DialogWebViewActivity;
import com.nnbc123.app.utils.UserUtils;
import com.nnbc123.treasure_box.bean.PrizeInfo;
import com.nnbc123.treasure_box.model.BoxModel;
import com.nnbc123.treasure_box.model.IBoxModel;
import com.nnbc123.core.DemoCache; import com.nnbc123.core.DemoCache;
import com.nnbc123.core.UriProvider; import com.nnbc123.core.UriProvider;
import com.nnbc123.core.manager.IMNetEaseManager; import com.nnbc123.core.manager.IMNetEaseManager;
import com.nnbc123.core.manager.RoomEvent; import com.nnbc123.core.manager.RoomEvent;
import com.nnbc123.core.pay.PayModel; import com.nnbc123.core.pay.PayModel;
import com.nnbc123.core.pay.bean.WalletInfo; import com.nnbc123.core.pay.bean.WalletInfo;
import com.nnbc123.core.statistic.StatisticManager;
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
import com.nnbc123.core.utils.StringUtils; import com.nnbc123.core.utils.StringUtils;
import com.nnbc123.app.R;
import com.nnbc123.app.base.BaseBindingActivity;
import com.nnbc123.app.databinding.ActivityTreasureBoxBinding;
import com.nnbc123.app.treasure_box.fragment.BoxRecordFragment;
import com.nnbc123.app.treasure_box.fragment.BoxRuleFragment;
import com.nnbc123.app.treasure_box.widget.dialog.BoxMoreDialog;
import com.nnbc123.app.ui.webview.DialogWebViewActivity;
import com.nnbc123.app.utils.UserUtils;
import com.nnbc123.treasure_box.bean.PrizeInfo;
import com.nnbc123.treasure_box.event.MoreClickEvent;
import com.nnbc123.treasure_box.model.BoxModel;
import com.nnbc123.treasure_box.model.IBoxModel;
import com.nnbc123.library.annatation.ActLayoutRes; import com.nnbc123.library.annatation.ActLayoutRes;
import com.nnbc123.library.utils.FormatUtils; import com.nnbc123.library.utils.FormatUtils;
import com.nnbc123.library.utils.SingleToastUtil; import com.nnbc123.library.utils.SingleToastUtil;
import com.nnbc123.library.utils.TextWatcherWrapper; import com.nnbc123.library.utils.TextWatcherWrapper;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.tencent.qgame.animplayer.util.ScaleType;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@@ -54,13 +59,9 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
@ActLayoutRes(R.layout.activity_treasure_box) @ActLayoutRes(R.layout.activity_treasure_box)
public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBoxBinding> implements View.OnClickListener { public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBoxBinding> implements View.OnClickListener {
private final Runnable removeRunnable = () -> mBinding.llPrizeHint.removeAllViews(); private final Runnable removeRunnable = () -> mBinding.llPrizeHint.removeAllViews();
private int price = 20;
private volatile int keyNum; private volatile int keyNum;
private ArrayList<PrizeInfo> cacheList = new ArrayList<>(); private final ArrayList<PrizeInfo> hintPrizeCacheList = new ArrayList<>();
private ArrayList<PrizeInfo> hintPrizeCacheList = new ArrayList<>(); private final int boxType = IBoxModel.BOX_TYPE_NORMAL;
private ObjectAnimator translationXAnimator;
private ObjectAnimator translationYAnimator;
private int boxType = IBoxModel.BOX_TYPE_NORMAL;
private int height; private int height;
private int sendMessageSwitchLevel; private int sendMessageSwitchLevel;
@@ -72,6 +73,7 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
//这里的height用MATCH_PARENT状态栏会被顶上去,不知道什么鬼 //这里的height用MATCH_PARENT状态栏会被顶上去,不知道什么鬼
height = ScreenUtil.screenHeight - ScreenUtil.getStatusBarHeight(context); height = ScreenUtil.screenHeight - ScreenUtil.getStatusBarHeight(context);
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, height); getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, height);
@@ -83,23 +85,15 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_POP_CLICK, "房间pop点击", arguments); StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_POP_CLICK, "房间pop点击", arguments);
} }
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@Override @Override
protected void init() { protected void init() {
mBinding.setClick(this); mBinding.setClick(this);
translationXAnimator = ObjectAnimator.ofFloat(mBinding.ivGiftAnim, "translationX", 0,
ScreenUtil.screenWidth / 2f - ScreenUtil.dip2px(15 + 19)).setDuration(100);
translationXAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
translationXAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mBinding.ivGiftAnim.setVisibility(View.GONE);
}
});
mBinding.ivBox.post(() -> {
translationYAnimator = ObjectAnimator.ofFloat(mBinding.ivGiftAnim, "translationY", 0,
height - (mBinding.ivBox.getBottom() + mBinding.ivBox.getTop()) / 2f - ScreenUtil.dip2px(10 + 19)).setDuration(100);
translationYAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
});
WalletInfo walletInfo = PayModel.get().getCurrentWalletInfo(); WalletInfo walletInfo = PayModel.get().getCurrentWalletInfo();
if (walletInfo != null) { if (walletInfo != null) {
mBinding.tvDiamondNum.setText(FormatUtils.formatBigInteger(walletInfo.getDiamondNum())); mBinding.tvDiamondNum.setText(FormatUtils.formatBigInteger(walletInfo.getDiamondNum()));
@@ -113,16 +107,22 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
mBinding.editNum.setSelection(3); mBinding.editNum.setSelection(3);
SingleToastUtil.showToast("一次性最多只能摘200次"); SingleToastUtil.showToast("一次性最多只能摘200次");
} else { } else {
mBinding.tvContinuousNum.setText("消耗 " + num); mBinding.tvContinuousNum.setText("消耗" + num +"根魔法棒可连续变");
} }
} }
}); });
mBinding.ivBox.startPlay(getAssets(), "vap/gold_box_open.mp4");
loadKeyInfo(); mBinding.ivBox.setLoop(999999);
looperPrize(); mBinding.ivBox.setScaleType(ScaleType.CENTER_CROP);
looperHintPrize(); looperHintPrize();
} }
@Override
protected void onResume() {
super.onResume();
loadKeyInfo();
}
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
private void loadKeyInfo() { private void loadKeyInfo() {
BoxModel.get() BoxModel.get()
@@ -130,23 +130,39 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
.compose(bindToLifecycle()) .compose(bindToLifecycle())
.subscribe(keyInfo -> { .subscribe(keyInfo -> {
changeKeyNum(keyInfo.getKeyNum()); changeKeyNum(keyInfo.getKeyNum());
price = keyInfo.getKeyPrice();
sendMessageSwitchLevel = keyInfo.getSendMessageSwitchLevel(); sendMessageSwitchLevel = keyInfo.getSendMessageSwitchLevel();
}); });
} }
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMoreClickEvent(MoreClickEvent event) {
onClick(event.getView());
}
@Override
public void onBackPressed() {
if (mBinding.fragmentContainer.getVisibility() == View.VISIBLE) {
mBinding.fragmentContainer.setVisibility(View.GONE);
} else {
super.onBackPressed();
}
}
@Override @Override
public void onClick(View v) { public void onClick(View v) {
switch (v.getId()) { switch (v.getId()) {
case R.id.root_view: case R.id.root_view:
finish(); if (mBinding.fragmentContainer.getVisibility() == View.VISIBLE) {
mBinding.fragmentContainer.setVisibility(View.GONE);
} else {
finish();
}
break; break;
case R.id.iv_more: case R.id.iv_more:
new BoxMoreDialog(context, sendMessageSwitchLevel).openDialog(); replaceFragment(BoxMoreDialog.newInstance(sendMessageSwitchLevel));
break; break;
case R.id.tv_rank: case R.id.tv_rank:
// DialogWebViewActivity.start(context, UriProvider.getBoxRank(), false); replaceFragment(BoxRankingActivity.newInstance());
BoxRankingActivity.start(this);
break; break;
case R.id.iv_open: case R.id.iv_open:
openBox(StringUtils.toInt(mBinding.editNum.getText().toString(), 0)); openBox(StringUtils.toInt(mBinding.editNum.getText().toString(), 0));
@@ -164,11 +180,28 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
case R.id.ll_get_key: case R.id.ll_get_key:
DialogWebViewActivity.start(this, UriProvider.getBoxKey()); DialogWebViewActivity.start(this, UriProvider.getBoxKey());
break; break;
case R.id.tv_get_key:
mBinding.fragmentContainer.setVisibility(View.GONE);
DialogWebViewActivity.start(this, UriProvider.getBoxKey());
break;
case R.id.tv_box_rule:
replaceFragment(BoxRuleFragment.Companion.newInstance());
break;
case R.id.tv_history:
replaceFragment(BoxRecordFragment.Companion.newInstance());
break;
default: default:
break; break;
} }
} }
private void replaceFragment(Fragment fragment) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, fragment)
.commitNow();
mBinding.fragmentContainer.setVisibility(View.VISIBLE);
}
/** /**
* 检查钥匙(锤子)数量 * 检查钥匙(锤子)数量
* *
@@ -196,8 +229,6 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
} }
boolean sendMessage = (sendMessageSwitchLevel != 0 && UserUtils.getExpLevel() < sendMessageSwitchLevel) || DemoCache.readNeedBoxMsg(); boolean sendMessage = (sendMessageSwitchLevel != 0 && UserUtils.getExpLevel() < sendMessageSwitchLevel) || DemoCache.readNeedBoxMsg();
mBinding.ivOpen.setEnabled(false); mBinding.ivOpen.setEnabled(false);
mBinding.ivFirstBox.setVisibility(View.GONE);
mBinding.ivBoxOpen.startAnimation();
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
BoxModel.get().openBox(boxType, count, sendMessage) BoxModel.get().openBox(boxType, count, sendMessage)
.compose(bindToLifecycle()) .compose(bindToLifecycle())
@@ -208,36 +239,14 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
.toObservable() .toObservable()
.delay(startTime - System.currentTimeMillis() + 300, TimeUnit.MILLISECONDS) .delay(startTime - System.currentTimeMillis() + 300, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.flatMap(openBoxResult -> { .doOnNext(openBoxResult ->{
mBinding.ivOpen.setEnabled(true); mBinding.ivOpen.setEnabled(true);
changeKeyNum(openBoxResult.getRemainKeyNum()); changeKeyNum(openBoxResult.getRemainKeyNum());
cacheList.addAll(openBoxResult.getPrizeItemList()); mBinding.svgaGiftBg.startAnimation();
return Observable.fromIterable(openBoxResult.getPrizeItemList());
}) })
.flatMap(openBoxResult -> Observable.fromIterable(openBoxResult.getPrizeItemList()))
.filter(prizeInfo -> prizeInfo.getPrizeLevel() > 2) .filter(prizeInfo -> prizeInfo.getPrizeLevel() > 2)
.subscribe(prizeInfo -> hintPrizeCacheList.add(prizeInfo)); .subscribe(hintPrizeCacheList::add);
}
@SuppressLint("CheckResult")
private void looperPrize() {
Observable.interval(0, 100, TimeUnit.MILLISECONDS)
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.filter(aLong -> cacheList.size() > 0)
.subscribe(aLong -> {
PrizeInfo prizeInfo = cacheList.get(0);
String url = prizeInfo.getPrizeImgUrl();
if (cacheList.size() > 0) cacheList.remove(0);
if (!TextUtils.isEmpty(url)) {
if (translationXAnimator != null) translationXAnimator.start();
if (translationYAnimator != null) translationYAnimator.start();
mBinding.ivGiftAnim.setVisibility(View.VISIBLE);
mBinding.svgaGiftBg.startAnimation();
ImageLoadUtils.loadImage(context, url, mBinding.ivGiftAnim);
}
}
, e -> looperPrize());//出错了继续looper......
} }
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
@@ -260,13 +269,13 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
switch (prizeInfo.getPrizeLevel()) { switch (prizeInfo.getPrizeLevel()) {
case 3: case 3:
default: default:
linearLayout.setBackgroundResource(R.drawable.bg_box_prize_hint_v3); linearLayout.setBackgroundResource(R.drawable.bg_box_prize_hint_l3);
break; break;
case 4: case 4:
linearLayout.setBackgroundResource(R.drawable.bg_box_prize_hint_v4); linearLayout.setBackgroundResource(R.drawable.bg_box_prize_hint_l4);
break; break;
case 5: case 5:
linearLayout.setBackgroundResource(R.drawable.bg_box_prize_hint_v5); linearLayout.setBackgroundResource(R.drawable.bg_box_prize_hint_l5);
break; break;
} }
linearLayout.setPadding(ScreenUtil.dip2px(10), 0, ScreenUtil.dip2px(10), 0); linearLayout.setPadding(ScreenUtil.dip2px(10), 0, ScreenUtil.dip2px(10), 0);
@@ -313,7 +322,6 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
.subscribe(roomEvent -> { .subscribe(roomEvent -> {
switch (roomEvent.getEvent()) { switch (roomEvent.getEvent()) {
case RoomEvent.WALLET_UPDATE: case RoomEvent.WALLET_UPDATE:
loadKeyInfo();
setGold(roomEvent.getWalletInfo().getDiamondNum()); setGold(roomEvent.getWalletInfo().getDiamondNum());
break; break;
case RoomEvent.KICK_OUT_ROOM: case RoomEvent.KICK_OUT_ROOM:

View File

@@ -1,315 +0,0 @@
package com.nnbc123.app.treasure_box.activity;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.nnbc123.app.R;
import com.nnbc123.app.base.BaseBindingActivity;
import com.nnbc123.app.databinding.ActivityTreasureBoxHonourBinding;
import com.nnbc123.app.treasure_box.widget.dialog.BoxMoreDialog;
import com.nnbc123.app.ui.utils.ImageLoadUtils;
import com.nnbc123.app.ui.webview.DialogWebViewActivity;
import com.nnbc123.treasure_box.bean.PrizeInfo;
import com.nnbc123.treasure_box.model.BoxModel;
import com.nnbc123.treasure_box.model.IBoxModel;
import com.nnbc123.core.DemoCache;
import com.nnbc123.core.UriProvider;
import com.nnbc123.core.manager.IMNetEaseManager;
import com.nnbc123.core.manager.RoomEvent;
import com.nnbc123.core.pay.PayModel;
import com.nnbc123.core.pay.bean.WalletInfo;
import com.nnbc123.core.utils.StringUtils;
import com.nnbc123.library.annatation.ActLayoutRes;
import com.nnbc123.library.utils.FormatUtils;
import com.nnbc123.library.utils.SingleToastUtil;
import com.nnbc123.library.utils.TextWatcherWrapper;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
@ActLayoutRes(R.layout.activity_treasure_box_honour)
public class TreasureBoxHonourActivity extends BaseBindingActivity<ActivityTreasureBoxHonourBinding> {
private final Runnable removeRunnable = () -> mBinding.llPrizeHint.removeAllViews();
private int price = 20;
private volatile int keyNum;
private ArrayList<PrizeInfo> cacheList = new ArrayList<>();
private ArrayList<PrizeInfo> hintPrizeCacheList = new ArrayList<>();
private ObjectAnimator translationXAnimator;
private ObjectAnimator translationYAnimator;
private int boxType = IBoxModel.BOX_TYPE_HONOUR;
private int height;
private int sendMessageSwitchLevel;
public static void start(Context context) {
Intent starter = new Intent(context, TreasureBoxHonourActivity.class);
context.startActivity(starter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//这里的height用MATCH_PARENT状态栏会被顶上去,不知道什么鬼
height = ScreenUtil.screenHeight - ScreenUtil.getStatusBarHeight(context);
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, ScreenUtil.screenHeight - ScreenUtil.getStatusBarHeight(context));
getWindow().setGravity(Gravity.BOTTOM);
subscribeEvent();
}
@Override
protected void init() {
mBinding.setClick(this);
translationXAnimator = ObjectAnimator.ofFloat(mBinding.ivGiftAnim, "translationX", 0,
ScreenUtil.screenWidth / 2f - ScreenUtil.dip2px(15 + 19)).setDuration(100);
translationXAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
translationXAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mBinding.ivGiftAnim.setVisibility(View.GONE);
}
});
mBinding.ivBox.post(() -> {
translationYAnimator = ObjectAnimator.ofFloat(mBinding.ivGiftAnim, "translationY", 0,
height - (mBinding.ivBox.getBottom() + mBinding.ivBox.getTop()) / 2f - ScreenUtil.dip2px(55)).setDuration(100);
translationYAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
});
WalletInfo walletInfo = PayModel.get().getCurrentWalletInfo();
if (walletInfo != null) {
mBinding.tvDiamondNum.setText(FormatUtils.formatBigInteger(walletInfo.getDiamondNum()));
}
mBinding.editNum.addTextChangedListener(new TextWatcherWrapper() {
@Override
public void afterTextChanged(Editable editable) {
int num = StringUtils.toInt(mBinding.editNum.getText().toString(), 0);
mBinding.tvContinuousNum.setText("消耗" + num * 10);
}
});
loadKeyInfo();
looperPrize();
looperHintPrize();
}
@SuppressLint("CheckResult")
private void loadKeyInfo() {
BoxModel.get()
.getKeyInfo(boxType)
.compose(bindToLifecycle())
.subscribe(keyInfo -> {
changeKeyNum(keyInfo.getKeyNum());
price = keyInfo.getKeyPrice();
sendMessageSwitchLevel = keyInfo.getSendMessageSwitchLevel();
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.root_view:
finish();
break;
case R.id.iv_open:
openBox(StringUtils.toInt(mBinding.editNum.getText().toString()));
break;
case R.id.iv_more:
new BoxMoreDialog(context, sendMessageSwitchLevel).openDialog();
break;
case R.id.tv_rank:
BoxRankingActivity.start(this);
break;
case R.id.iv_sub:
mBinding.editNum.setText(String.valueOf(Math.max(StringUtils.toInt(mBinding.editNum.getText().toString(), 0) - 1, 1)));
break;
case R.id.iv_add:
mBinding.editNum.setText(String.valueOf(Math.min((StringUtils.toInt(mBinding.editNum.getText().toString(), 0) + 1), 9999)));
break;
case R.id.view_bg:
case R.id.iv_title:
//do nothing
break;
default:
break;
}
}
/**
* 检查钥匙(锤子)数量
*
* @param count 想要使用的数量
* @return true 表示数量不足,无法进行下一步操作
* false 表示数量没问题,可以继续操作
*/
private boolean checkKeyNum(int count) {
if (count == 0) {
SingleToastUtil.showToast("开启数量不能为0!");
return true;
}
if (keyNum < count) {
getDialogManager().showOkCancelDialog("参与活动获得流星", "去参与",
() -> DialogWebViewActivity.start(context, UriProvider.getBoxKey()));
return true;
}
return false;
}
@SuppressLint("CheckResult")
private void openBox(int count) {
if (checkKeyNum(count)) {
return;
}
mBinding.ivOpen.setEnabled(false);
mBinding.svgaOpen.startAnimation();
BoxModel.get()
.openBox(boxType, count, DemoCache.readNeedBoxMsg())
.compose(bindToLifecycle())
.doOnError(throwable -> {
mBinding.ivOpen.setEnabled(true);
toast(throwable.getMessage());
})
.toObservable()
.flatMap(openBoxResult -> {
mBinding.ivOpen.setEnabled(true);
changeKeyNum(openBoxResult.getRemainKeyNum());
cacheList.addAll(openBoxResult.getPrizeItemList());
return Observable.fromIterable(openBoxResult.getPrizeItemList());
})
.filter(prizeInfo -> prizeInfo.getPrizeLevel() > 2)
.subscribe(prizeInfo -> hintPrizeCacheList.add(prizeInfo));
}
@SuppressLint("CheckResult")
private void looperPrize() {
Observable.interval(0, 100, TimeUnit.MILLISECONDS)
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.filter(aLong -> cacheList.size() > 0)
.subscribe(aLong -> {
PrizeInfo prizeInfo = cacheList.get(0);
String url = prizeInfo.getPrizeImgUrl();
if (cacheList.size() > 0) cacheList.remove(0);
if (!TextUtils.isEmpty(url)) {
if (translationXAnimator != null) translationXAnimator.start();
if (translationYAnimator != null) translationYAnimator.start();
mBinding.ivGiftAnim.setVisibility(View.VISIBLE);
mBinding.svgaGiftBg.startAnimation();
ImageLoadUtils.loadImage(context, url, mBinding.ivGiftAnim);
}
}
, e -> looperPrize());//出错了继续looper......
}
@SuppressLint("CheckResult")
private void looperHintPrize() {
Observable.interval(0, 250, TimeUnit.MILLISECONDS)
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.filter(aLong -> hintPrizeCacheList.size() > 0)
.subscribe(aLong -> addPrizeHintView(hintPrizeCacheList.remove(0))
, e -> looperHintPrize());//出错了继续looper......
}
private void addPrizeHintView(PrizeInfo prizeInfo) {
mBinding.llPrizeHint.removeCallbacks(removeRunnable);
mBinding.llPrizeHint.postDelayed(removeRunnable, 3000);
LinearLayout linearLayout = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.item_box_prize_hint, null);
ViewGroup.MarginLayoutParams layoutParams = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ScreenUtil.dip2px(21));
layoutParams.setMargins(0, 0, 0, ScreenUtil.dip2px(5));
linearLayout.setLayoutParams(layoutParams);
switch (prizeInfo.getPrizeLevel()) {
case 3:
default:
linearLayout.setBackgroundResource(R.drawable.bg_box_prize_hint_v3);
break;
case 4:
linearLayout.setBackgroundResource(R.drawable.bg_box_prize_hint_v4);
break;
case 5:
linearLayout.setBackgroundResource(R.drawable.bg_box_prize_hint_v5);
break;
}
mBinding.llPrizeHint.addView(linearLayout);
if (mBinding.llPrizeHint.getChildCount() > 6) {
mBinding.llPrizeHint.removeViewAt(0);
}
for (int i = 0; i < mBinding.llPrizeHint.getChildCount(); i++) {
ObjectAnimator.ofFloat(mBinding.llPrizeHint.getChildAt(i), "translationY", ScreenUtil.dip2px(21), 0)
.setDuration(200)
.start();
}
((TextView) linearLayout.findViewById(R.id.tv_prize_name)).setText(prizeInfo.getPrizeName());
((TextView) linearLayout.findViewById(R.id.tv_prize_num)).setText("x" + prizeInfo.getPrizeNum());
}
/**
* 更新钥匙(锤子)数量
*
* @param num
*/
private void changeKeyNum(int num) {
keyNum = num;
mBinding.tvKeyNum.setText(keyNum + "");
}
/**
* 更新钱包
*
* @param g
*/
private void setGold(double g) {
mBinding.tvDiamondNum.setText(FormatUtils.formatBigInteger(g));
PayModel.get().getCurrentWalletInfo().setDiamondNum(g);
}
@SuppressLint("CheckResult")
private void subscribeEvent() {
//更新钻石数量和被踢出房间退出
IMNetEaseManager.get().getChatRoomEventObservable()
.compose(bindToLifecycle())
.subscribe(roomEvent -> {
switch (roomEvent.getEvent()) {
case RoomEvent.WALLET_UPDATE:
loadKeyInfo();
setGold(roomEvent.getWalletInfo().getDiamondNum());
break;
case RoomEvent.KICK_OUT_ROOM:
finish();
break;
}
});
}
@Override
protected boolean needSteepStateBar() {
return true;
}
@Override
protected void setStatusBar() {
super.setStatusBar();
StatusBarUtil.transparencyBar(this);
StatusBarUtil.StatusBarLightMode(this);
}
}

View File

@@ -7,9 +7,9 @@ import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.BaseViewHolder;
import com.nnbc123.core.room.treasure_box.bean.BoxRankingInfo;
import com.nnbc123.app.R; import com.nnbc123.app.R;
import com.nnbc123.app.ui.utils.ImageLoadKt; import com.nnbc123.app.ui.utils.ImageLoadKt;
import com.nnbc123.core.room.treasure_box.bean.BoxRankingInfo;
/** /**
* @author jack * @author jack
@@ -30,10 +30,12 @@ public class BoxRankingListAdapter extends BaseQuickAdapter<BoxRankingInfo.RankV
protected void convert(BaseViewHolder baseViewHolder, final BoxRankingInfo.RankVosBean rankVosBeans) { protected void convert(BaseViewHolder baseViewHolder, final BoxRankingInfo.RankVosBean rankVosBeans) {
if (rankVosBeans == null) return; if (rankVosBeans == null) return;
baseViewHolder.setText(R.id.tv_userName, rankVosBeans.getNick()).setText(R.id.tv_amount, rankVosBeans.getAmount() + ""); baseViewHolder.setText(R.id.tv_userName, rankVosBeans.getNick())
.setText(R.id.tv_amount, rankVosBeans.getAmount() + "");
ImageLoadKt.loadAvatar(baseViewHolder.getView(R.id.iv_avatar), rankVosBeans.getAvatar()); ImageLoadKt.loadAvatar(baseViewHolder.getView(R.id.iv_avatar), rankVosBeans.getAvatar());
TextView tvPosition = baseViewHolder.getView(R.id.tv_position); TextView tvPosition = baseViewHolder.getView(R.id.tv_position);
ImageView ivPosition = baseViewHolder.getView(R.id.iv_position); tvPosition.setText(baseViewHolder.getLayoutPosition() + 1 + "");
/*
switch (baseViewHolder.getLayoutPosition()) { switch (baseViewHolder.getLayoutPosition()) {
case 0: case 0:
tvPosition.setVisibility(View.GONE); tvPosition.setVisibility(View.GONE);
@@ -56,5 +58,6 @@ public class BoxRankingListAdapter extends BaseQuickAdapter<BoxRankingInfo.RankV
tvPosition.setText(baseViewHolder.getLayoutPosition() + 1 + ""); tvPosition.setText(baseViewHolder.getLayoutPosition() + 1 + "");
break; break;
} }
*/
} }
} }

View File

@@ -9,11 +9,12 @@ import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.nnbc123.app.R;
import com.nnbc123.app.base.BaseMvpFragment;
import com.nnbc123.app.treasure_box.adapter.BoxRankingListAdapter;
import com.nnbc123.core.room.treasure_box.bean.BoxRankingInfo; import com.nnbc123.core.room.treasure_box.bean.BoxRankingInfo;
import com.nnbc123.core.room.treasure_box.event.RefreshBoxRankingEvent; import com.nnbc123.core.room.treasure_box.event.RefreshBoxRankingEvent;
import com.nnbc123.app.R;
import com.nnbc123.app.base.BaseMvpFragment;
import com.nnbc123.app.common.EmptyViewHelper;
import com.nnbc123.app.treasure_box.adapter.BoxRankingListAdapter;
import com.nnbc123.app.treasure_box.module.IBoxRankingView; import com.nnbc123.app.treasure_box.module.IBoxRankingView;
import com.nnbc123.app.treasure_box.presenter.BoxRankingPresenter; import com.nnbc123.app.treasure_box.presenter.BoxRankingPresenter;
import com.nnbc123.library.base.factory.CreatePresenter; import com.nnbc123.library.base.factory.CreatePresenter;
@@ -37,7 +38,7 @@ public class BoxRankingFragment extends BaseMvpFragment<IBoxRankingView, BoxRank
public static BoxRankingFragment newInstance(int datetype) { public static BoxRankingFragment newInstance(int datetype) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putInt("datetype",datetype); args.putInt("datetype", datetype);
BoxRankingFragment fragment = new BoxRankingFragment(); BoxRankingFragment fragment = new BoxRankingFragment();
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
@@ -54,7 +55,7 @@ public class BoxRankingFragment extends BaseMvpFragment<IBoxRankingView, BoxRank
@Override @Override
public int getRootLayoutId() { public int getRootLayoutId() {
return R.layout.fragment_newbie_list; return R.layout.fragment_box_ranking;
} }
@Override @Override
@@ -67,24 +68,21 @@ public class BoxRankingFragment extends BaseMvpFragment<IBoxRankingView, BoxRank
public void onSetListener() { public void onSetListener() {
swipeRefresh.setOnRefreshListener(() -> { swipeRefresh.setOnRefreshListener(() -> {
mAdapter.setEnableLoadMore(true); mAdapter.setEnableLoadMore(true);
loadData(true,datetype); loadData(true, datetype);
}); });
} }
@Override @Override
public void initiate() { public void initiate() {
initRecyclerView(); initRecyclerView();
loadData(true,datetype); loadData(true, datetype);
} }
/** /**
* 刷新数据 * 刷新数据
*/ */
private void loadData(boolean isRefresh,int datetype) { private void loadData(boolean isRefresh, int datetype) {
getMvpPresenter().loadData(isRefresh,datetype); getMvpPresenter().loadData(isRefresh, datetype);
} }
@Override @Override
@@ -100,19 +98,18 @@ public class BoxRankingFragment extends BaseMvpFragment<IBoxRankingView, BoxRank
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(linearLayoutManager); recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(mAdapter); recyclerView.setAdapter(mAdapter);
mAdapter.setEmptyView(EmptyViewHelper.createEmptyTextView(mContext, "暂无记录"));
} }
@Override @Override
public void getBoxRankingSuccess(BoxRankingInfo rankingInfo) { public void getBoxRankingSuccess(BoxRankingInfo rankingInfo) {
hideStatus();
if (mAdapter != null) { if (mAdapter != null) {
int page = getMvpPresenter().getPage(); int page = getMvpPresenter().getPage();
if (page <= 1) { if (page <= 1) {
swipeRefresh.setRefreshing(false); swipeRefresh.setRefreshing(false);
if (rankingInfo.getRankVos() == null || rankingInfo.getRankVos().size() == 0) { if (rankingInfo.getRankVos() == null || rankingInfo.getRankVos().size() == 0) {
showNoData(getString(R.string.empty_newbie_list)); mAdapter.setNewData(null);
} else { } else {
mAdapter.setNewData(rankingInfo.getRankVos()); mAdapter.setNewData(rankingInfo.getRankVos());
} }
@@ -122,18 +119,16 @@ public class BoxRankingFragment extends BaseMvpFragment<IBoxRankingView, BoxRank
@Override @Override
public void getBoxRankingFails(String error) { public void getBoxRankingFails(String error) {
hideStatus();
int page = getMvpPresenter().getPage(); int page = getMvpPresenter().getPage();
if (page <= 1) { if (page <= 1) {
showNoData(getString(R.string.empty_newbie_list)); mAdapter.setNewData(null);
} }
} }
@Override @Override
public void getBoxRankingLoadMoreSuccess(BoxRankingInfo rankingInfo) { public void getBoxRankingLoadMoreSuccess(BoxRankingInfo rankingInfo) {
if (ListUtils.isListEmpty(rankingInfo.getRankVos())){ if (ListUtils.isListEmpty(rankingInfo.getRankVos())) {
mAdapter.loadMoreEnd(); mAdapter.loadMoreEnd(true);
return; return;
} }
mAdapter.addData(rankingInfo.getRankVos()); mAdapter.addData(rankingInfo.getRankVos());
@@ -142,22 +137,21 @@ public class BoxRankingFragment extends BaseMvpFragment<IBoxRankingView, BoxRank
@Override @Override
public void getBoxRankingLoadMoreFails(String error) { public void getBoxRankingLoadMoreFails(String error) {
hideStatus();
int page = getMvpPresenter().getPage(); int page = getMvpPresenter().getPage();
if (page <= 1) { if (page <= 1) {
showNoData(getString(R.string.empty_newbie_list)); mAdapter.setNewData(null);
} }
} }
@Override @Override
public void onReloadData() { public void onReloadData() {
super.onReloadData(); super.onReloadData();
loadData(true,datetype); loadData(true, datetype);
} }
@Override @Override
public void onLoadMoreRequested() { public void onLoadMoreRequested() {
loadData(false,datetype); loadData(false, datetype);
} }
@Override @Override
@@ -168,6 +162,6 @@ public class BoxRankingFragment extends BaseMvpFragment<IBoxRankingView, BoxRank
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshRanking(RefreshBoxRankingEvent event) { public void onRefreshRanking(RefreshBoxRankingEvent event) {
loadData(true,datetype); loadData(true, datetype);
} }
} }

View File

@@ -0,0 +1,87 @@
package com.nnbc123.app.treasure_box.fragment
import android.annotation.SuppressLint
import android.os.Bundle
import android.widget.ImageView
import androidx.recyclerview.widget.LinearLayoutManager
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.app.R
import com.nnbc123.app.base.BaseViewBindingFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.FragmentBoxRecordBinding
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.app.ui.utils.load
import com.nnbc123.treasure_box.bean.PrizeInfo
import com.nnbc123.treasure_box.model.BoxModel
import java.text.SimpleDateFormat
import java.util.*
class BoxRecordFragment : BaseViewBindingFragment<FragmentBoxRecordBinding>() {
companion object {
fun newInstance(): BoxRecordFragment {
val args = Bundle()
val fragment = BoxRecordFragment()
fragment.arguments = args
return fragment
}
}
private lateinit var adapter: BaseQuickAdapter<PrizeInfo, BaseViewHolder>
private var page = 1
private lateinit var rvDelegate: RVDelegate<PrizeInfo>
private val pageSize = 20
private val format = SimpleDateFormat("MM-dd HH:mm", Locale.CHINA)
override fun init() {
adapter =
object : BaseQuickAdapter<PrizeInfo, BaseViewHolder>(R.layout.item_box_prize_record) {
override fun convert(helper: BaseViewHolder, item: PrizeInfo) {
helper.getView<ImageView>(R.id.iv_prize_pic).load(item.prizeImgUrl)
helper.setText(R.id.tv_prize_name, item.prizeName)
.setText(R.id.tv_prize_num, "x${item.prizeNum}")
.setText(R.id.tv_prize_time, format.format(item.createTime))
}
}
rvDelegate = RVDelegate.Builder<PrizeInfo>()
.setAdapter(adapter)
.setRecyclerView(binding.recyclerView)
.setEmptyView(EmptyViewHelper.createEmptyTextView(context, "暂无记录"))
.setLayoutManager(LinearLayoutManager(mContext))
.setRefreshLayout(binding.swipeRefresh)
.setPageSize(pageSize)
.build()
adapter.setOnLoadMoreListener({ loadData(false) }, binding.recyclerView)
binding.swipeRefresh.setOnRefreshListener {
loadData(true)
}
loadData(true)
}
@SuppressLint("CheckResult")
private fun loadData(isRefresh: Boolean) {
binding.swipeRefresh.isRefreshing = isRefresh
if (isRefresh) {
page = 1
} else {
page++
}
BoxModel.get()
.getPrizeRecord(page, pageSize, "time", AuthModel.get().currentUid)
.compose(bindToLifecycle())
.subscribe({
rvDelegate.loadData(it, isRefresh)
}, {
it.printStackTrace()
})
}
}

View File

@@ -0,0 +1,71 @@
package com.nnbc123.app.treasure_box.fragment
import android.annotation.SuppressLint
import android.os.Bundle
import android.widget.ImageView
import androidx.recyclerview.widget.LinearLayoutManager
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.nnbc123.app.R
import com.nnbc123.app.base.BaseViewBindingFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.FragmentBoxRuleBinding
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.app.ui.utils.load
import com.nnbc123.treasure_box.bean.BoxRuleItemInfo
import com.nnbc123.treasure_box.model.BoxModel
class BoxRuleFragment : BaseViewBindingFragment<FragmentBoxRuleBinding>() {
companion object {
fun newInstance(): BoxRuleFragment {
val args = Bundle()
val fragment = BoxRuleFragment()
fragment.arguments = args
return fragment
}
}
private lateinit var adapter: BaseQuickAdapter<BoxRuleItemInfo, BaseViewHolder>
private lateinit var rvDelegate: RVDelegate<BoxRuleItemInfo>
override fun init() {
adapter =
object : BaseQuickAdapter<BoxRuleItemInfo, BaseViewHolder>(R.layout.item_box_rule) {
override fun convert(helper: BaseViewHolder, item: BoxRuleItemInfo) {
helper.getView<ImageView>(R.id.iv_prize_pic).load(item.prizeUrl)
helper.setText(R.id.tv_prize_name, item.prizeName)
.setText(R.id.tv_diamond, "${item.platformValue}")
.setText(R.id.tv_probability, "${item.showRate}%")
}
}
rvDelegate = RVDelegate.Builder<BoxRuleItemInfo>()
.setAdapter(adapter)
.setRecyclerView(binding.recyclerView)
.setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无记录"))
.setLayoutManager(LinearLayoutManager(mContext))
.setRefreshLayout(binding.swipeRefresh)
.build()
binding.swipeRefresh.setOnRefreshListener {
loadData()
}
loadData()
}
@SuppressLint("CheckResult")
private fun loadData() {
binding.swipeRefresh.isRefreshing = true
BoxModel.get()
.openBoxRule
.compose(bindToLifecycle())
.subscribe({
rvDelegate.setNewData(it)
}, {
it.printStackTrace()
})
}
}

View File

@@ -1,132 +0,0 @@
package com.nnbc123.app.treasure_box.fragment;
import android.app.Dialog;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.DialogFragment;
import com.coorchice.library.utils.LogUtils;
import com.nnbc123.app.R;
import com.nnbc123.app.ui.webview.DialogWebViewActivity;
import com.nnbc123.core.UriProvider;
import com.nnbc123.core.manager.AvRoomDataManager;
import com.nnbc123.core.statistic.StatisticManager;
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
import com.nnbc123.library.utils.TimeUtils;
public class ChooseTreasureBoxDialogFragment extends DialogFragment implements View.OnClickListener {
private ConstraintLayout clBoxNormal, clBoxHonour;
private OnTreasureBoxChooseListener onTreasureBoxChooseListener;
private TextView tvOpenTime;
private String mOpenTime;
private TextView mTvOpenHonour;
public ChooseTreasureBoxDialogFragment(String openTime) {
this.mOpenTime = openTime;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_choose_treasure_box_dialog, container);
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题
if (getDialog().getWindow() != null) {
getDialog().getWindow().setBackgroundDrawableResource(android.R.color.transparent);// 透明
}
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
clBoxNormal = view.findViewById(R.id.cl_box_normal);
clBoxHonour = view.findViewById(R.id.cl_box_honour);
tvOpenTime = view.findViewById(R.id.tv_open_time);
mTvOpenHonour = view.findViewById(R.id.tv_open_honour);
view.findViewById(R.id.iv_close).setOnClickListener(this);
clBoxNormal.setOnClickListener(this);
tvOpenTime.setText("限时 "+ mOpenTime);
// String mOpenTime = "11:10-02:00";
int startTime = Integer.parseInt(mOpenTime.substring(0,mOpenTime.indexOf("-")).replace(":",""));
int endTime = Integer.parseInt(mOpenTime.substring(mOpenTime.indexOf("-") + 1).replace(":",""));
LogUtils.e("startTime"+startTime);
LogUtils.e("endTime"+endTime);
LogUtils.e("范围:"+TimeUtils.getTimeLimit(startTime,endTime));
mTvOpenHonour.setEnabled(TimeUtils.getTimeLimit(startTime,endTime));
if (TimeUtils.getTimeLimit(startTime,endTime)){
clBoxHonour.setOnClickListener(this);
}
view.findViewById(R.id.ll_get_key).setOnClickListener(v -> DialogWebViewActivity.start(getContext(), UriProvider.getBoxKey()));
}
@Override
public void onStart() {
super.onStart();
Dialog dialog = getDialog();
if (dialog != null) {
DisplayMetrics dm = new DisplayMetrics();
if (getActivity() != null && getActivity().getWindowManager() != null
&& dialog.getWindow() != null) {
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
dialog.getWindow().setGravity(Gravity.CENTER);
}
}
}
@Override
public void onClick(View view) {
int id = view.getId();
if (id == R.id.iv_close) {
dismiss();
} else if (id == R.id.cl_box_normal) {
if (onTreasureBoxChooseListener != null) {
if (AvRoomDataManager.get().isCpRoom()) {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_CP_ROOM_SMASHEGG_CHOOSE, "开始砸金蛋-陪伴房");
} else {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_MP_ROOM_SMASHEGG_CHOOSE, "开始砸金蛋-多人房");
}
onTreasureBoxChooseListener.onBoxClick(0);
}
dismiss();
} else if (id == R.id.cl_box_honour) {
if (onTreasureBoxChooseListener != null) {
if (AvRoomDataManager.get().isCpRoom()) {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_CP_ROOM_SMASHEGG_CHOOSE, "开始砸至尊蛋-陪伴房");
} else {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_MP_ROOM_SMASHEGG_CHOOSE, "开始砸至尊蛋-多人房");
}
onTreasureBoxChooseListener.onBoxClick(1);
}
dismiss();
}
}
public interface OnTreasureBoxChooseListener {
/**
* @param type 选择的宝箱类型 0 黄金(原始) 1 钻石
*/
void onBoxClick(int type);
}
public void setOnTreasureBoxChooseListener(OnTreasureBoxChooseListener onTreasureBoxChooseListener) {
this.onTreasureBoxChooseListener = onTreasureBoxChooseListener;
}
}

View File

@@ -1,9 +1,9 @@
package com.nnbc123.app.treasure_box.module; package com.nnbc123.app.treasure_box.module;
import com.nnbc123.core.room.treasure_box.bean.BoxRankingInfo;
import com.nnbc123.core.auth.AuthModel; import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.bean.response.ServiceResult; import com.nnbc123.core.bean.response.ServiceResult;
import com.nnbc123.core.community.CommunityConstant; import com.nnbc123.core.community.CommunityConstant;
import com.nnbc123.core.room.treasure_box.bean.BoxRankingInfo;
import com.nnbc123.core.utils.net.RxHelper; import com.nnbc123.core.utils.net.RxHelper;
import com.nnbc123.library.net.rxnet.RxNet; import com.nnbc123.library.net.rxnet.RxNet;
@@ -32,7 +32,7 @@ public class BoxRankingModel {
} }
public static BoxRankingModel get() { public static BoxRankingModel get() {
return BoxRankingModel.Helper.INSTANCE; return Helper.INSTANCE;
} }

View File

@@ -1,10 +1,10 @@
package com.nnbc123.app.treasure_box.presenter; package com.nnbc123.app.treasure_box.presenter;
import com.nnbc123.app.base.BaseMvpPresenter; import com.nnbc123.core.Constants;
import com.nnbc123.core.room.treasure_box.bean.BoxRankingInfo; import com.nnbc123.core.room.treasure_box.bean.BoxRankingInfo;
import com.nnbc123.app.base.BaseMvpPresenter;
import com.nnbc123.app.treasure_box.module.BoxRankingModel; import com.nnbc123.app.treasure_box.module.BoxRankingModel;
import com.nnbc123.app.treasure_box.module.IBoxRankingView; import com.nnbc123.app.treasure_box.module.IBoxRankingView;
import com.nnbc123.core.Constants;
import io.reactivex.SingleObserver; import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;

View File

@@ -3,7 +3,6 @@ package com.nnbc123.app.treasure_box.widget;
import android.content.Context; import android.content.Context;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
import com.nnbc123.core.initial.InitialModel; import com.nnbc123.core.initial.InitialModel;
import com.nnbc123.core.initial.bean.InitInfo; import com.nnbc123.core.initial.bean.InitInfo;
@@ -14,10 +13,6 @@ import com.nnbc123.core.super_admin.util.SuperAdminUtil;
import com.nnbc123.core.user.UserModel; import com.nnbc123.core.user.UserModel;
import com.nnbc123.core.user.bean.UserInfo; import com.nnbc123.core.user.bean.UserInfo;
import com.nnbc123.app.treasure_box.activity.TreasureBoxActivity; import com.nnbc123.app.treasure_box.activity.TreasureBoxActivity;
import com.nnbc123.app.treasure_box.activity.TreasureBoxHonourActivity;
import com.nnbc123.app.treasure_box.fragment.ChooseTreasureBoxDialogFragment;
import com.nnbc123.library.utils.SingleToastUtil;
import com.nnbc123.library.utils.TimeUtils;
import io.reactivex.Single; import io.reactivex.Single;
@@ -32,12 +27,6 @@ public class GoldBoxHelper {
.flatMap(boxInfo -> Single.just(!isShowBox(boxInfo.getOpenBoxSwitchLevelNo()))); .flatMap(boxInfo -> Single.just(!isShowBox(boxInfo.getOpenBoxSwitchLevelNo())));
} }
public static boolean isShowBox() {
InitInfo initInfo = InitialModel.get().getCacheInitInfo();
if (initInfo == null) return false;
return isShowBox(initInfo.getOpenBoxSwitchLevelNo());
}
private static boolean isShowBox(int switchLevelNo) { private static boolean isShowBox(int switchLevelNo) {
if (SuperAdminUtil.isSuperAdmin()) { if (SuperAdminUtil.isSuperAdmin()) {
return false; return false;
@@ -59,31 +48,7 @@ public class GoldBoxHelper {
public static void handleBoxClick(Context context) { public static void handleBoxClick(Context context) {
String openTime = GoldBoxHelper.getBoxOpenTime(); TreasureBoxActivity.start(context);
if (openTime == null || openTime.isEmpty()) {
SingleToastUtil.showToast("数据加载中,请稍后再试!");
return;
}
int startTime = Integer.parseInt(openTime.substring(0, openTime.indexOf("-")).replace(":", ""));
int endTime = Integer.parseInt(openTime.substring(openTime.indexOf("-") + 1).replace(":", ""));
if (startTime != endTime && TimeUtils.getTimeLimit(startTime, endTime)) {
ChooseTreasureBoxDialogFragment chooseTreasureBoxDialogFragment = new ChooseTreasureBoxDialogFragment(openTime);
chooseTreasureBoxDialogFragment.setOnTreasureBoxChooseListener(type -> {
if (type == 0) {// 幸运许愿池(默认)
TreasureBoxActivity.start(context);
} else if (type == 1) {// 梦幻许愿池
TreasureBoxHonourActivity.start(context);
}
});
chooseTreasureBoxDialogFragment.show(((FragmentActivity) context).getSupportFragmentManager(), "chooseTreasureBoxDialogFragment");
} else {
TreasureBoxActivity.start(context);
}
}
public static boolean isShowDiamondBox() {
return AvRoomDataManager.get().mBoxSwitchVo.isDiamondBoxSwitch();
} }
@Nullable @Nullable
@@ -92,12 +57,6 @@ public class GoldBoxHelper {
return AvRoomDataManager.get().mBoxSwitchVo.getOpenBoxIcon(); return AvRoomDataManager.get().mBoxSwitchVo.getOpenBoxIcon();
} }
@Nullable
public static String getBoxOpenTime() {
if (AvRoomDataManager.get().mBoxSwitchVo == null) return null;
return AvRoomDataManager.get().mBoxSwitchVo.getDiamondBoxOpenTime();
}
public static boolean isShowRadish() { public static boolean isShowRadish() {
InitInfo initInfo = InitialModel.get().getCacheInitInfo(); InitInfo initInfo = InitialModel.get().getCacheInitInfo();
UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); UserInfo userInfo = UserModel.get().getCacheLoginUserInfo();

View File

@@ -1,20 +1,21 @@
package com.nnbc123.app.treasure_box.widget.dialog; package com.nnbc123.app.treasure_box.widget.dialog;
import android.content.Context; import android.content.Context;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ViewDataBinding;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.os.Bundle; import android.os.Bundle;
import androidx.appcompat.app.AppCompatDialog;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import com.netease.nim.uikit.common.util.sys.ScreenUtil; import androidx.appcompat.app.AppCompatDialog;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ViewDataBinding;
import com.nnbc123.library.annatation.ActLayoutRes; import com.nnbc123.library.annatation.ActLayoutRes;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
/** /**
* Created by huangmeng1 on 2018/4/12. * Created by huangmeng1 on 2018/4/12.

View File

@@ -1,61 +1,51 @@
package com.nnbc123.app.treasure_box.widget.dialog; package com.nnbc123.app.treasure_box.widget.dialog;
import android.content.Context; import android.os.Bundle;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import com.nnbc123.app.R;
import com.nnbc123.app.databinding.DialogBoxMoreBinding;
import com.nnbc123.app.ui.webview.DialogWebViewActivity;
import com.nnbc123.app.utils.UserUtils;
import com.nnbc123.core.DemoCache; import com.nnbc123.core.DemoCache;
import com.nnbc123.core.UriProvider; import com.nnbc123.app.R;
import com.nnbc123.app.base.BaseViewBindingFragment;
import com.nnbc123.app.databinding.DialogBoxMoreBinding;
import com.nnbc123.app.utils.UserUtils;
import com.nnbc123.treasure_box.event.MoreClickEvent;
import com.nnbc123.library.annatation.ActLayoutRes; import com.nnbc123.library.annatation.ActLayoutRes;
import com.nnbc123.library.utils.SingleToastUtil; import com.nnbc123.library.utils.SingleToastUtil;
import org.greenrobot.eventbus.EventBus;
@ActLayoutRes(R.layout.dialog_box_more) @ActLayoutRes(R.layout.dialog_box_more)
public class BoxMoreDialog extends BaseBindingDialog<DialogBoxMoreBinding> { public class BoxMoreDialog extends BaseViewBindingFragment<DialogBoxMoreBinding> {
private int sendMessageSwitchLevel; private int sendMessageSwitchLevel;
public BoxMoreDialog(Context context, int sendMessageSwitchLevel) {
super(context); public static BoxMoreDialog newInstance(int sendMessageSwitchLevel) {
width = WindowManager.LayoutParams.MATCH_PARENT;
height = WindowManager.LayoutParams.WRAP_CONTENT; Bundle args = new Bundle();
this.sendMessageSwitchLevel = sendMessageSwitchLevel; args.putInt("sendMessageSwitchLevel",sendMessageSwitchLevel);
BoxMoreDialog fragment = new BoxMoreDialog();
fragment.setArguments(args);
return fragment;
} }
@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 @Override
protected void init() { public void init() {
binding.tvHistory.setOnClickListener(v -> { sendMessageSwitchLevel = requireArguments().getInt("sendMessageSwitchLevel");
DialogWebViewActivity.start(context, UriProvider.getBoxHistory(), false); getBinding().tvHistory.setOnClickListener(v -> {
closeDialog(); EventBus.getDefault().post(new MoreClickEvent(v));
}); });
binding.tvBoxRule.setOnClickListener(v -> { getBinding().tvBoxRule.setOnClickListener(v -> {
DialogWebViewActivity.start(context, UriProvider.getBoxHelp(), false); EventBus.getDefault().post(new MoreClickEvent(v));
closeDialog();
}); });
binding.tvGetKey.setOnClickListener(v -> { getBinding().tvGetKey.setOnClickListener(v -> {
DialogWebViewActivity.start(context, UriProvider.getBoxKey()); EventBus.getDefault().post(new MoreClickEvent(v));
closeDialog();
}); });
boolean canSwitch = sendMessageSwitchLevel != 0 && UserUtils.getExpLevel() >= sendMessageSwitchLevel; boolean canSwitch = sendMessageSwitchLevel != 0 && UserUtils.getExpLevel() >= sendMessageSwitchLevel;
updateMsgSwitch(canSwitch && DemoCache.readNeedBoxMsg()); updateMsgSwitch(canSwitch && DemoCache.readNeedBoxMsg());
binding.ivSwitch.setOnClickListener(v -> { getBinding().ivSwitch.setOnClickListener(v -> {
if (canSwitch) { if (canSwitch) {
boolean sendMsg = !DemoCache.readNeedBoxMsg(); boolean sendMsg = !DemoCache.readNeedBoxMsg();
updateMsgSwitch(sendMsg); updateMsgSwitch(sendMsg);
@@ -68,7 +58,7 @@ public class BoxMoreDialog extends BaseBindingDialog<DialogBoxMoreBinding> {
} }
private void updateMsgSwitch(boolean sendMsg) { private void updateMsgSwitch(boolean sendMsg) {
binding.ivSwitch.setImageResource(sendMsg ? getBinding().ivSwitch.setImageResource(sendMsg ?
R.drawable.icon_room_set_lock_true : R.drawable.icon_room_set_lock_false); R.drawable.icon_box_set_true : R.drawable.icon_box_set_false);
} }
} }

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#0D002F" android:state_checked="true" />
<item android:color="@color/white" />
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 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: 3.6 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#80c65900" />
<corners
android:bottomRightRadius="20dp"
android:topRightRadius="20dp" />
<stroke
android:width="1px"
android:color="#FFFA65" />
</shape>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#803400BC" />
<corners
android:bottomRightRadius="20dp"
android:topRightRadius="20dp" />
<stroke
android:width="1px"
android:color="#FFFDFB" />
</shape>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#800D002F" />
<corners
android:bottomRightRadius="20dp"
android:topRightRadius="20dp" />
<stroke
android:width="1px"
android:color="#ACAAFF" />
</shape>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<shape android:shape="rectangle">
<gradient android:angle="90" android:endColor="#ffffe2bb" android:startColor="#ffe7991a" android:type="linear" android:useLevel="true" />
<corners android:bottomLeftRadius="12dp" android:bottomRightRadius="12dp" android:topLeftRadius="12dp" android:topRightRadius="12dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/transparent" />
</shape>
</item>
</selector>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ff0d002f" />
<corners android:radius="20dp" />
<stroke
android:width="1px"
android:color="#FFE974" />
</shape>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#B34A189F" />
<corners android:radius="12dp" />
</shape>

View File

@@ -0,0 +1,58 @@
<?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:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:background="@drawable/bg_treasure_box_more"
tools:layout_gravity="center"
tools:layout_height="340dp"
tools:layout_width="250dp">
<RadioGroup
android:id="@+id/rg"
android:layout_width="180dp"
android:layout_height="27dp"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_marginTop="10dp"
android:background="@drawable/shape_0d002f_corner_20dp_ffe974"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_today"
android:layout_width="88dp"
android:layout_height="24dp"
android:background="@drawable/selector_treasure_box_rank_rb"
android:button="@null"
android:checked="true"
android:fontFamily="sans-serif-medium"
android:gravity="center"
android:text="今日榜单"
android:textColor="@color/color_selector_white_false_8542e8"
android:textSize="12sp" />
<RadioButton
android:id="@+id/rb_yesterday"
android:layout_width="88dp"
android:layout_height="24dp"
android:background="@drawable/selector_treasure_box_rank_rb"
android:button="@null"
android:layout_marginStart="1dp"
android:fontFamily="sans-serif-medium"
android:gravity="center"
android:text="昨日榜单"
android:textColor="@color/color_selector_white_false_8542e8"
android:textSize="12sp" />
</RadioGroup>
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp" />
</LinearLayout>

View File

@@ -18,54 +18,50 @@
<View <View
android:id="@+id/view_bg" android:id="@+id/view_bg"
android:layout_width="285dp" android:layout_width="271dp"
android:layout_height="416dp" android:layout_height="403dp"
android:layout_marginTop="20dp"
android:background="@drawable/treasure_box_bg_normal" android:background="@drawable/treasure_box_bg_normal"
android:onClick="@{click}" android:onClick="@{click}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.4" />
<com.tencent.qgame.animplayer.AnimView
android:id="@+id/iv_box"
android:layout_width="270dp"
android:layout_height="360dp"
android:layout_gravity="center_horizontal"
android:onClick="@{click}"
app:layout_constraintBottom_toBottomOf="@id/view_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageView <ImageView
android:id="@+id/iv_title" android:id="@+id/iv_more"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="46dp"
android:layout_marginEnd="12dp"
android:gravity="center"
android:onClick="@{click}" android:onClick="@{click}"
android:src="@drawable/treasure_box_title_normal" android:src="@drawable/icon_room_box_more_normal"
app:layout_constraintBottom_toTopOf="@id/view_bg" app:layout_constraintEnd_toEndOf="@id/view_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/view_bg" /> app:layout_constraintTop_toTopOf="@id/view_bg" />
<TextView <TextView
android:id="@+id/tv_rank" android:id="@+id/tv_rank"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="15dp" android:layout_marginTop="11dp"
android:layout_marginTop="35dp"
android:drawableStart="@drawable/treasure_box_rank" android:drawableStart="@drawable/treasure_box_rank"
android:drawablePadding="5dp"
android:gravity="center" android:gravity="center"
android:onClick="@{click}" android:onClick="@{click}"
android:text="排行榜"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="13sp" android:textSize="13sp"
app:layout_constraintStart_toStartOf="@id/view_bg" app:layout_constraintStart_toStartOf="@id/iv_more"
app:layout_constraintTop_toTopOf="@id/view_bg" /> app:layout_constraintTop_toBottomOf="@id/iv_more" />
<ImageView
android:id="@+id/iv_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="35dp"
android:layout_marginEnd="18dp"
android:gravity="center"
android:onClick="@{click}"
android:src="@drawable/icon_room_box_more_normal"
app:layout_constraintEnd_toEndOf="@id/view_bg"
app:layout_constraintTop_toTopOf="@id/view_bg" />
<TextView <TextView
android:id="@+id/tv_diamond_num" android:id="@+id/tv_diamond_num"
@@ -74,7 +70,7 @@
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:drawableTop="@drawable/treasure_box_diamond" android:drawableTop="@drawable/treasure_box_diamond"
android:gravity="center" android:gravity="center"
android:textColor="#ffffffff" android:textColor="@color/white"
android:textSize="11sp" android:textSize="11sp"
android:visibility="gone" android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/iv_more" app:layout_constraintEnd_toEndOf="@id/iv_more"
@@ -86,103 +82,59 @@
android:id="@+id/tv_key_num" android:id="@+id/tv_key_num"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginStart="5dp"
android:drawableTop="@drawable/treasure_box_meteor"
android:gravity="center" android:gravity="center"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="11sp" android:textSize="13sp"
app:layout_constraintEnd_toEndOf="@id/iv_more" app:layout_constraintBottom_toBottomOf="@id/bg_key_num"
app:layout_constraintStart_toStartOf="@id/iv_more" app:layout_constraintStart_toEndOf="@id/bg_key_num"
app:layout_constraintTop_toBottomOf="@id/tv_diamond_num" app:layout_constraintTop_toTopOf="@id/bg_key_num"
tools:text="200" /> tools:text="99999999" />
<ImageView <ImageView
android:id="@+id/iv_first_box" android:id="@+id/bg_key_num"
android:layout_width="0dp" android:layout_width="30dp"
android:layout_height="0dp" android:layout_height="30dp"
android:scaleType="fitXY" android:layout_marginStart="8dp"
android:src="@drawable/ic_box_temp" android:layout_marginTop="46dp"
app:layout_constraintBottom_toBottomOf="@id/iv_box" android:src="@drawable/treasure_box_meteor"
app:layout_constraintEnd_toEndOf="@id/iv_box" app:layout_constraintStart_toStartOf="@id/view_bg"
app:layout_constraintStart_toStartOf="@id/iv_box" app:layout_constraintTop_toTopOf="@id/view_bg" />
app:layout_constraintTop_toTopOf="@id/iv_box" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/iv_box"
android:layout_width="190dp"
android:layout_height="242dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="52dp"
android:onClick="@{click}"
app:autoPlay="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/view_bg"
app:loopCount="999999"
app:source="svga/gold_box_bg.svga" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/iv_box_open"
android:layout_width="190dp"
android:layout_height="242dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="52dp"
app:autoPlay="false"
app:fillMode="Clear"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/view_bg"
app:loopCount="1"
app:source="svga/gold_box_open.svga" />
<ImageView
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 <TextView
android:id="@+id/tv_continuous_num" android:id="@+id/tv_continuous_num"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="17dp"
android:gravity="center" android:gravity="center"
android:text="消耗 1" android:text="消耗1根魔法棒可连续变"
android:textColor="@color/white" android:textColor="#DCC3FF"
android:includeFontPadding="false"
android:textSize="11sp" android:textSize="11sp"
app:layout_constraintBottom_toBottomOf="@id/tv_continuous_open" app:layout_constraintBottom_toBottomOf="@id/view_bg"
app:layout_constraintEnd_toStartOf="@id/tv_continuous_open" app:layout_constraintEnd_toEndOf="@id/view_bg"
app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="@id/view_bg" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_continuous_open" />
<TextView <View
android:id="@+id/tv_continuous_open" android:layout_width="0dp"
android:layout_width="wrap_content" android:layout_height="0dp"
android:layout_height="wrap_content" android:background="@drawable/shape_0d002f_corner"
android:layout_marginTop="3dp" app:layout_constraintBottom_toBottomOf="@id/iv_sub"
android:gravity="center" app:layout_constraintEnd_toEndOf="@id/iv_add"
android:text=" 糖果连续摘" app:layout_constraintStart_toStartOf="@id/iv_sub"
android:textColor="@color/white" app:layout_constraintTop_toTopOf="@id/iv_sub" />
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_continuous_num"
app:layout_constraintTop_toBottomOf="@id/iv_box" />
<ImageView <ImageView
android:id="@+id/iv_sub" android:id="@+id/iv_sub"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginBottom="10dp"
android:onClick="@{click}" android:onClick="@{click}"
android:src="@drawable/treasure_box_sub_normal" android:src="@drawable/treasure_box_sub_normal"
app:layout_constraintBottom_toTopOf="@id/iv_open"
app:layout_constraintEnd_toStartOf="@id/edit_num" app:layout_constraintEnd_toStartOf="@id/edit_num"
app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintTop_toBottomOf="@id/tv_continuous_open" />
<EditText <EditText
android:id="@+id/edit_num" android:id="@+id/edit_num"
@@ -213,15 +165,13 @@
<ImageView <ImageView
android:id="@+id/iv_open" android:id="@+id/iv_open"
android:layout_width="135dp" android:layout_width="143dp"
android:layout_height="40dp" android:layout_height="38dp"
android:layout_marginStart="25dp" android:layout_marginTop="6dp"
android:layout_marginTop="15dp" android:layout_marginBottom="7dp"
android:layout_marginEnd="25dp"
android:layout_marginBottom="22dp"
android:onClick="@{click}" android:onClick="@{click}"
android:src="@drawable/click_open_box_selector" android:src="@drawable/click_open_box_selector"
app:layout_constraintBottom_toBottomOf="@id/view_bg" app:layout_constraintBottom_toTopOf="@id/tv_continuous_num"
app:layout_constraintEnd_toEndOf="@id/view_bg" app:layout_constraintEnd_toEndOf="@id/view_bg"
app:layout_constraintStart_toStartOf="@id/view_bg" /> app:layout_constraintStart_toStartOf="@id/view_bg" />
@@ -229,10 +179,9 @@
android:id="@+id/ll_prize_hint" android:id="@+id/ll_prize_hint"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="135dp" android:layout_height="135dp"
android:layout_marginStart="7dp"
android:gravity="bottom" android:gravity="bottom"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@id/tv_continuous_num" app:layout_constraintBottom_toTopOf="@id/iv_sub"
app:layout_constraintStart_toStartOf="@id/view_bg" /> app:layout_constraintStart_toStartOf="@id/view_bg" />
<com.opensource.svgaplayer.SVGAImageView <com.opensource.svgaplayer.SVGAImageView
@@ -242,6 +191,7 @@
android:layout_marginStart="80dp" android:layout_marginStart="80dp"
android:layout_marginTop="60dp" android:layout_marginTop="60dp"
app:autoPlay="false" app:autoPlay="false"
app:fillMode="Clear"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/iv_box" app:layout_constraintStart_toStartOf="@id/iv_box"
@@ -258,6 +208,7 @@
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:onClick="@{click}" android:onClick="@{click}"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/view_bg"> app:layout_constraintTop_toBottomOf="@+id/view_bg">
@@ -266,7 +217,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="参与活动获得" android:text="参与活动获得"
android:textColor="#ffffffff" android:textColor="@color/white"
android:textSize="13sp" /> android:textSize="13sp" />
<ImageView <ImageView
@@ -280,7 +231,20 @@
android:text="糖果>" android:text="糖果>"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="13sp" /> android:textSize="13sp" />
</LinearLayout> </LinearLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_container"
android:layout_width="250dp"
android:layout_height="340dp"
android:layout_marginBottom="10dp"
android:background="@drawable/bg_treasure_box_more"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/view_bg"
app:layout_constraintEnd_toEndOf="@id/view_bg"
app:layout_constraintStart_toStartOf="@id/view_bg" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data> <data>
@@ -8,55 +9,74 @@
type="android.view.View.OnClickListener" /> type="android.view.View.OnClickListener" />
</data> </data>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:background="@drawable/shape_white_top_10dp"
android:orientation="vertical" android:orientation="vertical"
android:paddingStart="15dp" android:paddingStart="15dp"
android:paddingBottom="80dp" android:paddingEnd="15dp"
android:paddingEnd="15dp"> tools:background="@drawable/bg_treasure_box_more"
tools:layout_gravity="center"
tools:layout_height="340dp"
tools:layout_width="250dp">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="75dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp" android:layout_marginTop="16dp"
android:layout_marginBottom="20dp" android:layout_marginBottom="20dp"
android:fontFamily="sans-serif-medium"
android:gravity="center"
android:includeFontPadding="false"
android:text="更多" android:text="更多"
android:textColor="#ff333333" android:textColor="@color/white"
android:textSize="16sp" /> android:textSize="13sp" />
<TextView <TextView
android:id="@+id/tv_get_key" android:id="@+id/tv_get_key"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="43dp" android:layout_height="39dp"
android:background="@drawable/bottom_line" android:drawableEnd="@drawable/arrow_right_box"
android:gravity="center_vertical" android:gravity="center_vertical"
android:text="参与活动获得糖果" android:text="参与活动获得糖果"
android:textColor="#ff333333" android:textColor="@color/white"
android:textSize="14sp" /> android:textSize="13sp" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#33EDEDED" />
<TextView <TextView
android:id="@+id/tv_history" android:id="@+id/tv_history"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="43dp" android:layout_height="39dp"
android:background="@drawable/bottom_line" android:drawableEnd="@drawable/arrow_right_box"
android:gravity="center_vertical" android:gravity="center_vertical"
android:text="获奖记录" android:text="获奖记录"
android:textColor="#ff333333" android:textColor="@color/white"
android:textSize="14sp" /> android:textSize="13sp" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#33EDEDED" />
<TextView <TextView
android:id="@+id/tv_box_rule" android:id="@+id/tv_box_rule"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="43dp" android:layout_height="39dp"
android:drawableEnd="@drawable/arrow_right_box"
android:gravity="center_vertical" android:gravity="center_vertical"
android:text="玩法规则" android:text="玩法规则"
android:background="@drawable/bottom_line" android:textColor="@color/white"
android:textColor="#ff333333" android:textSize="13sp" />
android:textSize="14sp" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#33EDEDED" />
<FrameLayout <FrameLayout
android:id="@+id/fl_msg_switch" android:id="@+id/fl_msg_switch"
@@ -65,23 +85,27 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="43dp" android:layout_height="39dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:text="允许中奖消息对外展示" android:text="允许中奖消息对外展示"
android:textColor="#ff333333" android:textColor="@color/white"
android:textSize="14sp" /> android:textSize="13sp" />
<ImageView <ImageView
android:id="@+id/iv_switch" android:id="@+id/iv_switch"
android:layout_width="@dimen/dp_45" android:layout_width="@dimen/dp_32"
android:layout_height="@dimen/dp_25" android:layout_height="@dimen/dp_16"
android:scaleType="fitCenter"
android:layout_gravity="end|center_vertical" android:layout_gravity="end|center_vertical"
android:src="@drawable/icon_room_set_lock_false" /> android:scaleType="fitCenter"
android:src="@drawable/icon_box_set_false" />
</FrameLayout> </FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#33EDEDED" />
</LinearLayout> </LinearLayout>
</layout> </layout>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="2dp" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -0,0 +1,42 @@
<?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:orientation="vertical"
android:paddingStart="15dp"
android:paddingEnd="15dp"
tools:background="@drawable/bg_treasure_box_more"
tools:layout_gravity="center"
tools:layout_height="340dp"
tools:layout_width="250dp">
<TextView
android:id="@+id/rb_today"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:layout_marginBottom="20dp"
android:fontFamily="sans-serif-medium"
android:gravity="center"
android:includeFontPadding="false"
android:text="获奖记录"
android:textColor="@color/white"
android:textSize="13sp" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="6dp" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>

View File

@@ -0,0 +1,97 @@
<?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:orientation="vertical"
android:paddingStart="15dp"
android:paddingEnd="15dp"
tools:background="@drawable/bg_treasure_box_more"
tools:layout_gravity="center"
tools:layout_height="340dp"
tools:layout_width="250dp">
<TextView
android:id="@+id/rb_today"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:layout_marginBottom="20dp"
android:fontFamily="sans-serif-medium"
android:gravity="center"
android:includeFontPadding="false"
android:text="玩法规则"
android:textColor="@color/white"
android:textSize="13sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="12dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_box_rule_start" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:lineSpacingExtra="3dp"
android:text="通过许愿池许愿获得的礼物放到礼物包裹,点开礼物面板即可查看"
android:textColor="@color/white"
android:textSize="10sp" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:drawableStart="@drawable/icon_box_rule_start"
android:drawablePadding="2dp"
android:text="每次许愿100%获得礼物"
android:textColor="@color/white"
android:textSize="10sp" />
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp">
<View
android:layout_width="54dp"
android:layout_height="3dp"
android:layout_gravity="bottom"
android:background="@drawable/shape_e7991a_to_ffe2bb" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="礼物概率:"
android:textColor="@color/white"
android:textSize="12sp" />
</FrameLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="6dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="6dp" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>

View File

@@ -0,0 +1,58 @@
<?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="wrap_content"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<FrameLayout
android:layout_width="44dp"
android:layout_height="44dp"
android:background="@drawable/shape_ffe974_corner_12dp">
<ImageView
android:id="@+id/iv_prize_pic"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="center"
android:src="@drawable/default_cover" />
</FrameLayout>
<TextView
android:id="@+id/tv_prize_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:fontFamily="sans-serif"
android:includeFontPadding="false"
android:lines="1"
android:textColor="@color/white"
android:textSize="13sp"
tools:text="哈哈哈哈" />
<TextView
android:id="@+id/tv_prize_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:includeFontPadding="false"
android:lines="1"
android:textColor="@color/white"
android:textSize="13sp"
tools:text="x12" />
<TextView
android:id="@+id/tv_prize_time"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:textColor="#DCC3FF"
android:textSize="11sp"
tools:text="06-30 16:00" />
</LinearLayout>

View File

@@ -0,0 +1,66 @@
<?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="wrap_content"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<FrameLayout
android:layout_width="44dp"
android:layout_height="44dp"
android:background="@drawable/shape_ffe974_corner_12dp">
<ImageView
android:id="@+id/iv_prize_pic"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="center"
android:src="@drawable/default_cover" />
</FrameLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv_prize_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:lines="1"
android:textColor="@color/white"
android:textSize="10sp"
tools:text="哈哈哈哈" />
<TextView
android:id="@+id/tv_diamond"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/treasure_box_diamond"
android:drawablePadding="2dp"
android:lines="1"
android:textColor="#DCC3FF"
android:textSize="9sp"
tools:text="x12" />
</LinearLayout>
<TextView
android:id="@+id/tv_probability"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:textColor="@color/white"
android:textSize="10sp"
tools:text="06-30 16:00" />
</LinearLayout>

View File

@@ -11,7 +11,7 @@ public class XChatConstants {
/** /**
* 包名(各种缓存目录的根目录) * 包名(各种缓存目录的根目录)
*/ */
public static final String XCHAT_DIR_NAME = "com.mango.moshen"; public static final String XCHAT_DIR_NAME = "com.nnbc123.app";
/** /**
* sp名字 * sp名字
@@ -32,21 +32,16 @@ public class XChatConstants {
* 本地数据库的名字(目前是用 realm 数据库) * 本地数据库的名字(目前是用 realm 数据库)
*/ */
public static final String XCHAT_DATABASE_NAME = "accompany.db"; public static final String XCHAT_DATABASE_NAME = "accompany.db";
/**
* 微信支付 APP ID
*/
public static final String WX_APP_ID = "";
/** /**
* bugly key (DEBUG) * bugly key (DEBUG)
*/ */
public static final String BUGLY_KEY_DEBUG = "2a7521d23f";//已更改 public static final String BUGLY_KEY_DEBUG = "2a7521d23f";
/** /**
* bugly key (RELEASE) * bugly key (RELEASE)
*/ */
public static final String BUGLY_KEY_RELEASE = "3655441f78";//已更改 public static final String BUGLY_KEY_RELEASE = "3655441f78";
/** /**
* 云信 key (DEBUG) * 云信 key (DEBUG)
@@ -56,54 +51,22 @@ public class XChatConstants {
/** /**
* 云信 key (RELEASE) * 云信 key (RELEASE)
*/ */
public static final String NIM_KEY_RELEASE = "14ef7a0d0a84cb49bae1c22d78cf1ddf";//已更换 public static final String NIM_KEY_RELEASE = "5e76ec47632d86c30ce18eabfa332b6a";
/**
* 网易易盾 productNumber
*/
public static final String YI_DUN_PRODUCT_NUMBER = "YD00313347064620";//已更换
/** /**
* 网易易盾 业务 ID 注册 * 网易易盾 业务 ID 注册
*/ */
public static final String QUICK_PASS_BUSINESS_ID = "60cdaa83aa654e5ea184de7160b4073d"; public static final String QUICK_PASS_BUSINESS_ID = "3a94ceb70b144963a03bf98cb55b812a";
/**
* 网易易盾 业务 ID 注册
*/
public static final String YI_DUN_BUSINESS_ID = "af43d0f8752147c48f8281800da6049e";
/**
* 网易易盾 业务 ID 注册
*/
public static final String YI_DUN_LOGIN_BUSINESS_ID = "67881c7a69764c058435ba93a51b1285";
/**
* 数美-天网 的 organization
*/
public static final String SHU_MEI_TIAN_WANG_ORGANIZATION = "2qjgWI5tyNipa08YPjOt";
/** /**
* 声网 key * 声网 key
*/ */
public static final String AGORA_KEY = "7ae1a8dabe7a44a9a67c829faa409e70"; //已更换 public static final String AGORA_KEY = "7ae1a8dabe7a44a9a67c829faa409e70";
/**
* 阿里云日志空间名字
*/
public static final String ALIYUN_LOG_NAME = "66accompanylog";
/**
* 阿里云日志空间名字
*/
public static final String ALIYUN_LOG_STORE = "66accompanylog";
/**
* 百度统计 key
*/
public static final String BAIDU_APP_KEY = "b8a4cb4bd1";//已更改
/** /**
* 友盟统计 key * 友盟统计 key
*/ */
public static final String UMENG_APP_KEY = "5ff6bc27adb42d5826a1cb97";//已更改 public static final String UMENG_APP_KEY = "5ff6bc27adb42d5826a1cb97";
/** /**
* linkedMe key * linkedMe key
@@ -173,13 +136,7 @@ public class XChatConstants {
* 分享群组 URL * 分享群组 URL
*/ */
public static final String SHARE_WORLD_DYNAMIC_URL = "/yinyou/modules/world/share-page/index.html"; public static final String SHARE_WORLD_DYNAMIC_URL = "/yinyou/modules/world/share-page/index.html";
/**
* 游戏排行榜 URL
*/
public static final String GAME_ROOK = "/yinyou/modules/erbanRank/game_rank.html?type=week";
/** /**
* 系统消息那个用户的UID * 系统消息那个用户的UID
*/ */
@@ -231,7 +188,6 @@ public class XChatConstants {
public static final String REPORT_TYPE_ROOM = "room"; // 房间 public static final String REPORT_TYPE_ROOM = "room"; // 房间
public static final String REPORT_TYPE_WORLD = "world"; // 话题 public static final String REPORT_TYPE_WORLD = "world"; // 话题
public static final String REPORT_TYPE_VOICE = "voice"; // 声音瓶子 public static final String REPORT_TYPE_VOICE = "voice"; // 声音瓶子
public static final String REPORT_TYPE_MISSION = ""; // 师徒
public static final String REPORT_TYPE_USERCARD = "USERCARD"; // 资料卡片 public static final String REPORT_TYPE_USERCARD = "USERCARD"; // 资料卡片
public static final String REPORT_TYPE_WORLDDYNAMIC = "WORLDDYNAMIC"; // 世界动态 public static final String REPORT_TYPE_WORLDDYNAMIC = "WORLDDYNAMIC"; // 世界动态
public static final String REPORT_TYPE_DYNAMICCOMMENT = "DYNAMICCOMMENT"; // 世界动态 public static final String REPORT_TYPE_DYNAMICCOMMENT = "DYNAMICCOMMENT"; // 世界动态
@@ -276,7 +232,7 @@ public class XChatConstants {
/** /**
* 聊天室文本消息易盾反垃圾业务id * 聊天室文本消息易盾反垃圾业务id
*/ */
public static final String CHAT_ROOM_ANTI_SPAM_CONFIG_ID = BuildConfig.DEBUG ? "be58dfa4a664540006f0ed1f752d604a" : "244721766ba607056a32c8824a85c253"; public static final String CHAT_ROOM_ANTI_SPAM_CONFIG_ID = BuildConfig.DEBUG ? "d6ee07a01d458ac212962a01f13d1996" : "d6ee07a01d458ac212962a01f13d1996";
public static final int KICK_OUT_ROOM_LIMIT_ENTER_TIME = 5 * 60 * 1000; public static final int KICK_OUT_ROOM_LIMIT_ENTER_TIME = 5 * 60 * 1000;

View File

@@ -1,8 +1,8 @@
package com.nnbc123.core; package com.nnbc123.core;
import com.nnbc123.xchat_android_constants.XChatConstants;
import com.nnbc123.library.utils.config.BasicConfig; import com.nnbc123.library.utils.config.BasicConfig;
import com.nnbc123.library.utils.pref.CommonPref; import com.nnbc123.library.utils.pref.CommonPref;
import com.nnbc123.xchat_android_constants.XChatConstants;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
@@ -16,11 +16,6 @@ public class Constants {
public static final String ERBAN_DIR_NAME = XChatConstants.XCHAT_DIR_NAME; public static final String ERBAN_DIR_NAME = XChatConstants.XCHAT_DIR_NAME;
public static final String nimAppKey = Env.isDebug() ? public static final String nimAppKey = Env.isDebug() ?
XChatConstants.NIM_KEY_DEBUG : XChatConstants.NIM_KEY_RELEASE; XChatConstants.NIM_KEY_DEBUG : XChatConstants.NIM_KEY_RELEASE;
public static final String nimAppSecret = "da03b83af84a";
/**
* 百度统计
*/
public static final String BAIDU_APPKEY = XChatConstants.BAIDU_APP_KEY;
public static final String LOG_DIR = ERBAN_DIR_NAME + File.separator + "logs"; public static final String LOG_DIR = ERBAN_DIR_NAME + File.separator + "logs";
public static final String CONFIG_DIR = ERBAN_DIR_NAME + File.separator + "config"; public static final String CONFIG_DIR = ERBAN_DIR_NAME + File.separator + "config";
@@ -37,23 +32,13 @@ public class Constants {
public static final int PAGE_START = 1; public static final int PAGE_START = 1;
public static final int PAGE_SIZE = 20; public static final int PAGE_SIZE = 20;
public static final int PAGE_HOME_HOT_SIZE = 12;
public static final int BILL_PAGE_SIZE = 50; public static final int BILL_PAGE_SIZE = 50;
public static final int DEBUG_MAX_UID = 100000; public static final int DEBUG_MAX_UID = 100000;
public static final String HOME_TAB_INFO = "home_tab_info";
public static final String KEY_USER_INFO = "key_user_info";
public static final String KEY_HOME_LIST = "key_home_list";
public static final String KEY_HOME_HOT_LIST = "key_home_hot_list";
public static final String KEY_HOME_NO_HOT_LIST = "key_home_no_hot_list";
public static final int FAN_MAIN_PAGE_TYPE = 100; public static final int FAN_MAIN_PAGE_TYPE = 100;
public static final int FAN_NO_MAIN_PAGE_TYPE = 101; public static final int FAN_NO_MAIN_PAGE_TYPE = 101;
public static final String KEY_PAGE_TYPE = "page_type"; public static final String KEY_PAGE_TYPE = "page_type";
public static final String KEY_MAIN_TAB_LIST = "main_tab_list";
public static final String KEY_POSITION = "position"; public static final String KEY_POSITION = "position";
@@ -65,37 +50,15 @@ public class Constants {
public static final String QUESTION_MARK = "?"; public static final String QUESTION_MARK = "?";
public static final int PAGE_TYPE_AV_ROOM_ACTIVITY = 100;
public static final int PAGE_TYPE_USER_INFO_ACTIVITY = 101;
public static final int PAGE_TYPE_MAIN_FRAGMENT = 102; public static final int PAGE_TYPE_MAIN_FRAGMENT = 102;
public static final String KEY_ROOM_IS_SHOW_ONLINE = "is_show_online";
public static final String KEY_ROOM_INFO = "key_room_info";
/**
* 房间相关Key设置
*/
public static final String ROOM_UPDATE_KEY_POSTION = "micPosition";
public static final String ROOM_UPDATE_KEY_UID = "micUid";
public static final String ROOM_UPDATE_KEY_GENDER = "gender";
public static final String KEY_CHAT_ROOM_INFO_ROOM = "roomInfo"; public static final String KEY_CHAT_ROOM_INFO_ROOM = "roomInfo";
public static final String KEY_CHAT_ROOM_INFO_MIC = "micQueue"; public static final String KEY_CHAT_ROOM_INFO_MIC = "micQueue";
public static final String ROOM_UID = "ROOM_UID"; public static final String ROOM_UID = "ROOM_UID";
public static final String ROOM_TYPE = "ROOM_TYPE";
public static final String ROOM_INFO = "ROOM_INFO"; public static final String ROOM_INFO = "ROOM_INFO";
public static final String IS_ROOM_MIN = "is_room_min";
public static final String IS_PARTY = "is_party";
/**
* 座驾版本第一次显示控制key
*/
public static final String SHOW_CAR_GUIDE = "show_car_guide";
public static final String NEW_USER_ICON = "https://image.zhongjialx.com/newUserIcon.png";
public static final String IS_SEND = "isSend"; public static final String IS_SEND = "isSend";
public static final String TOP_TITLE = "top_title";
public static final int CLIENT_ROLE_BROADCASTER = 1; public static final int CLIENT_ROLE_BROADCASTER = 1;
public static final int CLIENT_ROLE_AUDIENCE = 2; public static final int CLIENT_ROLE_AUDIENCE = 2;

View File

@@ -0,0 +1,91 @@
package com.nnbc123.treasure_box.bean;
import java.io.Serializable;
public class BoxRuleItemInfo implements Serializable {
/**
* prizeName :
* prizeImgUrl :
* prizeLevel : 1
* drawTime : 11111
*/
private String prizeName;
private String prizeUrl;
private int prizeLevel;
private long createTime;
private int keyNum;
private int platformValue;
private int prizeNum;
private String showRate;
public BoxRuleItemInfo() {
}
public int getPlatformValue() {
return platformValue;
}
public void setPlatformValue(int platformValue) {
this.platformValue = platformValue;
}
public String getPrizeName() {
return prizeName;
}
public void setPrizeName(String prizeName) {
this.prizeName = prizeName;
}
public String getPrizeUrl() {
return prizeUrl;
}
public void setPrizeUrl(String prizeImgUrl) {
this.prizeUrl = prizeImgUrl;
}
public int getPrizeLevel() {
return prizeLevel;
}
public void setPrizeLevel(int prizeLevel) {
this.prizeLevel = prizeLevel;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public int getPrizeNum() {
return prizeNum;
}
public void setPrizeNum(int prizeNum) {
this.prizeNum = prizeNum;
}
public int getKeyNum() {
return keyNum;
}
public void setKeyNum(int keyNum) {
this.keyNum = keyNum;
}
public String getShowRate() {
return showRate;
}
public void setShowRate(String showRate) {
this.showRate = showRate;
}
}

View File

@@ -15,7 +15,7 @@ public class PrizeInfo implements Serializable {
private String prizeName; private String prizeName;
private String prizeImgUrl; private String prizeImgUrl;
private int prizeLevel; private int prizeLevel;
private String createTime; private long createTime;
private int keyNum; private int keyNum;
private int platformValue; private int platformValue;
private int prizeNum; private int prizeNum;
@@ -61,11 +61,11 @@ public class PrizeInfo implements Serializable {
this.prizeLevel = prizeLevel; this.prizeLevel = prizeLevel;
} }
public String getCreateTime() { public long getCreateTime() {
return createTime; return createTime;
} }
public void setCreateTime(String createTime) { public void setCreateTime(long createTime) {
this.createTime = createTime; this.createTime = createTime;
} }

View File

@@ -0,0 +1,19 @@
package com.nnbc123.treasure_box.event;
import android.view.View;
import androidx.annotation.NonNull;
public class MoreClickEvent {
@NonNull
private final View view;
public MoreClickEvent(@NonNull View view) {
this.view = view;
}
@NonNull
public View getView() {
return view;
}
}

View File

@@ -1,6 +1,7 @@
package com.nnbc123.treasure_box.model; package com.nnbc123.treasure_box.model;
import com.nnbc123.treasure_box.bean.BoxOpenStatusInfo; import com.nnbc123.treasure_box.bean.BoxOpenStatusInfo;
import com.nnbc123.treasure_box.bean.BoxRuleItemInfo;
import com.nnbc123.treasure_box.bean.HonourBuyKeyResultInfo; import com.nnbc123.treasure_box.bean.HonourBuyKeyResultInfo;
import com.nnbc123.treasure_box.bean.HonourKeyInfo; import com.nnbc123.treasure_box.bean.HonourKeyInfo;
import com.nnbc123.treasure_box.bean.OpenBoxHonourResult; import com.nnbc123.treasure_box.bean.OpenBoxHonourResult;
@@ -45,10 +46,6 @@ public class BoxModel extends BaseModel implements IBoxModel {
return BoxModelHelper.instance; return BoxModelHelper.instance;
} }
private static class BoxModelHelper {
private static IBoxModel instance = new BoxModel();
}
@Override @Override
public Single<ConfigImgUrl> getRule() { public Single<ConfigImgUrl> getRule() {
return api.getRule() return api.getRule()
@@ -57,11 +54,11 @@ public class BoxModel extends BaseModel implements IBoxModel {
} }
@Override @Override
public Single<OpenBoxResult> openBox(int boxType,int keyNum, boolean sendMessage) { public Single<OpenBoxResult> openBox(int boxType, int keyNum, boolean sendMessage) {
if (AvRoomDataManager.get().mCurrentRoomInfo == null) { if (AvRoomDataManager.get().mCurrentRoomInfo == null) {
return Single.error(new Throwable("当前房间信息为空.")); return Single.error(new Throwable("当前房间信息为空."));
} }
return api.openBox(boxType,keyNum, sendMessage, AuthModel.get().getCurrentUid(), return api.openBox(boxType, keyNum, sendMessage, AuthModel.get().getCurrentUid(),
AvRoomDataManager.get().mCurrentRoomInfo.getUid()) AvRoomDataManager.get().mCurrentRoomInfo.getUid())
.compose(RxHelper.handleSchedulers()) .compose(RxHelper.handleSchedulers())
.flatMap(openBoxResultServiceResult -> { .flatMap(openBoxResultServiceResult -> {
@@ -81,12 +78,18 @@ public class BoxModel extends BaseModel implements IBoxModel {
} }
@Override @Override
public Single<ServiceResult<List<PrizeInfo>>> getPrizeRecord(int page, public Single<List<PrizeInfo>> getPrizeRecord(int page,
int pageSize, int pageSize,
String sortType, String sortType,
long uid) { long uid) {
return api.getPrizeRecord(page, pageSize, sortType, uid) return api.getPrizeRecord(page, pageSize, sortType, uid)
.compose(RxHelper.handleSchedulers()); .compose(RxHelper.handleCommon());
}
@Override
public Single<List<BoxRuleItemInfo>> getOpenBoxRule() {
return api.getOpenBoxRule(2)
.compose(RxHelper.handleCommon());
} }
@Override @Override
@@ -111,7 +114,7 @@ public class BoxModel extends BaseModel implements IBoxModel {
@Override @Override
public Single<KeyInfo> getKeyInfo(int boxType) { public Single<KeyInfo> getKeyInfo(int boxType) {
return api.getKeyInfo(boxType,AuthModel.get().getCurrentUid()) return api.getKeyInfo(boxType, AuthModel.get().getCurrentUid())
.compose(RxHelper.handleSchedulers()) .compose(RxHelper.handleSchedulers())
.compose(RxHelper.handleBeanData()); .compose(RxHelper.handleBeanData());
} }
@@ -265,5 +268,18 @@ public class BoxModel extends BaseModel implements IBoxModel {
*/ */
@GET("box/diamond/prizes/withRate") @GET("box/diamond/prizes/withRate")
Single<ServiceResult<List<PrizeInfo>>> getHonourBoxJackpotInfo(); Single<ServiceResult<List<PrizeInfo>>> getHonourBoxJackpotInfo();
/**
* 中奖记录列表
*
* @return 中奖纪录列表
*/
@GET("box/getOpenBoxRule ")
Single<ServiceResult<List<BoxRuleItemInfo>>> getOpenBoxRule(@Query("boxType") int boxType);
}
private static class BoxModelHelper {
private static IBoxModel instance = new BoxModel();
} }
} }

View File

@@ -1,6 +1,7 @@
package com.nnbc123.treasure_box.model; package com.nnbc123.treasure_box.model;
import com.nnbc123.treasure_box.bean.BoxOpenStatusInfo; import com.nnbc123.treasure_box.bean.BoxOpenStatusInfo;
import com.nnbc123.treasure_box.bean.BoxRuleItemInfo;
import com.nnbc123.treasure_box.bean.HonourBuyKeyResultInfo; import com.nnbc123.treasure_box.bean.HonourBuyKeyResultInfo;
import com.nnbc123.treasure_box.bean.HonourKeyInfo; import com.nnbc123.treasure_box.bean.HonourKeyInfo;
import com.nnbc123.treasure_box.bean.OpenBoxHonourResult; import com.nnbc123.treasure_box.bean.OpenBoxHonourResult;
@@ -17,6 +18,9 @@ import io.reactivex.Single;
public interface IBoxModel extends IModel { public interface IBoxModel extends IModel {
int BOX_TYPE_NORMAL = 1;// 普通蛋
int BOX_TYPE_HONOUR = 2;// 至尊蛋
/** /**
* 获取开箱子配置图片 * 获取开箱子配置图片
* *
@@ -31,7 +35,7 @@ public interface IBoxModel extends IModel {
* @param sendMessage * @param sendMessage
* @return * @return
*/ */
Single<OpenBoxResult> openBox(int boxType,int keyNum, boolean sendMessage); Single<OpenBoxResult> openBox(int boxType, int keyNum, boolean sendMessage);
/** /**
* 获取中奖记录 * 获取中奖记录
@@ -42,10 +46,12 @@ public interface IBoxModel extends IModel {
* @param uid * @param uid
* @return * @return
*/ */
Single<ServiceResult<List<PrizeInfo>>> getPrizeRecord(int page, Single<List<PrizeInfo>> getPrizeRecord(int page,
int pageSize, int pageSize,
String sortType, String sortType,
long uid); long uid);
Single<List<BoxRuleItemInfo>> getOpenBoxRule();
/** /**
* 购买钥匙 * 购买钥匙
@@ -69,9 +75,6 @@ public interface IBoxModel extends IModel {
*/ */
Single<ServiceResult<List<PrizeInfo>>> getPrizes(); Single<ServiceResult<List<PrizeInfo>>> getPrizes();
int BOX_TYPE_NORMAL = 1;// 普通蛋
int BOX_TYPE_HONOUR = 2;// 至尊蛋
/** /**
* 蛋开放状态 * 蛋开放状态
*/ */
@@ -86,17 +89,17 @@ public interface IBoxModel extends IModel {
* 至尊蛋抽奖 * 至尊蛋抽奖
*/ */
Single<OpenBoxHonourResult> openHonourBox(long uid, Single<OpenBoxHonourResult> openHonourBox(long uid,
boolean sendMessage, boolean sendMessage,
long roomUid, long roomUid,
int keyNum, int keyNum,
String ticket); String ticket);
/** /**
* 购买至尊蛋钥匙 * 购买至尊蛋钥匙
*/ */
Single<HonourBuyKeyResultInfo> buyHonourKey(long uid, Single<HonourBuyKeyResultInfo> buyHonourKey(long uid,
int keyNum, int keyNum,
String ticket); String ticket);
/** /**
* 至尊蛋本期奖池 * 至尊蛋本期奖池