Merge remote-tracking branch 'origin/master'

# Conflicts:
#	common/src/main/res/values/strings.xml
This commit is contained in:
zlzw 2022-10-08 11:10:12 +08:00
commit bc553a1b1d
25 changed files with 852 additions and 100 deletions

View File

@ -147,7 +147,7 @@ public class AppContext extends CommonAppContext {
String environment = AdjustConfig.ENVIRONMENT_PRODUCTION; String environment = AdjustConfig.ENVIRONMENT_PRODUCTION;
AdjustConfig config = new AdjustConfig(this, "3om5fbglyqdc", environment); AdjustConfig config = new AdjustConfig(this, "3om5fbglyqdc", environment);
if (CommonAppConfig.IS_GOOGLE_PLAY == false) { if (CommonAppConfig.IS_GOOGLE_PLAY == false) {
config.setDefaultTracker("{xa7k5ut}"); config.setDefaultTracker("xa7k5ut");
} }
Adjust.onCreate(config); Adjust.onCreate(config);
registerActivityLifecycleCallbacks(new AdjustLifecycleCallbacks()); registerActivityLifecycleCallbacks(new AdjustLifecycleCallbacks());

View File

@ -0,0 +1,65 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
import java.util.List;
public class OlineModel extends BaseModel {
@SerializedName("userlist")
private List<OlineUserlistModel> userlist = new ArrayList<>();
@SerializedName("nums")
private String nums;
@SerializedName("medal_num")
private String medalNum;
@SerializedName("votestotal")
private String votestotal;
@SerializedName("medalRankNum")
private String medalRankNum;
public List<OlineUserlistModel> getUserlist() {
return userlist;
}
public OlineModel setUserlist(List<OlineUserlistModel> userlist) {
this.userlist = userlist;
return this;
}
public String getNums() {
return nums;
}
public OlineModel setNums(String nums) {
this.nums = nums;
return this;
}
public String getMedalNum() {
return medalNum;
}
public OlineModel setMedalNum(String medalNum) {
this.medalNum = medalNum;
return this;
}
public String getVotestotal() {
return votestotal;
}
public OlineModel setVotestotal(String votestotal) {
this.votestotal = votestotal;
return this;
}
public String getMedalRankNum() {
return medalRankNum;
}
public OlineModel setMedalRankNum(String medalRankNum) {
this.medalRankNum = medalRankNum;
return this;
}
}

View File

@ -0,0 +1,270 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class OlineUserlistModel extends BaseModel {
@SerializedName("id")
private String id;
@SerializedName("user_nicename")
private String userNicename;
@SerializedName("avatar")
private String avatar;
@SerializedName("sex")
private String sex;
@SerializedName("noble_id")
private String nobleId;
@SerializedName("goodnum")
private String goodnum;
@SerializedName("is_guess")
private String isGuess;
@SerializedName("langue")
private String langue;
@SerializedName("goodnum_expire_time")
private String goodnumExpireTime;
@SerializedName("avatar2")
private String avatar2;
@SerializedName("version")
private String version;
@SerializedName("front_task")
private String frontTask;
@SerializedName("max_noble_end_time")
private String maxNobleEndTime;
@SerializedName("custom_color_id")
private String customColorId;
@SerializedName("is_chat")
private String isChat;
@SerializedName("level")
private String level;
@SerializedName("level_anchor")
private String levelAnchor;
@SerializedName("vip")
private VipModel vip;
@SerializedName("liang")
private LiangModel liang;
@SerializedName("medal_level")
private String medalLevel;
@SerializedName("medal_name")
private String medalName;
@SerializedName("contribution")
private String contribution;
@SerializedName("guard_type")
private String guardType;
@SerializedName("dress")
private DressModel dress;
public String getId() {
return id;
}
public OlineUserlistModel setId(String id) {
this.id = id;
return this;
}
public String getUserNicename() {
return userNicename;
}
public OlineUserlistModel setUserNicename(String userNicename) {
this.userNicename = userNicename;
return this;
}
public String getAvatar() {
return avatar;
}
public OlineUserlistModel setAvatar(String avatar) {
this.avatar = avatar;
return this;
}
public String getSex() {
return sex;
}
public OlineUserlistModel setSex(String sex) {
this.sex = sex;
return this;
}
public String getNobleId() {
return nobleId;
}
public OlineUserlistModel setNobleId(String nobleId) {
this.nobleId = nobleId;
return this;
}
public String getGoodnum() {
return goodnum;
}
public OlineUserlistModel setGoodnum(String goodnum) {
this.goodnum = goodnum;
return this;
}
public String getIsGuess() {
return isGuess;
}
public OlineUserlistModel setIsGuess(String isGuess) {
this.isGuess = isGuess;
return this;
}
public String getLangue() {
return langue;
}
public OlineUserlistModel setLangue(String langue) {
this.langue = langue;
return this;
}
public String getGoodnumExpireTime() {
return goodnumExpireTime;
}
public OlineUserlistModel setGoodnumExpireTime(String goodnumExpireTime) {
this.goodnumExpireTime = goodnumExpireTime;
return this;
}
public String getAvatar2() {
return avatar2;
}
public OlineUserlistModel setAvatar2(String avatar2) {
this.avatar2 = avatar2;
return this;
}
public String getVersion() {
return version;
}
public OlineUserlistModel setVersion(String version) {
this.version = version;
return this;
}
public String getFrontTask() {
return frontTask;
}
public OlineUserlistModel setFrontTask(String frontTask) {
this.frontTask = frontTask;
return this;
}
public String getMaxNobleEndTime() {
return maxNobleEndTime;
}
public OlineUserlistModel setMaxNobleEndTime(String maxNobleEndTime) {
this.maxNobleEndTime = maxNobleEndTime;
return this;
}
public String getCustomColorId() {
return customColorId;
}
public OlineUserlistModel setCustomColorId(String customColorId) {
this.customColorId = customColorId;
return this;
}
public String getIsChat() {
return isChat;
}
public OlineUserlistModel setIsChat(String isChat) {
this.isChat = isChat;
return this;
}
public String getLevel() {
return level;
}
public OlineUserlistModel setLevel(String level) {
this.level = level;
return this;
}
public String getLevelAnchor() {
return levelAnchor;
}
public OlineUserlistModel setLevelAnchor(String levelAnchor) {
this.levelAnchor = levelAnchor;
return this;
}
public VipModel getVip() {
return vip;
}
public OlineUserlistModel setVip(VipModel vip) {
this.vip = vip;
return this;
}
public LiangModel getLiang() {
return liang;
}
public OlineUserlistModel setLiang(LiangModel liang) {
this.liang = liang;
return this;
}
public String getMedalLevel() {
return medalLevel;
}
public OlineUserlistModel setMedalLevel(String medalLevel) {
this.medalLevel = medalLevel;
return this;
}
public String getMedalName() {
return medalName;
}
public OlineUserlistModel setMedalName(String medalName) {
this.medalName = medalName;
return this;
}
public String getContribution() {
return contribution;
}
public OlineUserlistModel setContribution(String contribution) {
this.contribution = contribution;
return this;
}
public String getGuardType() {
return guardType;
}
public OlineUserlistModel setGuardType(String guardType) {
this.guardType = guardType;
return this;
}
public DressModel getDress() {
return dress;
}
public OlineUserlistModel setDress(DressModel dress) {
this.dress = dress;
return this;
}
}

View File

@ -859,7 +859,7 @@ Limited ride And limited avatar frame</string>
<string name="you_may_also_like">you may also like</string> <string name="you_may_also_like">you may also like</string>
<string name="anchor">anchor</string> <string name="anchor">anchor</string>
<string name="anchor_more">More</string> <string name="anchor_more">More</string>
<string name="wonderful_live">Wonderful live</string> <string name="wonderful_live">Live</string>
<string name="recommended_for_you">More</string> <string name="recommended_for_you">More</string>
<string name="fun_games">Fun Games</string> <string name="fun_games">Fun Games</string>
<string name="value_added_benefits">Value-added benefits</string> <string name="value_added_benefits">Value-added benefits</string>

View File

@ -915,6 +915,11 @@
<string name="slide_settings">滑動設置</string> <string name="slide_settings">滑動設置</string>
<string name="up_slide_settings">上下滑動切換直播間</string> <string name="up_slide_settings">上下滑動切換直播間</string>
<string name="login_wait">請稍後</string> <string name="login_wait">請稍後</string>
<string name="live_say_something_a">\@用户昵称\t\t你好啊</string>
<string name="oline_list">在线列表</string>
<string name="search_want">搜索想要@的人</string>
<string name="online_audience">在線觀眾</string>
<string name="audience">觀眾</string>
</resources> </resources>

View File

@ -93,6 +93,9 @@
<activity <activity
android:name=".activity.EditNameRemarksActivity" android:name=".activity.EditNameRemarksActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity
android:name=".views.OlineListActivity"
android:screenOrientation="portrait" />
</application> </application>
</manifest> </manifest>

View File

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

View File

@ -289,7 +289,7 @@ public class LiveChatAdapter extends RecyclerView.Adapter {
} else if (bean.getType() == LiveChatBean.SYSTEM) { } else if (bean.getType() == LiveChatBean.SYSTEM) {
boolean isContains = false; boolean isContains = false;
for (LiveChatBean model : mList) { 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; isContains = true;
} }
} }
@ -408,7 +408,7 @@ public class LiveChatAdapter extends RecyclerView.Adapter {
public void scrollToBottom() { public void scrollToBottom() {
if (mList.size() > 0) { 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 static android.content.Context.INPUT_METHOD_SERVICE;
import android.app.Activity; import android.app.Activity;
import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
@ -12,7 +13,6 @@ import android.text.TextUtils;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.util.Log; import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
@ -23,7 +23,6 @@ import android.widget.CompoundButton;
import android.widget.EditText; import android.widget.EditText;
import android.widget.RadioButton; import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.TextView;
import androidx.fragment.app.FragmentActivity; 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.DpUtil;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil; import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.live.R; import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity; import com.yunbao.live.activity.LiveActivity;
import com.yunbao.live.activity.LiveAnchorActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity; import com.yunbao.live.activity.LiveRyAnchorActivity;
import com.yunbao.live.views.OlineListActivity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -94,6 +94,7 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O
params.height = DpUtil.dp2px(100); params.height = DpUtil.dp2px(100);
params.gravity = Gravity.BOTTOM; params.gravity = Gravity.BOTTOM;
window.setAttributes(params); window.setAttributes(params);
} }
@Override @Override
@ -103,6 +104,7 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O
imm = (InputMethodManager) mContext.getSystemService(INPUT_METHOD_SERVICE); imm = (InputMethodManager) mContext.getSystemService(INPUT_METHOD_SERVICE);
mInput = (EditText) mRootView.findViewById(R.id.input); mInput = (EditText) mRootView.findViewById(R.id.input);
radioHornType = mRootView.findViewById(R.id.radio_horn_type); radioHornType = mRootView.findViewById(R.id.radio_horn_type);
for (int id : radioList) { for (int id : radioList) {
RadioButton radioButton = mRootView.findViewById(id); RadioButton radioButton = mRootView.findViewById(id);
radioHornTypes.add(radioButton); radioHornTypes.add(radioButton);
@ -116,15 +118,12 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O
mInput.setFocusableInTouchMode(true); mInput.setFocusableInTouchMode(true);
mInput.requestFocus(); mInput.requestFocus();
mInput.setOnEditorActionListener(new TextView.OnEditorActionListener() { mInput.setOnEditorActionListener((v, actionId, event) -> {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEND) { if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage(); sendMessage();
return true; return true;
} }
return false; return false;
}
}); });
mInput.addTextChangedListener(new TextWatcher() { mInput.addTextChangedListener(new TextWatcher() {
@Override @Override
@ -146,13 +145,10 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O
} }
}); });
mInput.postDelayed(new Runnable() { mInput.postDelayed(() -> {
@Override
public void run() {
//软键盘弹出 //软键盘弹出
imm.showSoftInput(mInput, InputMethodManager.SHOW_FORCED); imm.showSoftInput(mInput, InputMethodManager.SHOW_FORCED);
mInput.requestFocus(); mInput.requestFocus();
}
}, 200); }, 200);
mCheckBox = (CheckBox) mRootView.findViewById(R.id.danmu); mCheckBox = (CheckBox) mRootView.findViewById(R.id.danmu);
mMyRadioButton = (MyRadioButton) mRootView.findViewById(R.id.btn_send); mMyRadioButton = (MyRadioButton) mRootView.findViewById(R.id.btn_send);
@ -180,6 +176,16 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O
radioHornType.setOnCheckedChangeListener(changeListener); radioHornType.setOnCheckedChangeListener(changeListener);
radioHornType.getCheckedRadioButtonId(); radioHornType.getCheckedRadioButtonId();
netHandler.post(getNobleTrumpetNumRunnable); 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 @Override

View File

@ -44,15 +44,6 @@ public class SocketLinkMicUtil {
if (u == null) { if (u == null) {
return; 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) { if (u == null) {
return; 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) { if (client == null) {
return; 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) { if (client == null) {
return; 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);
}
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="20dp"/>
<solid android:color="#F6F6F6"/>
</shape>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<include layout="@layout/view_title" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="20dp"
android:layout_marginTop="18.67dp"
android:layout_marginEnd="20dp"
android:background="@drawable/bg_search_input_2"
android:orientation="horizontal">
<EditText
android:id="@+id/edit"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@null"
android:hint="@string/search_want"
android:imeActionLabel="@string/search"
android:imeOptions="actionSearch"
android:paddingStart="22.67dp"
android:paddingRight="10dp"
android:singleLine="true"
android:textColor="@color/textColor"
android:textColorHint="#BFBFBF"
android:textSize="15sp" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/audience_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="23.33dp" />
</LinearLayout>

View File

@ -26,10 +26,10 @@
android:background="@drawable/radio_horn_type" android:background="@drawable/radio_horn_type"
android:button="@null" android:button="@null"
android:checked="true" android:checked="true"
android:drawableLeft="@mipmap/icon_general_message_p"
android:gravity="center" android:gravity="center"
android:text="@string/normal_barrage" android:text="@string/normal_barrage"
android:textColor="@color/white" android:textColor="@color/white"
android:drawableLeft="@mipmap/icon_general_message_p"
android:textSize="12sp" /> android:textSize="12sp" />
<RadioButton <RadioButton
@ -40,8 +40,8 @@
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/radio_horn_type" android:background="@drawable/radio_horn_type"
android:button="@null" android:button="@null"
android:gravity="center"
android:drawableLeft="@mipmap/icon_popup_screen" android:drawableLeft="@mipmap/icon_popup_screen"
android:gravity="center"
android:text="@string/floating_screen" android:text="@string/floating_screen"
android:textColor="#FFB1B6C7" android:textColor="#FFB1B6C7"
android:textSize="12sp" /> android:textSize="12sp" />
@ -54,12 +54,12 @@
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/radio_horn_type" android:background="@drawable/radio_horn_type"
android:button="@null" android:button="@null"
android:gravity="center"
android:drawableStart="@mipmap/icon_world_horn" android:drawableStart="@mipmap/icon_world_horn"
android:gravity="center"
android:text="@string/whole_station_horn" android:text="@string/whole_station_horn"
android:textColor="#FFB1B6C7" android:textColor="#FFB1B6C7"
android:visibility="visible" android:textSize="12sp"
android:textSize="12sp" /> android:visibility="visible" />
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
@ -82,6 +82,15 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp"> android:layout_height="50dp">
<ImageView
android:id="@+id/ai_te"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="12.33dp"
android:layout_marginEnd="10.33dp"
android:layout_gravity="center_vertical"
android:src="@mipmap/icon_emphasis" />
<EditText <EditText
android:id="@+id/input" android:id="@+id/input"
android:layout_width="0dp" android:layout_width="0dp"
@ -90,7 +99,7 @@
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/bg_live_input" android:background="@drawable/bg_live_input"
android:gravity="center_vertical" android:gravity="center_vertical"
android:hint="@string/live_say_something" android:hint="@string/live_say_something_a"
android:imeActionLabel="@string/send" android:imeActionLabel="@string/send"
android:imeOptions="actionSend" android:imeOptions="actionSend"
android:maxLength="50" android:maxLength="50"

View File

@ -287,6 +287,43 @@
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<RelativeLayout
android:id="@+id/chat_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:gravity="top"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/chat_recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="370dp"
android:overScrollMode="never"
android:scrollbars="none" />
<LinearLayout
android:id="@+id/gif_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:orientation="vertical">
<FrameLayout
android:id="@+id/gift_group_2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/gift_group_1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
<LinearLayout <LinearLayout
android:id="@+id/hour_rank_layout" android:id="@+id/hour_rank_layout"
@ -830,43 +867,6 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<RelativeLayout
android:id="@+id/chat_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:gravity="top"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/chat_recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="370dp"
android:overScrollMode="never"
android:scrollbars="none" />
<LinearLayout
android:id="@+id/gif_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:orientation="vertical">
<FrameLayout
android:id="@+id/gift_group_2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/gift_group_1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
<com.yunbao.common.custom.MyFrameLayout2 <com.yunbao.common.custom.MyFrameLayout2
android:id="@+id/enter_room_group" android:id="@+id/enter_room_group"

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/avatar_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20.67dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="18dp"
android:text="@string/noble"
android:textColor="#B3B3B3"
android:textSize="14sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/audience_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="18dp"
android:gravity="center_vertical">
<com.yunbao.common.views.weight.ClipPathCircleImage
android:id="@+id/avatar"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginStart="20dp"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12.33dp"
android:text="@string/noble"
android:textColor="#222324"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -61,7 +61,7 @@ public class MainHttpUtil {
HttpClient.getInstance().get("Login.userLoginByThird", MainHttpConsts.LOGIN_BY_THIRD) HttpClient.getInstance().get("Login.userLoginByThird", MainHttpConsts.LOGIN_BY_THIRD)
.params("openid", openid) .params("openid", openid)
.params("nicename", nicename) .params("nicename", nicename)
.params("app_project", "1") .params("app_source", CommonAppConfig.IS_GOOGLE_PLAY==true?"1":"3")
.params("avatar", avatar) .params("avatar", avatar)
.params("type", type) .params("type", type)
.params("source", DEVICE) .params("source", DEVICE)
@ -80,7 +80,7 @@ public class MainHttpUtil {
String sign = MD5Util.getMD5("openid=" + openid + "&" + SALT); String sign = MD5Util.getMD5("openid=" + openid + "&" + SALT);
HttpClient.getInstance().get("Login.userLoginByThird", MainHttpConsts.LOGIN_BY_THIRD) HttpClient.getInstance().get("Login.userLoginByThird", MainHttpConsts.LOGIN_BY_THIRD)
.params("openid", openid) .params("openid", openid)
.params("app_project", "1") .params("app_source", CommonAppConfig.IS_GOOGLE_PLAY==true?"1":"3")
.params("admin_id", promoCode) .params("admin_id", promoCode)
.params("uuid_Device", uuidDevice) .params("uuid_Device", uuidDevice)
.params("nicename", nicename) .params("nicename", nicename)
@ -552,7 +552,7 @@ public class MainHttpUtil {
public static void register(String invitecode, String user_login, String promo_code, String uuidDevice, int countryCode, String pass, String pass2, String code, HttpCallback callback) { public static void register(String invitecode, String user_login, String promo_code, String uuidDevice, int countryCode, String pass, String pass2, String code, HttpCallback callback) {
HttpClient.getInstance().get("Login.userReg", MainHttpConsts.REGISTER) HttpClient.getInstance().get("Login.userReg", MainHttpConsts.REGISTER)
.params("user_login", user_login) .params("user_login", user_login)
.params("app_project", "1") .params("app_source", CommonAppConfig.IS_GOOGLE_PLAY==true?"1":"3")
//增加参数推广码 //增加参数推广码
.params("user_activation_key", promo_code) .params("user_activation_key", promo_code)
.params("admin_id", promo_code) .params("admin_id", promo_code)

View File

@ -46,9 +46,9 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/anchor_list" android:id="@+id/anchor_list"
android:layout_below="@id/type_title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/type_title"
android:layout_marginLeft="20dp" android:layout_marginLeft="20dp"
android:layout_marginRight="20dp" android:layout_marginRight="20dp"
android:fadingEdge="none" /> android:fadingEdge="none" />