From ab953b47851cdc0a0a93ceb81db52293b2d010de Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Mon, 7 Nov 2022 16:48:16 +0800 Subject: [PATCH] update --- .../yunbao/common/utils/CommonIconUtil.java | 3 + common/src/main/res/mipmap-mdpi/good_nub.png | Bin 2134 -> 3053 bytes .../src/main/res/mipmap-mdpi/user_card_id.png | Bin 0 -> 1707 bytes .../main/res/mipmap-mdpi/user_card_man.png | Bin 0 -> 2129 bytes .../main/res/mipmap-mdpi/user_card_woman.png | Bin 0 -> 2461 bytes common/src/main/res/values/strings.xml | 4 + .../dialog/LiveOldUserDialogFragment.java | 810 ++++++++++++++++++ .../live/dialog/LiveUserDialogFragment.java | 699 +++------------ .../yunbao/live/views/LiveRoomViewHolder.java | 3 +- .../main/res/drawable/background_ff63c1.xml | 9 + .../main/res/drawable/bg_user_card_fans.xml | 9 + .../main/res/drawable/bg_user_card_guard.xml | 9 + .../main/res/drawable/bg_user_card_honor.xml | 9 + .../src/main/res/drawable/bg_user_card_lv.xml | 9 + .../res/layout/dialog_live_user_bottom_1.xml | 100 +-- .../main/res/layout/dialog_new_live_user.xml | 432 ++++++++++ .../res/mipmap-mdpi/icon_user_card_follow.png | Bin 0 -> 1584 bytes .../yunbao/main/activity/LoginActivity.java | 9 + .../yunbao/main/activity/MainActivity.java | 2 +- 19 files changed, 1447 insertions(+), 660 deletions(-) create mode 100644 common/src/main/res/mipmap-mdpi/user_card_id.png create mode 100644 common/src/main/res/mipmap-mdpi/user_card_man.png create mode 100644 common/src/main/res/mipmap-mdpi/user_card_woman.png create mode 100644 live/src/main/java/com/yunbao/live/dialog/LiveOldUserDialogFragment.java create mode 100644 live/src/main/res/drawable/background_ff63c1.xml create mode 100644 live/src/main/res/drawable/bg_user_card_fans.xml create mode 100644 live/src/main/res/drawable/bg_user_card_guard.xml create mode 100644 live/src/main/res/drawable/bg_user_card_honor.xml create mode 100644 live/src/main/res/drawable/bg_user_card_lv.xml create mode 100644 live/src/main/res/layout/dialog_new_live_user.xml create mode 100644 live/src/main/res/mipmap-mdpi/icon_user_card_follow.png diff --git a/common/src/main/java/com/yunbao/common/utils/CommonIconUtil.java b/common/src/main/java/com/yunbao/common/utils/CommonIconUtil.java index 391d7873b..2b6deafd9 100644 --- a/common/src/main/java/com/yunbao/common/utils/CommonIconUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/CommonIconUtil.java @@ -11,5 +11,8 @@ public class CommonIconUtil { public static int getSexIcon(int key) { return key == 1 ? R.mipmap.icon_sex_male_1 : R.mipmap.icon_sex_female_1; } + public static int getSexIconForUserCard(int key) { + return key == 1 ? R.mipmap.user_card_man : R.mipmap.user_card_woman; + } } diff --git a/common/src/main/res/mipmap-mdpi/good_nub.png b/common/src/main/res/mipmap-mdpi/good_nub.png index 8c586bd752d9770f79ad1a88072bfa14aa6c24b7..52c9ae2341b928ecf19abaf8eab140b1f63a1d58 100644 GIT binary patch literal 3053 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 YJ$tfzQf0wy_btI0>Y5QL+Kv(b2Sh2FP5=M^ literal 2134 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 BpVt5Y literal 0 HcmV?d00001 diff --git a/common/src/main/res/mipmap-mdpi/user_card_man.png b/common/src/main/res/mipmap-mdpi/user_card_man.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf8269f35354742d674cba975d9b8447de57b22 GIT binary patch literal 2129 zcmX|B3pkW%8=jgDC@US=EyYSKEg^?C#|9}Phpkvi^~aWD(%*qh!Wf3ZGMk7bq65;2 z#OylMvgtx*%)vCqVVLA>42F6B_nY18|E~Go?|I+ne(vXf?(h1B?0&>aS?OCP91f@K ze30OQo=4GbqJT#$D`cZLdaMYvbG5_ao>A8<2CPK;Wsx3E_PFwoTSYh=9_Q}j<=_VM8KXIgtDj;<~VHG6&mca^WTu zQkdA5+>Op>VqlG+30F34s;DiXlPU}T1zUp@tfVF9&Q-m3?r zLghpTHY`e^9}x{!W!h!vu2H^=};Oh{w`l?^jekjgLy)NXzWQ!8G?UgeSu7M5U91}}v$ zw**5HY+ecr{u+gJHWc-OWDx{n7@31KHWc!qdI;tgfi(rUd63-$ycxLP3&W_23+4UL zHV(gWp=$!-8BijC(RnEN4CMn*+6QzIkh-B_0BBrzF$k}RKsXCkgOJXFTpns#p zDP7yP^p(#UuifM3w145^!O$r6JDsduYs;q|au-DY@Bgw*xbb=7N9oqh)$3U&#z$TV z#59l2j%hN7aKBr8C8r_m$#`e0b=iY@W38+a*QLVv2BW;HGt{`ERi&j3`;#}J58Bb0 zVCQwbvH17ZUY^I)-d8BDRwV@gkeXFUT+Zxr;Nb)PynRC+Kjo#+#sWlD*SU4wOH(I> zYt(ga5)F#WynISF>mD%J7~)Q7{$^j0=D2>_DguK)G(?XW2^#zVY!&_n!sncYly*Qos%*aJSt@f;=u}1#wtdxh! ztCF?02TW9Y8{25N@~?EqSQiu)4OO0r{k6O|tY}Cq9=yXYvz}t*+utHf%Ze^iJxa+M z8nJ0=dmFpgvG;GN_A(?ioe31bN;f?!OekUonVx6Pms%Y^R?<&i8Ao_Kt+XXV9JJ5q zeFxJ$Yo2Gl+bv+Pw^_DQ@0Nhm?|vB4QHoA8`|#wIkbVfiJv&<}88$cY^i+IwdIKwg zY{5}K`+;D&a=0?KjkMyU%CORfFBX-T3uO3Kg(kgYhg5we>sMBf<7{c8R}MS)X52Mt zgH>4c}}Dqob&ll+}WOOkw3;v6%m&ps{}zr^dLS)EJp^r11;#zXA`JjtWH z<7-bSYuG(@37JW-R&4&oRqM-R3k&w}jY@~j42_-HYUJ{|L_(M8@IA)!*{!B~J#OXM zYSI7~esEOg7oyqq`!&rmt#f`iw)Xm_I*CKVU(xP}r9mdoj0c}aQy2#*85J(=?=SXQ z<`YfwxfFaY&C!Jy-$ZU{61UpbIjP@?5|#)1Bu#GbEOD1U5453aEE`+*v@u7;?E9H- zB0P0tO^KtIVqdcJ_?OxVu0Awf$Dm2$zV-pLn~(lD8l%A~#(Qc+Dfn@N3Az#eRZ^AG zdqpv?BM)U+dSBKbc>TC+m9BN`{LgAOnN{1}a{hF0&%RnI81~Oosul*Hzy7!XhT63b zr5TF_oKSrtJH4QpUg5P%f7mu}eW&!YGFgZ2cVf})1gYiJvw_H!Z9Z1pbgz4H4sUe3 zXNils9Oxh%ci3%J^ThnZo0yP-!#PrI#_|d6;`P`21Gd&z@~tXr+YP6$lpFjinaMQ~ zz5QuvRa#8+m@QuKYJ(?Zu%O*7@2Mi^KgApUQtSEDJ87d1Av=(#zw-&=yJM!yG z&sMAR!CpxIDa zwIi(J{=@u}v$I*s#x>@9&SdITMBg|=*?5(H+Rz_b0)6W_X2~TX{x@WzckvA0462gM m-XL>DhjvDA>L%+tSoYx29z}MjPX_wy!#O(~A(Y#niu)f@$`6qM literal 0 HcmV?d00001 diff --git a/common/src/main/res/mipmap-mdpi/user_card_woman.png b/common/src/main/res/mipmap-mdpi/user_card_woman.png new file mode 100644 index 0000000000000000000000000000000000000000..1a869f675ae941f87ac5b12bd681823c876d9ce0 GIT binary patch literal 2461 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 GBk+GyGgbZo literal 0 HcmV?d00001 diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 0c7d1c2fa..413db6e14 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -702,6 +702,9 @@ 立即支付 使用者等級 主播等級 + 用户等級 + 貴族等級 + 榮譽墻 連接已斷開,請重新開播 空空如也 聊天 @@ -947,4 +950,5 @@ 聊聊天 想在其他APP上方也顯示小窗,\n可前往設置進行授權。 恭喜 %s 在幸運天使中抽中 %s!下一個幸運天使就是你哦! + 守護團%s人 diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveOldUserDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveOldUserDialogFragment.java new file mode 100644 index 000000000..f979a9dd7 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/dialog/LiveOldUserDialogFragment.java @@ -0,0 +1,810 @@ +package com.yunbao.live.dialog; + +import android.app.Dialog; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +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 androidx.core.content.ContextCompat; + +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.LevelBean; +import com.yunbao.common.bean.LiveBean; +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.RouteUtil; +import com.yunbao.common.utils.SVGAViewUtils; +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.bean.ImpressBean; +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.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 LiveOldUserDialogFragment extends AbsDialogFragment implements View.OnClickListener { + + 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 ImageView mAvatar; + private ImageView mLevelAnchor; + private ImageView mLevel; + private TextView mLevelText; + private TextView mLevelAnchorText; + private ImageView mSex; + private TextView mName; + private TextView mID; + private TextView mCity; + private LinearLayout mImpressGroup; + private TextView mFollow; + private TextView mSign; + private TextView mFans; + private TextView mConsume;//消费 + private TextView mVotes;//收入 + private TextView mConsumeTip; + private TextView mVotesTip; + private String mLiveUid; + private String mStream; + private String mAvatarUrl; + private String mToUid; + private TextView mFollowText; + private ImageView mFollowImage; + private int mType; + private int mAction; + private String mToName;//对方的名字 + private UserBean mUserBean; + private boolean mFollowing; + private Drawable mFollowDrawable; + private Drawable mUnFollowDrawable; + SVGAImageView gift_svga; + LinearLayout ry_view; + ImageView medalIco1, shawl; + ImageView ry_ico1, ry_ico2, ry_ico3, ry_ico4, good_nub_ico; + View no_gz; + GifImageView btn_live; + + @Override + protected int getLayoutId() { + return R.layout.dialog_live_user; + } + + @Override + protected int getDialogStyle() { + return R.style.dialog2; + } + + @Override + protected boolean canCancel() { + return true; + } + + private LiveRoomCheckLivePresenter mCheckLivePresenter; + + 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); +// if (mFromLiveRoom) { +// ((UserHomeActivity) mContext).onBackPressed(); + dismiss(); + EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, liveTypeVal)); +// } else { +// LiveAudienceActivity.forward(mContext, liveBean, liveType, liveTypeVal, "", 0, liveSdk); +// } + } + }); + } + mCheckLivePresenter.checkLive(liveBean); + } + } + }); + + + } + }); + } + + @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); + //头像边框 + gift_svga = (SVGAImageView) mRootView.findViewById(R.id.gift_svga); + + btn_live = mRootView.findViewById(R.id.btn_live); + btn_live.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + gotoLive(mToUid); + } + }); + + mBottomContainer = mRootView.findViewById(R.id.bottom_container); + ry_view = (LinearLayout) mRootView.findViewById(R.id.ry_view); + no_gz = (View) mRootView.findViewById(R.id.no_gz); + ry_ico1 = (ImageView) mRootView.findViewById(R.id.ry_ico1); + good_nub_ico = (ImageView) mRootView.findViewById(R.id.good_nub_ico); + ry_ico2 = (ImageView) mRootView.findViewById(R.id.ry_ico2); + ry_ico3 = (ImageView) mRootView.findViewById(R.id.ry_ico3); + ry_ico4 = (ImageView) mRootView.findViewById(R.id.ry_ico4); + mAvatar = (ImageView) mRootView.findViewById(R.id.avatar); + mLevelAnchor = (ImageView) mRootView.findViewById(R.id.anchor_level); + mLevel = (ImageView) mRootView.findViewById(R.id.level); + shawl = (ImageView) mRootView.findViewById(R.id.shawl); + mLevelText = mRootView.findViewById(R.id.level_text); + mLevelAnchorText = mRootView.findViewById(R.id.level_anchor_text); + mSex = (ImageView) mRootView.findViewById(R.id.sex); + mName = (TextView) mRootView.findViewById(R.id.name); + mID = (TextView) mRootView.findViewById(R.id.id_val); + mCity = (TextView) mRootView.findViewById(R.id.city); + mSign = mRootView.findViewById(R.id.sign); + mImpressGroup = (LinearLayout) mRootView.findViewById(R.id.impress_group); + mFollow = (TextView) mRootView.findViewById(R.id.follow); + mFans = (TextView) mRootView.findViewById(R.id.fans); + mConsume = (TextView) mRootView.findViewById(R.id.consume); + mVotes = (TextView) mRootView.findViewById(R.id.votes); + mConsumeTip = (TextView) mRootView.findViewById(R.id.consume_tip); + mVotesTip = (TextView) mRootView.findViewById(R.id.votes_tip); + medalIco1 = (ImageView) mRootView.findViewById(R.id.medal_ico1); + mAvatar.setOnClickListener(this); + // mRootView.findViewById(R.id.btn_close).setOnClickListener(this); + getType(); + LayoutInflater inflater = LayoutInflater.from(mContext); + View bottomView = null; + if (mType == TYPE_AUD_ANC) { + if (mImpressGroup.getVisibility() != View.VISIBLE) { + mImpressGroup.setVisibility(View.VISIBLE); + } + 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_2, mBottomContainer, false); + } else if (mType == TYPE_AUD_SELF) { + bottomView = inflater.inflate(R.layout.dialog_live_user_bottom_3, mBottomContainer, false); + } + if (bottomView != null) { + mFollowDrawable = ContextCompat.getDrawable(mContext, R.mipmap.icon_user_home_follow_1); + mUnFollowDrawable = ContextCompat.getDrawable(mContext, R.mipmap.icon_user_home_follow_0); + 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 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 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 showData(String data) { + 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); + } + + //装扮相关 + JSONObject dress = obj.getJSONObject("dress"); + + 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); + } + } + } + + medalIco1.setVisibility(View.GONE); + no_gz.setVisibility(View.GONE); + if (dress.getJSONArray("medal").size() >= 1) { + JSONObject display = (JSONObject) dress.getJSONArray("medal").get(0); + if (display.getString("display_src") != null) { + ImgLoader.display(mContext, display.getString("display_src"), medalIco1); + medalIco1.setVisibility(View.VISIBLE); + no_gz.setVisibility(View.VISIBLE); + } + } + if (dress.getJSONArray("wraps").size() >= 1) { + JSONObject display = (JSONObject) dress.getJSONArray("wraps").get(0); + ImgLoader.display(mContext, display.getString("display_src"), shawl); + } + + JSONObject display = (JSONObject) dress.getJSONArray("medal").get(0); + + if (dress.getJSONArray("medal_no") != null) { + Log.e("tag", dress.getJSONArray("medal_no").size() + ""); + ry_view.setVisibility(View.VISIBLE); + JSONObject ry1 = (JSONObject) dress.getJSONArray("medal_no").get(0); + ImgLoader.display(mContext, ry1.get("display_src").toString(), ry_ico1); + ry_ico1.setVisibility(View.VISIBLE); + + if (dress.getJSONArray("medal_no").size() >= 2) { + JSONObject ry2 = (JSONObject) dress.getJSONArray("medal_no").get(1); + ImgLoader.display(mContext, ry2.get("display_src").toString(), ry_ico2); + ry_ico2.setVisibility(View.VISIBLE); + } + if (dress.getJSONArray("medal_no").size() >= 3) { + JSONObject ry3 = (JSONObject) dress.getJSONArray("medal_no").get(2); + ImgLoader.display(mContext, ry3.get("display_src").toString(), ry_ico3); + ry_ico3.setVisibility(View.VISIBLE); + } + + if (dress.getJSONArray("medal_no").size() >= 4) { + JSONObject ry4 = (JSONObject) dress.getJSONArray("medal_no").get(3); + ImgLoader.display(mContext, ry4.get("display_src").toString(), ry_ico4); + ry_ico4.setVisibility(View.VISIBLE); + } + + + } else { + ry_view.setVisibility(View.GONE); + } + + CommonAppConfig appConfig = CommonAppConfig.getInstance(); + + if (mUserBean.getGoodnum() != null && !mUserBean.getGoodnum().equals("")) { + good_nub_ico.setVisibility(View.VISIBLE); + mID.setText("ID:" + mUserBean.getGoodnum()); + } else { + good_nub_ico.setVisibility(View.GONE); + mID.setText(mUserBean.getLiangNameTip()); + } + mToName = obj.getString("user_nicename"); + mName.setText(mToName); + mCity.setText(obj.getString("city")); + ImgLoader.displayAvatar(mContext, obj.getString("avatar"), mAvatar); + mAvatarUrl = obj.getString("avatar"); + int levelAnchor = obj.getIntValue("level_anchor"); + int level = obj.getIntValue("level"); + mSign.setText(obj.getString("signature")); + LevelBean anchorLevelBean = appConfig.getAnchorLevel(obj.getIntValue("level_anchor")); + if (anchorLevelBean != null) { + ImgLoader.display(mContext, anchorLevelBean.getBgIcon(), mLevelAnchor); + } + LevelBean levelBean = appConfig.getLevel(obj.getIntValue("level")); + if (levelBean != null) { + ImgLoader.display(mContext, levelBean.getBgIcon(), mLevel); + } + mLevelAnchorText.setText(String.valueOf(levelAnchor)); + mLevelText.setText(String.valueOf(level)); + mSex.setImageResource(CommonIconUtil.getSexIcon(obj.getIntValue("sex"))); + mFollow.setText(new LiveTextRender().renderLiveUserDialogData(obj.getLongValue("follows"))); + mFans.setText(new LiveTextRender().renderLiveUserDialogData(obj.getLongValue("fans"))); + mConsume.setText(new LiveTextRender().renderLiveUserDialogData(obj.getLongValue("consumption"))); + mVotes.setText(new LiveTextRender().renderLiveUserDialogData(obj.getLongValue("votestotal"))); + mConsumeTip.setText(WordUtil.getString(R.string.live_user_send) + appConfig.getCoinName()); + mVotesTip.setText(WordUtil.getString(R.string.live_user_get) + appConfig.getVotesName()); + if (mType == TYPE_AUD_ANC) { + showImpress(obj.getString("label")); + } + mFollowing = obj.getIntValue("isattention") == 1; + if (mFollowText != null) { + mFollowText.setText(mFollowing ? WordUtil.getString(R.string.following) : WordUtil.getString(R.string.follow)); + } + if (mFollowImage != null) { + mFollowImage.setImageDrawable(mFollowing ? mFollowDrawable : mUnFollowDrawable); + } + mAction = obj.getIntValue("action"); + if (mAction == SETTING_ACTION_AUD) {//设置 普通观众点普通观众 或所有人点超管 + View btnReport = mRootView.findViewById(R.id.btn_report); + btnReport.setVisibility(View.VISIBLE); + btnReport.setOnClickListener(this); + } else if (mAction == SETTING_ACTION_ADM//设置 房间管理员点普通观众 + || mAction == SETTING_ACTION_SUP//设置 超管点主播 + || mAction == SETTING_ACTION_ANC_AUD//设置 主播点普通观众 + || mAction == SETTING_ACTION_ANC_ADM) {//设置 主播点房间管理员 + View btnSetting = mRootView.findViewById(R.id.btn_setting); + btnSetting.setVisibility(View.VISIBLE); + btnSetting.setOnClickListener(this); + } + } + + private void showImpress(String impressJson) { + List list = JSON.parseArray(impressJson, ImpressBean.class); + if (list.size() > 2) { + list = list.subList(0, 2); + } + LayoutInflater inflater = LayoutInflater.from(mContext); + for (int i = 0, size = list.size(); i < size; i++) { + MyTextView myTextView = (MyTextView) inflater.inflate(R.layout.view_impress_item_2, mImpressGroup, false); + ImpressBean bean = list.get(i); + bean.setCheck(1); + myTextView.setBean(bean); + mImpressGroup.addView(myTextView); + } + TextView textView = (TextView) inflater.inflate(R.layout.view_impress_item_add, mImpressGroup, false); + textView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + addImpress(); + } + }); + mImpressGroup.addView(textView); + } + + + /** + * 添加主播印象 + */ + private void addImpress() { + dismiss(); + ((LiveActivity) mContext).openAddImpressWindow(mLiveUid); + } + + @Override + public void onClick(View v) { + int i = v.getId(); + if (i == R.id.btn_close) { + dismiss(); + + } else if (i == R.id.btn_follow) { + setAttention(); + + } else if (i == R.id.btn_pri_msg) { + openChatRoomWindow(); + + } else if (i == R.id.btn_home_page) { + forwardHomePage(); + + } else if (i == R.id.btn_setting) { + setting(); + + } else if (i == R.id.btn_report) { + report(); + + } else if (i == R.id.avatar) { + forwardHomePage(); + } + } + + /** + * 打开私信聊天窗口 + */ + private void openChatRoomWindow() { + if (mUserBean != null) { + dismiss(); +// ToastUtil.show("私聊暫不可用"); +// if (!mToUid.equals(CommonAppConfig.getInstance().getUid())) { +// SystemMessageActivity.forward(mContext, "-1", mToUid, mToName, mAvatarUrl); +// } + + ((LiveActivity) mContext).openChatListWindow(); + } + } + + /** + * 关注 + */ + private void setAttention() { + CommonHttpUtil.setAttention(mToUid, mAttentionCallback); + } + + private CommonCallback mAttentionCallback = new CommonCallback() { + + @Override + public void callback(Integer isAttention) { + mFollowing = isAttention == 1; + if (mFollowText != null) { + mFollowText.setText(mFollowing ? R.string.following : R.string.follow); + } + if (mFollowImage != null) { + mFollowImage.setImageDrawable(mFollowing ? mFollowDrawable : mUnFollowDrawable); + } + 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); +// String url = HtmlConfig.PERSONAL + "?touid=" + mToUid + "&&isHomePage=1" + "&&fromType=0"; +// Constants.myUrl = url += "&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken(); + } + + /** + * 举报 + */ + private void report() { + LiveReportActivity.forward(mContext, mToUid); + } + + /** + * 设置 + *

+ * 某个大神说,角色是权限的集合。。 + *

+ * 理论上,角色的权限应该有服务端以数组或集合的形式返回,这样可以在后台动态配置某种角色的权限,而不是这样口头约定写死。。。 + * 然而,是服务端这样做的,我也很无奈。。。也许他们不知道如何做成动态配置的吧。。 + *

+ * 我一直想通过不断重构把代码写的像艺术品,然而,最近发现,这完全是多此一举,自讨苦吃。。是我太天真了。。 + * 下面是我发现的一篇文章,说的非常好,也点醒了我。。如果你们发现当前代码写的太烂,不堪入目的话,请阅读下面的文章。 + *

+ * https://www.jianshu.com/p/71521541cd25?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin_timeline&from=timeline + */ + private void setting() { + List list = new ArrayList<>(); + switch (mAction) { + case SETTING_ACTION_ADM://设置 房间管理员点普通观众 + list.add(R.string.live_setting_kick); +// list.add(R.string.live_setting_gap); + list.add(R.string.live_setting_gap_2); + break; + case SETTING_ACTION_SUP://设置 超管点主播 + list.add(R.string.live_setting_close_live); + list.add(R.string.live_setting_close_live_2); + list.add(R.string.live_setting_forbid_account); + break; + case SETTING_ACTION_ANC_AUD://设置 主播点普通观众 + list.add(R.string.live_setting_kick); +// list.add(R.string.live_setting_gap); + list.add(R.string.live_setting_gap_2); + list.add(R.string.live_setting_admin); + list.add(R.string.live_setting_admin_list); + break; + case SETTING_ACTION_ANC_ADM://设置 主播点房间管理员 + list.add(R.string.live_setting_kick); +// list.add(R.string.live_setting_gap); + list.add(R.string.live_setting_gap_2); + list.add(R.string.live_setting_admin_cancel); + list.add(R.string.live_setting_admin_list); + break; + } + + DialogUitl.showStringArrayDialog(mContext, list.toArray(new Integer[list.size()]), mArrayDialogCallback); + } + + private DialogUitl.StringArrayDialogCallback mArrayDialogCallback = new DialogUitl.StringArrayDialogCallback() { + @Override + public void onItemClick(String text, int tag) { + if (tag == R.string.live_setting_kick) { + kick(); + + } else if (tag == R.string.live_setting_gap) {//永久禁言->改成三天禁言 + setShutUp(); + + } else if (tag == R.string.live_setting_gap_2) {//本场禁言 + setShutUp2(); + + } else if (tag == R.string.live_setting_admin || tag == R.string.live_setting_admin_cancel) { + setAdmin(); + + } else if (tag == R.string.live_setting_admin_list) { + adminList(); + + } else if (tag == R.string.live_setting_close_live) { + closeLive(); + + } else if (tag == R.string.live_setting_forbid_account) { + forbidAccount(); + + } else if (tag == R.string.live_setting_close_live_2) {//禁用直播 + closeLive2(); + } + } + }; + + /** + * 查看管理员列表 + */ + private void adminList() { + dismiss(); + ((LiveActivity) mContext).openAdminListWindow(); + } + + /** + * 踢人 + */ + private void kick() { + LiveHttpUtil.kicking(mLiveUid, mToUid, new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0) { + ((LiveActivity) mContext).kickUser(mToUid, mToName); + } else { + ToastUtil.show(msg); + } + } + }); + } + + /** + * 永久禁言->改成三天禁言 + */ + private void setShutUp() { + LiveHttpUtil.setShutUp(mLiveUid, "0", 0, mToUid, new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0) { + ((LiveActivity) mContext).setShutUp(mToUid, mToName, 0); + } else { + ToastUtil.show(msg); + } + } + }); + } + + /** + * 本场禁言 + */ + private void setShutUp2() { + LiveHttpUtil.setShutUp(mLiveUid, mStream, 1, mToUid, new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0) { + ((LiveActivity) mContext).setShutUp(mToUid, mToName, 1); + } else { + ToastUtil.show(msg); + } + } + }); + } + + + /** + * 设置或取消管理员 + */ + private void setAdmin() { + LiveHttpUtil.setAdmin(mLiveUid, mToUid, new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0 && info.length > 0) { + int res = JSON.parseObject(info[0]).getIntValue("isadmin"); + if (res == 1) {//被设为管理员 + mAction = SETTING_ACTION_ANC_ADM; + } else {//被取消管理员 + mAction = SETTING_ACTION_ANC_AUD; + } + ((LiveActivity) mContext).sendSetAdminMessage(res, mToUid, mToName); + } + } + }); + } + + + /** + * 超管关闭直播间 + */ + private void closeLive() { + dismiss(); + LiveHttpUtil.superCloseRoom(mLiveUid, 0, mSuperCloseRoomCallback); + } + + /** + * 超管关闭直播间并禁止主播直播 + */ + private void closeLive2() { + dismiss(); + LiveHttpUtil.superCloseRoom(mLiveUid, 1, mSuperCloseRoomCallback); + } + + /** + * 超管关闭直播间并禁用主播账户 + */ + private void forbidAccount() { + dismiss(); + LiveHttpUtil.superCloseRoom(mLiveUid, 2, mSuperCloseRoomCallback); + } + + private HttpCallback mSuperCloseRoomCallback = new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0) { + ToastUtil.show(JSON.parseObject(info[0]).getString("msg")); + ((LiveActivity) mContext).superCloseRoom(); + } else { + ToastUtil.show(msg); + } + } + }; + + @Override + public void onDestroy() { + LiveHttpUtil.cancel(LiveHttpConsts.GET_LIVE_USER); + if (mAvatar != null) { + ImgLoader.clear(mContext, mAvatar); + mAvatar.setImageDrawable(null); + } + mAvatar = null; + super.onDestroy(); + } +} diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java index fc82e3358..d22945541 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java @@ -3,7 +3,9 @@ package com.yunbao.live.dialog; import android.app.Dialog; 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; @@ -26,6 +28,7 @@ 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; @@ -70,6 +73,7 @@ import pl.droidsonroids.gif.GifImageView; */ 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;//主播点观众 @@ -84,46 +88,30 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On private static final int SETTING_ACTION_ANC_AUD = 501;//设置 主播点普通观众 private static final int SETTING_ACTION_ANC_ADM = 502;//设置 主播点房间管理员 private ViewGroup mBottomContainer; - private ImageView mAvatar; - private ImageView mLevelAnchor; - private ImageView mLevel; - private TextView mLevelText; - private TextView mLevelAnchorText; - private ImageView mSex; + private String mLiveUid; + private String mToUid; + private String mStream; + private int mType; + private TextView mFollowText; private TextView mName; private TextView mID; - private TextView mCity; - private LinearLayout mImpressGroup; - private TextView mFollow; - private TextView mSign; - private TextView mFans; - private TextView mConsume;//消费 - private TextView mVotes;//收入 - private TextView mConsumeTip; - private TextView mVotesTip; - private String mLiveUid; - private String mStream; - private String mAvatarUrl; - private String mToUid; - private TextView mFollowText; + private TextView userLv; + private TextView mLvDesc; + private TextView mFansVal; private ImageView mFollowImage; - private int mType; - private int mAction; - private String mToName;//对方的名字 + private ImageView mSex; + private ImageView good_nub_ico; + private ImageView mLiveIcon; + private ImageView mLiveIcon2; + private ImageView mNoble; private UserBean mUserBean; - private boolean mFollowing; - private Drawable mFollowDrawable; - private Drawable mUnFollowDrawable; - SVGAImageView gift_svga; - LinearLayout ry_view; - ImageView medalIco1, shawl; - ImageView ry_ico1, ry_ico2, ry_ico3, ry_ico4, good_nub_ico; - View no_gz; GifImageView btn_live; + SVGAImageView gift_svga; + @Override protected int getLayoutId() { - return R.layout.dialog_live_user; + return R.layout.dialog_new_live_user; } @Override @@ -138,80 +126,6 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On private LiveRoomCheckLivePresenter mCheckLivePresenter; - 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); -// if (mFromLiveRoom) { -// ((UserHomeActivity) mContext).onBackPressed(); - dismiss(); - EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, liveTypeVal)); -// } else { -// LiveAudienceActivity.forward(mContext, liveBean, liveType, liveTypeVal, "", 0, liveSdk); -// } - } - }); - } - mCheckLivePresenter.checkLive(liveBean); - } - } - }); - - - } - }); - } @Override protected void setWindowAttributes(Window window) { @@ -236,53 +150,12 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On return; } mStream = bundle.getString(Constants.STREAM); - //头像边框 - gift_svga = (SVGAImageView) mRootView.findViewById(R.id.gift_svga); - - btn_live = mRootView.findViewById(R.id.btn_live); - btn_live.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - gotoLive(mToUid); - } - }); - - mBottomContainer = mRootView.findViewById(R.id.bottom_container); - ry_view = (LinearLayout) mRootView.findViewById(R.id.ry_view); - no_gz = (View) mRootView.findViewById(R.id.no_gz); - ry_ico1 = (ImageView) mRootView.findViewById(R.id.ry_ico1); - good_nub_ico = (ImageView) mRootView.findViewById(R.id.good_nub_ico); - ry_ico2 = (ImageView) mRootView.findViewById(R.id.ry_ico2); - ry_ico3 = (ImageView) mRootView.findViewById(R.id.ry_ico3); - ry_ico4 = (ImageView) mRootView.findViewById(R.id.ry_ico4); - mAvatar = (ImageView) mRootView.findViewById(R.id.avatar); - mLevelAnchor = (ImageView) mRootView.findViewById(R.id.anchor_level); - mLevel = (ImageView) mRootView.findViewById(R.id.level); - shawl = (ImageView) mRootView.findViewById(R.id.shawl); - mLevelText = mRootView.findViewById(R.id.level_text); - mLevelAnchorText = mRootView.findViewById(R.id.level_anchor_text); - mSex = (ImageView) mRootView.findViewById(R.id.sex); - mName = (TextView) mRootView.findViewById(R.id.name); - mID = (TextView) mRootView.findViewById(R.id.id_val); - mCity = (TextView) mRootView.findViewById(R.id.city); - mSign = mRootView.findViewById(R.id.sign); - mImpressGroup = (LinearLayout) mRootView.findViewById(R.id.impress_group); - mFollow = (TextView) mRootView.findViewById(R.id.follow); - mFans = (TextView) mRootView.findViewById(R.id.fans); - mConsume = (TextView) mRootView.findViewById(R.id.consume); - mVotes = (TextView) mRootView.findViewById(R.id.votes); - mConsumeTip = (TextView) mRootView.findViewById(R.id.consume_tip); - mVotesTip = (TextView) mRootView.findViewById(R.id.votes_tip); - medalIco1 = (ImageView) mRootView.findViewById(R.id.medal_ico1); - mAvatar.setOnClickListener(this); - // mRootView.findViewById(R.id.btn_close).setOnClickListener(this); getType(); + initView(); + initListener(); LayoutInflater inflater = LayoutInflater.from(mContext); View bottomView = null; if (mType == TYPE_AUD_ANC) { - if (mImpressGroup.getVisibility() != View.VISIBLE) { - mImpressGroup.setVisibility(View.VISIBLE); - } 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); @@ -292,8 +165,6 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On bottomView = inflater.inflate(R.layout.dialog_live_user_bottom_3, mBottomContainer, false); } if (bottomView != null) { - mFollowDrawable = ContextCompat.getDrawable(mContext, R.mipmap.icon_user_home_follow_1); - mUnFollowDrawable = ContextCompat.getDrawable(mContext, R.mipmap.icon_user_home_follow_0); mBottomContainer.addView(bottomView); mFollowText = bottomView.findViewById(R.id.follow_text); mFollowImage = (ImageView) findViewById(R.id.follow_img); @@ -313,6 +184,42 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On 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); + } + + private void initListener() { + btn_live.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + // gotoLive(mToUid); + } + }); + } + + 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)) { @@ -334,18 +241,8 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On } } - 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 showData(String data) { + Log.i(TAG, "showData: " + data); JSONObject obj = JSON.parseObject(data); mUserBean = JSON.toJavaObject(obj, UserBean.class); if (mUserBean.getIslive().equals("1")) { @@ -353,457 +250,53 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On } else { btn_live.setVisibility(View.GONE); } + 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(mUserBean.getLevelAnchor() + ""); + mLvDesc.setText(R.string.live_user_level_anchor); + } else { + levelBean = CommonAppConfig.getInstance().getLevel(mUserBean.getLevel()); + userLv.setText(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) { + ImgLoader.display(mContext, fansMedalBean.getThumb(), mNoble); + } else { + mNoble.setVisibility(View.INVISIBLE); + } + mFansVal.setText(mUserBean.getFans()+""); //装扮相关 JSONObject dress = obj.getJSONObject("dress"); - 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); - } - } - } - - medalIco1.setVisibility(View.GONE); - no_gz.setVisibility(View.GONE); - if (dress.getJSONArray("medal").size() >= 1) { - JSONObject display = (JSONObject) dress.getJSONArray("medal").get(0); - if (display.getString("display_src") != null) { - ImgLoader.display(mContext, display.getString("display_src"), medalIco1); - medalIco1.setVisibility(View.VISIBLE); - no_gz.setVisibility(View.VISIBLE); - } - } - if (dress.getJSONArray("wraps").size() >= 1) { - JSONObject display = (JSONObject) dress.getJSONArray("wraps").get(0); - ImgLoader.display(mContext, display.getString("display_src"), shawl); - } - - JSONObject display = (JSONObject) dress.getJSONArray("medal").get(0); - - if (dress.getJSONArray("medal_no") != null) { - Log.e("tag", dress.getJSONArray("medal_no").size() + ""); - ry_view.setVisibility(View.VISIBLE); - JSONObject ry1 = (JSONObject) dress.getJSONArray("medal_no").get(0); - ImgLoader.display(mContext, ry1.get("display_src").toString(), ry_ico1); - ry_ico1.setVisibility(View.VISIBLE); - - if (dress.getJSONArray("medal_no").size() >= 2) { - JSONObject ry2 = (JSONObject) dress.getJSONArray("medal_no").get(1); - ImgLoader.display(mContext, ry2.get("display_src").toString(), ry_ico2); - ry_ico2.setVisibility(View.VISIBLE); - } - if (dress.getJSONArray("medal_no").size() >= 3) { - JSONObject ry3 = (JSONObject) dress.getJSONArray("medal_no").get(2); - ImgLoader.display(mContext, ry3.get("display_src").toString(), ry_ico3); - ry_ico3.setVisibility(View.VISIBLE); - } - - if (dress.getJSONArray("medal_no").size() >= 4) { - JSONObject ry4 = (JSONObject) dress.getJSONArray("medal_no").get(3); - ImgLoader.display(mContext, ry4.get("display_src").toString(), ry_ico4); - ry_ico4.setVisibility(View.VISIBLE); - } - - - } else { - ry_view.setVisibility(View.GONE); - } - - CommonAppConfig appConfig = CommonAppConfig.getInstance(); - - if (mUserBean.getGoodnum() != null && !mUserBean.getGoodnum().equals("")) { - good_nub_ico.setVisibility(View.VISIBLE); - mID.setText("ID:" + mUserBean.getGoodnum()); - } else { - good_nub_ico.setVisibility(View.GONE); - mID.setText(mUserBean.getLiangNameTip()); - } - mToName = obj.getString("user_nicename"); - mName.setText(mToName); - mCity.setText(obj.getString("city")); - ImgLoader.displayAvatar(mContext, obj.getString("avatar"), mAvatar); - mAvatarUrl = obj.getString("avatar"); - int levelAnchor = obj.getIntValue("level_anchor"); - int level = obj.getIntValue("level"); - mSign.setText(obj.getString("signature")); - LevelBean anchorLevelBean = appConfig.getAnchorLevel(obj.getIntValue("level_anchor")); - if (anchorLevelBean != null) { - ImgLoader.display(mContext, anchorLevelBean.getBgIcon(), mLevelAnchor); - } - LevelBean levelBean = appConfig.getLevel(obj.getIntValue("level")); - if (levelBean != null) { - ImgLoader.display(mContext, levelBean.getBgIcon(), mLevel); - } - mLevelAnchorText.setText(String.valueOf(levelAnchor)); - mLevelText.setText(String.valueOf(level)); - mSex.setImageResource(CommonIconUtil.getSexIcon(obj.getIntValue("sex"))); - mFollow.setText(new LiveTextRender().renderLiveUserDialogData(obj.getLongValue("follows"))); - mFans.setText(new LiveTextRender().renderLiveUserDialogData(obj.getLongValue("fans"))); - mConsume.setText(new LiveTextRender().renderLiveUserDialogData(obj.getLongValue("consumption"))); - mVotes.setText(new LiveTextRender().renderLiveUserDialogData(obj.getLongValue("votestotal"))); - mConsumeTip.setText(WordUtil.getString(R.string.live_user_send) + appConfig.getCoinName()); - mVotesTip.setText(WordUtil.getString(R.string.live_user_get) + appConfig.getVotesName()); - if (mType == TYPE_AUD_ANC) { - showImpress(obj.getString("label")); - } - mFollowing = obj.getIntValue("isattention") == 1; - if (mFollowText != null) { - mFollowText.setText(mFollowing ? WordUtil.getString(R.string.following) : WordUtil.getString(R.string.follow)); - } - if (mFollowImage != null) { - mFollowImage.setImageDrawable(mFollowing ? mFollowDrawable : mUnFollowDrawable); - } - mAction = obj.getIntValue("action"); - if (mAction == SETTING_ACTION_AUD) {//设置 普通观众点普通观众 或所有人点超管 - View btnReport = mRootView.findViewById(R.id.btn_report); - btnReport.setVisibility(View.VISIBLE); - btnReport.setOnClickListener(this); - } else if (mAction == SETTING_ACTION_ADM//设置 房间管理员点普通观众 - || mAction == SETTING_ACTION_SUP//设置 超管点主播 - || mAction == SETTING_ACTION_ANC_AUD//设置 主播点普通观众 - || mAction == SETTING_ACTION_ANC_ADM) {//设置 主播点房间管理员 - View btnSetting = mRootView.findViewById(R.id.btn_setting); - btnSetting.setVisibility(View.VISIBLE); - btnSetting.setOnClickListener(this); - } } - private void showImpress(String impressJson) { - List list = JSON.parseArray(impressJson, ImpressBean.class); - if (list.size() > 2) { - list = list.subList(0, 2); - } - LayoutInflater inflater = LayoutInflater.from(mContext); - for (int i = 0, size = list.size(); i < size; i++) { - MyTextView myTextView = (MyTextView) inflater.inflate(R.layout.view_impress_item_2, mImpressGroup, false); - ImpressBean bean = list.get(i); - bean.setCheck(1); - myTextView.setBean(bean); - mImpressGroup.addView(myTextView); - } - TextView textView = (TextView) inflater.inflate(R.layout.view_impress_item_add, mImpressGroup, false); - textView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - addImpress(); - } - }); - mImpressGroup.addView(textView); - } - - - /** - * 添加主播印象 - */ - private void addImpress() { - dismiss(); - ((LiveActivity) mContext).openAddImpressWindow(mLiveUid); - } @Override public void onClick(View v) { - int i = v.getId(); - if (i == R.id.btn_close) { - dismiss(); - } else if (i == R.id.btn_follow) { - setAttention(); - - } else if (i == R.id.btn_pri_msg) { - openChatRoomWindow(); - - } else if (i == R.id.btn_home_page) { - forwardHomePage(); - - } else if (i == R.id.btn_setting) { - setting(); - - } else if (i == R.id.btn_report) { - report(); - - } else if (i == R.id.avatar) { - forwardHomePage(); - } - } - - /** - * 打开私信聊天窗口 - */ - private void openChatRoomWindow() { - if (mUserBean != null) { - dismiss(); -// ToastUtil.show("私聊暫不可用"); -// if (!mToUid.equals(CommonAppConfig.getInstance().getUid())) { -// SystemMessageActivity.forward(mContext, "-1", mToUid, mToName, mAvatarUrl); -// } - - ((LiveActivity) mContext).openChatListWindow(); - } - } - - /** - * 关注 - */ - private void setAttention() { - CommonHttpUtil.setAttention(mToUid, mAttentionCallback); - } - - private CommonCallback mAttentionCallback = new CommonCallback() { - - @Override - public void callback(Integer isAttention) { - mFollowing = isAttention == 1; - if (mFollowText != null) { - mFollowText.setText(mFollowing ? R.string.following : R.string.follow); - } - if (mFollowImage != null) { - mFollowImage.setImageDrawable(mFollowing ? mFollowDrawable : mUnFollowDrawable); - } - 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); -// String url = HtmlConfig.PERSONAL + "?touid=" + mToUid + "&&isHomePage=1" + "&&fromType=0"; -// Constants.myUrl = url += "&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken(); - } - - /** - * 举报 - */ - private void report() { - LiveReportActivity.forward(mContext, mToUid); - } - - /** - * 设置 - *

- * 某个大神说,角色是权限的集合。。 - *

- * 理论上,角色的权限应该有服务端以数组或集合的形式返回,这样可以在后台动态配置某种角色的权限,而不是这样口头约定写死。。。 - * 然而,是服务端这样做的,我也很无奈。。。也许他们不知道如何做成动态配置的吧。。 - *

- * 我一直想通过不断重构把代码写的像艺术品,然而,最近发现,这完全是多此一举,自讨苦吃。。是我太天真了。。 - * 下面是我发现的一篇文章,说的非常好,也点醒了我。。如果你们发现当前代码写的太烂,不堪入目的话,请阅读下面的文章。 - *

- * https://www.jianshu.com/p/71521541cd25?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin_timeline&from=timeline - */ - private void setting() { - List list = new ArrayList<>(); - switch (mAction) { - case SETTING_ACTION_ADM://设置 房间管理员点普通观众 - list.add(R.string.live_setting_kick); -// list.add(R.string.live_setting_gap); - list.add(R.string.live_setting_gap_2); - break; - case SETTING_ACTION_SUP://设置 超管点主播 - list.add(R.string.live_setting_close_live); - list.add(R.string.live_setting_close_live_2); - list.add(R.string.live_setting_forbid_account); - break; - case SETTING_ACTION_ANC_AUD://设置 主播点普通观众 - list.add(R.string.live_setting_kick); -// list.add(R.string.live_setting_gap); - list.add(R.string.live_setting_gap_2); - list.add(R.string.live_setting_admin); - list.add(R.string.live_setting_admin_list); - break; - case SETTING_ACTION_ANC_ADM://设置 主播点房间管理员 - list.add(R.string.live_setting_kick); -// list.add(R.string.live_setting_gap); - list.add(R.string.live_setting_gap_2); - list.add(R.string.live_setting_admin_cancel); - list.add(R.string.live_setting_admin_list); - break; - } - - DialogUitl.showStringArrayDialog(mContext, list.toArray(new Integer[list.size()]), mArrayDialogCallback); - } - - private DialogUitl.StringArrayDialogCallback mArrayDialogCallback = new DialogUitl.StringArrayDialogCallback() { - @Override - public void onItemClick(String text, int tag) { - if (tag == R.string.live_setting_kick) { - kick(); - - } else if (tag == R.string.live_setting_gap) {//永久禁言->改成三天禁言 - setShutUp(); - - } else if (tag == R.string.live_setting_gap_2) {//本场禁言 - setShutUp2(); - - } else if (tag == R.string.live_setting_admin || tag == R.string.live_setting_admin_cancel) { - setAdmin(); - - } else if (tag == R.string.live_setting_admin_list) { - adminList(); - - } else if (tag == R.string.live_setting_close_live) { - closeLive(); - - } else if (tag == R.string.live_setting_forbid_account) { - forbidAccount(); - - } else if (tag == R.string.live_setting_close_live_2) {//禁用直播 - closeLive2(); - } - } - }; - - /** - * 查看管理员列表 - */ - private void adminList() { - dismiss(); - ((LiveActivity) mContext).openAdminListWindow(); - } - - /** - * 踢人 - */ - private void kick() { - LiveHttpUtil.kicking(mLiveUid, mToUid, new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0) { - ((LiveActivity) mContext).kickUser(mToUid, mToName); - } else { - ToastUtil.show(msg); - } - } - }); - } - - /** - * 永久禁言->改成三天禁言 - */ - private void setShutUp() { - LiveHttpUtil.setShutUp(mLiveUid, "0", 0, mToUid, new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0) { - ((LiveActivity) mContext).setShutUp(mToUid, mToName, 0); - } else { - ToastUtil.show(msg); - } - } - }); - } - - /** - * 本场禁言 - */ - private void setShutUp2() { - LiveHttpUtil.setShutUp(mLiveUid, mStream, 1, mToUid, new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0) { - ((LiveActivity) mContext).setShutUp(mToUid, mToName, 1); - } else { - ToastUtil.show(msg); - } - } - }); - } - - - /** - * 设置或取消管理员 - */ - private void setAdmin() { - LiveHttpUtil.setAdmin(mLiveUid, mToUid, new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0 && info.length > 0) { - int res = JSON.parseObject(info[0]).getIntValue("isadmin"); - if (res == 1) {//被设为管理员 - mAction = SETTING_ACTION_ANC_ADM; - } else {//被取消管理员 - mAction = SETTING_ACTION_ANC_AUD; - } - ((LiveActivity) mContext).sendSetAdminMessage(res, mToUid, mToName); - } - } - }); - } - - - /** - * 超管关闭直播间 - */ - private void closeLive() { - dismiss(); - LiveHttpUtil.superCloseRoom(mLiveUid, 0, mSuperCloseRoomCallback); - } - - /** - * 超管关闭直播间并禁止主播直播 - */ - private void closeLive2() { - dismiss(); - LiveHttpUtil.superCloseRoom(mLiveUid, 1, mSuperCloseRoomCallback); - } - - /** - * 超管关闭直播间并禁用主播账户 - */ - private void forbidAccount() { - dismiss(); - LiveHttpUtil.superCloseRoom(mLiveUid, 2, mSuperCloseRoomCallback); - } - - private HttpCallback mSuperCloseRoomCallback = new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0) { - ToastUtil.show(JSON.parseObject(info[0]).getString("msg")); - ((LiveActivity) mContext).superCloseRoom(); - } else { - ToastUtil.show(msg); - } - } - }; - - @Override - public void onDestroy() { - LiveHttpUtil.cancel(LiveHttpConsts.GET_LIVE_USER); - if (mAvatar != null) { - ImgLoader.clear(mContext, mAvatar); - mAvatar.setImageDrawable(null); - } - mAvatar = null; - super.onDestroy(); } } 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 28b94428a..d2fa2e27d 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -125,6 +125,7 @@ import com.yunbao.live.dialog.LiveFaceUnityDialogFragment; import com.yunbao.live.dialog.LiveFansMedalDialogFragment; import com.yunbao.live.dialog.LiveGameDialogFragment; import com.yunbao.live.dialog.LiveHDDialogFragment; +import com.yunbao.live.dialog.LiveOldUserDialogFragment; import com.yunbao.live.dialog.LiveUserDialogFragment; import com.yunbao.live.dialog.LiveWishListDialogFragment4Audience; import com.yunbao.live.event.LiveAudienceEvent; @@ -2410,7 +2411,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis */ public void showUserDialog(String toUid) { if (!TextUtils.isEmpty(mLiveUid) && !TextUtils.isEmpty(toUid)) { - LiveUserDialogFragment fragment = new LiveUserDialogFragment(); + LiveOldUserDialogFragment fragment = new LiveOldUserDialogFragment(); Bundle bundle = new Bundle(); bundle.putString(Constants.LIVE_UID, mLiveUid); bundle.putString(Constants.STREAM, mStream); diff --git a/live/src/main/res/drawable/background_ff63c1.xml b/live/src/main/res/drawable/background_ff63c1.xml new file mode 100644 index 000000000..6004c4a80 --- /dev/null +++ b/live/src/main/res/drawable/background_ff63c1.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/live/src/main/res/drawable/bg_user_card_fans.xml b/live/src/main/res/drawable/bg_user_card_fans.xml new file mode 100644 index 000000000..60ab9e052 --- /dev/null +++ b/live/src/main/res/drawable/bg_user_card_fans.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/bg_user_card_guard.xml b/live/src/main/res/drawable/bg_user_card_guard.xml new file mode 100644 index 000000000..bcfe90830 --- /dev/null +++ b/live/src/main/res/drawable/bg_user_card_guard.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/bg_user_card_honor.xml b/live/src/main/res/drawable/bg_user_card_honor.xml new file mode 100644 index 000000000..7ad95101b --- /dev/null +++ b/live/src/main/res/drawable/bg_user_card_honor.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/bg_user_card_lv.xml b/live/src/main/res/drawable/bg_user_card_lv.xml new file mode 100644 index 000000000..3190220a6 --- /dev/null +++ b/live/src/main/res/drawable/bg_user_card_lv.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/dialog_live_user_bottom_1.xml b/live/src/main/res/layout/dialog_live_user_bottom_1.xml index 94900faef..f3a185349 100644 --- a/live/src/main/res/layout/dialog_live_user_bottom_1.xml +++ b/live/src/main/res/layout/dialog_live_user_bottom_1.xml @@ -1,56 +1,19 @@ + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + android:background="#eeeeee" /> + android:orientation="horizontal"> - - - - - - - - - - - - + android:orientation="horizontal"> + android:src="@mipmap/icon_user_home_msg" /> + android:textSize="13sp" /> @@ -90,22 +50,20 @@ android:id="@+id/btn_home_page" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_weight="1" - > + android:layout_weight="1"> + android:orientation="horizontal"> + android:visibility="gone" /> + android:textSize="16sp" + android:textStyle="bold" /> + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/dialog_new_live_user.xml b/live/src/main/res/layout/dialog_new_live_user.xml new file mode 100644 index 000000000..4e03956bc --- /dev/null +++ b/live/src/main/res/layout/dialog_new_live_user.xml @@ -0,0 +1,432 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/mipmap-mdpi/icon_user_card_follow.png b/live/src/main/res/mipmap-mdpi/icon_user_card_follow.png new file mode 100644 index 0000000000000000000000000000000000000000..39b6ca9f3d113a45be57b765511fdb8d22133cc6 GIT binary patch literal 1584 zcmV-02G9A4P)Px)>PbXFRA}DSS!-+*RTTaZ6cOKoiEjloN)!`cA;wpXiZQ__H6#Y5-I>`|tb(A` zL?dF1{*oB}h(=?g2?8;VDQYw^Q4AOxic!&6u?0g#iWU2y-QC&UUcWOtTkhN)w%ysZ z874W|otZo5p6{M>&+7uCTxvCr8>q+Gu7hi`HlEMeXm%~MWi1@!{eJ%LbZubUf93amh`1>*ENoE{erIzD#RC^6sIG+@)ri^Ta|`cVc^`$(Ai;b|ja)uv!POE>r;6)2VK#(e##6VAJ^bI! z-`_J9{^YZNNx6`f>~+JRXUM<1$S0HV`0VBX9+F!!p4!hPai6Ne3FU=fh3OppvRkU= z6en$=eXhtlxG81f5=C2AkK!zq#HD0@51+5*xbMRR)+kLrpOaQ{o?B@i7khkY@98?s zB9FTW+Wr_o@_;yDhQWcY^`=5xT1_JOSAHz}@C#rwy??P6a1KJW3du}#^y ztWrMw_FB@fbPmIsTzeH4Dk!|THw)X1Rr{`@&10-0g}$CZUZttLK#w#hDj(kobOdCx z@gW_=R2^xpt}fY>wC%aox?y!2ric(#@!Q~XhF<`4-RTBtF^?&VsJ@xrfgjrfHqG~M!TgNvSAK-oobsBHvsAp zoJ#pNYG&k8)*C@28v_Bu#>0r|#W=B&a%MFxJOw}ajQDCv+Tsd;i~E4&Nh1IpyoZ2Y zC9p?D@cR>{0Sh-%&Th?OK7)~D?Ph475mx{bTWBTwH2_=XVYddLlK?J^tp*A~ty|m3 zEuw*+v^~&8nip39l1sUT47a%8-X3Vy_COy~+nP8EF9{%JZF2QA-@y~eJ8(2ad1~Ob z9S)9<9RQ}?UbUyC=3MX_z!kreH~l3ME^g*y;ficvyxtA(y^hwk&ajQSu(HV>#|3)XS?n5<-i#U}=Dsk3N$c<^;dQFb&U8ody;O^`FMGp+*ch|Hd7SVIV**zqV>&|X z&r> zFO>*p#Qhbg5*4a^D)+@A|AbKoF+|!dcB}6nIU_JmZ+59?gXsyAxn+JAI!7L_jDPye z70T9Q0Vn*;FemA;w(>}55pye>06L9*lb4oem>Z_Yo1^5Ibt3z-{u%O?F$O28{MPFl zibvTe9?HSmQI2K%r6J2zJ~@_+C$$Na#bkVw>h(QU%0E8cE@x*r7B0~S?fyZU){~O7 i(YzLncRg{;UjG9P1}2=du&j>&0000 response) { + super.onError(response); + String message = response.message(); + System.out.println(">>>>>"+message); + } }); } diff --git a/main/src/main/java/com/yunbao/main/activity/MainActivity.java b/main/src/main/java/com/yunbao/main/activity/MainActivity.java index 527df2269..4ac27b9b8 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainActivity.java @@ -489,7 +489,7 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene public void run() { if (IMLoginManager.get(mContext).isHint()) { HintDialog fragment = new HintDialog(); - fragment.show(((FragmentActivity) mContext).getSupportFragmentManager(), "HintDialog"); + fragment.show(((FragmentActivity) MainActivity.this).getSupportFragmentManager(), "HintDialog"); fragment.setListener(new HintDialog.HintListener() { @Override public void requestPermission() {