pdlivexp/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java
2022-11-10 11:17:04 +08:00

621 lines
24 KiB
Java

package com.yunbao.live.dialog;
import android.app.Dialog;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import androidx.core.content.ContextCompat;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
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 com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.tencent.imsdk.v2.V2TIMCallback;
import com.tencent.imsdk.v2.V2TIMManager;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.FansMedalBean;
import com.yunbao.common.bean.LevelBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.dialog.AbsDialogFragment;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.interfaces.CommonCallback;
import com.yunbao.common.utils.CommonIconUtil;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.NobleUtil;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.SVGAViewUtils;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
import com.yunbao.live.activity.LiveReportActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
import com.yunbao.live.bean.GuardUserBean;
import com.yunbao.live.bean.ImpressBean;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.live.custom.MyTextView;
import com.yunbao.live.event.LiveRoomChangeEvent;
import com.yunbao.live.http.LiveHttpConsts;
import com.yunbao.live.http.LiveHttpUtil;
import com.yunbao.live.presenter.LiveRoomCheckLivePresenter;
import com.yunbao.live.utils.LiveTextRender;
import com.yunbao.live.views.LiveRoomViewHolder;
import org.greenrobot.eventbus.EventBus;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import io.rong.imlib.IRongCoreCallback;
import io.rong.imlib.IRongCoreEnum;
import io.rong.imlib.chatroom.base.RongChatRoomClient;
import pl.droidsonroids.gif.GifImageView;
/**
* Created by cxf on 2018/10/15.
* 直播间个人资料弹窗
*/
public class LiveUserDialogFragment extends AbsDialogFragment implements View.OnClickListener {
private String TAG = "用户弹窗";
private static final int TYPE_AUD_AUD = 1;//观众点别的观众
private static final int TYPE_ANC_AUD = 2;//主播点观众
private static final int TYPE_AUD_ANC = 3;//观众点主播
private static final int TYPE_AUD_SELF = 4;//观众点自己
private static final int TYPE_ANC_SELF = 5;//主播点自己
private static final int SETTING_ACTION_SELF = 0;//设置 自己点自己
private static final int SETTING_ACTION_AUD = 30;//设置 普通观众点普通观众 或所有人点超管
private static final int SETTING_ACTION_ADM = 40;//设置 房间管理员点普通观众
private static final int SETTING_ACTION_SUP = 60;//设置 超管点主播
private static final int SETTING_ACTION_ANC_AUD = 501;//设置 主播点普通观众
private static final int SETTING_ACTION_ANC_ADM = 502;//设置 主播点房间管理员
private ViewGroup mBottomContainer;
private String mLiveUid;
private String mToUid;
private String mStream;
private int mType;
private TextView mFollowText;
private TextView mName;
private TextView mID;
private TextView userLv;
private TextView mLvDesc;
private TextView mFansVal;
private TextView mPraise;
private TextView mSignDesc;
private TextView mNobleVal;
private TextView mReport;
private TextView mGuard;
private TextView mUnion;
private TextView mHonorVal;
private TextView mNobleTitleVal;
private ImageView mFollowImage;
private ImageView mSex;
private ImageView good_nub_ico;
private ImageView mLiveIcon;
private ImageView mLiveIcon2;
private ImageView mNoble;
private ImageView mNobleIcon;
private ImageView mAvatar;
private ImageView shawl;
private ImageView honorIcon;
private ImageView mTitleBg;
private UserBean mUserBean;
private LinearLayout mGuardLayout;
private LinearLayout mUnionLayout;
private LinearLayout mNobleIconLayout;
private LinearLayout mUserLevelLayout;
private LinearLayout mHonorLayout;
private boolean mFollowing;
GifImageView btn_live;
SVGAImageView gift_svga;
@Override
protected int getLayoutId() {
return R.layout.dialog_new_live_user;
}
@Override
protected int getDialogStyle() {
return R.style.dialog2;
}
@Override
protected boolean canCancel() {
return true;
}
private LiveRoomCheckLivePresenter mCheckLivePresenter;
@Override
protected void setWindowAttributes(Window window) {
WindowManager.LayoutParams params = window.getAttributes();
window.setWindowAnimations(R.style.bottomToTopAnim);
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.BOTTOM;
window.setAttributes(params);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bundle bundle = getArguments();
if (bundle == null) {
return;
}
mLiveUid = bundle.getString(Constants.LIVE_UID);
mToUid = bundle.getString(Constants.TO_UID);
if (TextUtils.isEmpty(mLiveUid) || TextUtils.isEmpty(mToUid)) {
return;
}
mStream = bundle.getString(Constants.STREAM);
getType();
initView();
initListener();
//initGuardList();
LayoutInflater inflater = LayoutInflater.from(mContext);
View bottomView = null;
if (mType == TYPE_AUD_ANC) {
bottomView = inflater.inflate(R.layout.dialog_live_user_bottom_1, mBottomContainer, false);
} else if (mType == TYPE_AUD_AUD) {
bottomView = inflater.inflate(R.layout.dialog_live_user_bottom_1, mBottomContainer, false);
} else if (mType == TYPE_ANC_AUD) {
bottomView = inflater.inflate(R.layout.dialog_live_user_bottom_1, mBottomContainer, false);
} else if (mType == TYPE_AUD_SELF) {
bottomView = inflater.inflate(R.layout.dialog_live_user_bottom_3, mBottomContainer, false);
}
if (bottomView != null) {
mBottomContainer.addView(bottomView);
mFollowText = bottomView.findViewById(R.id.follow_text);
mFollowImage = (ImageView) findViewById(R.id.follow_img);
View btnFollow = bottomView.findViewById(R.id.btn_follow);
if (btnFollow != null) {
btnFollow.setOnClickListener(this);
}
View btnPriMsg = bottomView.findViewById(R.id.btn_pri_msg);
if (btnPriMsg != null) {
btnPriMsg.setOnClickListener(this);
}
View btnHomePage = bottomView.findViewById(R.id.btn_home_page);
if (btnHomePage != null) {
btnHomePage.setOnClickListener(this);
}
}
loadData();
}
private void initView() {
gift_svga = (SVGAImageView) mRootView.findViewById(R.id.gift_svga);
btn_live = mRootView.findViewById(R.id.btn_live);
mBottomContainer = mRootView.findViewById(R.id.bottom_container);
mSex = (ImageView) mRootView.findViewById(R.id.sex);
mName = (TextView) mRootView.findViewById(R.id.name);
mID = (TextView) mRootView.findViewById(R.id.id_val);
good_nub_ico = (ImageView) mRootView.findViewById(R.id.good_nub_ico);
userLv = mRootView.findViewById(R.id.lv_val);
mLvDesc = mRootView.findViewById(R.id.lv_desc);
mLiveIcon = mRootView.findViewById(R.id.user_card_lv_icon);
mLiveIcon2 = mRootView.findViewById(R.id.live_icon);
mNoble = mRootView.findViewById(R.id.user_card_noble);
mFansVal = mRootView.findViewById(R.id.fans_val);
mPraise = mRootView.findViewById(R.id.praise_val);
mSignDesc = mRootView.findViewById(R.id.sign);
mAvatar = mRootView.findViewById(R.id.avatar);
mNobleVal = mRootView.findViewById(R.id.noble_val);
shawl = (ImageView) mRootView.findViewById(R.id.shawl);
mReport = mRootView.findViewById(R.id.btn_report);
mGuardLayout = mRootView.findViewById(R.id.btn_guard);
mGuard = mRootView.findViewById(R.id.guard_val);
mNobleIcon = mRootView.findViewById(R.id.noble_icon);
honorIcon = mRootView.findViewById(R.id.honor_icon);
mUnionLayout = mRootView.findViewById(R.id.btn_union);
mUnion = mRootView.findViewById(R.id.union_val);
mHonorVal = mRootView.findViewById(R.id.honor_val);
mUserLevelLayout = mRootView.findViewById(R.id.user_level_layout);
mNobleIconLayout = mRootView.findViewById(R.id.noble_icon_layout);
mNobleTitleVal = mRootView.findViewById(R.id.noble_title_val);
mHonorLayout = mRootView.findViewById(R.id.honor_layout);
mTitleBg = mRootView.findViewById(R.id.title_bg);
mHonorLayout.setOnClickListener(v -> forwardHomePage());
}
private void initListener() {
btn_live.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// gotoLive(mToUid);
}
});
mAvatar.setOnClickListener(this);
mReport.setOnClickListener(this);
mGuardLayout.setOnClickListener(this);
btn_live.setOnClickListener(this);
}
private void loadData() {
LiveHttpUtil.getLiveUser(mToUid, mLiveUid, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info.length > 0) {
showData(info[0]);
}
}
});
}
private void getType() {
String uid = CommonAppConfig.getInstance().getUid();
if (mToUid.equals(mLiveUid)) {
if (mLiveUid.equals(uid)) {//主播点自己
mType = TYPE_ANC_SELF;
} else {//观众点主播
mType = TYPE_AUD_ANC;
}
} else {
if (mLiveUid.equals(uid)) {//主播点观众
mType = TYPE_ANC_AUD;
} else {
if (mToUid.equals(uid)) {//观众点自己
mType = TYPE_AUD_SELF;
} else {//观众点别的观众
mType = TYPE_AUD_AUD;
}
}
}
}
private void showData(String data) {
Log.i(TAG, "showData: " + data);
boolean isAnchor = mLiveUid.equals(mToUid);
JSONObject obj = JSON.parseObject(data);
mUserBean = JSON.toJavaObject(obj, UserBean.class);
if (mUserBean.getIslive().equals("1")) {
btn_live.setVisibility(View.VISIBLE);
} else {
btn_live.setVisibility(View.GONE);
}
if (isAnchor) {
mGuardLayout.setVisibility(View.VISIBLE);
if (obj.containsKey("user_president_name") && !StringUtil.isEmpty(obj.getString("user_president_name"))) {
mUnion.setText(obj.getString("user_president_name"));
mUnionLayout.setVisibility(View.VISIBLE);
}
mNoble.setVisibility(View.GONE);
mUserLevelLayout.setBackgroundResource(R.drawable.bg_user_card_lv);
mNobleTitleVal.setText(R.string.live_noble_fens_anchor);
mNobleIconLayout.setBackgroundResource(R.drawable.bg_user_card_fans);
} else {
mUserLevelLayout.setBackgroundResource(R.drawable.bg_user_card_au_lv);
}
mName.setText(obj.getString("user_nicename"));
if (mUserBean.getGoodnum() != null && !mUserBean.getGoodnum().equals("")) {
good_nub_ico.setVisibility(View.VISIBLE);
mID.setText(mUserBean.getGoodnum());
} else {
good_nub_ico.setVisibility(View.GONE);
mID.setText(mUserBean.getId());
}
mSex.setImageResource(CommonIconUtil.getSexIconForUserCard(obj.getIntValue("sex")));
LevelBean levelBean;
if (mLiveUid.equals(mUserBean.getId())) {
levelBean = CommonAppConfig.getInstance().getAnchorLevel(mUserBean.getLevelAnchor());
userLv.setText("Lv." + mUserBean.getLevelAnchor());
mLvDesc.setText(R.string.live_user_level_anchor);
} else {
levelBean = CommonAppConfig.getInstance().getLevel(mUserBean.getLevel());
userLv.setText("Lv." + mUserBean.getLevel());
mLvDesc.setText(R.string.live_user_card_level);
}
new LiveTextRender().getLevelImage(mContext, levelBean.getLevel(), new ImgLoader.DrawableCallback() {
@Override
public void onLoadSuccess(Drawable drawable) {
ImgLoader.display2(mContext, drawable, mLiveIcon);
}
@Override
public void onLoadFailed() {
}
});
ImgLoader.display(mContext, levelBean.getBgIcon(), mLiveIcon2);
FansMedalBean fansMedalBean = CommonAppConfig.getInstance().getAnchorFansMedal(obj.getIntValue("medal_level"));
if (fansMedalBean != null && !isAnchor) {
ImgLoader.display(mContext, fansMedalBean.getThumb(), mNoble);
} else {
mNoble.setVisibility(View.GONE);
}
mGuard.setText(String.format(mGuard.getText().toString(), obj.getInteger("guard_num")));
mFansVal.setText(WordUtil.getString(R.string.fans) + ":" + mUserBean.getFans());
mPraise.setText(WordUtil.getString(R.string.praise) + ":" + obj.getInteger("user_love_num"));
mSignDesc.setText(mUserBean.getSignature());
if (isAnchor) {
mNobleVal.setText("" + obj.getInteger("level_fans_num"));
} else {
mNobleVal.setText(NobleUtil.nobleIdToStringName(Integer.parseInt(mUserBean.getNoble_id())));
if (obj.getInteger("noble_id") != 0) {
mTitleBg.setBackgroundResource(NobleUtil.getUserCardTitleBackgroundId(obj.getInteger("noble_id")));
}
}
ImgLoader.displayAvatar(mContext, obj.getString("avatar"), mAvatar);
JSONObject dress = obj.getJSONObject("dress");
mHonorVal.setText(dress.getInteger("medal_num") + "");
if (obj.containsKey("level_thumb")) {
ImgLoader.display(mContext, obj.getJSONObject("level_thumb").getString("icon"), mLiveIcon2);
} else {
mLiveIcon2.setVisibility(View.INVISIBLE);
}
if (dress.containsKey("medal") && !isAnchor) {
JSONObject item = null;
for (Object medal : dress.getJSONArray("medal")) {
JSONObject _item = (JSONObject) medal;
if (_item.getInteger("is_use") == 1) {
item = _item;
break;
}
}
if (item != null) {
String url = item.getString("display_src");
if (item.containsKey("noble_medal")) {
mNoble.setVisibility(View.VISIBLE);
ImgLoader.display(mContext, item.getString("noble_medal"), mNoble);
}
if (url != null) {
url = url.replace("qny.shayucm.com", "downs.yaoulive.com");
try {
mNobleIconLayout.setBackgroundResource(NobleUtil.getNobleBackgroundId(obj.getInteger("noble_id")));
} catch (Exception e) {
mNobleIconLayout.setBackgroundResource(NobleUtil.getNobleBackgroundId(0));
}
}
}
} else {
mNobleIconLayout.setVisibility(View.VISIBLE);
mNobleIcon.setVisibility(View.VISIBLE);
}
if (dress.containsKey("medal_no")) {
JSONObject item = null;
if (dress.getJSONArray("medal_no").size() > 0) {
item = dress.getJSONArray("medal_no").getJSONObject(0);
String url = item.getString("display_src");
url = url.replace("qny.shayucm.com", "downs.yaoulive.com");
ImgLoader.display(mContext, url, honorIcon);
}
}
mFollowing = obj.getIntValue("isattention") == 1;
updateFollow();
//装扮相关
if (dress.getJSONArray("wraps").size() >= 1) {
JSONObject display = (JSONObject) dress.getJSONArray("wraps").get(0);
shawl.setTag("test");
ImgLoader.display(mContext, display.getString("display_src"), shawl);
}
if (dress.getJSONArray("avatar_frame").size() == 1) {
JSONObject ico = (JSONObject) dress.getJSONArray("avatar_frame").get(0);
if (ico.getString("effect_src") != null) {
if (ico.getString("effect_src").contains("svga")) {
try {
new SVGAParser(mContext).parse(new URL(ico.getString("effect_src")), new SVGAParser.ParseCompletion() {
@Override
public void onComplete(SVGAVideoEntity videoItem) {
SVGADrawable drawable = new SVGADrawable(videoItem);
gift_svga.setImageDrawable(drawable);
SVGAViewUtils.playEndClear(gift_svga);
}
@Override
public void onError() {
}
});
} catch (MalformedURLException e) {
e.printStackTrace();
}
} else {
Log.e("eee", ico.getString("effect_src"));
ImgLoader.display(mContext, ico.getString("effect_src"), gift_svga);
}
}
}
}
private void updateFollow() {
if (mFollowText != null) {
mFollowText.setText(mFollowing ? R.string.following : R.string.follow);
if (mFollowing) {
mFollowText.setTextColor(Color.parseColor("#B1B1B1"));
} else {
mFollowText.setTextColor(Color.parseColor("#FA6400"));
}
}
if (mFollowImage != null) {
if (mFollowing) {
mFollowImage.setVisibility(View.GONE);
} else {
mFollowImage.setVisibility(View.VISIBLE);
}
}
}
/**
* 关注
*/
private void setAttention() {
if (mFollowing) {
DialogUitl.Builder builder = new DialogUitl.Builder(mContext)
.setContent(WordUtil.getString(R.string.unfollow))
.setConfrimString(WordUtil.getString(R.string.unfollow_confrim))
.setCancelString(WordUtil.getString(R.string.unfollow_cancel))
.setView(R.layout.dialog_live_unfollow)
.setClickCallback3(new DialogUitl.SimpleCallback3() {
@Override
public void onConfirmClick(Dialog dialog) {
dialog.dismiss();
}
@Override
public void onCancel() {
attention();
}
});
builder.build().show();
return;
}
attention();
}
private void attention() {
CommonHttpUtil.setAttention(mToUid, new CommonCallback<Integer>() {
@Override
public void callback(Integer isAttention) {
mFollowing = isAttention == 1;
updateFollow();
if (isAttention == 1 && mLiveUid.equals(mToUid)) {//关注了主播
((LiveActivity) mContext).sendSystemMessage(
CommonAppConfig.getInstance().getUserBean().getUserNiceName() + WordUtil.getString(R.string.live_follow_anchor));
}
}
});
}
/**
* 跳转到个人主页
*/
private void forwardHomePage() {
dismiss();
Constants.mStream = mStream;
RouteUtil.forwardUserHome(mContext, mToUid, true, mLiveUid, 0);
}
/**
* 举报
*/
private void report() {
LiveReportActivity.forward(mContext, mToUid);
}
private void gotoLive(String live_id) {
DialogUitl.showSimpleDialog(mContext, "是否確認前往對方直播間?", new DialogUitl.SimpleCallback() {
@Override
public void onConfirmClick(Dialog dialog, String content) {
RongChatRoomClient.getInstance().quitChatRoom("g" + mLiveUid, new IRongCoreCallback.OperationCallback() {
@Override
public void onSuccess() {
Log.i("tx", "退出成功");
//连接socket
LiveHttpUtil.qBackRoom(mLiveUid, mStream, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
}
});
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
}
});
V2TIMManager.getInstance().quitGroup("g" + mLiveUid, new V2TIMCallback() {
@Override
public void onSuccess() {
Log.i("tx", "退出成功" + mLiveUid);
//连接socket
LiveHttpUtil.qBackRoom(mLiveUid, mStream, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
}
});
}
@Override
public void onError(int code, String desc) {
Log.i("tx", "退出失败");
}
});
LiveHttpUtil.getLiveInfo(live_id, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info.length > 0) {
LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class);
if (mCheckLivePresenter == null) {
mCheckLivePresenter = new LiveRoomCheckLivePresenter(mContext, new LiveRoomCheckLivePresenter.ActionListener() {
@Override
public void onLiveRoomChanged(LiveBean liveBean, int liveType, int liveTypeVal, int liveSdk) {
if (liveBean == null) {
return;
}
LiveRoomViewHolder.mHandler.removeCallbacksAndMessages(null);
dismiss();
EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, liveTypeVal));
}
});
}
mCheckLivePresenter.checkLive(liveBean);
}
}
});
}
});
}
@Override
public void onClick(View v) {
int i = v.getId();
if (i == R.id.btn_follow) {
setAttention();
} else if (i == R.id.btn_home_page) {
forwardHomePage();
} else if (i == R.id.btn_report) {
report();
} else if (i == R.id.avatar) {
forwardHomePage();
} else if (i == R.id.btn_guard) {
((LiveActivity) mContext).openNewGuardListWindow(mContext instanceof LiveRyAnchorActivity);
} else if (i == R.id.btn_live) {
gotoLive(mToUid);
}
}
}