diff --git a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java index 4d5515766..71e5326b5 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java @@ -56,6 +56,7 @@ import com.yunbao.live.dialog.LiveGuardDialogFragment; import com.yunbao.live.dialog.LiveInputDialogFragment; import com.yunbao.live.dialog.LiveMoreDialogFragment; import com.yunbao.live.dialog.LiveNewGuardBuyDialogFragment; +import com.yunbao.live.dialog.LiveNewGuardListDialogFragment; import com.yunbao.live.dialog.LiveRedPackListDialogFragment; import com.yunbao.live.dialog.LiveRedPackSendDialogFragment; import com.yunbao.live.dialog.LiveShareDialogFragment; @@ -1251,6 +1252,18 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL fragment.setArguments(bundle); fragment.show(getSupportFragmentManager(), "LiveGuardDialogFragment"); } + /** + * 守护列表弹窗 + */ + public void openNewGuardListWindow() { + LiveNewGuardListDialogFragment fragment = new LiveNewGuardListDialogFragment(); + fragment.setLiveGuardInfo(mLiveGuardInfo); + Bundle bundle = new Bundle(); + bundle.putString(Constants.LIVE_UID, mLiveUid); + bundle.putBoolean(Constants.ANCHOR, mIsAnchor); + fragment.setArguments(bundle); + fragment.show(getSupportFragmentManager(), "LiveGuardDialogFragment"); + } /** * 打開粉絲團 diff --git a/live/src/main/java/com/yunbao/live/adapter/GuardAdapter.java b/live/src/main/java/com/yunbao/live/adapter/GuardAdapter.java index c9c4a57f8..119bb244c 100644 --- a/live/src/main/java/com/yunbao/live/adapter/GuardAdapter.java +++ b/live/src/main/java/com/yunbao/live/adapter/GuardAdapter.java @@ -2,9 +2,11 @@ package com.yunbao.live.adapter; import android.content.Context; import android.graphics.drawable.Drawable; + import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; + import android.text.Html; import android.view.View; import android.view.ViewGroup; @@ -35,9 +37,11 @@ public class GuardAdapter extends RefreshAdapter { private Drawable mGuardDrawable0; private Drawable mGuardDrawable1; private Drawable mGuardDrawable2; + private boolean isShowTitle; - public GuardAdapter(Context context, boolean dialog) { + public GuardAdapter(Context context, boolean dialog, boolean isShowTitle) { super(context); + this.isShowTitle = isShowTitle; mDialog = dialog; mVotesName = CommonAppConfig.getInstance().getVotesName(); mWeekContributeString = WordUtil.getString(R.string.guard_week_con); @@ -46,9 +50,15 @@ public class GuardAdapter extends RefreshAdapter { mGuardDrawable2 = ContextCompat.getDrawable(context, R.mipmap.icon_guard_type_2); } + public GuardAdapter(Context context, boolean dialog) { + this(context, dialog, true); + } @Override public int getItemViewType(int position) { + if(!isShowTitle){ + return NORMAL; + } if (position == 0) { return HEAD; } @@ -105,7 +115,7 @@ public class GuardAdapter extends RefreshAdapter { if (levelBean != null) { ImgLoader.display(mContext, levelBean.getThumb(), mLevel); } - mVotes.setText(Html.fromHtml( " " + bean.getContribute() + " " + mVotesName)); + mVotes.setText(Html.fromHtml(" " + bean.getContribute() + " " + mVotesName)); } } @@ -142,7 +152,7 @@ public class GuardAdapter extends RefreshAdapter { mIcon.setImageDrawable(mGuardDrawable0); } else if (bean.getType() == Constants.GUARD_TYPE_MONTH) { mIcon.setImageDrawable(mGuardDrawable1); - } else if (bean.getType() == Constants.GUARD_TYPE_YEAR){ + } else if (bean.getType() == Constants.GUARD_TYPE_YEAR) { mIcon.setImageDrawable(mGuardDrawable2); } } diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveNewGuardBuyDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveNewGuardBuyDialogFragment.java index 0cbce77cf..856f4312f 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveNewGuardBuyDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveNewGuardBuyDialogFragment.java @@ -8,6 +8,7 @@ import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.Nullable; diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveNewGuardListDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveNewGuardListDialogFragment.java new file mode 100644 index 000000000..5697ab537 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/dialog/LiveNewGuardListDialogFragment.java @@ -0,0 +1,206 @@ +package com.yunbao.live.dialog; + +import android.graphics.Color; +import android.os.Bundle; +import android.text.Html; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.fragment.app.FragmentTransaction; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.opensource.svgaplayer.SVGAImageView; +import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.Constants; +import com.yunbao.common.adapter.RefreshAdapter; +import com.yunbao.common.bean.IMLoginModel; +import com.yunbao.common.bean.LevelBean; +import com.yunbao.common.custom.CommonRefreshView; +import com.yunbao.common.dialog.AbsDialogFragment; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.http.HttpCallback; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.CommonIconUtil; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.live.R; +import com.yunbao.live.activity.LiveActivity; +import com.yunbao.live.adapter.GuardAdapter; +import com.yunbao.live.bean.GuardUserBean; +import com.yunbao.live.bean.LiveGuardInfo; +import com.yunbao.live.http.LiveHttpUtil; + +import java.util.Arrays; +import java.util.List; + +public class LiveNewGuardListDialogFragment extends AbsDialogFragment implements View.OnClickListener { + private ImageView guardIcon, userSex, userLevel; + private ConstraintLayout mRootLayout; + private CommonRefreshView mRefreshView; + private TextView mBtnBuy, userName, userGuard,tip1, tip2; + private SVGAImageView giftSvga; + private LinearLayout userLayout; + + private GuardAdapter mGuardAdapter; + private LiveGuardInfo mLiveGuardInfo; + private String mLiveUid; + private boolean mIsAnchor;//是否是主播 + + @Override + protected int getLayoutId() { + return R.layout.dialog_new_guard_list; + } + + @Override + protected int getDialogStyle() { + return R.style.dialog2; + } + + @Override + protected boolean canCancel() { + return true; + } + + public void setLiveGuardInfo(LiveGuardInfo info) { + mLiveGuardInfo = info; + } + + @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); + Bundle bundle = getArguments(); + if (bundle == null) { + return; + } + mIsAnchor = bundle.getBoolean(Constants.ANCHOR, false); + mLiveUid = bundle.getString(Constants.LIVE_UID); + guardIcon = mRootView.findViewById(R.id.guard_imageView); + mRootLayout = mRootView.findViewById(R.id.guard_constraintLayout); + mBtnBuy = mRootView.findViewById(R.id.guard_btn_buy); + giftSvga = mRootView.findViewById(R.id.gift_svga); + mRefreshView = mRootView.findViewById(R.id.refreshView); + userName = mRootView.findViewById(R.id.list_guard_list_user_name); + userGuard = mRootView.findViewById(R.id.list_guard_list_user_guard); + userLevel = mRootView.findViewById(R.id.list_guard_list_user_level); + userSex = mRootView.findViewById(R.id.list_guard_list_user_sex); + userLayout = mRootView.findViewById(R.id.guard_linearLayout); + tip1 = mRootView.findViewById(R.id.guard_tip1); + tip2 = mRootView.findViewById(R.id.guard_tip2); + mBtnBuy.setOnClickListener(this); + mBtnBuy.setEnabled(true); + mBtnBuy.setText(R.string.guard_buy_2); + initView(); + } + + private void initView() { + mRefreshView.setEmptyLayoutId(mIsAnchor ? R.layout.view_no_data_guard_anc : R.layout.view_no_data_guard_aud); + mRefreshView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false)); + mRefreshView.setDataHelper(new CommonRefreshView.DataHelper() { + @Override + public RefreshAdapter getAdapter() { + if (mGuardAdapter == null) { + mGuardAdapter = new GuardAdapter(mContext, true, false); + } + return mGuardAdapter; + } + + @Override + public void loadData(int p, HttpCallback callback) { + LiveHttpUtil.getGuardList(mLiveUid, p, callback); + } + + @Override + public List processData(String[] info) { + List list = JSON.parseArray(Arrays.toString(info), GuardUserBean.class); + if (list.isEmpty()) { + userLayout.setVisibility(View.INVISIBLE); + }else { + GuardUserBean bean = list.get(0); + giftSvga.setImageResource(R.drawable.guardian_img_wings_p); + ImgLoader.display(mContext, bean.getAvatar(), guardIcon); + guardIcon.setVisibility(View.VISIBLE); + userName.setText(bean.getUserNiceName()); + String guardString = WordUtil.getString(R.string.guard_week_con); + userGuard.setText(guardString + " " + bean.getContribute()); + userSex.setImageResource(CommonIconUtil.getSexIcon(bean.getSex())); + LevelBean levelBean = CommonAppConfig.getInstance().getLevel(bean.getLevel()); + if (levelBean != null) { + ImgLoader.display(mContext, levelBean.getThumb(), userLevel); + } + } + if (mLiveGuardInfo != null) { + int guardType = mLiveGuardInfo.getMyGuardType(); + if (guardType == Constants.GUARD_TYPE_NONE) { + tip1.setText(R.string.guard_tip_0); + } else if (guardType == Constants.GUARD_TYPE_DAY) { + tip1.setText(WordUtil.getString(R.string.guard_tip_day) + mLiveGuardInfo.getMyGuardEndTime()); + mBtnBuy.setText(R.string.guard_buy_3); + } else if (guardType == Constants.GUARD_TYPE_MONTH) { + tip1.setText(WordUtil.getString(R.string.guard_tip_1) + mLiveGuardInfo.getMyGuardEndTime()); + mBtnBuy.setText(R.string.guard_buy_3); + } else if (guardType == Constants.GUARD_TYPE_YEAR) { + tip1.setText(WordUtil.getString(R.string.guard_tip_2) + mLiveGuardInfo.getMyGuardEndTime()); + mBtnBuy.setText(R.string.guard_buy_3); + } + } + return list; + } + + @Override + public void onRefreshSuccess(List list, int listCount) { + + } + + @Override + public void onRefreshFailure() { + + } + + @Override + public void onLoadMoreSuccess(List loadItemList, int loadItemCount) { + + } + + @Override + public void onLoadMoreFailure() { + + } + }); + System.out.println(">>>>>>>>>>>>>设置数据"); + mRefreshView.initData(); + } + + @Override + public void onClick(View view) { + dismiss(); + ((LiveActivity) mContext).openNewBuyGuardWindow(); + } + + @Override + public int show(@NonNull FragmentTransaction transaction, @Nullable String tag) { + int show = super.show(transaction, tag); + initView(); + return show; + } +} diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveUserMoreDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveUserMoreDialogFragment.java index 70a5a88c0..cd3755697 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveUserMoreDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveUserMoreDialogFragment.java @@ -143,7 +143,7 @@ public class LiveUserMoreDialogFragment extends AbsDialogFragment implements Vie ((LiveActivity) mContext).openLuckGiftTip(); } else if (Tips.equals("2")) { dismiss(); - ((LiveActivity) mContext).openGuardListWindow(); + ((LiveActivity) mContext).openNewGuardListWindow(); } else if (Tips.equals("3")) { dismiss(); ((LiveActivity) mContext).openFansWindow(); diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index 3b0c951dc..ff6d434fb 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -1501,7 +1501,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis //直播间 粉丝排行榜 openMedalRankWindow(); } else if (i == R.id.btn_guard) { - ((LiveActivity) mContext).openGuardListWindow(); + ((LiveActivity) mContext).openNewGuardListWindow(); } else if (i == R.id.btn_red_pack) { ((LiveActivity) mContext).openRedPackListWindow(); @@ -1521,7 +1521,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis ((LiveActivity) mContext).openHotListWindow(1); } else if (i == R.id.user_guard) { // ((LiveActivity) mContext).openUserMoreListWindow(2, true); - ((LiveActivity) mContext).openGuardListWindow(); + ((LiveActivity) mContext).openNewGuardListWindow(); } } diff --git a/live/src/main/res/drawable/guardian_img_two.png b/live/src/main/res/drawable/guardian_img_two.png new file mode 100644 index 000000000..e596bc84c Binary files /dev/null and b/live/src/main/res/drawable/guardian_img_two.png differ diff --git a/live/src/main/res/drawable/guardian_img_wings_p.png b/live/src/main/res/drawable/guardian_img_wings_p.png new file mode 100644 index 000000000..ba82895f1 Binary files /dev/null and b/live/src/main/res/drawable/guardian_img_wings_p.png differ diff --git a/live/src/main/res/layout/dialog_guard_list.xml b/live/src/main/res/layout/dialog_guard_list.xml index 6b97a3ee6..cdce9303d 100644 --- a/live/src/main/res/layout/dialog_guard_list.xml +++ b/live/src/main/res/layout/dialog_guard_list.xml @@ -56,11 +56,10 @@ android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_toLeftOf="@id/btn_buy" + android:background="#161616" android:gravity="center_vertical" android:textColor="@color/gray1" - android:textSize="12sp" - android:background="#161616" - /> + android:textSize="12sp" /> diff --git a/live/src/main/res/layout/dialog_new_guard_list.xml b/live/src/main/res/layout/dialog_new_guard_list.xml new file mode 100644 index 000000000..e65e93985 --- /dev/null +++ b/live/src/main/res/layout/dialog_new_guard_list.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/guard_list.xml b/live/src/main/res/layout/guard_list.xml index 12b791ffc..f6de03725 100644 --- a/live/src/main/res/layout/guard_list.xml +++ b/live/src/main/res/layout/guard_list.xml @@ -48,7 +48,7 @@ android:ellipsize="end" android:maxWidth="100dp" android:singleLine="true" - android:textColor="#F6F7FB" + android:textColor="#3F3F3F" android:textSize="15sp" /> @@ -85,6 +85,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="5dp" + android:layout_marginEnd="20dp" android:layout_marginTop="4dp" android:orientation="vertical"> @@ -102,8 +103,9 @@ android:id="@+id/votes" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="123456789" - android:textColor="#ffc2dff0" + android:text="1" + android:textColor="#979797" + android:layout_gravity="right" android:gravity="center" android:textSize="12sp"/> diff --git a/live/src/main/res/layout/view_live_room.xml b/live/src/main/res/layout/view_live_room.xml index c8ed92ef6..4935bc40d 100644 --- a/live/src/main/res/layout/view_live_room.xml +++ b/live/src/main/res/layout/view_live_room.xml @@ -198,8 +198,6 @@ android:layout_width="27dp" android:layout_height="27dp" android:layout_centerInParent="true" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" android:scaleType="centerCrop" android:src="@mipmap/img_guardian_empty" app:riv_oval="true" />