update 联系方式

update 女神说
This commit is contained in:
2023-03-29 13:32:15 +08:00
parent 3a980d22fd
commit c78bb79633
54 changed files with 1357 additions and 62 deletions

View File

@@ -68,6 +68,7 @@ import com.yunbao.live.dialog.LiveNewGuardListDialogFragment;
import com.yunbao.live.dialog.LiveRedPackListDialogFragment;
import com.yunbao.live.dialog.LiveRedPackSendDialogFragment;
import com.yunbao.live.dialog.LiveShareDialogFragment;
import com.yunbao.live.dialog.LiveUserAnchorMailBoxPopDialog;
import com.yunbao.live.dialog.LiveUserDialogFragment;
import com.yunbao.live.dialog.LiveUserMoreDialogFragment;
import com.yunbao.live.http.LiveHttpConsts;
@@ -895,8 +896,9 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
* 打开私信列表窗口
*/
public void openChatListWindow() {
Intent intent = new Intent(mContext, PDLIiveChatActivity.class);
mContext.startActivity(intent);
// Intent intent = new Intent(mContext, PDLIiveChatActivity.class);
// mContext.startActivity(intent);
new LiveUserAnchorMailBoxPopDialog(mContext).showDialog();
}
@@ -1288,7 +1290,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
@Override
public void onError(String error) {
Log.e("LiveUserMoreDialog", error);
ToastUtil.show( R.string.net_error);
ToastUtil.show(R.string.net_error);
}
});
} else {

View File

@@ -1277,6 +1277,9 @@ public class LiveAudienceActivity extends LiveActivity {
manager.endDRGif();
}
break;
case LIVE_HIDE_MSG_RED:
showMsgRed(-1);
break;
}
@@ -1412,6 +1415,21 @@ public class LiveAudienceActivity extends LiveActivity {
});
}
@SuppressLint("SetTextI18n")
public void showMsgRed(int num) {
if (manager == null) {
return;
}
if (num == -1) {
manager.mLiveAudienceViewHolder.mRedPoint.setVisibility(View.GONE);
return;
} else if (num > 0) {
manager.mLiveAudienceViewHolder.mRedPoint.setText(num + "");
}
manager.mLiveAudienceViewHolder.mRedPoint.setVisibility(View.VISIBLE);
}
public void closeRoom() {
runOnUiThread(new Runnable() {
@Override

View File

@@ -22,6 +22,7 @@ import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.DialogUitl;
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.dialog.GiftPopDialog;
import com.yunbao.live.dialog.LiveAnchorEditCallMeEditAppDialog;
@@ -38,12 +39,9 @@ public class LiveAnchorEditCallMeAdapter extends RecyclerView.Adapter<LiveAnchor
private Context mContext;
private OnItemClickListener<TmpData> onItemClickListener;
private List<TmpData> list = new ArrayList<>();
private String mLiveUid = "98275";
private View mParent;
public LiveAnchorEditCallMeAdapter(Context mContext, View parent) {
public LiveAnchorEditCallMeAdapter(Context mContext) {
this.mContext = mContext;
this.mParent = parent;
}
public void setList(List<TmpData> list) {
@@ -179,7 +177,7 @@ public class LiveAnchorEditCallMeAdapter extends RecyclerView.Adapter<LiveAnchor
}
})
.setShowNumber(false)
.setTitle("選擇禮物")
.setTitle(WordUtil.getString(R.string.live_anchor_edit_call_me_select_gift))
.showDialog()
;
}
@@ -199,7 +197,7 @@ public class LiveAnchorEditCallMeAdapter extends RecyclerView.Adapter<LiveAnchor
@Override
public void onItemClick(String bean, int position) {
if (StringUtil.isEmpty(bean)) {
letter.setText("未填写");
letter.setText(WordUtil.getString(R.string.live_anchor_edit_call_me_not_filled));
letter.setTextColor(Color.parseColor("#80FFFFFF"));
} else {
letter.setText(bean);
@@ -239,7 +237,7 @@ public class LiveAnchorEditCallMeAdapter extends RecyclerView.Adapter<LiveAnchor
super.setData(data, position);
if (StringUtil.isEmpty(data.getValue())) {
contact.setTag(null);
contact.setText("未填写");
contact.setText(WordUtil.getString(R.string.live_anchor_edit_call_me_not_filled));
contact.setTextColor(Color.parseColor("#80FFFFFF"));
} else {
contact.setTag(data.getValue());
@@ -254,7 +252,7 @@ public class LiveAnchorEditCallMeAdapter extends RecyclerView.Adapter<LiveAnchor
status.setTag(data.getStatus());
status.setOnClickListener(v -> {
if (StringUtil.isEmpty((String) contact.getTag())) {
ToastUtil.show("请填写联系方式后再启用");
ToastUtil.show(WordUtil.getString(R.string.live_anchor_edit_call_me_not_filled_toash));
return;
}
int tag = (int) v.getTag();
@@ -275,7 +273,7 @@ public class LiveAnchorEditCallMeAdapter extends RecyclerView.Adapter<LiveAnchor
public void onItemClick(String bean, int position) {
if (StringUtil.isEmpty(bean)) {
contact.setTag(null);
contact.setText("未填写");
contact.setText(WordUtil.getString(R.string.live_anchor_edit_call_me_not_filled));
contact.setTextColor(Color.parseColor("#80FFFFFF"));
} else {
contact.setTag(bean);

View File

@@ -0,0 +1,136 @@
package com.yunbao.live.adapter;
import android.app.Dialog;
import android.content.Context;
import android.os.Build;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.LiveUserMailBoxModel;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.R;
import com.yunbao.live.dialog.LiveUserAnchorMailBoxWebInfoPopDialog;
import java.util.ArrayList;
import java.util.List;
public class LiveUserAnchorMailBoxAdapter extends RecyclerView.Adapter<LiveUserAnchorMailBoxAdapter.MailBoxViewHolder> {
private Context mContext;
private List<LiveUserMailBoxModel> list;
OnItemClickListener<LiveUserMailBoxModel> onItemClickListener;
public LiveUserAnchorMailBoxAdapter(Context mContext) {
this.mContext = mContext;
list = new ArrayList<>();
}
public void setList(List<LiveUserMailBoxModel> list) {
this.list = list;
notifyDataSetChanged();
}
public List<LiveUserMailBoxModel> getList() {
return list;
}
public void setOnItemClickListener(OnItemClickListener<LiveUserMailBoxModel> onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
@NonNull
@Override
public MailBoxViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new MailBoxViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_live_user_mailbox, parent, false));
}
@Override
public void onBindViewHolder(@NonNull MailBoxViewHolder holder, int position) {
holder.setData(list.get(position), position);
}
@Override
public int getItemCount() {
return list.size();
}
public class MailBoxViewHolder extends RecyclerView.ViewHolder {
TextView topText;
TextView userName;
TextView tipText;
View del;
public MailBoxViewHolder(@NonNull View itemView) {
super(itemView);
topText = itemView.findViewById(R.id.top_text);
userName = itemView.findViewById(R.id.user_name);
tipText = itemView.findViewById(R.id.tip);
del = itemView.findViewById(R.id.del);
}
void setData(LiveUserMailBoxModel box, int position) {
userName.setText(box.getUserName());
topText.setText(String.format(WordUtil.getString(R.string.live_user_mailbox_top_text), box.getAnchorName()));
tipText.setText(String.format(WordUtil.getString(R.string.live_user_mailbox_tip_text), box.getAnchorName()));
del.setOnClickListener(v -> {
new DialogUitl.Builder(mContext)
.setTitle(WordUtil.getString(R.string.live_user_letter_dialog_title))
.setContent(WordUtil.getString(R.string.live_user_letter_dialog_content))
.setConfrimString(WordUtil.getString(R.string.live_user_letter_dialog_yes))
.setCancelString(WordUtil.getString(R.string.live_user_letter_dialog_no))
.setView(R.layout.dialog_live_random_pk)
.setCancelable(true)
.setClickCallback((dialog, content) -> LiveNetManager.get(mContext).delContactInfo(box.getId(), new HttpCallback<String>() {
@Override
public void onSuccess(String data) {
Log.i("刪除信件", "onSuccess:刪除成功 ");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
list.removeIf(it -> it.getId() == box.getId());
}
System.err.println("-----> list size = " + list.size());
notifyDataSetChanged();
if (onItemClickListener != null) {
onItemClickListener.onItemClick(box, position);
}
}
@Override
public void onError(String error) {
Log.i("刪除信件", "onError: " + error);
}
}))
.build().show();
});
itemView.setOnClickListener(new OnClick(box));
userName.setOnClickListener(new OnClick(box));
topText.setOnClickListener(new OnClick(box));
tipText.setOnClickListener(new OnClick(box));
}
private class OnClick implements View.OnClickListener {
LiveUserMailBoxModel box;
public OnClick(LiveUserMailBoxModel box) {
this.box = box;
}
@Override
public void onClick(View v) {
new LiveUserAnchorMailBoxWebInfoPopDialog(mContext, box.getAnchorName(), box.getUrl()).showDialog();
}
}
}
}

View File

@@ -8,13 +8,14 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.LiveAnchorCallMeModel;
import com.yunbao.common.dialog.AbsDialogPopupWindow;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.R;
import com.yunbao.live.adapter.LiveAnchorEditCallMeAdapter;
@@ -22,11 +23,12 @@ import java.util.ArrayList;
import java.util.List;
public class LiveAnchorEditCallMeDialog extends AbsDialogPopupWindow {
String mLiveUid = "98275";
String mLiveUid = "";
RecyclerView list;
LiveAnchorCallMeModel callMeModel;
LiveAnchorEditCallMeAdapter adapter;
ImageView status;
OnItemClickListener<LiveAnchorCallMeModel> onItemClickListener;
public LiveAnchorEditCallMeDialog(@NonNull Context context) {
super(context);
@@ -38,6 +40,11 @@ public class LiveAnchorEditCallMeDialog extends AbsDialogPopupWindow {
builder.autoFocusEditText(false);
}
public LiveAnchorEditCallMeDialog setOnItemClickListener(OnItemClickListener<LiveAnchorCallMeModel> onItemClickListener) {
this.onItemClickListener = onItemClickListener;
return this;
}
@Override
public int bindLayoutId() {
return R.layout.dialog_anchor_call_me;
@@ -55,6 +62,15 @@ public class LiveAnchorEditCallMeDialog extends AbsDialogPopupWindow {
.getContactInfo(mLiveUid, new HttpCallback<LiveAnchorCallMeModel>() {
@Override
public void onSuccess(LiveAnchorCallMeModel data) {
setData(data);
}
@Override
public void onError(String error) {
setData(new LiveAnchorCallMeModel());
}
void setData(LiveAnchorCallMeModel data) {
callMeModel = data;
List<LiveAnchorEditCallMeAdapter.TmpData> list = new ArrayList<>();
list.add(new LiveAnchorEditCallMeAdapter.TmpData(data.getGiftImage(), 1, LiveAnchorEditCallMeAdapter.TYPE_GIFT));
@@ -63,11 +79,10 @@ public class LiveAnchorEditCallMeDialog extends AbsDialogPopupWindow {
list.add(new LiveAnchorEditCallMeAdapter.TmpData(data.getLine().getNumber(), data.getLine().getIsShow(), LiveAnchorEditCallMeAdapter.TYPE_APP_LINE));
list.add(new LiveAnchorEditCallMeAdapter.TmpData(data.getWhatsApp().getNumber(), data.getWhatsApp().getIsShow(), LiveAnchorEditCallMeAdapter.TYPE_APP_WHATSAPP));
adapter.setList(list);
}
@Override
public void onError(String error) {
if (callMeModel.getIsShow() == 1) {
status.setImageResource(R.mipmap.special_icon_on);
status.setTag(1);
}
}
});
@@ -77,7 +92,7 @@ public class LiveAnchorEditCallMeDialog extends AbsDialogPopupWindow {
list = findViewById(R.id.anchor_call_list);
status = findViewById(R.id.say_switch);
findViewById(R.id.btn_close).setOnClickListener(v -> dismiss());
adapter = new LiveAnchorEditCallMeAdapter(getContext(), getRootView());
adapter = new LiveAnchorEditCallMeAdapter(getContext());
adapter.setOnItemClickListener(new OnItemClickListener<LiveAnchorEditCallMeAdapter.TmpData>() {
@Override
public void onItemClick(LiveAnchorEditCallMeAdapter.TmpData bean, int position) {
@@ -124,7 +139,7 @@ public class LiveAnchorEditCallMeDialog extends AbsDialogPopupWindow {
.setAnchorCallMe(mLiveUid, callMeModel, new HttpCallback<String>() {
@Override
public void onSuccess(String data) {
ToastUtil.show("成功");
ToastUtil.show(WordUtil.isZh() ? "成功" : "success");
}
@Override
@@ -132,5 +147,14 @@ public class LiveAnchorEditCallMeDialog extends AbsDialogPopupWindow {
ToastUtil.show(error);
}
});
IMLoginManager.get(getContext()).setAnchorCallMeStatus(callMeModel.getIsShow());
if (onItemClickListener != null) {
onItemClickListener.onItemClick(callMeModel, 0);
}
}
public LiveAnchorEditCallMeDialog setLiveUid(String liveUid) {
this.mLiveUid = liveUid;
return this;
}
}

View File

@@ -23,7 +23,9 @@ import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.R;
import com.yunbao.live.adapter.LiveAnchorSayItemsAdapter;
@@ -41,6 +43,8 @@ public class LiveAnchorSayPopDialog extends AbsDialogPopupWindow {
EditText sayEdit;
String mLiveUid;
String url;
LiveAnchorSayModel sayModel;
OnItemClickListener<LiveAnchorSayModel> onItemClickListener;
public LiveAnchorSayPopDialog(@NonNull Context context) {
super(context);
@@ -51,6 +55,11 @@ public class LiveAnchorSayPopDialog extends AbsDialogPopupWindow {
return this;
}
public LiveAnchorSayPopDialog setOnItemClickListener(OnItemClickListener<LiveAnchorSayModel> onItemClickListener) {
this.onItemClickListener = onItemClickListener;
return this;
}
@Override
public void buildDialog(XPopup.Builder builder) {
builder.autoFocusEditText(false);
@@ -95,10 +104,11 @@ public class LiveAnchorSayPopDialog extends AbsDialogPopupWindow {
if (saySwitch.getTag() == null) {
saySwitch.setTag("");
saySwitch.setImageResource(R.mipmap.special_icon_on);
sayModel.getLivePreview().setIsShow(1);
} else {
saySwitch.setTag(null);
saySwitch.setImageResource(R.mipmap.special_icon_off);
sayModel.getLivePreview().setIsShow(0);
}
});
@@ -110,7 +120,7 @@ public class LiveAnchorSayPopDialog extends AbsDialogPopupWindow {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
sayModel.getLivePreview().setContent(s.toString());
StringBuilder sb = new StringBuilder();
int n = (s.length() + 3) / 4;
for (int i = 0; i < n; i++) {
@@ -142,13 +152,14 @@ public class LiveAnchorSayPopDialog extends AbsDialogPopupWindow {
LiveNetManager.get(getContext())
.setLivePreviewInfo(
mLiveUid,
saySwitch.getTag() == null ? 0 : 1,
sayModel.getLivePreview().getIsShow(),
edit,
url,
new HttpCallback<HttpCallbackModel>() {
new HttpCallback<String>() {
@Override
public void onSuccess(HttpCallbackModel data) {
public void onSuccess(String data) {
Log.i("女神说", "onSuccess: " + data);
ToastUtil.show(WordUtil.isZh() ? "成功" : "success");
}
@Override
@@ -157,7 +168,10 @@ public class LiveAnchorSayPopDialog extends AbsDialogPopupWindow {
}
}
);
if (onItemClickListener != null) {
onItemClickListener.onItemClick(sayModel, 0);
}
IMLoginManager.get(getContext()).setAnchorSayStatus(sayModel.getLivePreview().getIsShow());
}
private void initData() {
@@ -165,6 +179,7 @@ public class LiveAnchorSayPopDialog extends AbsDialogPopupWindow {
.getLivePreviewInfo(mLiveUid, new HttpCallback<LiveAnchorSayModel>() {
@Override
public void onSuccess(LiveAnchorSayModel data) {
sayModel = data;
List<String> urls = new ArrayList<>(data.getStyle());
adapter.setList(urls);
LiveAnchorSayModel.LivePreview preview = data.getLivePreview();

View File

@@ -4,6 +4,7 @@ import static com.yunbao.common.CommonAppConfig.isGetNewWrap;
import static com.yunbao.common.utils.RouteUtil.PATH_COIN;
import static com.yunbao.live.views.LiveRoomViewHolder.bean1;
import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
@@ -25,7 +26,11 @@ import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
@@ -124,6 +129,9 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
private TextView mVipGoldDesc;
private TextView mGiftPackage;
private boolean isPk;
private int isContactGift = 0;
DialogInterface.OnDismissListener onDismissListener;
DialogInterface.OnShowListener onShowListener;
@Override
@@ -155,6 +163,22 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
mLiveGuardInfo = liveGuardInfo;
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
if (onDismissListener != null) {
onDismissListener.onDismiss(dialog);
}
}
@Override
public void onStart() {
super.onStart();
if (onShowListener != null) {
onShowListener.onShow(getDialog());
}
}
public void setPkStatus(boolean pk) {
isPk = pk;
}
@@ -208,7 +232,7 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
@Override
public void onPageSelected(int position) {
if (mRadioGroup != null && mRadioGroup.getChildAt(position)!=null) {
if (mRadioGroup != null && mRadioGroup.getChildAt(position) != null) {
((RadioButton) mRadioGroup.getChildAt(position)).setChecked(true);
}
}
@@ -278,6 +302,7 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
mStream = bundle.getString(Constants.LIVE_STREAM);
mWishGiftId = bundle.getString(Constants.LIVE_WISH_GIFTID);
by = bundle.getString("by");
isContactGift = bundle.getBoolean("isContactGift", false) ? 1 : 0;
}
loadGiftListData();
loadUserVip();
@@ -665,9 +690,9 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
}
SendGiftCallback callback = new SendGiftCallback(mLiveGiftBean);
if (by != null) {
LiveHttpUtil.sendGift("1", mLiveUid, mStream, mLiveGiftBean.getId(), mCount, callback);
LiveHttpUtil.sendGift("1", mLiveUid, mStream, mLiveGiftBean.getId(), mCount, isContactGift, callback);
} else {
LiveHttpUtil.sendGift("0", mLiveUid, mStream, mLiveGiftBean.getId(), mCount, callback);
LiveHttpUtil.sendGift("0", mLiveUid, mStream, mLiveGiftBean.getId(), mCount, isContactGift, callback);
}
}
}
@@ -722,6 +747,14 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
mLiveGiftPagerAdapter.refreshId(status.getId());
}
public void setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
}
public void setOnShowListener(DialogInterface.OnShowListener onShowListener) {
this.onShowListener = onShowListener;
}
private class SendGiftCallback extends HttpCallback {
private LiveGiftBean mGiftBean;

View File

@@ -116,6 +116,8 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements
findViewById(R.id.anchor_task).setOnClickListener(this);
findViewById(R.id.live_tool_robot).setOnClickListener(this);
findViewById(R.id.live_tool_call_me).setOnClickListener(this);
findViewById(R.id.live_tool_anchor_say).setOnClickListener(this);
if (leave == 0) {
((ImageView) mLeaveView.findViewById(R.id.live_tool_leave_img)).setImageResource(R.mipmap.icon_leave);
@@ -190,6 +192,10 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements
taskDialog.updateLiveTimer(mAnchorLiveTime);
taskDialog.showDialog();
} else if (id == R.id.live_tool_call_me) {
new LiveAnchorEditCallMeDialog(mContext).setLiveUid(liveUid).showDialog();
} else if (id == R.id.live_tool_anchor_say) {
new LiveAnchorSayPopDialog(mContext).setLiveUid(liveUid).showDialog();
}
}

View File

@@ -0,0 +1,106 @@
package com.yunbao.live.dialog;
import android.content.Context;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.bean.LiveUserMailBoxModel;
import com.yunbao.common.dialog.AbsDialogPopupWindow;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.Bus;
import com.yunbao.live.R;
import com.yunbao.live.adapter.LiveUserAnchorMailBoxAdapter;
import com.yunbao.live.event.LiveAudienceEvent;
import java.util.ArrayList;
import java.util.List;
/**
* 用户获取主播联系方式信箱弹框
*/
public class LiveUserAnchorMailBoxPopDialog extends AbsDialogPopupWindow {
private RecyclerView list;
private LiveUserAnchorMailBoxAdapter adapter;
private View empty;
public LiveUserAnchorMailBoxPopDialog(@NonNull Context context) {
super(context);
}
@Override
public void buildDialog(XPopup.Builder builder) {
}
@Override
public int bindLayoutId() {
return R.layout.dialog_live_user_mailbox;
}
@Override
protected void onCreate() {
super.onCreate();
adapter = new LiveUserAnchorMailBoxAdapter(getContext());
list = findViewById(R.id.mailbox);
empty = findViewById(R.id.ic_empty);
list.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
list.setAdapter(adapter);
adapter.setOnItemClickListener((bean, position) -> {
if (adapter.getItemCount() == 0) {
empty.setVisibility(VISIBLE);
list.setVisibility(GONE);
}
});
initData();
}
String TAG = "信箱";
void initData() {
LiveNetManager.get(getContext())
.getContactMsg(new HttpCallback<List<LiveUserMailBoxModel>>() {
@Override
public void onSuccess(List<LiveUserMailBoxModel> data) {
Log.i(TAG, "onSuccess: " + data.size());
for (LiveUserMailBoxModel datum : data) {
Log.i(TAG, "for data : " + datum);
}
setData(data);
}
@Override
public void onError(String error) {
Log.e(TAG, "onError: " + error);
setData(new ArrayList<>());
}
void setData(List<LiveUserMailBoxModel> data) {
if (data.isEmpty()) {
empty.setVisibility(VISIBLE);
list.setVisibility(GONE);
return;
}
adapter.setList(data);
}
});
}
@Override
protected void onDismiss() {
super.onDismiss();
for (LiveUserMailBoxModel model : adapter.getList()) {
if(model.getIsRead()==0){
return;
}
}
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.LIVE_HIDE_MSG_RED));
}
}

View File

@@ -0,0 +1,81 @@
package com.yunbao.live.dialog;
import android.content.Context;
import android.os.Build;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.dialog.AbsDialogPopupWindow;
import com.yunbao.common.utils.JavascriptInterfaceUtils;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.R;
public class LiveUserAnchorMailBoxWebInfoPopDialog extends AbsDialogPopupWindow {
WebView mWebView;
TextView textView;
String anchorName;
String url;
public LiveUserAnchorMailBoxWebInfoPopDialog(@NonNull Context context) {
super(context);
}
public LiveUserAnchorMailBoxWebInfoPopDialog(@NonNull Context context, String anchorName, String url) {
super(context);
this.anchorName = anchorName;
this.url = url;
}
@Override
public void buildDialog(XPopup.Builder builder) {
}
@Override
public int bindLayoutId() {
return R.layout.dialog_live_user_mailbox_web;
}
@Override
protected void onCreate() {
super.onCreate();
mWebView=findViewById(R.id.webView);
textView=findViewById(R.id.title);
textView.setText(String.format(WordUtil.getString(R.string.live_user_mailbox_web_title),anchorName));
mWebView.addJavascriptInterface(JavascriptInterfaceUtils.getInstance().setmContext(CommonAppContext.getTopActivity(),mWebView),"androidObject");
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
String appCachePath = getContext().getCacheDir().getAbsolutePath();
mWebView.getSettings().setAppCachePath(appCachePath);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); // 是否允许JS打开新窗口
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
L.e("H5-------->" + url);
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// view.loadUrl("javascript:window.androidObject.setHeight(document.body.clientHeight,document.body.clientWidth)");
}
});
mWebView.loadUrl(url);
}
}

View File

@@ -299,7 +299,8 @@ public class LiveAudienceEvent extends BaseModel {
UPDATA_ROBOT(53, "更新机器人消息"),
LIVE_VIDEO(54, "画质选择"),
LUCKY_100_CHECK(55, "幸运百分百"),
LIVE_END(56, "主播下播");
LIVE_END(56, "主播下播"),
LIVE_HIDE_MSG_RED(57,"隐藏红点");
private int type;
private String name;

View File

@@ -606,12 +606,22 @@ public class LiveHttpUtil {
* 观众给主播送礼物
*/
public static void sendGift(String by, String liveUid, String stream, int giftId, String giftCount, HttpCallback callback) {
sendGift(by, liveUid, stream, giftId, giftCount, 0, callback);
}
/**
* 观众给主播送礼物
* @param isContactGift 是否为联系方式礼物
*/
public static void sendGift(String by, String liveUid, String stream, int giftId, String giftCount, int isContactGift, HttpCallback callback) {
HttpClient.getInstance().get("Live.sendGift", LiveHttpConsts.SEND_GIFT)
.params("liveuid", liveUid)
.params("stream", stream)
.params("giftid", giftId)
.params("isContactGift", isContactGift)
.params("giftcount", giftCount)
.params("isprank", by)
.params("appVersion", CommonAppConfig.getInstance().getVersion())
.execute(callback);
}

View File

@@ -17,7 +17,7 @@ import org.greenrobot.eventbus.EventBus;
public abstract class AbsLiveViewHolder extends AbsViewHolder implements View.OnClickListener {
private TextView mRedPoint;
public TextView mRedPoint;
public AbsLiveViewHolder(Context context, ViewGroup parentView) {
super(context, parentView);

View File

@@ -12,7 +12,11 @@ public class Banner4CustomViewHolder implements BannerViewHolder<BannerBean> {
@Override
public View createView(Context context, int position, BannerBean data) {
ImageView icon=new ImageView(context);
ImgLoader.display(context,data.getImageUrl(),icon);
if(data.getIconRes()!=0){
ImgLoader.display(context,data.getIconRes(),icon);
}else {
ImgLoader.display(context, data.getImageUrl(), icon);
}
return icon;
}
}

View File

@@ -27,6 +27,8 @@ import com.lxj.xpopup.interfaces.XPopupCallback;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.LiveAnchorCallMeModel;
import com.yunbao.common.bean.LiveAnchorSayModel;
import com.yunbao.common.bean.LiveClassBean;
import com.yunbao.common.bean.LiveRoomTypeBean;
import com.yunbao.common.bean.UserBean;
@@ -35,6 +37,7 @@ import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.interfaces.CommonCallback;
import com.yunbao.common.interfaces.ImageResultCallback;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DialogUitl;
@@ -53,6 +56,7 @@ import com.yunbao.faceunity.FaceManager;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
import com.yunbao.live.dialog.LiveAnchorEditCallMeDialog;
import com.yunbao.live.dialog.LiveAnchorSayPopDialog;
import com.yunbao.live.dialog.LiveFaceUnityDialogFragment;
import com.yunbao.live.dialog.LiveNewRoomClassDialogFragment;
@@ -198,6 +202,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
findViewById(R.id.btn_horizontally).setOnClickListener(this);
findViewById(R.id.anchor_agreement_layout).setOnClickListener(this);
findViewById(R.id.btn_live_anchor_say).setOnClickListener(this);
findViewById(R.id.btn_live_anchor_call_me).setOnClickListener(this);
if (manager != null) {
manager.setFaceStatusChanged(new FaceManager.FaceStatusChanged() {
@@ -392,6 +397,8 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
}
// startLive();
liveOpenCustomPopup = new LiveOpenCustomPopup(mContext, IMLoginManager.get(mContext).getSelectClarity(), classBean, liveRoomTypeBean)
.setSayStatus(IMLoginManager.get(mContext).getAnchorSayStatus())
.setCallMeStatus(IMLoginManager.get(mContext).getAnchorCallStatus())
.setCallBack(new LiveOpenCustomPopup.LiveOpenCallBack() {
@Override
@@ -540,6 +547,16 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
//点击心愿单
openWishListWindow();
}
@Override
public void openAnchorSay() {
openAnchorSayDialog();
}
@Override
public void openCallMe() {
openAnchorCallMeDialog();
}
});
new XPopup.Builder(mContext)
.asCustom(liveOpenCustomPopup)
@@ -569,7 +586,9 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
.append(model.getToken());
RouteUtil.forwardLiveZhuangBanActivity(url.toString(), false);
} else if (i == R.id.btn_live_anchor_say) {
new LiveAnchorSayPopDialog(mContext).setLiveUid(mLiveUid).showDialog();
openAnchorSayDialog();
} else if (i == R.id.btn_live_anchor_call_me) {
openAnchorCallMeDialog();
}
}
@@ -601,6 +620,28 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
}
}
public void openAnchorSayDialog() {
new LiveAnchorSayPopDialog(mContext).setLiveUid(mLiveUid).setOnItemClickListener(new OnItemClickListener<LiveAnchorSayModel>() {
@Override
public void onItemClick(LiveAnchorSayModel bean, int position) {
if (liveOpenCustomPopup != null) {
liveOpenCustomPopup.setSayStatus(bean.getLivePreview().getIsShow() == 1);
}
}
}).showDialog();
}
public void openAnchorCallMeDialog() {
new LiveAnchorEditCallMeDialog(mContext).setLiveUid(mLiveUid).setOnItemClickListener(new OnItemClickListener<LiveAnchorCallMeModel>() {
@Override
public void onItemClick(LiveAnchorCallMeModel bean, int position) {
if (liveOpenCustomPopup != null) {
liveOpenCustomPopup.setCallMeStatus(bean.getIsShow() == 1);
}
}
}).showDialog();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void updateStart(LiveAudienceEvent event) {
if (event.getType() == WISH_LIST_UPDATE) {

View File

@@ -6,6 +6,7 @@ import static com.yunbao.live.views.LivePushRyViewHolder.btn_close;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Outline;
import android.os.Bundle;
import android.os.CountDownTimer;
@@ -68,11 +69,13 @@ import com.yunbao.common.bean.HourRank;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.LevelBean;
import com.yunbao.common.bean.LinkMicUserBean;
import com.yunbao.common.bean.LiveAnchorCallMeModel;
import com.yunbao.common.bean.LiveAnchorSayModel;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.bean.LiveGiftBean;
import com.yunbao.common.bean.LiveRoomActivityBanner;
import com.yunbao.common.bean.LiveUserGiftBean;
import com.yunbao.common.bean.LiveUserMailBoxModel;
import com.yunbao.common.bean.MsgModel;
import com.yunbao.common.bean.NewPeopleTaskModel;
import com.yunbao.common.bean.PkRankBean;
@@ -137,6 +140,7 @@ import com.yunbao.live.custom.TopGradual;
import com.yunbao.live.dialog.LiveFaceUnityDialogFragment;
import com.yunbao.live.dialog.LiveFansMedalDialogFragment;
import com.yunbao.live.dialog.LiveGameDialogFragment;
import com.yunbao.live.dialog.LiveGiftDialogFragment;
import com.yunbao.live.dialog.LiveHDDialogFragment;
import com.yunbao.live.dialog.LiveUserDialogFragment;
import com.yunbao.live.dialog.LiveWishListDialogFragment4Audience;
@@ -296,6 +300,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
private List<BannerBean> mBannerList2 = new ArrayList<>();
private List<BannerBean> mBannerList3 = new ArrayList<>();
private List<BannerBean> mBannerList4 = new ArrayList<>();
private List<BannerBean> mTopBannerList = new ArrayList<>();
private LinearLayout btn_event2, btn_event3, btn_event4;
private ImageView imgEvent;
private View btnEvent;
@@ -341,6 +346,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
private TextView mAnchorSayText;
private ImageView mAnchorSayHide;
//----!主播说组件---//
private Banner topBanner1;//心愿单&联系方式
public LiveRoomViewHolder(boolean isRys, int forActivity, Context context, ViewGroup parentView, GifImageView gifImageView, SVGAImageView svgaImageView, ViewGroup liveGiftPrizePoolContainer, WindowManager windowManager) {
super(context, parentView);
@@ -836,6 +842,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
mPkRankTopIcon = (ImageView) findViewById(R.id.icon_pk_top);
mRedVal = (TextView) findViewById(R.id.pk_rank_red_val);
mBlueVal = (TextView) findViewById(R.id.pk_rank_blue_val);
topBanner1 = (Banner) findViewById(R.id.top_banner1);
if (LivePushTxViewHolder.mTRTCCloud != null || LivePushRyViewHolder.rtcRoom != null) {
fans_btn.setVisibility(View.GONE);
@@ -1140,6 +1147,12 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 10);
}
});
topBanner1.setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 10);
}
});
//打招呼消息
fastMsgRecyclerView = (RecyclerView) findViewById(R.id.room_fast_msg);
fastMsgRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
@@ -4293,4 +4306,77 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
}
});
}
private static final int TOP_BANNER_TYPE_CALL_ME = 100;//联系方式
public void initTopBanner() {
checkNewLetter();
mTopBannerList = new ArrayList<>();
topBanner1.setAutoPlay(true)
.setPages(mTopBannerList, new Banner4CustomViewHolder())
.setDelayTime(3000)
.setBannerStyle(BannerConfig.NOT_INDICATOR)
.setOnBannerClickListener(new OnBannerClickListener() {
@Override
public void onBannerClick(List datas, int position) {
if (mTopBannerList.get(position).getType() == TOP_BANNER_TYPE_CALL_ME) {
Dialog loading = DialogUitl.loadingDialog(mContext);
loading.show();
LiveGiftDialogFragment fragment = new LiveGiftDialogFragment();
fragment.setOnDismissListener(dialog -> {
checkNewLetter();
}
);
fragment.setOnShowListener(dialog -> mHandler.postDelayed(loading::dismiss,500));
Bundle bundle = new Bundle();
bundle.putString(Constants.LIVE_UID, mLiveUid);
bundle.putString(Constants.LIVE_STREAM, mStream);
bundle.putString(Constants.LIVE_WISH_GIFTID, mTopBannerList.get(position).getActivityId() + "");
bundle.putBoolean("isContactGift", true);
fragment.setArguments(bundle);
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGiftDialogFragment");
}
}
})
.start();
LiveNetManager.get(mContext)
.getContactInfo(mLiveUid, new com.yunbao.common.http.base.HttpCallback<LiveAnchorCallMeModel>() {
@Override
public void onSuccess(LiveAnchorCallMeModel data) {
System.out.println(">>>>> 获取联系方式:" + data);
BannerBean call = new BannerBean();
call.setIconRes(R.mipmap.ic_live_float_call_me);
call.setActivityId(data.getGiftId());
call.setType(TOP_BANNER_TYPE_CALL_ME);
mTopBannerList.add(0, call);
topBanner1.update(mTopBannerList);
}
@Override
public void onError(String error) {
System.out.println("!>>>>> 获取联系方式:" + error);
}
});
}
private void checkNewLetter() {
LiveNetManager.get(mContext).getContactMsg(new com.yunbao.common.http.base.HttpCallback<List<LiveUserMailBoxModel>>() {
@Override
public void onSuccess(List<LiveUserMailBoxModel> data) {
for (LiveUserMailBoxModel model : data) {
if (model.getIsRead() == 0 && mContext instanceof LiveAudienceActivity) {
((LiveAudienceActivity) mContext).showMsgRed(0);
return;
}
}
}
@Override
public void onError(String error) {
}
});
}
}

View File

@@ -472,6 +472,8 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
mLiveRoomViewHolder.setMedaRankNum(data.getEnterRoomInfo().getMedalRankNum());
//初始化女神说
mLiveRoomViewHolder.initAnchorSay();
//初始化顶部banner
mLiveRoomViewHolder.initTopBanner();
isattention = Integer.parseInt(data.getEnterRoomInfo().getIsattention());
if (isattention == 0) {