update 首页游戏专区

This commit is contained in:
2023-09-26 10:31:39 +08:00
parent e2148c3f31
commit a6faf12ff6
34 changed files with 1410 additions and 9 deletions

View File

@@ -0,0 +1,334 @@
package com.yunbao.main.views;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Outline;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewOutlineProvider;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.DrawableImageViewTarget;
import com.bumptech.glide.request.target.Target;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.enums.PopupPosition;
import com.ms.banner.Banner;
import com.ms.banner.listener.OnBannerClickListener;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.activity.WebViewActivity;
import com.yunbao.common.adapter.RefreshAdapter;
import com.yunbao.common.bean.AnchorRecommendModel;
import com.yunbao.common.bean.BannerBean;
import com.yunbao.common.bean.CustomSidebarChildModel;
import com.yunbao.common.bean.CustomSidebarInfoModel;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.bean.LiveClassBean;
import com.yunbao.common.bean.WeekListBean;
import com.yunbao.common.custom.CommonRefreshView;
import com.yunbao.common.custom.ItemDecoration;
import com.yunbao.common.dialog.CreateSudGamePopup;
import com.yunbao.common.dialog.SudGameListSelectPopup;
import com.yunbao.common.dialog.SudGameSearchDialogPopup;
import com.yunbao.common.event.LiveRoomChangeEvent;
import com.yunbao.common.event.RoomHolderTypeEvent;
import com.yunbao.common.event.SudGameListEvent;
import com.yunbao.common.event.SudGameListSillEvent;
import com.yunbao.common.http.LiveHttpUtil;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.LiveClassManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
import com.yunbao.common.utils.MicStatusManager;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.CustomViewHolder;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.live.utils.LiveStorge;
import com.yunbao.live.views.LiveRoomViewHolder;
import com.yunbao.main.R;
import com.yunbao.main.activity.MainActivity;
import com.yunbao.main.adapter.MainHomeLiveAdapter;
import com.yunbao.main.adapter.MainHomeLivesClassAdapter;
import com.yunbao.main.http.MainHttpConsts;
import com.yunbao.main.http.MainHttpUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by cxf on 2018/9/22.
* MainActivity 首页 游戏
*/
public class MainHomeGameViewHolder extends AbsMainHomeChildViewHolder implements OnItemClickListener<LiveBean> {
private CommonRefreshView mRefreshView;
private ImageView roomGameArrow, roomSillArrow, houseOwnerArrow;
private TextView gameTitle, sillTitle, houseOwnerTitle;
private long interactionID = 0;
private List<CustomSidebarChildModel> customSidebarChildModels = new ArrayList<>();
private String mSill = "0,0", mSillName, roomHolderType = "0", roomHolderTypeName;
private long animDuration = 500;
private String id = "0";
public MainHomeGameViewHolder(Context context, ViewGroup parentView) {
super(context, parentView);
Bus.getOn(this);
}
@Override
protected int getLayoutId() {
return R.layout.view_main_home_sud_game_list;
}
@Override
public void init() {
initData();
roomGameArrow = (ImageView) findViewById(R.id.room_game_arrow);
roomSillArrow = (ImageView) findViewById(R.id.room_sill_arrow);
houseOwnerArrow = (ImageView) findViewById(R.id.house_owner_arrow);
gameTitle = (TextView) findViewById(R.id.game_title);
sillTitle = (TextView) findViewById(R.id.room_sill_text);
houseOwnerTitle = (TextView) findViewById(R.id.house_owner_text);
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.interactive_game_room_game), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
ObjectAnimator animator = ObjectAnimator.ofFloat(roomGameArrow, "rotation", 0f, 90f);
animator.setDuration(animDuration);
animator.setInterpolator(new LinearInterpolator());
animator.start();
XPopup.Builder builder = new XPopup.Builder(mContext).atView(findViewById(com.yunbao.common.R.id.interactive_game_room_game));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(mContext, 0, customSidebarChildModels, interactionID)
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
closeAnimSudGameListEvent();
}
})
)
.show();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.room_sill), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
ObjectAnimator animator = ObjectAnimator.ofFloat(roomSillArrow, "rotation", 0f, 90f);
animator.setDuration(animDuration);
animator.setInterpolator(new LinearInterpolator());
animator.start();
XPopup.Builder builder = new XPopup.Builder(mContext).atView(findViewById(com.yunbao.common.R.id.room_sill));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(mContext, 1, mSillName).setOnDismissListener(dialog -> {
closeAnimSudGameListSillEvent();
}))
.show();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.house_owner), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
ObjectAnimator animator = ObjectAnimator.ofFloat(houseOwnerArrow, "rotation", 0f, 90f);
animator.setDuration(animDuration);
animator.setInterpolator(new LinearInterpolator());
animator.start();
XPopup.Builder builder = new XPopup.Builder(mContext).atView(findViewById(com.yunbao.common.R.id.house_owner));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(mContext, 2, roomHolderTypeName).setOnDismissListener(dialog -> {
closeAnimRoomHolderTypeEvent();
}))
.show();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.interactive_game_add), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
new XPopup.Builder(mContext)
.enableDrag(false)
.asCustom(new CreateSudGamePopup(mContext, customSidebarChildModels).setHomeView(true))
.show();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.search), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
new SudGameSearchDialogPopup(mContext).showDialog();
}
});
LiveNetManager.get(mContext)
.getCustomSidebarInfo("1", new HttpCallback<List<CustomSidebarInfoModel>>() {
@Override
public void onSuccess(List<CustomSidebarInfoModel> data) {
for (CustomSidebarInfoModel datum : data) {
if (datum.getType().equals("6")) {
customSidebarChildModels = datum.getChild();
return;
}
}
}
@Override
public void onError(String error) {
}
});
}
private void initData() {
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSudGameListEvent(SudGameListEvent event) {
interactionID = event.getInteractionID();
gameTitle.setText(event.getTitle().substring(0, 2));
id = event.getId();
initData();
closeAnimSudGameListEvent();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSudGameListSillEvent(SudGameListSillEvent event) {
mSill = event.getSill();
mSillName = event.getSillName();
if (TextUtils.equals("0,0", mSill)) {
sillTitle.setText(mSillName);
} else {
sillTitle.setText(mSillName.substring(0, mSillName.length() - 2));
}
closeAnimSudGameListSillEvent();
initData();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRoomHolderTypeEvent(RoomHolderTypeEvent event) {
roomHolderType = event.getRoomHolderType();
roomHolderTypeName = event.getRoomHolderTypeName();
houseOwnerTitle.setText(roomHolderTypeName);
initData();
closeAnimRoomHolderTypeEvent();
}
private void closeAnimSudGameListEvent() {
ObjectAnimator animator = ObjectAnimator.ofFloat(roomGameArrow, "rotation", 90f, 0f);
animator.setDuration(animDuration);
animator.setInterpolator(new LinearInterpolator());
animator.start();
}
private void closeAnimSudGameListSillEvent() {
ObjectAnimator backAnimator = ObjectAnimator.ofFloat(roomSillArrow, "rotation", 90f, 0f);
backAnimator.setDuration(animDuration);
backAnimator.setInterpolator(new LinearInterpolator());
backAnimator.start();
}
private void closeAnimRoomHolderTypeEvent() {
ObjectAnimator backAnimator = ObjectAnimator.ofFloat(houseOwnerArrow, "rotation", 90f, 0f);
backAnimator.setDuration(animDuration);
backAnimator.setInterpolator(new LinearInterpolator());
backAnimator.start();
}
@Override
public void onItemClick(LiveBean bean, int position) {
}
@Override
public void loadData() {
}
@Override
public void release() {
Bus.getOff(this);
}
@Override
public void onDestroy() {
super.onDestroy();
release();
}
//显示顶部商城tab时显示底部tabGroup
@Subscribe(threadMode = ThreadMode.MAIN)
public void onUpdata(String str) {
if ("Updata".equals(str)) {
if (mRefreshView != null) {
mRefreshView.showRefreshBar();
mRefreshView.mRecyclerView.scrollToPosition(0);
}
} else if ("blacklist".equals(str)) {
if (mRefreshView != null) {
mRefreshView.showRefreshBar();
}
}
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
}

View File

@@ -18,7 +18,7 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder {
private MainHomeFollLiveViewHolder mainHomeFollLiveViewHolder;
private MainHomeLiveViewHolder mainHomeLiveViewHolder;
private MainHomeRecomLiveViewHolder mainHomeRecomLiveViewHolder;
private MainHomeRedPacketLiveViewHolder mainHomeRedPacketLiveViewHolder;
private MainHomeGameViewHolder mainHomeGameLiveViewHolder;
private final String mPageName = "home_page";
private ImageView img_trophy;
@@ -85,8 +85,8 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder {
vh = mainHomeRecomLiveViewHolder;
} else if (position == 3) {
mainHomeRedPacketLiveViewHolder = new MainHomeRedPacketLiveViewHolder(mContext, parent);
vh = mainHomeRedPacketLiveViewHolder;
mainHomeGameLiveViewHolder = new MainHomeGameViewHolder(mContext, parent);
vh = mainHomeGameLiveViewHolder;
}

View File

@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg_main_home_sub_game"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="12dp"
android:textStyle="bold"
android:text="@string/interactive_game_room_list"
android:textColor="#000"
android:textSize="16sp" />
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1" />
<ImageView
android:id="@+id/search"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="14dp"
android:src="@mipmap/icon_home_interactive_game_search" />
<ImageView
android:id="@+id/interactive_game_add"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="14dp"
android:src="@mipmap/icon_home_interactive_game_add" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="17dp"
android:src="@mipmap/icon_home_interactive_game_ranking" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:text="@string/interactive_game_room_game"
android:textColor="#000"
android:textStyle="bold"
android:textSize="14sp" />
<LinearLayout
android:id="@+id/interactive_game_room_game"
android:layout_width="58dp"
android:layout_height="28dp"
android:layout_marginStart="4dp"
android:background="@drawable/bg_home_sud_list_btn"
android:gravity="center_vertical">
<TextView
android:id="@+id/game_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:text="@string/interactive_game_room_game_all"
android:textColor="#000"
android:textSize="14sp" />
<ImageView
android:id="@+id/room_game_arrow"
android:layout_width="8dp"
android:layout_height="14dp"
android:layout_marginStart="8dp"
android:src="@mipmap/icon_home_interactive_game_arrow" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:text="@string/interactive_game_room_sill"
android:textColor="#000"
android:textStyle="bold"
android:textSize="14sp" />
<FrameLayout
android:id="@+id/room_sill"
android:layout_width="74dp"
android:layout_height="28dp"
android:layout_marginStart="4dp"
android:background="@drawable/bg_home_sud_list_btn">
<TextView
android:id="@+id/room_sill_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:text="@string/interactive_game_create_unlimited"
android:textColor="#000"
android:textSize="14sp" />
<ImageView
android:id="@+id/room_sill_arrow"
android:layout_width="8dp"
android:layout_height="14dp"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="8dp"
android:src="@mipmap/icon_home_interactive_game_arrow" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:text="@string/interactive_game_room_house_owner"
android:textColor="#000"
android:textStyle="bold"
android:textSize="14sp" />
<LinearLayout
android:id="@+id/house_owner"
android:layout_width="58dp"
android:layout_height="28dp"
android:layout_marginStart="4dp"
android:background="@drawable/bg_home_sud_list_btn"
android:gravity="center_vertical">
<TextView
android:id="@+id/house_owner_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:text="@string/interactive_game_create_unlimited"
android:textColor="#000"
android:textSize="14sp" />
<ImageView
android:id="@+id/house_owner_arrow"
android:layout_width="8dp"
android:layout_height="14dp"
android:layout_marginStart="8dp"
android:src="@mipmap/icon_home_interactive_game_arrow" />
</LinearLayout>
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.yunbao.common.custom.CommonRefreshView
android:id="@+id/refreshView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:layout_width="174dp"
android:layout_height="61dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="80dp"
android:background="@mipmap/icon_interactive_game_room_random_start"
android:gravity="center"
android:text="@string/interactive_game_room_random_start"
android:textColor="#FF8100"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="@+id/refreshView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>