Files
yusheng-android/BaseModule/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java
2025-11-27 11:47:10 +08:00

353 lines
12 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.xscm.moduleutil.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.ConstraintSet;
import com.xscm.moduleutil.R;
import com.xscm.moduleutil.bean.UserOnlineStatusBean;
import com.xscm.moduleutil.bean.room.RoomPitBean;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.utils.ImageUtils;
public class RoomFriendshipWheatView extends BaseWheatView {
public ImageView mIvTagBoss;
public TextView mTvTime;
// public ImageView iv_on_line;
private ImageView iv_tag_type;
public WheatCharmView mCharmView;
public TextView tv_zhul;
private boolean showBoss;//显示老板标识
private boolean showSexIcon = false;
private String sex;
public RoomFriendshipWheatView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public RoomFriendshipWheatView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public RoomFriendshipWheatView(Context context) {
super(context);
}
@Override
protected void initPit(Context context, AttributeSet attrs) {
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoomMakeWheatView);
pitNumber = typedArray.getString(R.styleable.RoomMakeWheatView_room_make_wheat_number);
pitImageVId = typedArray.getResourceId(R.styleable.RoomMakeWheatView_room_make_pic, 0);
typedArray.recycle();
mIvTagBoss = findViewById(R.id.iv_tag_boos);
mTvTime = findViewById(R.id.tv_time);
// iv_on_line = findViewById(R.id.iv_online);
iv_tag_type = findViewById(R.id.iv_tag_type);
mCharmView = findViewById(R.id.charm_view);
mRiv.setImageResource(pitImageVId);
tv_zhul = findViewById(R.id.tv_zhul);
// 为 tv_zhul 设置点击监听
if (tv_zhul != null) {
tv_zhul.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mOnZhulClickListener != null && pitBean != null) {
mOnZhulClickListener.onZhulClick(RoomFriendshipWheatView.this, pitBean);
}
}
});
}
mCharmView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mOnCharmClickListener != null && pitBean != null){
mOnCharmClickListener.onCharmClick(RoomFriendshipWheatView.this, pitBean);
}
}
});
}
@Override
protected int getLayoutId() {
return R.layout.room_view_friendship_wheat;
}
@Override
protected void setPitData(RoomPitBean bean) {
sex = bean.getSex();
if (isOn()) {
//开启声浪
if (mIvRipple != null) {
mIvRipple.stopAnimation(true);
mIvRipple.setVisibility(VISIBLE);
}
mTvName.setText(bean.getNickname());
ImageUtils.loadHeadCC(bean.getAvatar(), mRiv);
if (TextUtils.isEmpty(pitBean.getDress())) {
mIvFrame.stopAll();
mIvFrame.setVisibility(INVISIBLE);
} else {
mIvFrame.setVisibility(VISIBLE);
mIvFrame.stopAll();
mIvFrame.setSource(pitBean.getDress(), 3);
}
if (showBoss && WHEAT_BOSS.equals(pitNumber)) {
mIvTagBoss.setVisibility(GONE);
}
mCharmView.setVisibility(VISIBLE);
} else {
mTvName.setText((!"10".equals(pitBean.getPit_number()) && !"9".equals(pitBean.getPit_number())) ? pitBean.getPit_number() : "");
//麦位上锁
//麦位上锁
// if (showBoss && WHEAT_BOSS.equals(pitNumber)) {
// mIvTagBoss.setVisibility(VISIBLE);
// ImageUtils.loadRes(isLocked() ? R.mipmap.room_ic_wheat_default_suo : R.mipmap.jiaoy, mRiv);
// } else {
// mRiv.setImageResource(bean.getIs_lock() == 1 ? R.mipmap.room_ic_wheat_default_suo : R.mipmap.jiaoy);
// }
if (pitBean.getPit_number().equals("4") || pitBean.getPit_number().equals("5") || pitBean.getPit_number().equals("6")) {
ImageUtils.loadRes(R.mipmap.jiaoy_n, mRiv);
} else {
ImageUtils.loadRes(R.mipmap.jiaoy, mRiv);
}
if (isMute()) {
ImageUtils.loadRes(R.mipmap.room_microphone_off, mIvSex);
}
mIvFrame.stopAll();
mIvFrame.setVisibility(INVISIBLE);
mIvFace.remove();
//停止声浪
if (mIvRipple != null) {
mIvRipple.stopAnimation(true);
mIvRipple.setVisibility(GONE);
}
mCharmView.setVisibility(GONE);
}
if (showSexIcon) {
checkSex();
}
if (pitBean.getPit_number().equals("9")) {
iv_tag_type.setVisibility(VISIBLE);
iv_tag_type.setImageResource(R.mipmap.zc);
switchCharmViewPosition(false);
tv_zhul.setVisibility(GONE);
} else if (pitBean.getPit_number().equals("10")) {
iv_tag_type.setVisibility(VISIBLE);
iv_tag_type.setImageResource(R.mipmap.jb);
switchCharmViewPosition(false);
tv_zhul.setVisibility(GONE);
} else {
iv_tag_type.setVisibility(GONE);
switchCharmViewPosition(true);
// tv_zhul.setVisibility(VISIBLE);
}
if (pitBean.getPit_number().equals("1") || pitBean.getPit_number().equals("2") || pitBean.getPit_number().equals("3")) {
ThemeableDrawableUtils.setThemeableRoundedBackground(tv_zhul, Color.parseColor("#D449E4"), 53);
tv_zhul.setTextColor(Color.parseColor("#FFFFFF"));
} else if (pitBean.getPit_number().equals("4") || pitBean.getPit_number().equals("5") || pitBean.getPit_number().equals("6")) {
ThemeableDrawableUtils.setThemeableRoundedBackground(tv_zhul, Color.parseColor("#4965E4"), 53);
tv_zhul.setTextColor(Color.parseColor("#FFFFFF"));
}
}
public void checkSex() {
if (isOn()) {
mIvSex.setVisibility(VISIBLE);
} else {
mIvSex.setVisibility(GONE);
if (mTvNo != null) mTvNo.setBackgroundResource(getOriginNoImage());
}
}
/**
* 切换 charm_view 的显示位置
*
* @param showAtTagTypePosition true-显示在 iv_tag_type 位置false-显示在原始位置
*/
public void switchCharmViewPosition(boolean showAtTagTypePosition) {
if (mCharmView == null) return;
// 确保视图已经加载完成
if (getWidth() == 0 || getHeight() == 0) {
post(() -> switchCharmViewPosition(showAtTagTypePosition));
return;
}
ConstraintSet constraintSet = new ConstraintSet();
ConstraintLayout constraintLayout = (ConstraintLayout) getChildAt(0);
constraintSet.clone(constraintLayout);
if (showAtTagTypePosition) {
// 显示在 tag_type 位置(替代 tag_type 的位置)
if (iv_tag_type != null) {
iv_tag_type.setVisibility(GONE);
}
// 清除原有约束
constraintSet.clear(R.id.charm_view, ConstraintSet.TOP);
// constraintSet.clear(R.id.charm_view, ConstraintSet.START);
// constraintSet.clear(R.id.charm_view, ConstraintSet.END);
// 设置新约束(与 iv_tag_type 相同的位置)
constraintSet.connect(
R.id.charm_view, ConstraintSet.TOP,
R.id.riv, ConstraintSet.BOTTOM,
-dip2px(12) // 与 iv_tag_type 相同的 margin
);
// constraintSet.connect(
// R.id.charm_view, ConstraintSet.START,
// R.id.riv, ConstraintSet.START,
// 0
// );
//
// constraintSet.connect(
// R.id.charm_view, ConstraintSet.END,
// R.id.riv, ConstraintSet.END,
// 0
// );
mCharmView.setBg(R.drawable.room_bg_wheat_jy_charm);
} else {
// 恢复原始位置(在 tv_name 下面)
// 显示 iv_tag_type如果需要
if (iv_tag_type != null) {
iv_tag_type.setVisibility(VISIBLE);
}
// 清除临时约束
constraintSet.clear(R.id.charm_view, ConstraintSet.TOP);
constraintSet.clear(R.id.charm_view, ConstraintSet.START);
constraintSet.clear(R.id.charm_view, ConstraintSet.END);
// 恢复原始约束
constraintSet.connect(
R.id.charm_view, ConstraintSet.TOP,
R.id.tv_name, ConstraintSet.BOTTOM,
0
);
constraintSet.connect(
R.id.charm_view, ConstraintSet.START,
R.id.riv, ConstraintSet.START,
0
);
constraintSet.connect(
R.id.charm_view, ConstraintSet.END,
R.id.riv, ConstraintSet.END,
0
);
}
constraintSet.applyTo(constraintLayout);
}
// 添加dp转px的工具方法
private int dip2px(float dpValue) {
final float scale = getContext().getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
// public void setmCharmView(String charm){
// if (mCharmView!=null){
// mCharmView.setSex(pitBean.getSex(),pitBean.getUser_id(), charm,false);
// }
// }
/**
* 开启计时
*/
public void setTime(int time) {
if (time == 0) {
mTvTime.setText("");
mTvTime.setVisibility(INVISIBLE);
} else {
mTvTime.setText(String.format("%s'%s", time / 60, time % 60));
mTvTime.setVisibility(VISIBLE);
}
}
@Override
public void onRemoteSoundLevelUpdate(String userId, int soundLevel) {
}
@Override
public void onLocalSoundLevelUpdate(int volume) {
}
@Override
public void userJoined(int userId, int elapsd) {
}
@Override
public void userOffline(int userId, int reason) {
}
@Override
public void pkOffSide(int uid) {
}
// public void setOnlineStatus(UserOnlineStatusBean isOnline) {
// if (pitBean.getUser_id() != null && !pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
// if (pitBean.getUser_id().equals(isOnline.getUser_id())) {
// if (isOnline.getIs_online() == 1) {
//// iv_on_line.setVisibility(GONE);
// } else {
//// iv_on_line.setVisibility(VISIBLE);
// }
// }
// }
// }
/// 设置是否显示助力按钮
public void setLockZl(boolean lock) {
tv_zhul.setVisibility(lock ? VISIBLE : INVISIBLE);
}
private OnZhulClickListener mOnZhulClickListener;
// 设置监听器的方法
public void setOnZhulClickListener(OnZhulClickListener listener) {
this.mOnZhulClickListener = listener;
}
private onCharmClickListener mOnCharmClickListener;
public void setmOnCharmClickListener(onCharmClickListener mOnCharmClickListener) {
this.mOnCharmClickListener = mOnCharmClickListener;
}
@Override
public void unRegister(Object obj) {
}
public interface OnZhulClickListener {
void onZhulClick(RoomFriendshipWheatView view, RoomPitBean pitBean);
}
public interface onCharmClickListener{
void onCharmClick(RoomFriendshipWheatView view, RoomPitBean pitBean);
}
}