增加福袋横幅,幸运池横幅UI修改

This commit is contained in:
oujunhui
2020-08-12 10:46:23 +08:00
parent 6b329bc732
commit 1b156d7ef2
13 changed files with 176 additions and 51 deletions

View File

@@ -381,7 +381,6 @@ public class HomePartyFragment extends AbsRoomFragment implements View.OnClickLi
.compose(bindToLifecycle())
.filter(roomEvent -> roomEvent.getEvent() == RoomEvent.BOX_NOTIFY)
.subscribe(roomEvent -> addBoxNotify(roomEvent.getChatRoomMessage()));
//registerKtvBoxListener();
subscribeGameEvent();
}
@@ -957,7 +956,7 @@ public class HomePartyFragment extends AbsRoomFragment implements View.OnClickLi
private void showBoxNotify(ChatRoomMessage chatRoomMessage) {
// if (AvRoomDataManager.get().mCurrentRoomInfo == null) return;
SuperTextView textView = (SuperTextView) LayoutInflater.from(mContext).inflate(R.layout.layout_box_notify, null);
SuperTextView textView = (SuperTextView) LayoutInflater.from(mContext).inflate(R.layout.layout_box_notify_pic, null);
RoomBoxPrizeAttachment attachment = (RoomBoxPrizeAttachment) chatRoomMessage.getAttachment();
// 内容
MessageView.SpannableBuilder text = new MessageView.SpannableBuilder(textView)

View File

@@ -11,13 +11,17 @@ import android.os.Handler;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
@@ -26,16 +30,21 @@ import androidx.fragment.app.FragmentManager;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.coorchice.library.SuperTextView;
import com.google.gson.Gson;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.NIMSDK;
import com.netease.nimlib.sdk.Observer;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.netease.nimlib.sdk.msg.model.BroadcastMessage;
import com.orhanobut.logger.Logger;
import com.readystatesoftware.systembartint.SystemBarTintManager;
import com.tbruyelle.rxpermissions2.RxPermissions;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.trello.rxlifecycle3.components.support.RxAppCompatActivity;
import com.yizhuan.erban.avroom.widget.MessageView;
import com.yizhuan.xchat_android_core.gift.bean.LuckyBagNoticeInfo;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomBoxPrizeAttachment;
import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo;
import com.yizhuan.erban.MiddleActivity;
import com.yizhuan.erban.NimMiddleActivity;
@@ -90,15 +99,20 @@ import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import static com.yizhuan.xchat_android_core.Constants.DEBUG_MAX_UID;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_HEAD_NOBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_OPENNOBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_RENEWNOBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT_ROOM_NOTIFY;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_RED_PACKAGE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND;
@@ -929,9 +943,9 @@ public abstract class BaseActivity extends RxAppCompatActivity
}
if (baseProtocol == null) return;
int second = baseProtocol.getSecond();
switch (baseProtocol.getFirst()) {
case CUSTOM_MESS_HEAD_NOBLE:
int second = baseProtocol.getSecond();
if (second == CUSTOM_MESS_SUB_OPENNOBLE || second == CUSTOM_MESS_SUB_RENEWNOBLE) {
NobleProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), NobleProtocol.DataBean.class);
NobleInfo nobleInfo;
@@ -988,11 +1002,62 @@ public abstract class BaseActivity extends RxAppCompatActivity
RedPackageGoRoomDialog.Companion.newInstance(notifyInfo).show(this);
}
}
case CUSTOM_MSG_LUCKY_GIFT:
if (second == CUSTOM_MSG_LUCKY_GIFT_ROOM_NOTIFY){
if (this instanceof AddUserInfoActivity || this instanceof LoginActivity || UserUtils.getUserInfo() == null)
return;
LuckyBagNoticeInfo info = new Gson().fromJson(String.valueOf(baseProtocol.getData()),LuckyBagNoticeInfo.class);
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo != null && roomInfo.getUid() == info.getRoomUid() && context instanceof AVRoomActivity) {
//厅内福袋通知
LuckBagNotice(info.getFlashMsg());
}
}else if (second == CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY){
if (this instanceof AddUserInfoActivity || this instanceof LoginActivity || UserUtils.getUserInfo() == null)
return;
//全服福袋通知
LuckyBagNoticeInfo info = new Gson().fromJson(String.valueOf(baseProtocol.getData()),LuckyBagNoticeInfo.class);
LuckBagNotice(info.getFlashMsg());
}
break;
default:
break;
}
}
private List<String> messages;
private Disposable boxDisposable;
private boolean isCreate;
private void addLuckyBagNotify(String flashMsg) {
if (messages == null) messages = new ArrayList<>();
messages.add(flashMsg);
if (boxDisposable == null || messages.size() == 1) {
isCreate = true;
boxDisposable = Observable.interval(0, 6, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(aLong -> {
if (messages.size() > 0 && !isCreate)
messages.remove(0);//如果不是新创建的Observable发送的数据,需要移除第一个
isCreate = false;
})
.takeWhile(aLong -> messages.size() > 0 && messages.get(0) != null)
.subscribe(aLong -> LuckBagNotice(messages.get(0)));
}
}
private void LuckBagNotice(String chatRoomMessage) {
if (!TextUtils.isEmpty(chatRoomMessage)) {
if (!isFinishing()) {
if (mNoticeDialog != null && mNoticeDialog.isShowing())
mNoticeDialog.dismiss();
mNoticeDialog = new OpenNobleGlobalNoticeDialog(this, chatRoomMessage);
mNoticeDialog.show();
}
}
}
private OpenNobleGlobalNoticeDialog mNoticeDialog;
private static class BroadcastObserver implements Observer<BroadcastMessage> {

View File

@@ -13,22 +13,28 @@ import androidx.fragment.app.FragmentManager;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.coorchice.library.SuperTextView;
import com.google.gson.Gson;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.NIMSDK;
import com.netease.nimlib.sdk.Observer;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.netease.nimlib.sdk.msg.model.BroadcastMessage;
import com.orhanobut.logger.Logger;
import com.readystatesoftware.systembartint.SystemBarTintManager;
@@ -39,6 +45,7 @@ import com.yizhuan.erban.application.XChatApplication;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.avroom.redpackage.RedPackageGoRoomDialog;
import com.yizhuan.erban.avroom.redpackage.RedPackageOpenDialog;
import com.yizhuan.erban.avroom.widget.MessageView;
import com.yizhuan.erban.common.LoadingFragment;
import com.yizhuan.erban.common.NetworkErrorFragment;
import com.yizhuan.erban.common.NoDataFragment;
@@ -57,6 +64,8 @@ import com.yizhuan.erban.utils.UserUtils;
import com.yizhuan.tutu.mentoring_relationship.dialog.GrabApprenticesNoticeDialog;
import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.xchat_android_core.bean.BaseProtocol;
import com.yizhuan.xchat_android_core.gift.bean.LuckyBagNoticeInfo;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomBoxPrizeAttachment;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.manager.RoomEvent;
@@ -81,12 +90,15 @@ import com.yizhuan.xchat_android_library.utils.log.MLog;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import static com.yizhuan.xchat_android_core.Constants.DEBUG_MAX_UID;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_HEAD_NOBLE;
@@ -918,9 +930,10 @@ public abstract class BaseMvpActivity<V extends IMvpBaseView, P extends Abstract
if (baseProtocol == null) return;
int second = baseProtocol.getSecond();
switch (baseProtocol.getFirst()) {
case CUSTOM_MESS_HEAD_NOBLE:
int second = baseProtocol.getSecond();
if (second == CUSTOM_MESS_SUB_OPENNOBLE || second == CUSTOM_MESS_SUB_RENEWNOBLE) {
NobleProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), NobleProtocol.DataBean.class);
NobleInfo nobleInfo;
@@ -982,20 +995,27 @@ public abstract class BaseMvpActivity<V extends IMvpBaseView, P extends Abstract
}
}
// case CUSTOM_MSG_LUCKY_GIFT:
// switch (baseProtocol.getSecond()){
// case CUSTOM_MSG_LUCKY_GIFT_ROOM_NOTIFY:
//
// break;
//
// case CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY:
//
// break;
//
// default:
// break;
// }
// break;
case CUSTOM_MSG_LUCKY_GIFT:
if (second == CUSTOM_MSG_LUCKY_GIFT_ROOM_NOTIFY){
if (context instanceof AddUserInfoActivity || context instanceof LoginActivity || UserUtils.getUserInfo() == null)
return;
LuckyBagNoticeInfo info = new Gson().fromJson(String.valueOf(baseProtocol.getData()),LuckyBagNoticeInfo.class);
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo != null && roomInfo.getUid() == info.getRoomUid() && context instanceof AVRoomActivity) {
//厅内福袋通知
LogUtil.e("厅内福袋通知:"+info.getFlashMsg());
LuckBagNotice(info.getFlashMsg());
}
}else if (second == CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY){
if (context instanceof AddUserInfoActivity || context instanceof LoginActivity || UserUtils.getUserInfo() == null)
return;
//全服福袋通知
LuckyBagNoticeInfo info = new Gson().fromJson(String.valueOf(baseProtocol.getData()),LuckyBagNoticeInfo.class);
LogUtil.e("全服福袋通知:"+info.getFlashMsg());
LuckBagNotice(info.getFlashMsg());
}
break;
default:
break;
}
@@ -1003,6 +1023,38 @@ public abstract class BaseMvpActivity<V extends IMvpBaseView, P extends Abstract
}
private List<String> messages;
private Disposable boxDisposable;
private boolean isCreate;
private void addLuckyBagNotify(String flashMsg) {
if (messages == null) messages = new ArrayList<>();
messages.add(flashMsg);
if (boxDisposable == null || messages.size() == 1) {
isCreate = true;
boxDisposable = Observable.interval(0, 6, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(aLong -> {
if (messages.size() > 0 && !isCreate)
messages.remove(0);//如果不是新创建的Observable发送的数据,需要移除第一个
isCreate = false;
})
.takeWhile(aLong -> messages.size() > 0 && messages.get(0) != null)
.subscribe(aLong -> LuckBagNotice(messages.get(0)));
}
}
private void LuckBagNotice(String chatRoomMessage) {
if (!TextUtils.isEmpty(chatRoomMessage)) {
if (!isFinishing()) {
if (mNoticeDialog != null && mNoticeDialog.isShowing())
mNoticeDialog.dismiss();
mNoticeDialog = new OpenNobleGlobalNoticeDialog(this, chatRoomMessage);
mNoticeDialog.show();
}
}
}
private OpenNobleGlobalNoticeDialog mNoticeDialog;
public static class BroadcastObserver implements Observer<BroadcastMessage> {

View File

@@ -54,7 +54,7 @@ public class OpenNobleGlobalNoticeDialog extends AppCompatDialog implements Marq
windowParams.dimAmount = 0.0f;
windowParams.gravity = Gravity.TOP ;
windowParams.x = 0;
windowParams.y = SizeUtils.dp2px(getContext(), 62);
windowParams.y = SizeUtils.dp2px(getContext(), 100);
window.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
window.setAttributes(windowParams);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -3,22 +3,20 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_height="wrap_content"
android:scrollbars="none">
<TextView
android:id="@+id/tv_global_notice_content"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/global_broadcast_notice_bg"
android:layout_height="wrap_content"
android:background="@drawable/bg_lucky_gift_notice"
android:gravity="center_vertical"
android:maxLines="1"
android:paddingEnd="12dp"
android:paddingStart="12dp"
android:paddingEnd="60dp"
android:paddingStart="60dp"
android:textColor="@color/white"
android:textSize="14sp"
android:textSize="12sp"
tools:text="恭喜“Tm.八米大雕青木”保皇成功,哈啊啊啊啊啊啊啊啊啊啊啊" />
</merge>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<com.coorchice.library.SuperTextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
xmlns:tools="http://schemas.android.com/tools"
android:gravity="center"
android:paddingLeft="@dimen/dp_60"
android:paddingRight="@dimen/dp_60"
android:layout_marginStart="@dimen/dp_6"
android:layout_marginEnd="@dimen/dp_6"
android:lines="2"
android:ellipsize="end"
android:paddingTop="@dimen/dp_5"
android:paddingBottom="@dimen/dp_5"
android:textSize="12sp"
tools:text=""
android:background="@drawable/bg_box_notice" />

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<com.yizhuan.erban.ui.widget.MarqueeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/marquee_view"
android:layout_width="match_parent"
android:layout_height="41dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
</com.yizhuan.erban.ui.widget.MarqueeLayout>

View File

@@ -0,0 +1,11 @@
package com.yizhuan.xchat_android_core.gift.bean;
import java.io.Serializable;
import lombok.Data;
@Data
public class LuckyBagNoticeInfo implements Serializable {
private String flashMsg;
private long roomUid;
}

View File

@@ -1,19 +0,0 @@
package com.yizhuan.xchat_android_core.gift.bean;
import com.yizhuan.xchat_android_core.room.giftvalue.bean.IndexGiftValue;
import java.io.Serializable;
import java.util.List;
import lombok.Data;
/**
* @author jjjj
* @date 2017/10/25
*/
@Data
public class MultiLuckyGiftReceiveInfo implements Serializable {
private List<LuckyBagGifts> luckyBagGifts;
}

View File

@@ -354,8 +354,8 @@ public class CustomAttachment implements MsgAttachment {
//开福袋飘屏
public static final int CUSTOM_MSG_LUCKY_GIFT = 61;
public static final int CUSTOM_MSG_LUCKY_GIFT_ROOM_NOTIFY = 610;
public static final int CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY = 611;
public static final int CUSTOM_MSG_LUCKY_GIFT_ROOM_NOTIFY = 610;// 福袋礼物房间飘屏通知
public static final int CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY = 611; // 福袋礼物全服飘屏通知
//推送消息
public static final int CUSTOM_MSG_PUSH_NOTIFIFICATION = 70;