@消息界面

This commit is contained in:
18401019693
2022-10-08 10:01:58 +08:00
parent a1633e3456
commit 80655a8662
23 changed files with 848 additions and 96 deletions

View File

@@ -855,6 +855,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
bundle.putString(Constants.LIVE_DANMU_PRICE, mDanmuPrice);
bundle.putString(Constants.COIN_NAME, mCoinName);
bundle.putString(Constants.LIVE_UID, mLiveUid);
bundle.putString(Constants.LIVE_STREAM, mStream);
bundle.putString(Constants.LIVE_UID, mLiveUid);
fragment.setArguments(bundle);
fragment.show(getSupportFragmentManager(), "LiveInputDialogFragment");

View File

@@ -289,7 +289,7 @@ public class LiveChatAdapter extends RecyclerView.Adapter {
} else if (bean.getType() == LiveChatBean.SYSTEM) {
boolean isContains = false;
for (LiveChatBean model : mList) {
if (!TextUtils.isEmpty(model.getContent()) && model.getContent().contains("堅決維護青少年群體精神文明健康")) {
if (!TextUtils.isEmpty(model.getContent()) && (model.getContent().contains("堅決維護青少年群體精神文明健康")||model.getContent().contains("click to register if you like. pdlive conducts"))) {
isContains = true;
}
}
@@ -408,7 +408,7 @@ public class LiveChatAdapter extends RecyclerView.Adapter {
public void scrollToBottom() {
if (mList.size() > 0) {
mRecyclerView.smoothScrollToPosition(mList.size() - 1);
mRecyclerView.smoothScrollToPosition(getItemCount());
}
}

View File

@@ -0,0 +1,73 @@
package com.yunbao.live.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.bean.OlineUserlistModel;
import com.yunbao.live.R;
import com.yunbao.live.views.OlineAudienceViewHolder;
import com.yunbao.live.views.OlineNobleViewHolder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class OlineListAdapter extends RecyclerView.Adapter {
private int nobleType = 0;
private int audienceType = 1;
private List<Map<Integer, List<OlineUserlistModel>>> mapList = new ArrayList<>();
private Context mContext;
public OlineListAdapter(Context mContext) {
this.mContext = mContext;
}
public void addAll(List<Map<Integer, List<OlineUserlistModel>>> models) {
mapList.addAll(models);
notifyDataSetChanged();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == nobleType) {
return new OlineNobleViewHolder(LayoutInflater.from(mContext).inflate(R.layout.view_oline_audience, parent, false));
} else {
return new OlineAudienceViewHolder(LayoutInflater.from(mContext).inflate(R.layout.view_oline_audience, parent, false));
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof OlineNobleViewHolder) {
OlineNobleViewHolder nobleViewHolder = (OlineNobleViewHolder) holder;
nobleViewHolder.setData(mapList.get(position).get(nobleType));
} else {
OlineAudienceViewHolder audienceViewHolder = (OlineAudienceViewHolder) holder;
audienceViewHolder.setData(mapList.get(position).get(audienceType));
}
}
@Override
public int getItemViewType(int position) {
boolean isNoble = true;
for (int number : mapList.get(position).keySet()) {
isNoble = number == nobleType;
}
return isNoble ? nobleType : audienceType;
}
@Override
public int getItemCount() {
return mapList.size();
}
}

View File

@@ -0,0 +1,46 @@
package com.yunbao.live.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.bean.OlineUserlistModel;
import com.yunbao.live.R;
import com.yunbao.live.views.OlineListItemViewHolder;
import java.util.ArrayList;
import java.util.List;
public class OlineListItemAdapter extends RecyclerView.Adapter {
private Context mContext;
private List<OlineUserlistModel> models = new ArrayList<>();
public void addAll(List<OlineUserlistModel> userlistModels) {
models.addAll(userlistModels);
notifyDataSetChanged();
}
public OlineListItemAdapter(Context mContext) {
this.mContext = mContext;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new OlineListItemViewHolder(LayoutInflater.from(mContext).inflate(R.layout.view_oline_item, parent, false));
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
OlineListItemViewHolder itemViewHolder = (OlineListItemViewHolder) holder;
itemViewHolder.setData(models.get(position));
}
@Override
public int getItemCount() {
return models.size();
}
}

View File

@@ -3,6 +3,7 @@ package com.yunbao.live.dialog;
import static android.content.Context.INPUT_METHOD_SERVICE;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -12,7 +13,6 @@ import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -23,7 +23,6 @@ import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import androidx.fragment.app.FragmentActivity;
@@ -37,10 +36,11 @@ import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
import com.yunbao.live.activity.LiveAnchorActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
import com.yunbao.live.views.OlineListActivity;
import java.util.ArrayList;
import java.util.List;
@@ -94,6 +94,7 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O
params.height = DpUtil.dp2px(100);
params.gravity = Gravity.BOTTOM;
window.setAttributes(params);
}
@Override
@@ -103,6 +104,7 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O
imm = (InputMethodManager) mContext.getSystemService(INPUT_METHOD_SERVICE);
mInput = (EditText) mRootView.findViewById(R.id.input);
radioHornType = mRootView.findViewById(R.id.radio_horn_type);
for (int id : radioList) {
RadioButton radioButton = mRootView.findViewById(id);
radioHornTypes.add(radioButton);
@@ -116,15 +118,12 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O
mInput.setFocusableInTouchMode(true);
mInput.requestFocus();
mInput.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage();
return true;
}
return false;
mInput.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage();
return true;
}
return false;
});
mInput.addTextChangedListener(new TextWatcher() {
@Override
@@ -146,13 +145,10 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O
}
});
mInput.postDelayed(new Runnable() {
@Override
public void run() {
//软键盘弹出
imm.showSoftInput(mInput, InputMethodManager.SHOW_FORCED);
mInput.requestFocus();
}
mInput.postDelayed(() -> {
//软键盘弹出
imm.showSoftInput(mInput, InputMethodManager.SHOW_FORCED);
mInput.requestFocus();
}, 200);
mCheckBox = (CheckBox) mRootView.findViewById(R.id.danmu);
mMyRadioButton = (MyRadioButton) mRootView.findViewById(R.id.btn_send);
@@ -180,6 +176,16 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O
radioHornType.setOnCheckedChangeListener(changeListener);
radioHornType.getCheckedRadioButtonId();
netHandler.post(getNobleTrumpetNumRunnable);
ViewClicksAntiShake.clicksAntiShake(mRootView.findViewById(R.id.ai_te), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
Intent intent = new Intent(getActivity(), OlineListActivity.class);
intent.putExtra("liveID", mLiveUid);
intent.putExtra("stream", bundle.getString(Constants.LIVE_STREAM));
getActivity().startActivity(intent);
}
});
;
}
@Override

View File

@@ -44,15 +44,6 @@ public class SocketLinkMicUtil {
if (u == null) {
return;
}
// client.send(new SocketSendBean()
// .param("_method_", Constants.SOCKET_LINK_MIC)
// .param("action", 2)
// .param("msgtype", 10)
// .param("uid", u.getId())
// .param("uname", u.getUserNiceName())
// .param("level", u.getLevel())
// .param("touid", toUid)
// .param("ct", ""));
}
@@ -67,15 +58,6 @@ public class SocketLinkMicUtil {
if (u == null) {
return;
}
// client.send(new SocketSendBean()
// .param("_method_", Constants.SOCKET_LINK_MIC)
// .param("action", 3)
// .param("msgtype", 10)
// .param("uid", u.getId())
// .param("uname", u.getUserNiceName())
// .param("level", u.getLevel())
// .param("touid", touid)
// .param("ct", ""));
}
/**
@@ -144,11 +126,6 @@ public class SocketLinkMicUtil {
if (client == null) {
return;
}
// client.send(new SocketSendBean()
// .param("_method_", Constants.SOCKET_LINK_MIC)
// .param("action", 7)
// .param("msgtype", 10)
// .param("touid", touid));
}
/**
@@ -158,10 +135,5 @@ public class SocketLinkMicUtil {
if (client == null) {
return;
}
// client.send(new SocketSendBean()
// .param("_method_", Constants.SOCKET_LINK_MIC)
// .param("action", 8)
// .param("msgtype", 10)
// .param("touid", touid));
}
}

View File

@@ -0,0 +1,41 @@
package com.yunbao.live.views;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.bean.OlineUserlistModel;
import com.yunbao.live.R;
import com.yunbao.live.adapter.OlineListItemAdapter;
import java.util.List;
/**
* 在线普通观众
*/
public class OlineAudienceViewHolder extends RecyclerView.ViewHolder {
private TextView avatarType;
private RecyclerView audienceList;
private OlineListItemAdapter itemAdapter;
public OlineAudienceViewHolder(@NonNull View itemView) {
super(itemView);
avatarType = itemView.findViewById(R.id.avatar_type);
itemAdapter = new OlineListItemAdapter(itemView.getContext());
audienceList = itemView.findViewById(R.id.audience_list);
audienceList.setLayoutManager(new LinearLayoutManager(itemView.getContext(), LinearLayoutManager.VERTICAL, false));
audienceList.setAdapter(itemAdapter);
}
/**
* 设置列表数据
*/
public void setData(List<OlineUserlistModel> models) {
avatarType.setText(R.string.audience);
avatarType.setVisibility(View.VISIBLE);
itemAdapter.addAll(models);
}
}

View File

@@ -0,0 +1,86 @@
package com.yunbao.live.views;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.GsonUtils;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.bean.OlineModel;
import com.yunbao.common.bean.OlineUserlistModel;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.live.R;
import com.yunbao.live.adapter.OlineListAdapter;
import com.yunbao.live.http.LiveHttpUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class OlineListActivity extends AbsActivity {
private RecyclerView audienceList;
private OlineListAdapter itemAdapter;
@Override
protected int getLayoutId() {
return R.layout.acticity_oline_list;
}
@Override
protected void main() {
super.main();
initView();
initData();
}
/**
* 初始化数据
*/
private void initData() {
LiveHttpUtil.
getUserList(
getIntent().getStringExtra("liveID"),
getIntent().getStringExtra("stream"), "guanzhong", 1, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
OlineModel responseData = GsonUtils.fromJson(info[0], OlineModel.class);
List<OlineUserlistModel> userlistModels = responseData.getUserlist();
List<OlineUserlistModel> noblelistModels = new ArrayList<>();
List<OlineUserlistModel> audiencelistModels = new ArrayList<>();
List<Map<Integer, List<OlineUserlistModel>>> mapList = new ArrayList<>();
//讲贵族前置顺序
for (OlineUserlistModel model : userlistModels) {
int nobleId = Integer.parseInt(model.getNobleId());
if (nobleId > 0) {
noblelistModels.add(model);
} else {
audiencelistModels.add(model);
}
}
Map<Integer, List<OlineUserlistModel>> noblerMap = new HashMap<>();
noblerMap.put(0, noblelistModels);
Map<Integer, List<OlineUserlistModel>> audienceMap = new HashMap<>();
audienceMap.put(1,audiencelistModels);
mapList.add(0,noblerMap);
mapList.add(1, audienceMap);
itemAdapter.addAll(mapList);
}
});
}
/**
* 初始化控件
*/
private void initView() {
itemAdapter = new OlineListAdapter(mContext);
audienceList = findViewById(R.id.audience_list);
TextView titleView = findViewById(R.id.titleView);
titleView.setText(R.string.online_audience);
audienceList.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
audienceList.setAdapter(itemAdapter);
}
}

View File

@@ -0,0 +1,33 @@
package com.yunbao.live.views;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.bean.OlineUserlistModel;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.views.weight.ClipPathCircleImage;
import com.yunbao.live.R;
public class OlineListItemViewHolder extends RecyclerView.ViewHolder {
private TextView userName;
private ClipPathCircleImage avatar;
public OlineListItemViewHolder(@NonNull View itemView) {
super(itemView);
userName = itemView.findViewById(R.id.user_name);
avatar = itemView.findViewById(R.id.avatar);
}
/**
* 设置列表数据
*
* @param model 数据
*/
public void setData(OlineUserlistModel model) {
ImgLoader.displayAvatar(itemView.getContext(), model.getAvatar(), avatar);
userName.setText(model.getUserNicename());
}
}

View File

@@ -0,0 +1,41 @@
package com.yunbao.live.views;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.bean.OlineUserlistModel;
import com.yunbao.live.R;
import com.yunbao.live.adapter.OlineListItemAdapter;
import java.util.List;
/**
* 在线贵族
*/
public class OlineNobleViewHolder extends RecyclerView.ViewHolder {
private TextView avatarType;
private RecyclerView audienceList;
private OlineListItemAdapter itemAdapter;
public OlineNobleViewHolder(@NonNull View itemView) {
super(itemView);
avatarType = itemView.findViewById(R.id.avatar_type);
itemAdapter = new OlineListItemAdapter(itemView.getContext());
audienceList = itemView.findViewById(R.id.audience_list);
audienceList.setLayoutManager(new LinearLayoutManager(itemView.getContext(), LinearLayoutManager.VERTICAL, false));
audienceList.setAdapter(itemAdapter);
}
/**
* 设置列表数据
*/
public void setData(List<OlineUserlistModel> models) {
avatarType.setText(R.string.noble);
avatarType.setVisibility(View.VISIBLE);
itemAdapter.addAll(models);
}
}