小礼物逻辑第一次上传

This commit is contained in:
18401019693
2023-11-24 13:41:21 +08:00
parent 56ae033523
commit 7b1f3ddd79
33 changed files with 417 additions and 26 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -71,7 +71,9 @@ import com.yunbao.common.event.LiveOpenSudRoomEvent;
import com.yunbao.common.event.LiveRoomChangeEvent;
import com.yunbao.common.event.LiveSudGamePopupShowOrHideEvent;
import com.yunbao.common.event.NewRoleCustomDrawerPopupEvent;
import com.yunbao.common.event.QuickGiftingEvent;
import com.yunbao.common.event.ShowHideEvent;
import com.yunbao.common.event.SlideEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.CommonHttpConsts;
import com.yunbao.common.http.CommonHttpUtil;
@@ -1729,14 +1731,13 @@ public class LiveAudienceActivity extends LiveActivity {
.dismissOnTouchOutside(false)
.dismissOnBackPressed(false)
.asCustom(liveSudGamePopupXPopup).show();
}else {
} else {
if (liveSudGamePopupXPopup != null) {
liveSudGamePopupXPopup.dialog.show();
}
}
break;
case 1:
@@ -1765,6 +1766,19 @@ public class LiveAudienceActivity extends LiveActivity {
}
}
@Subscribe(threadMode = ThreadMode .MAIN)
public void onSlideEvent(SlideEvent event) {
verticalViewPager.setEnableScroll(event.isSlide());
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onQuickGiftingEvent(QuickGiftingEvent event) {
if (manager != null) {
manager.onQuickGifting(event.getIndex(), event.getSvgaName());
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onNewRoleCustomDrawerPopupEvent(NewRoleCustomDrawerPopupEvent event) {
//是否关闭弹窗

View File

@@ -31,6 +31,7 @@ import com.yunbao.common.Constants;
import com.yunbao.common.bean.NewPeopleInfo;
import com.yunbao.common.dialog.LiveNewRolePopup;
import com.yunbao.common.event.MessageIMEvent;
import com.yunbao.common.event.QuickGiftingEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.API;
import com.yunbao.common.http.HttpCallback;
@@ -58,7 +59,10 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Random;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
@@ -86,10 +90,12 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
private ImageView mRole;//特权
private ImageView mPlay;//玩
private ImageView mCheat;//整蛊
private ImageView pd_pao, combo;
public LiveAudienceViewHolder(Context context, ViewGroup parentView) {
super(context, parentView);
this.context = (Activity) context;
initLittlePanda();
}
@@ -118,6 +124,9 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
mPlay = (ImageView) findViewById(R.id.live_play);
stationHornBanner = findViewById(R.id.station_horn_banner);
mNewPeopleRedDot = findViewById(R.id.live_new_people_red_dot);
pd_pao = (ImageView) findViewById(R.id.pd_pao);
combo = (ImageView) findViewById(R.id.combo);
combo.setVisibility(View.GONE);
liveNewPeople.setOnClickListener(this);
mRole.setOnClickListener(this);
mCheat.setOnClickListener(this);
@@ -261,6 +270,104 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
return true;
});
mProcessResultUtil = new ProcessResultUtil((FragmentActivity) mContext);
pd_pao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
quickGiftingIndex = 1;
combo.setVisibility(View.VISIBLE);
removeRunnable = true;
lianSongHandler.postDelayed(lianSongRunnable, 1000);
Random random = new Random();
int randomNumber = random.nextInt(shortSvgas.size());
String randomName = shortSvgas.get(randomNumber);
Bus.get().post(new QuickGiftingEvent().setIndex(quickGiftingIndex).setSvgaName(randomName));
}
});
combo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
quickGiftingIndex = quickGiftingIndex + 1;
removeRunnable = true;
lianSongHandler.postDelayed(lianSongRunnable, 1000);
Random random = new Random();
if (quickGiftingIndex<11){
int randomNumber = random.nextInt(shortSvgas.size());
String randomName = shortSvgas.get(randomNumber);
Bus.get().post(new QuickGiftingEvent().setIndex(quickGiftingIndex).setSvgaName(randomName));
}else {
int randomNumber = random.nextInt(highSvgas.size());
String randomName = highSvgas.get(randomNumber);
if (quickGiftingIndex>=88){
Bus.get().post(new QuickGiftingEvent().setIndex(quickGiftingIndex).setSvgaName("littlepanda_craft.svga"));
}else {
Bus.get().post(new QuickGiftingEvent().setIndex(quickGiftingIndex).setSvgaName(randomName));
}
}
}
});
}
public void resetView() {
pd_pao.setVisibility(View.VISIBLE);
combo.setVisibility(View.GONE);
lianSongHandler.removeCallbacks(lianSongRunnable);
}
private boolean removeRunnable = false;
private int mLianCountDownCount;//连送倒计时的数字
private Handler lianSongHandler = new Handler();
private Runnable lianSongRunnable = new Runnable() {
@Override
public void run() {
if (removeRunnable) {
lianSongHandler.removeCallbacks(lianSongRunnable);
mLianCountDownCount = 5;
lianSongHandler.postDelayed(lianSongRunnable, 1000);
removeRunnable = false;
Log.e("QuickGiftingEvent", removeRunnable + " " + mLianCountDownCount);
} else {
mLianCountDownCount--;
if (mLianCountDownCount == 0) {
pd_pao.setVisibility(View.VISIBLE);
combo.setVisibility(View.GONE);
lianSongHandler.removeCallbacks(lianSongRunnable);
} else {
lianSongHandler.postDelayed(lianSongRunnable, 1000);
}
Log.e("QuickGiftingEvent", removeRunnable + " " + mLianCountDownCount);
}
}
};
private List<String> highSvgas = new ArrayList<>();
private List<String> shortSvgas = new ArrayList<>();
private int quickGiftingIndex = 1;
private void initLittlePanda() {
highSvgas = new ArrayList<>();
shortSvgas = new ArrayList<>();
highSvgas.add("littlepanda1.svga");
highSvgas.add("littlepanda2.svga");
highSvgas.add("littlepanda3.svga");
highSvgas.add("littlepanda4.svga");
highSvgas.add("littlepanda5.svga");
highSvgas.add("littlepanda6.svga");
highSvgas.add("littlepanda7.svga");
highSvgas.add("littlepanda8.svga");
highSvgas.add("littlepanda9.svga");
highSvgas.add("littlepanda10.svga");
shortSvgas.add("littlepanda11.svga");
shortSvgas.add("littlepanda12.svga");
shortSvgas.add("littlepanda13.svga");
shortSvgas.add("littlepanda14.svga");
shortSvgas.add("littlepanda15.svga");
shortSvgas.add("littlepanda16.svga");
shortSvgas.add("littlepanda17.svga");
shortSvgas.add("littlepanda18.svga");
shortSvgas.add("littlepanda19.svga");
}
private float downY = 0;

View File

@@ -56,6 +56,7 @@ import com.makeramen.roundedimageview.RoundedImageView;
import com.ms.banner.Banner;
import com.ms.banner.BannerConfig;
import com.ms.banner.listener.OnBannerClickListener;
import com.opensource.svgaplayer.SVGACallback;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
@@ -99,9 +100,9 @@ import com.yunbao.common.bean.XydCompleteModel;
import com.yunbao.common.event.AllServerNotifyEvent;
import com.yunbao.common.event.AnchorInfoEvent;
import com.yunbao.common.event.CustomFullServiceNotifyEvent;
import com.yunbao.common.event.HideShowEvent;
import com.yunbao.common.event.LiveRoomChangeEvent;
import com.yunbao.common.event.LiveSudGamePopupShowOrHideEvent;
import com.yunbao.common.event.SlideEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.API;
import com.yunbao.common.http.CommonHttpConsts;
@@ -131,7 +132,6 @@ import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.utils.formatBigNum;
import com.yunbao.common.views.AbsViewHolder;
import com.yunbao.common.views.LiveSudGamePopup;
import com.yunbao.common.views.weight.ClipPathCircleImage;
import com.yunbao.common.views.weight.FullServiceNotificationView;
import com.yunbao.common.views.weight.NobleNoticeView;
@@ -384,6 +384,9 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
private String mAnchorName;//主播名字
private boolean isHinde = false;
private boolean isFans = false;
private FrameLayout pa_pao_layout;
private LinearLayout combo_layout;
private TextView combo_number;
@Subscribe(threadMode = ThreadMode.MAIN)
public void onUpdata(String str) {
@@ -703,6 +706,74 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
}
HashMap<String, SVGAImageView> svgaImageViewHashMap = new HashMap<>();
public void onQuickGifting(int index, String svgaName) {
pa_pao_layout.setVisibility(View.VISIBLE);
combo_layout.setVisibility(View.VISIBLE);
combo_number.setText(String.valueOf(index));
SVGAImageView svgaImageView = new SVGAImageView(mContext);
String tag = svgaName+System.currentTimeMillis();
svgaImageViewHashMap.put(tag, svgaImageView);
Bus.get().post(new SlideEvent().setSlide(!(svgaImageViewHashMap.size() > 0)));
svgaImageView.setLoops(1);
svgaImageView.setTag(tag);
pa_pao_layout.addView(svgaImageView);
Log.e("QuickGiftingEvent", "pa_pao_layout:getChildCount:" + pa_pao_layout.getChildCount());
Log.e("QuickGiftingEvent", "index:" + index + " svgaName:" + svgaName);
svgaImageView.setCallback(new SVGACallback() {
@Override
public void onPause() {
}
@Override
public void onFinished() {
if (svgaImageViewHashMap.size() != 0) {
svgaImageView.clear();
pa_pao_layout.removeView(svgaImageView);
Log.e("QuickGiftingEvent", "svgaImageView.getTag:" + svgaImageView.getTag());
svgaImageViewHashMap.remove(svgaName);
Log.e("QuickGiftingEvent", "svgaImageViewHashMap:" + svgaImageViewHashMap.toString());
Log.e("QuickGiftingEvent", "pa_pao_layout:getChildCount:" + pa_pao_layout.getChildCount());
if (pa_pao_layout.getChildCount() == 0) {
pa_pao_layout.setVisibility(View.GONE);
combo_layout.setVisibility(View.GONE);
Bus.get().post(new SlideEvent().setSlide(true));
}
}
}
@Override
public void onRepeat() {
}
@Override
public void onStep(int i, double v) {
}
});
new SVGAParser(mContext).decodeFromAssets(svgaName, new SVGAParser.ParseCompletion() {
@Override
public void onComplete(@NonNull SVGAVideoEntity svgaVideoEntity) {
SVGADrawable drawable = new SVGADrawable(svgaVideoEntity);
svgaImageView.setImageDrawable(drawable);
svgaImageView.startAnimation();
}
@Override
public void onError() {
}
}, null);
}
/**
* 获取下一秒钟的时间
*/
@@ -1473,7 +1544,11 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
new LoadDian9TuUtil().loadDian9TuAssets2(mContext, wishListLayout2, "rectangle_new.png", 1);
pa_pao_layout = (FrameLayout) findViewById(R.id.pa_pao_layout);
combo_layout = (LinearLayout) findViewById(R.id.combo_layout);
combo_number = (TextView) findViewById(R.id.combo_number);
pa_pao_layout.setVisibility(View.GONE);
combo_layout.setVisibility(View.GONE);
}
private FrameLayout redPacket;
@@ -1730,8 +1805,12 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
* 重置数据
*/
public void resetView() {
svgaImageViewHashMap.clear();
pa_pao_layout.removeAllViews();
timeHandler.removeCallbacks(timeRunnable);
anchorTimeHandler.removeCallbacks(anchorTimeRunnable);
pa_pao_layout.setVisibility(View.GONE);
combo_layout.setVisibility(View.GONE);
resetViewGone();
visibility = false;
pkUidTmp = "";
@@ -3987,6 +4066,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
}
public void clearData() {
svgaImageViewHashMap.clear();
pa_pao_layout.removeAllViews();
timeHandler.removeCallbacks(timeRunnable);
anchorTimeHandler.removeCallbacks(anchorTimeRunnable);
LiveHttpUtil.cancel(LiveHttpConsts.GET_USER_LIST);

View File

@@ -56,6 +56,7 @@ import com.yunbao.common.event.LiveFloatEvent;
import com.yunbao.common.event.LiveGiftDialogEvent;
import com.yunbao.common.event.LiveRoomChangeEvent;
import com.yunbao.common.event.LiveSudGamePopupShowOrHideEvent;
import com.yunbao.common.event.QuickGiftingEvent;
import com.yunbao.common.event.SendBlindGiftEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.CommonHttpConsts;
@@ -223,6 +224,12 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
}
}
public void onQuickGifting(int index,String svgaName) {
if (mLiveRoomViewHolder != null) {
mLiveRoomViewHolder.onQuickGifting(index,svgaName);
}
}
public PortraitLiveManager(Activity context, Intent intent) {
this.mContext = context;
this.mIntent = intent;
@@ -386,6 +393,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
}
});
mLiveRoomViewHolder.resetView();
mLiveAudienceViewHolder.resetView();
enterRoomModel.clear();
enterRoomLeaveHandler.removeCallbacks(enterRoomLeaveRunnable);
mLiveRoomViewHolder.setAvatar(data.getAvatar());
@@ -932,7 +940,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
* 申请连麦但是主播还未同意的状态
*/
public void micIngTypeOne(LiveBean bean, int liveType, int liveTypeVal) {
DialogUitl.showSimpleDialog(mContext, null, WordUtil.isNewZh()?"您已申請,退出將取消語音連麥申請!":"You have applied, logout will cancel the voice connection application!", false, new DialogUitl.SimpleCallback3() {
DialogUitl.showSimpleDialog(mContext, null, WordUtil.isNewZh() ? "您已申請,退出將取消語音連麥申請!" : "You have applied, logout will cancel the voice connection application!", false, new DialogUitl.SimpleCallback3() {
@Override
public void onConfirmClick(Dialog dialog) {
MicStatusManager.getInstance().clear();

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical">
<RelativeLayout
@@ -345,11 +345,11 @@
<!--整蛊-->
<ImageView
android:id="@+id/live_cheat"
android:visibility="gone"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginEnd="8dp"
android:src="@mipmap/icon_prank" />
android:src="@mipmap/icon_prank"
android:visibility="gone" />
<!---->
<ImageView
android:id="@+id/live_play"
@@ -384,31 +384,68 @@
android:background="@drawable/background_ff5075"
android:visibility="invisible" />
</RelativeLayout>
<RelativeLayout
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="8dp">
<com.yunbao.common.views.weight.CircleProgress2
android:id="@+id/circleProgress"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/pd_pao"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@mipmap/icon_pd_pao" />
<TextView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/backgroud_panda_time"
android:gravity="center"
android:text="120S"
android:textColor="@color/white"
android:textSize="12sp"
android:visibility="gone" />
<ImageView
android:id="@+id/combo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@mipmap/icon_combo" />
</RelativeLayout>
<!--礼物-->
<ImageView
android:id="@+id/gift_image"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="8dp"
android:background="@drawable/background_gift"
/>
android:background="@drawable/background_gift" />
<!--特权-->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="40dp"
android:layout_height="40dp">
<ImageView
android:id="@+id/live_privilege"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="8dp"
android:src="@mipmap/icon_privilege"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:src="@mipmap/icon_privilege" />
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/privilege_red_point"
android:layout_width="10dp"
@@ -433,10 +470,6 @@
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="100dp"

View File

@@ -2484,13 +2484,13 @@
android:layout_height="40dp"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:background="@drawable/background_live_sud_hint"
android:gravity="center"
android:layout_marginStart="21dp"
android:layout_marginEnd="42dp"
android:background="@drawable/background_live_sud_hint"
android:gravity="center"
android:paddingStart="21dp"
android:visibility="gone"
android:paddingEnd="15dp">
android:paddingEnd="15dp"
android:visibility="gone">
<com.yunbao.common.views.weight.MarqueeTextView
android:id="@+id/sud_text_name"
@@ -2501,8 +2501,36 @@
android:singleLine="true"
android:text="主播創建了【游戲名】房間,快來與主播同玩~"
android:textColor="@color/white"
android:textSize="14sp"
/>
android:textSize="14sp" />
</LinearLayout>
<FrameLayout
android:id="@+id/pa_pao_layout"
android:layout_width="match_parent"
android:layout_height="384dp"
android:layout_alignParentBottom="true" />
<LinearLayout
android:id="@+id/combo_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginStart="220dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/combo"
android:textColor="#FFDD25"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/combo_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:textColor="#FFDD25"
android:textSize="58sp"
android:textStyle="bold" />
</LinearLayout>
</RelativeLayout>