@消息界面
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user