344 lines
12 KiB
Java
344 lines
12 KiB
Java
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()) {
|
||
//开启声浪
|
||
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();
|
||
//停止声浪
|
||
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) {
|
||
|
||
}
|
||
|
||
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);
|
||
}
|
||
}
|