新增直播间轮播Banner

调整身份特权弹窗
This commit is contained in:
2022-10-26 16:34:53 +08:00
parent c725be7bbc
commit 38d2e0df57
26 changed files with 444 additions and 123 deletions

View File

@@ -0,0 +1,69 @@
package com.yunbao.live.dialog;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import androidx.annotation.Nullable;
import com.yunbao.common.dialog.AbsDialogFragment;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.live.R;
import com.yunbao.live.event.LiveAudienceEvent;
public class LiveRoleDialogFragment extends AbsDialogFragment {
@Override
protected int getLayoutId() {
return R.layout.dialog_live_role;
}
@Override
protected int getDialogStyle() {
return R.style.dialog2;
}
@Override
protected boolean canCancel() {
return true;
}
@Override
protected void setWindowAttributes(Window window) {
window.setWindowAnimations(R.style.bottomToTopAnim);
WindowManager.LayoutParams params = window.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.BOTTOM;
window.setAttributes(params);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//粉丝团
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.fan_club), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.FAN_CLUB));
dismiss();
}
);
//守护
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.guard_layout), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.GUARD));
dismiss();
}
);
//贵族
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.noble_layout), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.NOBLE));
dismiss();
}
);
}
}

View File

@@ -9,11 +9,8 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.dialog.AbsDialogFragment;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.live.adapter.FunGamesAdapter;
@@ -22,8 +19,6 @@ import com.yunbao.live.event.LiveAudienceEvent;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
/**
* 直播间合计弹窗
*/
@@ -71,20 +66,6 @@ public class LiveTotalDialog extends AbsDialogFragment {
// public void onError(String error) {
// }
// });
//粉丝团
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.fan_club), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.FAN_CLUB));
dismiss();
}
);
//守护
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.guard_layout), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.GUARD));
dismiss();
}
);
//周星榜
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.live_wks_layout), () -> {
Bus.get().post(new LiveAudienceEvent()
@@ -92,13 +73,6 @@ public class LiveTotalDialog extends AbsDialogFragment {
dismiss();
}
);
//贵族
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.noble_layout), () -> {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.NOBLE));
dismiss();
}
);
//连麦
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.live_link_mic), () -> {
Bus.get().post(new LiveAudienceEvent()

View File

@@ -0,0 +1,18 @@
package com.yunbao.live.views;
import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import com.ms.banner.holder.BannerViewHolder;
import com.yunbao.common.bean.BannerBean;
import com.yunbao.common.glide.ImgLoader;
public class Banner4CustomViewHolder implements BannerViewHolder<BannerBean> {
@Override
public View createView(Context context, int position, BannerBean data) {
ImageView icon=new ImageView(context);
ImgLoader.display(context,data.getImageUrl(),icon);
return icon;
}
}

View File

@@ -32,10 +32,8 @@ import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.NewPeopleInfo;
import com.yunbao.common.event.MessageIMEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.API;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.utils.Bus;
@@ -52,6 +50,7 @@ import com.yunbao.live.bean.LiveChatBean;
import com.yunbao.live.dialog.LiveHDDialogFragment;
import com.yunbao.live.dialog.LiveMicUserDialogFragment;
import com.yunbao.live.dialog.LivePromotionDialogFragment;
import com.yunbao.live.dialog.LiveRoleDialogFragment;
import com.yunbao.live.dialog.VoiceDialog;
import com.yunbao.live.event.LiveAudienceEvent;
@@ -61,9 +60,6 @@ import org.greenrobot.eventbus.ThreadMode;
import java.util.Locale;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
/**
* Created by cxf on 2018/10/9.
* 观众直播间逻辑
@@ -85,6 +81,9 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
private String newPeopleUrl = null;
private View mNewPeopleRedDot;
private LinearLayout voiceButton;
private ImageView mRole;//特权
private ImageView mPlay;//玩
private ImageView mCheat;//整蛊
public LiveAudienceViewHolder(Context context, ViewGroup parentView) {
super(context, parentView);
@@ -203,9 +202,15 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
svga_new_user_double = (SVGAImageView) findViewById(R.id.svga_new_user_double);
svga_new_user_follow = (SVGAImageView) findViewById(R.id.svga_new_user_follow);
viewFlipper = (ViewFlipper) findViewById(R.id.viewflipper_banner);
mRole = (ImageView) findViewById(R.id.live_privilege);
mCheat = (ImageView) findViewById(R.id.live_cheat);
mPlay = (ImageView) findViewById(R.id.live_play);
stationHornBanner = findViewById(R.id.station_horn_banner);
mNewPeopleRedDot = findViewById(R.id.live_new_people_red_dot);
liveNewPeople.setOnClickListener(this);
mRole.setOnClickListener(this);
mCheat.setOnClickListener(this);
mPlay.setOnClickListener(this);
svga_new_user_double.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -271,6 +276,9 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
String language = locale.getLanguage();
ImgLoader.display(mContext, TextUtils.equals(language, "zh") ? R.mipmap.live_icon_new_people_cn : R.mipmap.live_icon_newpeople_en, liveNewPeople);
ImgLoader.display(mContext, TextUtils.equals(language, "zh") ? R.mipmap.live_icon_role : R.mipmap.live_icon_role_en, mRole);
ImgLoader.display(mContext, TextUtils.equals(language, "zh") ? R.mipmap.live_icon_play : R.mipmap.live_icon_play_en, mPlay);
ImgLoader.display(mContext, TextUtils.equals(language, "zh") ? R.mipmap.live_icon_cheat : R.mipmap.live_icon_cheat_en, mCheat);
voiceButton.setOnTouchListener((v, event) -> {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
@@ -416,6 +424,12 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
openZGListWindow();
} else if (i == R.id.live_new_people) {
openNewPeopleDialog();
} else if (i == R.id.live_privilege){
openRoleDialog();
}else if(i==R.id.live_cheat){
}else if (i==R.id.live_play){
}
}
@@ -456,6 +470,14 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
liveHDDialogFragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveHDDialogFragment");
}
/**
* 身份特权
*/
public void openRoleDialog(){
LiveRoleDialogFragment fragment=new LiveRoleDialogFragment();
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveRoleDialogFragment");
}
//消息中心
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)

View File

@@ -67,6 +67,7 @@ import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.LevelBean;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.bean.LiveGiftBean;
import com.yunbao.common.bean.LiveRoomActivityBanner;
import com.yunbao.common.bean.MsgModel;
import com.yunbao.common.bean.StarChallengeStatusModel;
import com.yunbao.common.bean.UserBean;
@@ -276,14 +277,14 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
public WindowManager windowManager;
// public boolean isRy = false;
private Banner mBanner1, mBanner2, mBanner3;
private Banner mBanner1, mBanner2, mBanner3, mBanner4;
private List<BannerBean> mBannerList1 = new ArrayList<>();
private List<BannerBean> mBannerList2 = new ArrayList<>();
private List<BannerBean> mBannerList3 = new ArrayList<>();
private LinearLayout btn_event2, btn_event3;
private List<BannerBean> mBannerList4 = new ArrayList<>();
private LinearLayout btn_event2, btn_event3, btn_event4;
private ImageView imgEvent;
private View btnEvent;
private View btnEvent3;
private LinearLayout lt_trickery;
private TextView tv_trickery_time;
@@ -627,14 +628,15 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
btnEvent = findViewById(R.id.btn_event);
fullScreen = (FullServiceNotificationView) findViewById(R.id.full_screen);
noble = (NobleNoticeView) findViewById(R.id.noble);
btnEvent3 = findViewById(R.id.btn_event3);
btn_event3 = (LinearLayout) findViewById(R.id.btn_event3);
imgEvent = (ImageView) findViewById(R.id.img_event);
btn_event2 = (LinearLayout) findViewById(R.id.btn_event2);
btn_event3 = (LinearLayout) findViewById(R.id.btn_event3);
btn_event4 = (LinearLayout) findViewById(R.id.btn_event4);
mBanner1 = (Banner) findViewById(R.id.banner1);
time = (TextView) findViewById(R.id.time);
mBanner2 = (Banner) findViewById(R.id.banner2);
mBanner3 = (Banner) findViewById(R.id.banner3);
mBanner4 = (Banner) findViewById(R.id.banner4);
pkText1 = (TextView) findViewById(R.id.pk_text1);
pkText2 = (TextView) findViewById(R.id.pk_text2);
pkText3 = (TextView) findViewById(R.id.pk_text3);
@@ -1278,6 +1280,29 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
});
}
public void showLiveRoomActivityBanner() {
LiveNetManager.get(mContext)
.getLiveRoomActivityBanner(new com.yunbao.common.http.base.HttpCallback<List<LiveRoomActivityBanner>>() {
@Override
public void onSuccess(List<LiveRoomActivityBanner> data) {
mBannerList4.clear();
for (LiveRoomActivityBanner datum : data) {
BannerBean bean = new BannerBean();
bean.setLink(datum.getLink());
bean.setImageUrl(datum.getImg());
bean.setShow_type(datum.getType());
mBannerList4.add(bean);
}
showBanner4();
}
@Override
public void onError(String error) {
}
});
}
private void showBanner() {
if (mBannerList1 == null || mBannerList1.size() == 0 || mBanner1 == null) {
return;
@@ -1463,7 +1488,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
* @param giftCount 礼物数量
*/
public void updataWishList(String giftId, int giftCount) {
if (!(mContext instanceof LiveAudienceActivity)){
if (!(mContext instanceof LiveAudienceActivity)) {
for (WishlistItemModel model : wishlist) {
if (TextUtils.equals(giftId, model.getLid())) {
int number = Integer.parseInt(model.getWishlistProgress()) + giftCount;
@@ -2922,7 +2947,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
* 展示新人任务 Banner
*/
private void showBanner3(LiveGiftBean bean1) {
btnEvent3.setVisibility(View.VISIBLE);
btn_event3.setVisibility(View.VISIBLE);
if (mBannerList3 == null || mBannerList3.size() == 0 || mBanner3 == null || bean1 == null) {
return;
}
@@ -2951,6 +2976,44 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
.start();
}
private void showBanner4() {
btn_event4.setVisibility(View.VISIBLE);
if (mBannerList4 == null || mBannerList4.size() == 0 || mBanner4 == null) {
return;
}
for (BannerBean bean : mBannerList4) {
Log.i("debug", "showBanner4: " + bean.toString());
}
mBanner4.setAutoPlay(true)
.setPages(mBannerList4, new Banner4CustomViewHolder())
.setDelayTime(3000)
.setBannerStyle(BannerConfig.NOT_INDICATOR)
.setOnBannerClickListener(new OnBannerClickListener() {
@Override
public void onBannerClick(List datas, int p) {
Log.i("debug", "onBannerClick: " + mBannerList4.get(p).toString());
String url = mBannerList4.get(p).getLink();
if (!url.startsWith("http")) {
url = CommonAppConfig.HOST + url;
}
if (url.contains("?")) {
url += "&";
} else {
url += "?";
}
url += "uid=" + CommonAppConfig.getInstance().getUid() + "&token="
+ CommonAppConfig.getInstance().getToken();
Log.i("tag", url);
Bundle bundle1 = new Bundle();
bundle1.putString("url", url);
LiveHDDialogFragment liveHDDialogFragment = new LiveHDDialogFragment();
liveHDDialogFragment.setArguments(bundle1);
liveHDDialogFragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveHDDialogFragment");
}
})
.start();
}
private int nowTime = 0;
private int openType = 0;
private boolean isClose = false;
@@ -3152,7 +3215,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
if (mBannerList3.get(0).getLink().equals("1")) {
if (mBannerList3.get(1).getLink().equals("1")) {
if (mBannerList3.get(2).getLink().equals("1")) {
btnEvent3.setVisibility(View.GONE);
btn_event3.setVisibility(View.GONE);
}
}
}
@@ -3163,7 +3226,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
if (mBannerList3.get(0).getLink().equals("1")) {
if (mBannerList3.get(1).getLink().equals("1")) {
if (mBannerList3.get(2).getLink().equals("1")) {
btnEvent3.setVisibility(View.GONE);
btn_event3.setVisibility(View.GONE);
}
}
}
@@ -3174,7 +3237,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
if (mBannerList3.get(0).getLink().equals("1")) {
if (mBannerList3.get(1).getLink().equals("1")) {
if (mBannerList3.get(2).getLink().equals("1")) {
btnEvent3.setVisibility(View.GONE);
btn_event3.setVisibility(View.GONE);
}
}
}
@@ -3319,8 +3382,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
/**
* 幸运天使
*/
public void luckyAngel(MsgModel model){
if(mLiveChatAdapter!=null){
public void luckyAngel(MsgModel model) {
if (mLiveChatAdapter != null) {
LiveChatBean bean = new LiveChatBean();
bean.setType(LiveChatBean.LUCKY_ANGEL);
bean.setMsgModel(model);

View File

@@ -294,6 +294,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
});
enterRoom();
mLiveRoomViewHolder.initHourRankList();
mLiveRoomViewHolder.showLiveRoomActivityBanner();
}
});

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:width="375dp" android:height="171dp">
<shape android:shape="rectangle">
<solid android:color="#B3000000" />
<corners android:topLeftRadius="8dp" android:topRightRadius="8dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp" />
</shape>
</item>
</selector>

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/bg_live_role"
android:layout_width="match_parent"
android:layout_height="171dp">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:textColor="#F6F7FB"
android:textSize="14sp"
android:text="@string/live_role_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/items_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="50dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title">
<LinearLayout
android:id="@+id/guard_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/live_more_icon_guard" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/guard_guard"
android:textColor="#FF9A9A9A"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/noble_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/live_more_icon_aristocrat" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/noble"
android:textColor="#FF9A9A9A"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/fan_club"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/live_more_icon_fans" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/fan_club"
android:textColor="#FF9A9A9A"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -354,7 +354,7 @@
android:layout_width="34dp"
android:layout_height="34dp"
android:layout_marginEnd="10dp"
android:src="@mipmap/live_icon_privilege" />
android:src="@mipmap/live_icon_role" />
<!--整蛊-->
<ImageView
android:id="@+id/live_cheat"

View File

@@ -2042,7 +2042,31 @@
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/btn_event4"
android:layout_width="67dp"
android:layout_height="90dp"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_gravity="right"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:gravity="center_horizontal"
android:orientation="vertical"
android:visibility="visible">
<com.ms.banner.Banner
android:id="@+id/banner4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
app:delay_time="5000"
app:indicator_height="8dp"
app:indicator_width="8dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/btn_event3"
android:layout_width="67dp"

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -24,5 +24,6 @@
<string name="fingers_slide" translatable="false">手指上滑,取消發送</string>
<string name="release_cancel_send" translatable="false">松開取消發送</string>
<string name="more_than" translatable="false">已超过10秒未识别到录音</string>
<string name="live_role_title" translatable="false">身份特權</string>
<string name="noble_seat" translatable="false">貴族坐席</string>
</resources>