This commit is contained in:
2025-11-12 16:42:51 +08:00
parent 8013268816
commit d80222afef
64 changed files with 1561 additions and 789 deletions

View File

@@ -50,6 +50,7 @@ dependencies {
implementation libs.material
implementation libs.activity
implementation libs.constraintlayout
implementation project(':locktableview')
// implementation project(':modulevoice')
// implementation project(':modulecircle')
// implementation project(':modulevocal')

View File

@@ -166,6 +166,19 @@
android:name=".activity.user.activity.RealNameActivity"
android:exported="false" />
<activity
android:name=".activity.user.activity.NoblePaymentActivity"
android:exported="false"/>
<activity
android:name=".activity.user.activity.NobleDetailsActivity"
android:exported="false"/>
<activity
android:name=".activity.user.activity.NobleTitleActivity"
android:exported="false"/>
<activity
android:name=".activity.user.activity.GiftWallActivity"
android:exported="false"/>
<activity
android:name=".activity.WebViewActivity"

View File

@@ -57,7 +57,7 @@ open class Application : CommonAppContext() {
private fun initLogUtils() {
LogUtils.getConfig()
.setLogSwitch(true) // 全局开关
.setLogSwitch(false) // 全局开关
.setLog2FileSwitch(true) // 必须设为 true
.setDir(LOGUTILS_SAVE_PATH) // 设置有效路径
.setFileFilter(LogUtils.V); // 允许所有级别

View File

@@ -350,7 +350,7 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
selectShow(2);
} else if (id == R.id.rl_me) {
mBinding.llBottomBar.setBackgroundResource(com.xscm.moduleutil.R.drawable.home_bbar_yuan);
mBinding.llBottomBar.setBackgroundResource(com.xscm.moduleutil.R.drawable.home_bbar_xz);
selectShow(3);
//C0101我的界面
@@ -809,6 +809,7 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
public void activitiesPermissionSuccess(ActivitiesPermission activitiesPermission) {
List<PermissionPicBean> list;
if (activitiesPermission != null) {
mBinding.dvr.setVisibility(View.VISIBLE);
list = new ArrayList<>();
if (activitiesPermission.getFirst_charge_permission() == 1) {
PermissionPicBean bean = new PermissionPicBean();
@@ -859,6 +860,8 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
}
}
});
}else {
mBinding.dvr.setVisibility(View.GONE);
}
}

View File

@@ -20,19 +20,25 @@ import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.TextUtils
import android.text.style.ForegroundColorSpan
import android.util.DisplayMetrics
import android.util.Log
import android.view.GestureDetector
import android.view.Gravity
import android.view.KeyEvent
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.view.animation.Animation
import android.view.animation.DecelerateInterpolator
import android.view.animation.TranslateAnimation
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.TextView
import androidx.activity.OnBackPressedCallback
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
@@ -53,6 +59,7 @@ import com.liulishuo.okdownload.OkDownloadProvider
import com.orhanobut.logger.Logger
import com.petterp.floatingx.assist.helper.FxScopeHelper
import com.petterp.floatingx.listener.control.IFxControl
import com.sunfusheng.marqueeview.DisplayUtil
import com.tencent.imsdk.v2.V2TIMManager
import com.tencent.imsdk.v2.V2TIMSDKListener
import com.tencent.imsdk.v2.V2TIMUserFullInfo
@@ -432,11 +439,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
override fun initData() {
if (!EasyPermissions.hasPermissions(this, *permissions)) {
PermissionDescriptionHelper.addPermissionDescription(
false,
mBinding?.root as ViewGroup,
permissions
)
PermissionDescriptionHelper.addPermissionDescription(false, mBinding?.root as ViewGroup, permissions)
EasyPermissions.requestPermissions(
this, "请开启录音使用权限",
1, *permissions
@@ -492,7 +495,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
this, LinearLayoutManager.HORIZONTAL, false
)
likeUserAdapter = LikeUserAdapter()
mBinding!!.roomTop.userRecyclerView.adapter = likeUserAdapter
mBinding?.roomTop?.userRecyclerView?.adapter = likeUserAdapter
likeUserAdapter!!.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { adapter, view, position ->
// RoomOnlineDialogFragment.show(roomId, "", mRoomUserBean, mRoomInfoResp, getSupportFragmentManager());
@@ -690,14 +693,22 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
}
}
/**
* 设置顶部操作按钮的可见性和点击事件
* 包括结束按钮和延时按钮的初始化和事件绑定
*/
fun tob() {
// 获取并显示stubButtons2布局
val stub = mBinding!!.roomTop.stubButtons2
stub.visibility = View.VISIBLE
// 获取结束按钮和延时按钮的ImageView控件
val imActionJs = mBinding!!.roomTop.imActionJs.findViewById<ImageView>(R.id.im_action_js)
val imActionYs = mBinding!!.roomTop.imActionYs.findViewById<ImageView>(R.id.im_action_ys)
if (imActionJs != null && imActionYs != null) {
imActionJs.setOnClickListener { dialogEnd() }
// 设置结束按钮点击事件调用dialogEnd()方法
imActionYs.setOnClickListener {
// 设置延时按钮点击事件调用MvpPre的auctionDelay方法传入当前拍卖ID
MvpPre!!.auctionDelay(
SpUtil.getauctionId()
)
@@ -744,6 +755,8 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
if (visible) View.VISIBLE else View.INVISIBLE
}
// 根据传入的visible参数设置JS按钮的可见性
// 使用View.VISIBLE显示按钮使用View.INVISIBLE隐藏按钮
fun upYs(visible: Boolean) {
mBinding!!.roomTop.imActionYs.visibility =
if (visible) View.VISIBLE else View.INVISIBLE
@@ -820,7 +833,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
* 释放当前房间
*/
private fun releaseRoom() {
AgoraManager.getInstance(this).cleanup()
AgoraManager.getInstance().cleanup()
CommonAppContext.getInstance().isPlaying = false
CommonAppContext.getInstance().isShow = false
QXGiftPlayerManager.getInstance(applicationContext).destroyEffectSvga()
@@ -930,9 +943,9 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
mBinding!!.roomTop.btnFollow.text = "收藏"
}
if ((roomBean.type_id == "3" || roomBean.type_id == "1" || roomBean.type_id == "4") && roomBean.label_id == "2") {
AgoraManager.getInstance(this).isBjMusic = false
AgoraManager.getInstance().isBjMusic = false
} else {
AgoraManager.getInstance(this).isBjMusic = true
AgoraManager.getInstance().isBjMusic = true
}
@@ -1549,7 +1562,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} else {
if (customMusicFloatingView != null) {
customMusicFloatingView!!.destroy()
AgoraManager.getInstance(this@RoomActivity).desMusic()
AgoraManager.getInstance().desMusic()
isMusic = false
}
@@ -1605,20 +1618,20 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
if (customMusicFloatingView != null) {
customMusicFloatingView!!.destroy()
}
AgoraManager.getInstance(this@RoomActivity).desMusic()
AgoraManager.getInstance().desMusic()
if ((mRoomInfoResp!!.room_info.type_id == "1" || mRoomInfoResp!!.room_info.type_id == "4" ||
mRoomInfoResp!!.room_info.type_id == "3" || mRoomInfoResp!!.room_info.type_id == "8") &&
mRoomInfoResp!!.room_info.label_id == "2"
) {
for (roomPitBean in mRoomInfoResp!!.song_pit_list) {
AgoraManager.getInstance(this@RoomActivity).ClientRole(false)
AgoraManager.getInstance().ClientRole(false)
ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding)
mBinding?.rlMic?.visibility = View.GONE
}
if (mRoomInfoResp!!.song_user_info != null && mRoomInfoResp!!.song_user_info.user_id != null) {
if (mRoomInfoResp!!.song_user_info.user_id == SpUtil.getUserId().toString() + "") {
AgoraManager.getInstance(this@RoomActivity).ClientRole(false)
AgoraManager.getInstance().ClientRole(false)
ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding)
mBinding?.rlMic?.visibility = View.GONE
}
@@ -1719,7 +1732,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
if (userId == currentUserId && "9" == pitNumber) {
if (customMusicFloatingView != null) {
customMusicFloatingView!!.destroy()
AgoraManager.getInstance(this@RoomActivity).desMusic()
AgoraManager.getInstance().desMusic()
isMusic = false
}
mBinding!!.roomTop.rl.visibility = View.GONE
@@ -1844,12 +1857,134 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
}
}
private fun handleMsgType1001(messageEvent: RoomMessageEvent) {
if (messageEvent.text.fromUserInfo.user_id != SpUtil.getUserId()) {
number++
// private fun handleMsgType1001(messageEvent: RoomMessageEvent) {
// if (messageEvent.text.fromUserInfo.user_id != SpUtil.getUserId()) {
// number++
// }
// mBinding!!.roomTop.tvNum.text = number.toString()
// }
private var currentMqttView: View? = null // 正在播放
var decorView: ViewGroup? = null //礼物的
private fun handleMsgType1001(roomMessageEvent: RoomMessageEvent) {
if (roomMessageEvent.text.fromUserInfo.enter_image?.isNotEmpty() == true){
showFloatingMessage(roomMessageEvent.text.fromUserInfo)
}
mBinding!!.roomTop.tvNum.text = number.toString()
// number++
// mBinding!!.roomTop.tvNum.text = number.toString() + ""
}
private fun showFloatingMessage(userInfo: UserInfo) {
try {
// 清理之前的视图(如果存在)
if ( currentMqttView?.getParent() != null) {
val parent = currentMqttView?.getParent() as ViewGroup
parent.removeView(currentMqttView)
}
if (decorView == null) {
decorView = getWindow().getDecorView() as ViewGroup?
}
currentMqttView = LayoutInflater.from(this).inflate(R.layout.item_noble_piaoping, null)
val layoutParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT
)
layoutParams.topMargin = DisplayUtil.dip2px(this, 300f)
layoutParams.gravity = Gravity.TOP or Gravity.CENTER_HORIZONTAL
currentMqttView?.setLayoutParams(layoutParams)
decorView?.addView(currentMqttView)
currentMqttView?.let { updateFloatingViewData(it, userInfo) }
currentMqttView?.let {
resetAndStartMqttAnimation(it, Runnable {
// 清理当前视图
if (currentMqttView?.getParent() != null) {
val parent = currentMqttView?.getParent() as ViewGroup
parent.removeView(currentMqttView)
}
currentMqttView = null
})
}
} catch (e: java.lang.Exception) {
}
}
private fun resetAndStartMqttAnimation(view: View, onAnimationEnd: Runnable) {
try {
val screenWidth = getScreenWidth()
// 设置初始位置:在屏幕右侧外部(完全不可见)
view.setTranslationX(screenWidth.toFloat())
val enterAnim = TranslateAnimation(
Animation.ABSOLUTE, screenWidth.toFloat(),
Animation.ABSOLUTE, ((screenWidth - SystemUtils.getWidth(316)) / 2).toFloat(),
Animation.ABSOLUTE, 0f,
Animation.ABSOLUTE, 0f
)
enterAnim.setDuration(1500)
enterAnim.setInterpolator(DecelerateInterpolator(2.0f))
enterAnim.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation?) {
}
override fun onAnimationEnd(animation: Animation?) {
// 停留后退出
CommonAppContext.postDelayed(Runnable {
val exitAnim = TranslateAnimation(
Animation.ABSOLUTE, ((screenWidth - SystemUtils.getWidth(316)) / 2).toFloat(),
Animation.ABSOLUTE, -screenWidth.toFloat(),
Animation.ABSOLUTE, 0f,
Animation.ABSOLUTE, 0f
)
exitAnim.setDuration(3000)
exitAnim.setInterpolator(DecelerateInterpolator(2f))
exitAnim.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation?) {
}
override fun onAnimationEnd(animation: Animation?) {
// 移除视图并处理下一个
onAnimationEnd.run()
}
override fun onAnimationRepeat(animation: Animation?) {
}
})
view.startAnimation(exitAnim)
}, 5000) // 停留1秒
}
override fun onAnimationRepeat(animation: Animation?) {
}
})
view.startAnimation(enterAnim)
} catch (e: java.lang.Exception) {
LogUtils.e("MQTT动画启动失败", e)
onAnimationEnd.run()
}
}
private fun getScreenWidth(): Int {
val displayMetrics = DisplayMetrics()
if (getWindowManager() != null) {
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics)
return displayMetrics.widthPixels
}
return getResources().getDisplayMetrics().widthPixels
}
private fun updateFloatingViewData(view: View, userInfo: UserInfo) {
val textView = view.findViewById<TextView?>(R.id.tv_name)
val im_bj = view.findViewById<ImageView?>(R.id.im_bj)
textView.text = userInfo.enter_text
ImageUtils.loadHeadCC(userInfo.enter_image, im_bj)
}
private fun handleMsgType1002(messageEvent: RoomMessageEvent, text: T?) {
number--
@@ -1965,7 +2100,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
MessageListenerSingleton.getInstance().joinGroup(pendingRoomId)
MvpPre!!.getRoomIn(pendingRoomId, "")
lastSwitchedRoomId = pendingRoomId!!
AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId =
AgoraManager.getInstance().lastRoomId =
messageEvent.roomId
}
}
@@ -2057,9 +2192,9 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
val parsedText: RoomMessageEvent.text =
GsonUtils.fromJson(text, RoomMessageEvent.text::class.java)
if (parsedText.is_mute == 1) {
AgoraManagerEx.getInstance(this).muteLocalAudioStreamEx(true)
AgoraManagerEx.getInstance().muteLocalAudioStreamEx(true)
} else {
AgoraManagerEx.getInstance(this).muteLocalAudioStreamEx(false)
AgoraManagerEx.getInstance().muteLocalAudioStreamEx(false)
}
} catch (e: Exception) {
// Handle exception
@@ -2098,7 +2233,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
private fun handleMsgType126(messageEvent: RoomMessageEvent, text: T?) {
if (text == null) return
AgoraManager.getInstance(this)
AgoraManager.getInstance()
.setLocalAudioEnabled(false, text.fromUserInfo.user_id.toString() + "")
}
@@ -2291,7 +2426,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
mBinding!!.imVoive.setImageResource(com.xscm.moduleutil.R.mipmap.room_voice_kg)
voive = true
}
AgoraManager.getInstance(this).muteSpeaker(!voive)
AgoraManager.getInstance().muteSpeaker(!voive)
} else if (id == R.id.rl_more) { //点击PK
val fragment = RoomPkDialogFragment.newInstance(
roomId,
@@ -2414,7 +2549,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
CommonAppContext.getInstance().isPlaying = false
CommonAppContext.getInstance().isShow = false
QXGiftPlayerManager.getInstance(this).destroyEffectSvga()
AgoraManager.getInstance(this).cleanup()
AgoraManager.getInstance().cleanup()
MyRoomSingleton.getInstance().onExitRoom()
MessageListenerSingleton.quitGroup(roomId)
@@ -2518,15 +2653,15 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
fun switchMic(type: Int) {
if (type == 1) {
mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone)
AgoraManager.getInstance(this)
AgoraManager.getInstance()
.setLocalAudioEnabled(true, SpUtil.getUserId().toString() + "")
isSwith = false
AgoraManager.getInstance(this).muteLocalAudioStream(false)
AgoraManager.getInstance(this).ClientRole(true)
AgoraManager.getInstance().muteLocalAudioStream(false)
AgoraManager.getInstance().ClientRole(true)
CommonAppContext.getInstance().isMai = true
} else {
mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off)
AgoraManager.getInstance(this)
AgoraManager.getInstance()
.setLocalAudioEnabled(false, SpUtil.getUserId().toString() + "")
isSwith = true
isMute(1)
@@ -2611,7 +2746,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
val typeId = mRoomInfoResp!!.room_info.type_id
val labelId = mRoomInfoResp!!.room_info.label_id
val userPitNumber = mRoomInfoResp!!.user_info.pit_number
val userPitNumber = mRoomInfoResp?.user_info?.pit_number!!
// 情况1: typeId = 6 时,只显示消息按钮
if ("6" == typeId) {
@@ -2938,9 +3073,9 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
// mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.collect));
}
if ((roomBean.type_id == "3" || roomBean.type_id == "1" || roomBean.type_id == "4") && roomBean.label_id == "2") {
AgoraManager.getInstance(this).isBjMusic = false
AgoraManager.getInstance().isBjMusic = false
} else {
AgoraManager.getInstance(this).isBjMusic = true
AgoraManager.getInstance().isBjMusic = true
}
AgoraManager.stopMuisc()
@@ -3016,7 +3151,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
ivSoundEffects(false)
}
// }
if (mRoomInfoResp!!.user_info.user_id == SpUtil.getUserId()
if (mRoomInfoResp?.user_info?.user_id == SpUtil.getUserId()
&& mRoomInfoResp!!.user_info.pit_number == 9
&& mRoomInfoResp!!.room_info.type_id != "2"
&& mRoomInfoResp!!.room_info.type_id != "6"
@@ -3162,13 +3297,13 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
*/
fun initializeAudio() {
if (mRoomUserBean!!.pit_number != 0) {
AgoraManager.getInstance(this).ClientRole(true)
AgoraManager.getInstance(this).muteLocalAudioStream(false)
AgoraManager.getInstance().ClientRole(true)
AgoraManager.getInstance().muteLocalAudioStream(false)
} else {
AgoraManager.getInstance(this).ClientRole(false)
AgoraManager.getInstance(this).muteLocalAudioStream(true)
AgoraManager.getInstance().ClientRole(false)
AgoraManager.getInstance().muteLocalAudioStream(true)
}
AgoraManager.getInstance(this)
AgoraManager.getInstance()
.setLocalAudioEnabled(false, SpUtil.getUserId().toString() + "")
}
@@ -3385,7 +3520,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
customMusicFloatingView!!.setOnItemClickListener(object : OnMusicItemClickListener {
override fun onMinimize() {
customMusicFloatingView!!.destroy()
AgoraManager.getInstance(this@RoomActivity).desMusic()
AgoraManager.getInstance().desMusic()
isMusic = false
}
@@ -3398,20 +3533,20 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
override fun onPause() {
// ToastUtils.showShort("暂停播放");
// 调用播放器或通知 MusicView
AgoraManager.getInstance(this@RoomActivity).pauseMusic()
AgoraManager.getInstance().pauseMusic()
}
override fun onResume() {
// ToastUtils.showShort("恢复播放");
// 调用播放器或通知 MusicView
AgoraManager.getInstance(this@RoomActivity).resumeMusic()
AgoraManager.getInstance().resumeMusic()
}
override fun onNext() {
// ToastUtils.showShort("下一首");
// 切换歌曲
// List<Music> musicSongBeans = AgoraManager.getInstance(RoomActivity.this).getMusicList();
AgoraManager.nextSong()
AgoraManager.getInstance().nextSong()
}
})
// customMusicFloatingView.initView();
@@ -3484,8 +3619,8 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
}
// 恢复音频状态
if (AgoraManager.getInstance(this) != null) {
AgoraManager.getInstance(this).resumeMusic()
if (AgoraManager.getInstance() != null) {
AgoraManager.getInstance().resumeMusic()
}
// 清除最小化状态标志
@@ -3732,7 +3867,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
fun quit() {
CommonAppContext.getInstance().isPlaying = false
CommonAppContext.getInstance().isShow = false
AgoraManager.getInstance(this).cleanup()
AgoraManager.getInstance().cleanup()
MyRoomSingleton.getInstance().onExitRoom()
}
@@ -3743,10 +3878,10 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
fun jiaR() {
LogUtils.e(
"@@@",
"上一个房间的roonid" + AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId
"上一个房间的roonid" + AgoraManager.getInstance().lastRoomId
)
MvpPre?.getRoomIn(AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId, "")
AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId = ""
MvpPre?.getRoomIn(AgoraManager.getInstance().lastRoomId, "")
AgoraManager.getInstance().lastRoomId = ""
}
override fun userGuanzSuccess(s: String) {
@@ -3844,6 +3979,9 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
}
GiftDisplayManager.getInstance().clearAll()
mBinding!!.giftContainer.removeAllViews()
CommonAppContext.getInstance().isMai = false
CommonAppContext.getInstance().playId = null
// 确保父类的 onDestroy 被调用
super.finish()
}
@@ -3880,8 +4018,8 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
}
// 6. 清理 Agora 资源
// if (AgoraManager.getInstance(this) != null) {
// AgoraManager.getInstance(this).cleanup();
// if (AgoraManager.getInstance() != null) {
// AgoraManager.getInstance().cleanup();
// }
// 清理所有弹框
dismissAllDialogs()

View File

@@ -90,6 +90,11 @@ public class ChatRoomFragment extends BaseMvpFragment<ChatRoomPresenter, RoomFra
@Override
public void onDestroyView() {
onFragmentShowDestroy();
// 清理消息队列,避免内存泄漏
synchronized (queueLock) {
messageQueue.clear();
messageHandler.removeCallbacksAndMessages(null);
}
super.onDestroyView();
}
@@ -438,34 +443,37 @@ public class ChatRoomFragment extends BaseMvpFragment<ChatRoomPresenter, RoomFra
}
// 使用Handler将消息处理放到消息队列中避免阻塞
if (messageHandler.hasMessages(MSG_HANDLE_ROOM_MESSAGE)) {
// 如果队列中已有待处理消息,将当前消息加入队列
Message msg = Message.obtain();
msg.what = MSG_HANDLE_ROOM_MESSAGE;
msg.obj = message;
messageHandler.sendMessage(msg);
} else {
// 立即处理第一条消息
processRoomMessage(message);
// 标记有待处理消息
messageHandler.sendEmptyMessageDelayed(MSG_HANDLE_ROOM_MESSAGE, 100);
synchronized (queueLock) {
if (messageHandler.hasMessages(MSG_HANDLE_ROOM_MESSAGE)) {
// 如果队列中已有待处理消息,将当前消息加入队列
messageQueue.add(message);
} else {
// 立即处理第一条消息
processRoomMessage(message);
// 标记有待处理消息
messageHandler.sendEmptyMessageDelayed(MSG_HANDLE_ROOM_MESSAGE, 100);
}
}
}
private static final int MSG_HANDLE_ROOM_MESSAGE = 1001;
private final Handler messageHandler = new Handler(Looper.getMainLooper()) {
private List<RoomMessageEvent> messageQueue = new ArrayList<>();
// 将messageQueue移到类级别并添加同步控制
private final List<RoomMessageEvent> messageQueue = new ArrayList<>();
private final Object queueLock = new Object(); // 用于同步的锁对象
private final Handler messageHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(@NonNull Message msg) {
if (msg.what == MSG_HANDLE_ROOM_MESSAGE) {
if (!messageQueue.isEmpty()) {
// 批量处理消息
processBatchMessages(messageQueue);
messageQueue.clear();
} else if (msg.obj instanceof RoomMessageEvent) {
// 处理单条消息
processRoomMessage((RoomMessageEvent) msg.obj);
synchronized (queueLock) {
if (!messageQueue.isEmpty()) {
// 批量处理消息
processBatchMessages(new ArrayList<>(messageQueue)); // 创建副本避免并发修改
messageQueue.clear();
} else if (msg.obj instanceof RoomMessageEvent) {
// 处理单条消息
processRoomMessage((RoomMessageEvent) msg.obj);
}
}
}
}

View File

@@ -899,7 +899,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setrlMic(false);
((RoomActivity) getActivity()).ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding);
AgoraManager.getInstance(getActivity()).setLocalAudioEnabled(false, SpUtil.getUserId() + "");
AgoraManager.getInstance().setLocalAudioEnabled(false, SpUtil.getUserId() + "");
}
} else {
if (getActivity() instanceof RoomActivity) {

View File

@@ -131,10 +131,10 @@ public class MusicSongListFragment extends BaseMvpFragment<RequestPresenter, Fra
@Override
protected void initData() {
boolean b = AgoraManager.getInstance(getContext()).isBjMusic();
boolean b = AgoraManager.getInstance().isBjMusic();
if (b) {
List<MusicSongBean> musicSongBeans = new ArrayList<>();
List<Music> music = AgoraManager.getInstance(getContext()).getMusicList();
List<Music> music = AgoraManager.getInstance().getMusicList();
if (music != null && music.size() > 0) {
for (int i = 0; i < music.size(); i++) {
MusicSongBean musicSongBean = new MusicSongBean();

View File

@@ -131,7 +131,7 @@ public class RequestFragment extends BaseMvpFragment<RequestPresenter, FragmentR
public void afterTextChanged(Editable s) {
input = s.toString();
SpUtil.setMusicName( input);
AgoraManager.getInstance(getContext()).searchMusic(input, 1);
AgoraManager.getInstance().searchMusic(input, 1);
}
});
}
@@ -142,13 +142,13 @@ public class RequestFragment extends BaseMvpFragment<RequestPresenter, FragmentR
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
page++;
AgoraManager.getInstance(getContext()).searchMusic(mBinding.editQuery.getText().toString(), page);
AgoraManager.getInstance().searchMusic(mBinding.editQuery.getText().toString(), page);
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
page = 1;
AgoraManager.getInstance(getContext()).searchMusic(mBinding.editQuery.getText().toString(), page);
AgoraManager.getInstance().searchMusic(mBinding.editQuery.getText().toString(), page);
}
});
@@ -170,18 +170,18 @@ public class RequestFragment extends BaseMvpFragment<RequestPresenter, FragmentR
if (status==1) {
MvpPre.song(roomId, SpUtil.getUserId() + "", item.getSongCode() + "", item.getName(), item.getSinger(), item.getPoster(), String.valueOf(item.getDurationS()));
} else {
if (AgoraManager.getInstance(getContext()).getMusicList()==null) {
// AgoraManager.getInstance(getContext()).isPreload2(item.getSongCode(), 1);
if (AgoraManager.getInstance().getMusicList()==null) {
// AgoraManager.getInstance().isPreload(item.getSongCode(), 1);
List<Music> music = new ArrayList<>();
music.add(item);
AgoraManager.getInstance(getContext()).setMusicList(music);
AgoraManager.getInstance().setMusicList(music);
EventBus.getDefault().post(item);
AgoraManager.getInstance(getContext()).nextSong();
AgoraManager.getInstance().nextSong();
} else {
List<Music> music = AgoraManager.getInstance(getContext()).getMusicList();
List<Music> music = AgoraManager.getInstance().getMusicList();
music.add(item);
AgoraManager.getInstance(getContext()).setMusicList(music);
AgoraManager.getInstance().setMusicList(music);
}
}

View File

@@ -252,7 +252,7 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
} else {
isMicPlace = false;
ToastUtils.show("将停止屏幕共享");
AgoraManager.getInstance(getActivity()).stopScreenCapture();
AgoraManager.getInstance().stopScreenCapture();
mBinding.im3.setImageResource(com.xscm.moduleutil.R.mipmap.gongxiang);
CommonAppContext.getInstance().isMicPlace = false;
}
@@ -282,17 +282,17 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
if (type == 1) {
mBinding.im1.setImageResource(com.xscm.moduleutil.R.mipmap.close_m);
AgoraManager.getInstance(getActivity()).ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
AgoraManager.getInstance(getActivity()).setLocalAudioEnabled(true,SpUtil.getUserId()+"");
AgoraManager.getInstance().ClientRole(true);
AgoraManager.getInstance().muteLocalAudioStream(false);
AgoraManager.getInstance().setLocalAudioEnabled(true,SpUtil.getUserId()+"");
isShow = false;
CommonAppContext.getInstance().isShowAg=false;
} else {
mBinding.im1.setImageResource(com.xscm.moduleutil.R.mipmap.op_m);
AgoraManager.getInstance(getActivity()).ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
AgoraManager.getInstance(getActivity()).setLocalAudioEnabled(false,SpUtil.getUserId()+"");
AgoraManager.getInstance().ClientRole(true);
AgoraManager.getInstance().muteLocalAudioStream(true);
AgoraManager.getInstance().setLocalAudioEnabled(false,SpUtil.getUserId()+"");
isShow = true;
CommonAppContext.getInstance().isShowAg=true;
@@ -362,7 +362,7 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
// 调用退出房间方法
if (label_id!=null && label_id.equals(LABEL_ID_MOVIE)){
MvpPre.quitRoom(roomId, SpUtil.getUserId() + "");
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", AgoraManager.getInstance(getActivity()).getLastRoomId()).navigation();
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", AgoraManager.getInstance().getLastRoomId()).navigation();
return;
}
if (roomInfoResp != null) {
@@ -583,7 +583,7 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
((RoomActivity) getActivity()).quitRoom2(roomId);
if (label_id!=null && label_id.equals(LABEL_ID_MOVIE)){
((RoomActivity) getActivity()).jiaR();
//// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", AgoraManager.getInstance(getActivity()).getLastRoomId()).navigation();
//// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", AgoraManager.getInstance().getLastRoomId()).navigation();
return;
}else {
((RoomActivity) getActivity()).performExitRoom(1);
@@ -616,8 +616,8 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
private void joinChannel() {
AgoraManager.getInstance(getActivity()).updateChannelMediaOptions();
AgoraManager.getInstance(getActivity()).post();
AgoraManager.getInstance().updateChannelMediaOptions();
AgoraManager.getInstance().post();
}
/**

View File

@@ -418,9 +418,9 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (mRoomInfoResp.getUser_info().getPit_number() != 0) {
mRoomActivity.switchMic(CommonAppContext.getInstance().isMai?1:2);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(CommonAppContext.getInstance().isMai);
AgoraManager.getInstance().muteLocalAudioStream(CommonAppContext.getInstance().isMai);
} else {
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
AgoraManager.getInstance().muteLocalAudioStream(true);
}
}
@@ -461,7 +461,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (existingFragment != null) {
transaction.show(existingFragment);
} else {
callSpecificDestroyMethod(newFragment);
// callSpecificDestroyMethod(newFragment);
transaction.add(containerId, newFragment, tag);
}
transaction.commitAllowingStateLoss();
@@ -765,12 +765,12 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (getActivity() instanceof RoomActivity) {
RoomActivity roomActivity = (RoomActivity) getActivity();
if (!haveMe) {
AgoraManager.getInstance(getContext()).ClientRole(false);
AgoraManager.getInstance().ClientRole(false);
roomActivity.setrlMic(false);
AgoraManager.getInstance(getContext()).setLocalAudioEnabled(false, SpUtil.getUserId() + "");
AgoraManager.getInstance().setLocalAudioEnabled(false, SpUtil.getUserId() + "");
} else {
roomActivity.setrlMic(true);
if (AgoraManager.getInstance(getContext()).isLocalAudioEnabled()) {
if (AgoraManager.getInstance().isLocalAudioEnabled()) {
roomActivity.ivMic(com.xscm.moduleutil.R.mipmap.room_microphone);
} else {
// roomActivity.ivMic(com.xscm.moduleutil.R.mipmap.room_microphone_off);
@@ -779,9 +779,9 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
}
} else {
if (!user_id.equals(SpUtil.getUserId() + "") && getActivity() instanceof RoomActivity) {
AgoraManager.getInstance(getContext()).ClientRole(false);
AgoraManager.getInstance().ClientRole(false);
((RoomActivity) getActivity()).setrlMic(false);
AgoraManager.getInstance(getContext()).setLocalAudioEnabled(false, SpUtil.getUserId() + "");
AgoraManager.getInstance().setLocalAudioEnabled(false, SpUtil.getUserId() + "");
}
}
}

View File

@@ -126,10 +126,10 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
did = roomInfoResp.getSong_user_info().getDid();
if (roomInfoResp.getSong_user_info().getUser_id().equals(SpUtil.getUserId() + "")) {
setBz();
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()), 1);
AgoraManager.getInstance().isPreload(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()), 1);
} else {
if (AgoraManager.getInstance(getActivity()).isOnJoin()) {
AgoraManager.getInstance(getActivity()).loadLrc(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()));
if (AgoraManager.getInstance().isOnJoin()) {
AgoraManager.getInstance().loadLrc(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()));
}
}
musicSongBean = roomInfoResp.getSong_user_info();
@@ -200,12 +200,12 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
private void setBz(){
if (volumeManager.getBz(SpUtil.getUserId()+"")){
AgoraManager.getInstance(getActivity()).selectAudioTrack(0);
AgoraManager.getInstance().selectAudioTrack(0);
mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_on);
mBinding.tvBz.setText("原唱");
isRotate = false;
}else {
AgoraManager.getInstance(getActivity()).selectAudioTrack(1);
AgoraManager.getInstance().selectAudioTrack(1);
mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_off);
mBinding.tvBz.setText("伴奏");
isRotate = true;
@@ -218,8 +218,8 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
int[] volumes = volumeManager.getUserVolumes(SpUtil.getUserId()+"");
int musicVolume = volumes[0];
int playoutVolume = volumes[1];
AgoraManager.getInstance(getContext()).setMusicVolume(musicVolume); // 使用原始值(0-200
AgoraManager.getInstance(getContext()).setPlayoutVolume(playoutVolume);
AgoraManager.getInstance().setMusicVolume(musicVolume); // 使用原始值(0-200
AgoraManager.getInstance().setPlayoutVolume(playoutVolume);
}
@Override
@@ -515,7 +515,7 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
ToastUtils.showShort("暂时没有歌曲");
return;
}
AgoraManager.getInstance(getActivity()).stopMuisc();
AgoraManager.getInstance().stopMuisc();
MvpPre.changeSong(roomInfoResp.getRoom_info().getRoom_id(), did);
} else if (id == R.id.ll_ds) {
if (mBinding.muYc.pitBean.getUser_id() != null && !mBinding.muYc.pitBean.getUser_id().equals("")) {
@@ -530,13 +530,13 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
}
} else if (id == R.id.ll_bz) {
if (isRotate) {
AgoraManager.getInstance(getActivity()).selectAudioTrack(0);
AgoraManager.getInstance().selectAudioTrack(0);
mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_on);
mBinding.tvBz.setText("原唱");
isRotate = false;
volumeManager.saveBz(SpUtil.getUserId()+"",true);
} else {
AgoraManager.getInstance(getActivity()).selectAudioTrack(1);
AgoraManager.getInstance().selectAudioTrack(1);
mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_off);
mBinding.tvBz.setText("伴奏");
isRotate = true;
@@ -607,7 +607,7 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
position += 1000;
double duration = Math.ceil(position / 1000);
if (duration >= Double.parseDouble(musicSongBean.getDuration())) {
AgoraManager.getInstance(getActivity()).stopMuisc();
AgoraManager.getInstance().stopMuisc();
MvpPre.changeSong(roomInfoResp.getRoom_info().getRoom_id(), did);
}
}
@@ -647,17 +647,17 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
roomInfoResp.setSong_user_info(musicSongBean);
if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
AgoraManager.getInstance(getActivity());
AgoraManager.getInstance();
AgoraManager.stopMuisc();
LogUtils.e("推送过来的code", messageEvent.getText().getSongInfo().getSong_code());
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 1);
AgoraManager.getInstance().isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 1);
setAgorVolumes();
} else {
volumeManager.saveBz(SpUtil.getUserId()+"",true);
volumeManager.clearCurrentVolumes();
if (AgoraManager.getInstance(getActivity()).isOnJoin()) {
AgoraManager.getInstance(getActivity()).loadLrc(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()));
if (AgoraManager.getInstance().isOnJoin()) {
AgoraManager.getInstance().loadLrc(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()));
}
}
if (getActivity() instanceof RoomActivity) {
@@ -724,8 +724,8 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
}
if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
AgoraManager.getInstance().ClientRole(true);
AgoraManager.getInstance().muteLocalAudioStream(false);
} else {
b = false;
}
@@ -766,8 +766,8 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
}
if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(false);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
AgoraManager.getInstance().ClientRole(false);
AgoraManager.getInstance().muteLocalAudioStream(true);
} else {
b = false;
}

View File

@@ -554,12 +554,12 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
is_mute = 0;
aBoolean = false;
AgoraManagerEx.getInstance(getActivity()).muteAllRemoteAudioStreamsExUserId(false);
AgoraManager.getInstance().muteAllRemoteAudioStreamsExUserId(false);
} else {
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off);
is_mute = 1;
aBoolean = true;
AgoraManagerEx.getInstance(getActivity()).muteAllRemoteAudioStreamsExUserId(true);
AgoraManager.getInstance().muteAllRemoteAudioStreamsExUserId(true);
}
RoomMessageEvent.text text = new RoomMessageEvent.text();
text.setIs_mute(is_mute);
@@ -662,7 +662,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
LogUtils.e("pk_info", "" + roomInfoRespPk.getRoom_info().getRoom_id());
LogUtils.e("pk_info2", "" + roomInfoResp.getRoom_info().getRoom_id());
AgoraManagerEx.getInstance(CommonAppContext.getInstance())
AgoraManagerEx.getInstance()
.joinChannelEx(pkSwTokenBean.getAgora_token(), roomInfoRespPk.getRoom_info().getRoom_id(), pkUserId);
}
@@ -1075,6 +1075,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
pitBean.setSex(message.getText().getFromUserInfo().getSex() + "");
pitBean.setCharm(message.getText().getFromUserInfo().getCharm());
pitBean.setDress(message.getText().getFromUserInfo().getDress());
pitBean.setMic_cycle(message.getText().getFromUserInfo().getMic_cycle()!=null?message.getText().getFromUserInfo().getMic_cycle():"");
roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean);
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
@@ -1088,8 +1089,8 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
// 通知父 Fragment
if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
AgoraManager.getInstance().ClientRole(true);
AgoraManager.getInstance().muteLocalAudioStream(false);
} else {
b = false;
}
@@ -1108,6 +1109,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
pitBean.setSex("");
pitBean.setCharm("");
pitBean.setDress("");
pitBean.setMic_cycle("");
roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean);
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
@@ -1120,8 +1122,8 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
}
if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(false);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
AgoraManager.getInstance().ClientRole(false);
AgoraManager.getInstance().muteLocalAudioStream(true);
} else {
b = false;
}
@@ -1218,7 +1220,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
//释放定时器
releaseCountDownTimer();
if (roomInfoRespPk.getRoom_info() != null && roomInfoRespPk.getRoom_info().getRoom_id() != null) {
AgoraManagerEx.getInstance(getContext()).leaveChannelEx(roomInfoRespPk.getRoom_info().getRoom_id(), SpUtil.getUserId());
AgoraManagerEx.getInstance().leaveChannelEx(roomInfoRespPk.getRoom_info().getRoom_id(), SpUtil.getUserId());
}
MvpPre.postRoomInfo(roomId, "0", 2);
mBinding.imStart2.setVisibility(GONE);
@@ -1428,8 +1430,13 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
}
releaseCountDownTimer();
var rootContainer = WheatLayoutSingManager.Companion.getInstance().getRootContainer();
flexboxLayout.removeView(rootContainer);
// 添加空值检查
if (flexboxLayout != null) {
var rootContainer = WheatLayoutSingManager.Companion.getInstance().getRootContainer();
if (flexboxLayout.indexOfChild(rootContainer) >= 0) {
flexboxLayout.removeView(rootContainer);
}
}
if (wheatLayoutManager1 != null) {
wheatLayoutManager1.clear();
@@ -1437,12 +1444,20 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
if (wheatLayoutManager2 != null) {
wheatLayoutManager2.clear();
}
mBinding.flexboxLayout.removeAllViews();
mBinding.flexboxLayout2.removeAllViews();
// 添加对 mBinding 的空值检查
if (mBinding != null) {
if (mBinding.flexboxLayout != null) {
mBinding.flexboxLayout.removeAllViews();
}
if (mBinding.flexboxLayout2 != null) {
mBinding.flexboxLayout2.removeAllViews();
}
}
if (MvpPre != null) {
MvpPre.detachView();
}
}
}

View File

@@ -101,7 +101,7 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
@Override
protected void initData() {
MvpPre.getBanners();
MvpPre.getBanners("3");
MvpPre.getCarousels(1, 1, "10", "2", "");//顶部推荐
MvpPre.getCategories();
}

View File

@@ -95,7 +95,7 @@ public class HotListPresenter extends BasePresenter<HotListContacts.View> implem
LogUtils.e("token",token);
LogUtils.e("roomId:",roomId);
// 初始化 Agora 并加入房间
AgoraManager.getInstance(getView().getSelfActivity())
AgoraManager.getInstance()
.joinRoom(token, roomId, uid, enableMic,enableJs);
// 2. 加入房间
// rtcCore.joinRoom(token, roomId, uid, enableMic);

View File

@@ -58,10 +58,10 @@ public class RoomPresenter extends BasePresenter<RoomContacts.View> implements R
LogUtils.e("roomId:",roomId);
if (getView()!= null && getView().getSelfActivity()!=null){
AgoraManager.getInstance(getView().getSelfActivity())
AgoraManager.getInstance()
.joinRoom(token, roomId, uid, enableMic,enableJs);
}else {
AgoraManager.getInstance(mContext.getApplicationContext())
AgoraManager.getInstance()
.joinRoom(token, roomId, uid, enableMic,enableJs);
}
if (MvpRef==null){

View File

@@ -55,11 +55,11 @@ public class VoiceCategoryPresenter extends BasePresenter<VoiceCategoryContacts.
public void getMediaRoom(String label_id) {
}
public void getBanners() {
public void getBanners(String s) {
// Type listType = new TypeToken<List<BannerModel>>() {}.getType();
// List<BannerModel> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getHomeBanner(), listType);
// MvpRef.get().setBanners(restoredRoomModels);
api.getBanners(new BaseObserver<List<BannerModel>>() {
api.getBanners(s,new BaseObserver<List<BannerModel>>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
@@ -74,9 +74,8 @@ public class VoiceCategoryPresenter extends BasePresenter<VoiceCategoryContacts.
}
});
}
@Override
public void getCarousels(int type, int page, String page_limit, String is_top, String label_id) {
if (type == 1) {//这是获取顶部的推荐房间

View File

@@ -1,11 +1,11 @@
package com.example.modulevocal.activity.ui.main;
package com.xscm.modulemain.activity.user;
import static androidx.lifecycle.Transformations.map;
import androidx.arch.core.util.Function;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import java.util.List;

View File

@@ -1,30 +1,28 @@
package com.example.modulevocal.activity;
package com.xscm.modulemain.activity.user.activity;
import android.annotation.SuppressLint;
import android.graphics.Color;
import android.util.TypedValue;
import android.view.View;
import android.widget.TextView;
import androidx.viewpager2.widget.ViewPager2;
import com.example.modulevocal.R;
import com.example.modulevocal.activity.ui.main.GiftWallConacts;
import com.example.modulevocal.activity.ui.main.GiftWallPresenter;
import com.google.android.material.tabs.TabLayout;
import androidx.viewpager.widget.ViewPager;
import com.example.modulevocal.activity.ui.main.SectionsPagerAdapter;
import com.example.modulevocal.databinding.ActivityGiftWallBinding;
import com.google.android.material.tabs.TabLayoutMediator;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.bean.CombinedGiftBean;
import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.user.conacts.GiftWallConacts;
import com.xscm.modulemain.activity.user.presenter.GiftWallPresenter;
import com.xscm.modulemain.adapter.SectionsGifPagerAdapter;
import com.xscm.modulemain.databinding.ActivityGiftWallBinding;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.bean.RoomTypeModel;
import com.xscm.moduleutil.utils.SpUtil;
/**
* 礼物墙
*/
public class GiftWallActivity extends BaseMvpActivity<GiftWallPresenter, ActivityGiftWallBinding> implements GiftWallConacts.View {
SectionsPagerAdapter sectionsPagerAdapter;
SectionsGifPagerAdapter sectionsPagerAdapter;
@Override
protected void initData() {
@@ -35,7 +33,7 @@ public class GiftWallActivity extends BaseMvpActivity<GiftWallPresenter, Activit
// 在获取到数据后调用此方法初始化 ViewPager
private void setupViewPagerWithData(GiftUserWallBean data) {
sectionsPagerAdapter = new SectionsPagerAdapter(this, data);
sectionsPagerAdapter = new SectionsGifPagerAdapter(this, data);
ViewPager2 viewPager = mBinding.viewPager;
viewPager.setAdapter(sectionsPagerAdapter);
TabLayout tabs = mBinding.tabs;

View File

@@ -1,4 +1,6 @@
package com.example.modulevocal.activity;
package com.xscm.modulemain.activity.user.activity;
import static android.view.View.GONE;
import android.annotation.SuppressLint;
import android.content.Intent;
@@ -6,36 +8,31 @@ import android.graphics.LinearGradient;
import android.graphics.Shader;
import android.os.Build;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.GridView;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.viewpager2.widget.ViewPager2;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.GridNobleAdapter;
import com.example.modulevocal.adapter.NobliityBannerAdapter;
import com.example.modulevocal.conacts.NobleTitleConacts;
import com.example.modulevocal.databinding.ActivityNobleDetailsBinding;
import com.example.modulevocal.presenter.NobleTitlePresenter;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.user.conacts.NobleTitleConacts;
import com.xscm.modulemain.activity.user.presenter.NobleTitlePresenter;
import com.xscm.modulemain.adapter.GridNobleAdapter;
import com.xscm.modulemain.adapter.NobliityBannerAdapter;
import com.xscm.modulemain.databinding.ActivityNobleDetailsBinding;
import com.xscm.modulemain.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.*;
import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog;
import com.zhpan.bannerview.BannerViewPager;
import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.NobilitDeatils;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.NobilityPrice;
import com.zhpan.bannerview.constants.PageStyle;
import java.util.List;
import static android.view.View.GONE;
/**
* @Description: 这是爵位详情方案
* @Author: qx

View File

@@ -1,38 +1,43 @@
package com.example.modulevocal.activity;
package com.xscm.modulemain.activity.user.activity;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.content.Intent;
import android.graphics.Paint;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.NoblePrivilegeAdapter;
import com.example.modulevocal.conacts.NobleTitleConacts;
import com.example.modulevocal.databinding.ActivityNoblePaymentBinding;
import com.example.modulevocal.presenter.NobleTitlePresenter;
import com.hjq.toast.ToastUtils;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.user.conacts.NobleTitleConacts;
import com.xscm.modulemain.activity.user.presenter.NobleTitlePresenter;
import com.xscm.modulemain.adapter.NoblePrivilegeAdapter;
import com.xscm.modulemain.databinding.ActivityNoblePaymentBinding;
import com.xscm.modulemain.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.adapter.PayMethodAdapter;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.*;
import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.NobilitDeatils;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.NobilityPrice;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.event.PayEvent;
import com.xscm.moduleutil.utils.*;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.SpUtil;
import com.xscm.moduleutil.widget.PaymentUtil;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@@ -43,9 +48,6 @@ import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
/**
* @Description: 这是爵位支付方案
* @Author: qx

View File

@@ -1,53 +1,46 @@
package com.example.modulevocal.activity;
package com.xscm.modulemain.activity.user.activity;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.LinearGradient;
import android.graphics.Shader;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.alibaba.android.arouter.launcher.ARouter;
import com.example.modulevocal.R;
import com.example.modulevocal.conacts.NobleTitleConacts;
import com.example.modulevocal.databinding.ActivityNobleTitleBinding;
import com.example.modulevocal.presenter.NobleTitlePresenter;
import com.rmondjone.locktableview.LockTableView;
import com.rmondjone.xrecyclerview.ProgressStyle;
import com.rmondjone.xrecyclerview.XRecyclerView;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.base.BaseRoomContacts;
import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.user.conacts.NobleTitleConacts;
import com.xscm.modulemain.activity.user.presenter.NobleTitlePresenter;
import com.xscm.modulemain.databinding.ActivityNobleTitleBinding;
import com.xscm.modulemain.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.*;
import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.NobilitDeatils;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.NobilityPrice;
import com.xscm.moduleutil.bean.TableCellData;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.TimeUtils;
import java.util.ArrayList;
import java.util.List;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
/**
* @Description: 爵位展示页面
* @Author: qx
* @Data: 2022/4/18 21:05
*/
public class NobleTitleActivity extends BaseMvpActivity<NobleTitlePresenter, ActivityNobleTitleBinding> implements NobleTitleConacts.View {
public class NobleTitleActivity extends BaseMvpActivity<NobleTitlePresenter, ActivityNobleTitleBinding> implements com.xscm.modulemain.activity.user.conacts.NobleTitleConacts.View {
private LinearLayout mContentView;
private List<NobilitDeatils.nobilityPowerItem> mNobilityPowerItemList = new ArrayList<>();
private String lid;

View File

@@ -23,6 +23,7 @@ import com.xscm.modulemain.activity.user.presenter.SettingPresenter;
import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.dialog.YouthModelDialog;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.dialog.RealNameDialog;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.SpUtil;
@@ -50,6 +51,7 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
private int clickCount = 0;
private static final int REQUIRED_CLICKS = 6;
private UserInfo userInfo;
private Handler handler = new Handler();
private Runnable resetRunnable = new Runnable() {
@Override
@@ -60,7 +62,21 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
private static final long RESET_DELAY = 1000; // 1秒无操作自动重置
protected void initData() {
userInfo = SpUtil.getUserInfo();
mBinding.tvBbh.setText(CommonAppConfig.getInstance().getVersion());
if (userInfo != null) {
if (userInfo.getIs_hide() != null && userInfo.getIs_hide().equals("1")) {
mBinding.llQhdz.setVisibility(View.VISIBLE);
if (userInfo.getHide_status()!=null && userInfo.getHide_status().equals("1")){
mBinding.swit.setChecked(true);
}else {
mBinding.swit.setChecked(false);
}
} else {
mBinding.llQhdz.setVisibility(View.GONE);
}
}
}
@Override
@@ -89,6 +105,11 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
@SuppressLint("CheckResult")
private void onClick(View view) {
if (MvpPre == null) {
MvpPre = bindPresenter();
}
if (view.getId() == R.id.ll_youth) {
// startActivity(new Intent(this, UnderageActivity.class));
showYouthModelDialog();
@@ -137,7 +158,7 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
}
}).setNegativeButton("取消", null).create().show();
} else if (view.getId() == R.id.swit) {
if (mBinding.swit.isChecked()) {
/* if (mBinding.swit.isChecked()) {
ConfigManager.getInstance().switchEnvironment(EnvironmentEnum.PRODUCTION);
EnvironmentEnum selectedEnv = EnvironmentEnum.PRODUCTION;
EnvironmentPrefs prefs = new EnvironmentPrefs(this);
@@ -147,6 +168,11 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
EnvironmentEnum selectedEnv = EnvironmentEnum.TEST;
EnvironmentPrefs prefs = new EnvironmentPrefs(this);
prefs.setSelectedEnvironment(selectedEnv);
}*/
if (mBinding.swit.isChecked()) {
MvpPre.getModifyHideStatus("1");
} else {
MvpPre.getModifyHideStatus("0");
}
} else if (view.getId() == R.id.ll_tcdl) {
new AlertDialog.Builder(this).setMessage("确定要退出登录吗?")

View File

@@ -1,6 +1,7 @@
package com.example.modulevocal.activity.ui.main;
package com.xscm.modulemain.activity.user.conacts;
import android.app.Activity;
import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView;
import com.xscm.moduleutil.bean.GiftUserWallBean;

View File

@@ -4,7 +4,11 @@ import android.app.Activity;
import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView;
import com.xscm.moduleutil.bean.BannerModel;
import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.bean.WalletBean;
import java.util.List;
public final class MeConacts {
@@ -16,9 +20,9 @@ public final class MeConacts {
void hideSkill(boolean hideSkill);
// void isFirstRecharge(EntranceCheckBean entranceCheckBean);
void wallet(WalletBean walletBean);
// void setMemberList(GuardMemberBean guardMemberBean);
void setBanners(List<BannerModel> bannerModels);
}
public interface IMePre extends IPresenter {
@@ -33,6 +37,9 @@ public final class MeConacts {
void entranceCheckFirstRecharge();
void getMemberList(String userId, int page);
void wallet();
}
}

View File

@@ -1,9 +1,14 @@
package com.example.modulevocal.conacts;
package com.xscm.modulemain.activity.user.conacts;
import android.app.Activity;
import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView;
import com.xscm.moduleutil.bean.*;
import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.NobilitDeatils;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.NobilityPrice;
import java.util.List;

View File

@@ -15,5 +15,7 @@ public class SettingConacts {
void clearLoginInfo();
void cancel();
void getModifyHideStatus(String hide_status);
}
}

View File

@@ -1,4 +1,4 @@
package com.example.modulevocal.activity.ui.main;
package com.xscm.modulemain.activity.user.fragment;
import android.content.Context;
import android.os.Bundle;
@@ -6,14 +6,16 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.example.modulevocal.databinding.FragmentGiftWallBinding;
import com.xscm.modulemain.activity.user.PageViewModel;
import com.xscm.modulemain.adapter.GiftWallAdapter;
import com.xscm.modulemain.databinding.FragmentGiftWallBinding;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;

View File

@@ -114,11 +114,24 @@ public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter,
} else {
mBinding.slidingTabLayout.setCurrentTab(0);
}
mBinding.headerInfo.rivUserHead.setData(userInfo.getAvatar(), "", userInfo.getSex() + "");
mBinding.headerInfo.rivUserHead.setData(userInfo.getAvatar(), "", userInfo.getNobility_image());
String sex = userInfo.getSex()==1?"":"";
mBinding.headerInfo.tvUserId.setText(sex+" | ID:"+userInfo.getUser_code());
mBinding.headerInfo.tvNickName.setText(userInfo.getNickname());
mBinding.headerInfo.tvUserId.setText(userInfo.getUser_code());
mBinding.headerInfo.tvNickName.setTextColor( (userInfo.getNickname_color()!=null && !userInfo.getNickname_color().equals(""))?Color.parseColor(userInfo.getNickname_color()):Color.parseColor("#333333"));
// mBinding.headerInfo.tvUserId.setText(userInfo.getUser_code());
mBinding.headerInfo.tvAge.setText(userInfo.getAge() + "");
mBinding.headerInfo.tvJj.setText(userInfo.getProfile());
if (userInfo.getIs_use_code()==1){
mBinding.headerInfo.imBeautiful.setVisibility(View.VISIBLE);
}else {
mBinding.headerInfo.imBeautiful.setVisibility(View.GONE);
}
LinearLayout llContainer = mBinding.headerInfo.llImageContainer;
llContainer.removeAllViews(); // 清空旧的 ImageView

View File

@@ -6,6 +6,7 @@ import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
@@ -15,7 +16,14 @@ import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.stx.xhb.xbanner.XBanner;
import com.tencent.mm.opensdk.modelbiz.WXOpenCustomerServiceChat;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.user.activity.GiftWallActivity;
import com.xscm.modulemain.activity.user.activity.NobleTitleActivity;
import com.xscm.modulemain.activity.user.activity.RechargeActivity;
import com.xscm.modulemain.databinding.FragmentVocalRangeBinding;
import com.xscm.modulemain.activity.user.activity.BlacklistActivity;
import com.xscm.modulemain.activity.user.activity.DailyTasksActivity;
@@ -31,7 +39,9 @@ import com.xscm.modulemain.activity.user.presenter.MePresenter;
import com.xscm.modulemain.activity.WebViewActivity;
import com.xscm.moduleutil.base.BaseMvpFragment;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.BannerModel;
import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.SpUtil;
@@ -90,18 +100,51 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
// mBinding.meMyCustom.setOnClickListener(this::onClick);
// mBinding.meMyHelp.setOnClickListener(this::onClick);
mBinding.ivSz.setOnClickListener(this::onClick);
mBinding.beautifulViewCopy.setOnClickListener(this::onClick);
mBinding.tvCopy.setOnClickListener(this::onClick);
// mBinding.meMyShare.setOnClickListener(this::onClick);
mBinding.tvHome.setOnClickListener(this::onClick);
mBinding.meDressUp.setOnClickListener(this::onClick);
mBinding.tvMyWallet.setOnClickListener(this::onClick);
mBinding.meDaily.setOnClickListener(this::onClick);
mBinding.meMyGuild.setOnClickListener(this::onClick);
mBinding.tvMyShopping.setOnClickListener(this::onClick);
mBinding.llMeGuild.setOnClickListener(this::onClick);
mBinding.llMyShopping.setOnClickListener(this::onClick);
mBinding.imMyRoom.setOnClickListener(this::onClick);
mBinding.meMyDan.setOnClickListener(this::onClick);
mBinding.ivHb.setOnClickListener(this::onClick);
mBinding.ivKf.setOnClickListener(this::onClick);
mBinding.ivFk.setOnClickListener(this::onClick);
mBinding.llRecharge.setOnClickListener(this::onClick);
mBinding.llMeIncome.setOnClickListener(this::onClick);
mBinding.llMeHelp.setOnClickListener(this::onClick);
mBinding.llGiftWall.setOnClickListener(this::onClick);
mBinding.clNobleTitle.setOnClickListener(this::onClick);
mBinding.banner.loadImage(new XBanner.XBannerAdapter() {
@Override
public void loadBanner(XBanner banner, Object model, View view, int position) {
BannerModel bannerModel = (BannerModel) model;
ImageUtils.loadCenterCrop((String) bannerModel.getXBannerUrl(), (ImageView) view);
}
});
mBinding.banner.setOnItemClickListener(new XBanner.OnItemClickListener() {
@Override
public void onItemClick(XBanner banner, Object model, View view, int position) {
// if (ProxyChecker.isProxySet(context)) {
// ToastUtils.show("使用代理禁止访问");
// return;
// }
/**
* 1房间2文章3链接 其他详情图
*
* type=1时该值表示房间idtype=2时表示文章id
*/
BannerModel bannerModel = (BannerModel) model;
Intent intent=new Intent(getActivity(), WebViewActivity.class);
intent.putExtra("url", bannerModel.getUrl());
intent.putExtra("title", "防骗指南");
startActivity(intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", bannerModel.getUrl()).withString("title", "首页横幅").navigation();
}
});
}
@@ -109,6 +152,8 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
public void onResume() {
super.onResume();
MvpPre.getMyInfo();
MvpPre.wallet();
MvpPre.getBanners("6");
// MvpPre.getMemberList(SpUtils.getUserId(), 1);
}
@@ -126,12 +171,12 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
Intent intent=new Intent(getContext(), BlacklistActivity.class);
intent.putExtra("type",0);
startActivity(intent);
}else if (id==R.id.me_my_guild){
}else if (id==R.id.ll_me_guild){
Intent intent=new Intent(getContext(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/union/index?id="+SpUtil.getToken());
intent.putExtra("title", "公会");
startActivity(intent);
}else if (id==R.id.tv_my_shopping){
}else if (id==R.id.ll_my_shopping){
Intent intent=new Intent(getContext(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/prop/propMall?id="+SpUtil.getToken());
intent.putExtra("title", "道具商城");
@@ -181,13 +226,18 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
startActivity(new Intent(getContext(), DailyTasksActivity.class));
}
else if (id == R.id.iv_sz) {//设置
startActivity(new Intent(getContext(), SettingActivity.class));
// startActivity(new Intent(getContext(), SettingActivity.class));
Intent intent = new Intent(getContext(), SettingActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("userInfo", userInfo);
intent.putExtras(bundle);
startActivity(intent);
}else if (id == R.id.me_my_dan){//等级
Intent intent = new Intent(getContext(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/other/grade?id=" + SpUtil.getToken());
intent.putExtra("title", "等级");
startActivity(intent);
}else if (id == R.id.iv_kf){//反馈
}else if (id == R.id.ll_me_help){//反馈
Intent intent = new Intent(getContext(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/feedback/help?id=" + SpUtil.getToken());
// intent.putExtra("url", "http://192.168.110.17:8080/web/index.html#/pages/feedback/help?id=" + SpUtil.getToken());
@@ -198,8 +248,23 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/other/income?id=" + SpUtil.getToken());
intent.putExtra("title", "邀请");
startActivity(intent);
}else if (id==R.id.beautiful_view_copy){
}else if (id==R.id.tv_copy){
copyComment(mBinding.beautifulView.getText().toString());
}else if (id==R.id.ll_recharge){//充值
startActivity(new Intent(getActivity(), RechargeActivity.class));
}else if (id==R.id.ll_me_income){
String appId = CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId(); // 填移动应用(App)的 AppId
IWXAPI api = WXAPIFactory.createWXAPI(getContext(), appId);
// 判断当前版本是否支持拉起客服会话
WXOpenCustomerServiceChat.Req req = new WXOpenCustomerServiceChat.Req();
req.corpId = "ww1de4300858c0b461"; // 企业ID
req.url = "https://work.weixin.qq.com/kfid/kfcb3d23a59c188a0e7"; // 客服URL
api.sendReq(req);
}else if (id==R.id.ll_gift_wall){//我的页面的礼物墙
startActivity(new Intent(getContext(), GiftWallActivity.class));
}else if (id==R.id.cl_noble_title){//爵位展示页面
startActivity(new Intent(getContext(), NobleTitleActivity.class));
}
}
private void copyComment(String content) {
@@ -245,12 +310,21 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
public void myInfoSuccess(UserInfo data) {
SpUtil.saveUserInfo(data);
this.userInfo = data;
mBinding.rivUserHead.setData(data.getAvatar(), data.getDress(), String.valueOf(data.getSex()));
mBinding.rivUserHead.setData(data.getAvatar(), data.getDress(),data.getNobility_image());
mBinding.tvNickName.setText(data.getNickname());
mBinding.beautifulView.setText("ID:"+data.getUser_code());
mBinding.tvNickName.setTextColor( (data.getNickname_color()!=null&& !data.getNickname_color().equals(""))? Color.parseColor(data.getNickname_color()): Color.parseColor("#ffffff"));
String sex = data.getSex()==1?"":"";
mBinding.beautifulView.setText(sex+" | ID:"+data.getUser_code());
mBinding.tvFollow.setText(data.getFollow_num()+"");
mBinding.tvFans.setText(data.getFans_num()+"");
mBinding.tvFriends.setText(data.getLook_me_num()+"");
if (data.getIs_use_code()==1){
mBinding.imBeautiful.setVisibility(View.VISIBLE);
}else {
mBinding.imBeautiful.setVisibility(View.GONE);
}
if (data.getAuth()==1){
SpUtil.setRealName(true);
}else {
@@ -298,26 +372,16 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
public void hideSkill(boolean hideSkill) {
}
@Override
public void wallet(WalletBean walletBean) {
mBinding.tvIcon.setText(walletBean.getCoin());
}
/**
* 首充有礼显示
*/
// @Override
// public void isFirstRecharge(EntranceCheckBean entranceCheckBean) {
//// if (entranceCheckBean != null) {
//// mBinding.ivFirstCharge.setVisibility(entranceCheckBean.isAllow_show() ? View.VISIBLE : View.GONE);
//// }
// }
@Override
public void setBanners(List<BannerModel> bannerModels) {
mBinding.banner.setBannerData(com.xscm.moduleutil.R.layout.index_image_banner, bannerModels);
}
/**
* 获取守护数
*/
// @Override
// public void setMemberList(GuardMemberBean guardMemberBean) {
//// if (guardMemberBean != null) {
//// mBinding.tvGuardNum.setText(guardMemberBean.getHead().getTotal_number());
//// }
// }
private void copyUserId(CharSequence content) {
ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(CLIPBOARD_SERVICE);
@@ -327,85 +391,6 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
}
}
// private List<MeItemBean> initItems() {
// List<MeItemBean> items = new ArrayList<>();
// // 成为大神
// MeItemBean skill = new MeItemBean(true, true);
// skill.setIcon(R.mipmap.me_icon_cwds);
// skill.setName("成为大神");
// skill.setType("skill");
// items.add(skill);
// // 我的订单
//// MeItemBean order = new MeItemBean(true, false);
//// order.setIcon(R.mipmap.me_icon_wddd);
//// order.setName("我的订单");
//// order.setType("order");
//// items.add(order);
//// // 评价订单
//// MeItemBean pjOrder = new MeItemBean(true, false);
//// pjOrder.setIcon(R.mipmap.me_icon_pjdd);
//// pjOrder.setName("评价订单");
//// pjOrder.setType("pjOrder");
//// items.add(pjOrder);
// // 我的等级
// MeItemBean wdDengji = new MeItemBean(true, true);
// wdDengji.setIcon(R.mipmap.me_icon_wddj);
// wdDengji.setName("我的等级");
// wdDengji.setType("wdDengji");
// items.add(wdDengji);
// // 我的公会
// MeItemBean wdGonghui = new MeItemBean(true, true);
// wdGonghui.setIcon(R.mipmap.me_icon_wdgh);
// wdGonghui.setName("我的公会");
// wdGonghui.setType("wdGonghui");
// items.add(wdGonghui);
//// // 邀请有礼
//// MeItemBean yqYouli = new MeItemBean(true, true);
//// yqYouli.setIcon(R.mipmap.me_icon_yqyl);
//// yqYouli.setName("邀请有礼");
//// yqYouli.setType("yqYouli");
//// items.add(yqYouli);
// // 实名认证
// MeItemBean verified = new MeItemBean(false, true);
// verified.setIcon(R.mipmap.me_icon_smrz);
// verified.setName("实名认证");
// verified.setType("verified");
// items.add(verified);
//
// return items;
// }
// private List<MeItemBean> initItems2() {
// List<MeItemBean> items = new ArrayList<>();
// // 在线客服
// MeItemBean customerService = new MeItemBean(true, true);
// customerService.setType("customer_service");
// customerService.setName("在线客服");
// customerService.setIcon(R.mipmap.me_icon_service);
// items.add(customerService);
// // 帮助中心
// MeItemBean helpCenter = new MeItemBean(true, true);
// helpCenter.setType("help_center");
// helpCenter.setName("帮助中心");
// helpCenter.setIcon(R.mipmap.me_icon_help);
// items.add(helpCenter);
// // 设置
// MeItemBean settings = new MeItemBean(false, true);
// settings.setType("settings");
// settings.setName("设置");
// settings.setIcon(R.mipmap.me_icon_setting);
// items.add(settings);
//
// return items;
// }
/**
* 关闭首充入口
*/
// @Subscribe(threadMode = ThreadMode.MAIN)
// public void closeFirstCharge(CloseFirstChargeEvent closeFirstChargeEvent) {
//// mBinding.ivFirstCharge.setVisibility(View.GONE);
// }
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {

View File

@@ -12,15 +12,17 @@ import com.xscm.moduleutil.utils.cos.CosUploadManager;
import com.xscm.moduleutil.utils.oss.OSSOperUtils;
import java.io.File;
import java.lang.ref.WeakReference;
import java.util.List;
import io.reactivex.disposables.Disposable;
public class EditUserPresenter extends BasePresenter<EditUserConactos.View> implements EditUserConactos.IMePre {
EditUserConactos.View mView;
public EditUserPresenter(EditUserConactos.View view, Context context) {
super(view, context);
mView = view;
}
@Override
public void topicList(String page, String page_limit) {
@@ -85,6 +87,9 @@ public class EditUserPresenter extends BasePresenter<EditUserConactos.View> impl
@Override
public void onNext(UserInfo userInfo) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().getUserHomeSuccess(userInfo);
}
});

View File

@@ -1,9 +1,12 @@
package com.example.modulevocal.activity.ui.main;
package com.xscm.modulemain.activity.user.presenter;
import android.content.Context;
import com.xscm.modulemain.activity.user.conacts.GiftWallConacts;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter;
import io.reactivex.disposables.Disposable;
/**

View File

@@ -3,16 +3,23 @@ package com.xscm.modulemain.activity.user.presenter;
import android.content.Context;
import com.xscm.modulemain.activity.user.conacts.MeConacts;
import com.xscm.moduleutil.bean.BannerModel;
import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter;
import java.lang.ref.WeakReference;
import java.util.List;
import io.reactivex.disposables.Disposable;
public class MePresenter extends BasePresenter<MeConacts.View> implements MeConacts.IMePre {
MeConacts.View mView;
public MePresenter(MeConacts.View view, Context context) {
super(view, context);
mView = view;
}
@Override
@@ -164,28 +171,39 @@ public class MePresenter extends BasePresenter<MeConacts.View> implements MeCona
}
public void getConfig() {
// api.appUpdate(new com.qpyy.libcommon.http.BaseObserver<AppUpdateModel>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(AppUpdateModel appUpdateModel) {
// String channelId = "default";
// try {
// channelId = MetaDataUtils.getMetaDataInApp("TD_CHANNEL_ID");
// } catch (Exception e) {
// e.printStackTrace();
// }
// MvpRef.get().hideSkill(appUpdateModel != null && appUpdateModel.getChannels() != null && appUpdateModel.getChannels().contains(channelId));
// }
//
// @Override
// public void onComplete() {
//
// }
// });
@Override
public void wallet() {
api.wallet(new BaseObserver<WalletBean>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(WalletBean walletBean) {
MvpRef.get().wallet(walletBean);
}
});
}
public void getBanners(String s) {
// Type listType = new TypeToken<List<BannerModel>>() {}.getType();
// List<BannerModel> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getHomeBanner(), listType);
// MvpRef.get().setBanners(restoredRoomModels);
api.getBanners(s,new BaseObserver<List<BannerModel>>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(List<BannerModel> bannerModels) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().setBanners(bannerModels);
}
});
}
}

View File

@@ -1,17 +1,23 @@
package com.example.modulevocal.presenter;
package com.xscm.modulemain.activity.user.presenter;
import android.content.Context;
import com.example.modulevocal.conacts.MeConacts;
import com.example.modulevocal.conacts.NobleTitleConacts;
import com.xscm.moduleutil.bean.*;
import com.xscm.modulemain.activity.user.conacts.NobleTitleConacts;
import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.NobilitDeatils;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.NobilityPrice;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter;
import io.reactivex.disposables.Disposable;
import org.jetbrains.annotations.NotNull;
import java.lang.ref.WeakReference;
import java.util.List;
import io.reactivex.disposables.Disposable;
/**
* com.example.modulevocal.presenter
* qx

View File

@@ -51,7 +51,7 @@ public class RechargePresenter extends BasePresenter<RechargeConactos.View> impl
@Override
public void appPay(String user_id, String money, String coin, String type, String type_params, String type_id) {
api.appPay(user_id, money, coin, type,type_params,type_id, new BaseObserver<AppPay>() {
api.appPay(user_id, money, coin, type,type_params,type_id,"", new BaseObserver<AppPay>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);

View File

@@ -6,13 +6,18 @@ import com.xscm.modulemain.activity.user.conacts.SettingConacts;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter;
import org.jetbrains.annotations.NotNull;
import java.lang.ref.WeakReference;
import io.reactivex.disposables.Disposable;
public class SettingPresenter extends BasePresenter<SettingConacts.View> implements SettingConacts.IMePre {
private SettingConacts.View mView;
public SettingPresenter(SettingConacts.View view, Context context) {
super(view, context);
mView = view;
}
@Override
public void clearLoginInfo() {
api.clearLoginInfo(new BaseObserver<String>() {
@@ -23,6 +28,9 @@ public class SettingPresenter extends BasePresenter<SettingConacts.View> impleme
@Override
public void onNext(String s) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().clearLoginInfo(s);
}
});
@@ -39,8 +47,26 @@ public class SettingPresenter extends BasePresenter<SettingConacts.View> impleme
@Override
public void onNext(String s) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().cancel(s);
}
});
}
@Override
public void getModifyHideStatus(String hide_status) {
api.getModifyHideStatus(hide_status, new BaseObserver<String>() {
@Override
public void onSubscribe(@NotNull Disposable d) {
addDisposable(d);
}
@Override
public void onNext(@NotNull String s) {
}
});
}
}

View File

@@ -45,7 +45,7 @@ public class BlackAdapter extends BaseQuickAdapter<BlackUserBean, BaseViewHolder
@Override
protected void convert(BaseViewHolder helper, BlackUserBean item) {
MeHeadView headView = helper.getView(R.id.im_user);
headView.setData(item.getAvatar(), "", item.getSex() + "");
headView.setData(item.getAvatar(), "", "");
helper.setText(R.id.tv_nick_name, item.getNickname());
TextView imageView= helper.getView(R.id.im_g);
helper.setText(R.id.tv_oline, item.getIs_online() == 1 ? "[在线]" : "[离线]");

View File

@@ -35,7 +35,9 @@ import com.xscm.moduleutil.bean.GiftBean;
import com.xscm.moduleutil.bean.RoomMessageEvent;
import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.bean.room.EMMessageInfo;
import com.xscm.moduleutil.bean.room.EmotionDeatils;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.MeHeadView;
import com.xscm.moduleutil.utils.logger.Logger;
import com.xscm.moduleutil.widget.AdaptiveImageView;
import com.xscm.moduleutil.widget.GifAvatarOvalView;
@@ -45,6 +47,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/**
@@ -209,9 +212,11 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
emojiImageView.setVisibility(View.VISIBLE);
helper.getView(com.xscm.moduleutil.R.id.tv_content).setVisibility(View.GONE);
MeHeadView avatar = helper.getView(com.xscm.moduleutil.R.id.avatar);
avatar.setData(emMessage.getText().getFromUserInfo().getAvatar(), "", emMessage.getText().getFromUserInfo().getNobility_image());
ImageUtils.loadHeadCC(emMessage.getText().getFromUserInfo().getAvatar(), helper.getView(com.xscm.moduleutil.R.id.avatar));
helper.setText(com.xscm.moduleutil.R.id.tv_name, emMessage.getText().getFromUserInfo().getNickname());
// helper.setText(com.xscm.moduleutil.R.id.tv_name, emMessage.getText().getFromUserInfo().getNickname());
helper.setTextColor(com.xscm.moduleutil.R.id.tv_name, emMessage.getText().getFromUserInfo().getNickname_color()!=null && !emMessage.getText().getFromUserInfo().getNickname_color().isEmpty()? Color.parseColor(emMessage.getText().getFromUserInfo().getNickname_color()):Color.parseColor("#CCA882"));
if (emMessage.getText().getText() != null) {
helper.setText(com.xscm.moduleutil.R.id.tv_content, getSpannable(emMessage));
}
@@ -270,9 +275,16 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
String uniqueId = emMessage.getRoomId() + "_" + helper.getLayoutPosition();
emojiImageView.setTag(uniqueId);
if (Objects.equals(emMessage.getText().getEmoji().getAnimate_image(), "") ||
emMessage.getText().getEmoji().getAnimate_image().isEmpty()) {
//这段代码使用 Optional 链式调用安全地获取 emMessage 中的 animate_image 字段,避免空指针异常。如果任意环节为 null则返回空字符串。
String animateImage = Optional.ofNullable(emMessage)
.map(RoomMessageEvent::getText)
.map(RoomMessageEvent.T::getEmoji)
.map(EmotionDeatils::getAnimate_image)
.orElse("");
// if (Objects.equals(emMessage.getText().getEmoji().getAnimate_image(), "") ||
// emMessage.getText().getEmoji().getAnimate_image().isEmpty()) {
if (!animateImage.isEmpty()){
// 检查视图是否仍属于当前数据项
if (uniqueId.equals(emojiImageView.getTag())) {
ImageUtils.loadHeadCC(emMessage.getText().getEmoji().getImage(), emojiImageView);
@@ -280,35 +292,42 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
return;
}
// 使用 RequestListener 监听加载完成
Glide.with(mContext)
.load(emMessage.getText().getEmoji().getAnimate_image())
.listener(new RequestListener<Drawable>() {
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target,
DataSource dataSource, boolean isFirstResource) {
// 检查视图是否仍属于当前数据项
if (uniqueId.equals(emojiImageView.getTag())) {
// 加载完成后执行
new Handler().postDelayed(() -> {
// 再次检查视图状态
if (uniqueId.equals(emojiImageView.getTag())) {
Glide.with(mContext)
.load(emMessage.getText().getEmoji().getImage())
.into(emojiImageView);
}
}, 1500);
if (!emMessage.getText().getEmoji().getAnimate_image().isEmpty()) {
// 使用 RequestListener 监听加载完成
Glide.with(mContext)
.load(emMessage.getText().getEmoji().getAnimate_image())
.listener(new RequestListener<Drawable>() {
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target,
DataSource dataSource, boolean isFirstResource) {
// 检查视图是否仍属于当前数据项
if (uniqueId.equals(emojiImageView.getTag())) {
// 加载完成后执行
new Handler().postDelayed(() -> {
// 再次检查视图状态
if (uniqueId.equals(emojiImageView.getTag())) {
Glide.with(mContext)
.load(emMessage.getText().getEmoji().getImage())
.into(emojiImageView);
}
}, 1500);
}
return false;
}
return false;
}
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target,
boolean isFirstResource) {
return false;
}
})
.into(emojiImageView);
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target,
boolean isFirstResource) {
return false;
}
})
.into(emojiImageView);
}else {
Glide.with(mContext)
.load(emMessage.getText().getEmoji().getImage())
.into(emojiImageView);
}
} else {
helper.getView(com.xscm.moduleutil.R.id.tv_content).setVisibility(View.VISIBLE);
emojiImageView.setVisibility(View.GONE);
@@ -573,7 +592,7 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
public void onViewRecycled(@NonNull BaseViewHolder holder) {
Logger.e("onViewRecycled", "onViewRecycled");
// AdaptiveImageView imEmj = (AdaptiveImageView)holder.getView(com.xscm.moduleutil.R.id.im_emj);
GifAvatarOvalView avatarOvalView = holder.getView(com.xscm.moduleutil.R.id.avatar);
MeHeadView avatarOvalView = holder.getView(com.xscm.moduleutil.R.id.avatar);
ImageView ivNobility = holder.getView(com.xscm.moduleutil.R.id.iv_nobility);
ImageView ivCharm = holder.getView(com.xscm.moduleutil.R.id.iv_charm);
@@ -592,7 +611,6 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
// 清理其他图片
if (avatarOvalView != null) {
avatarOvalView.setImageDrawable(null);
Glide.with(avatarOvalView.getContext()).clear(avatarOvalView);
}
if (ivNobility != null) {

View File

@@ -2,6 +2,7 @@ package com.xscm.modulemain.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.hjq.toast.ToastUtils;
import com.xscm.modulemain.R;
import com.xscm.moduleutil.bean.room.EmotionDeatils;
import com.xscm.moduleutil.utils.ImageUtils;
@@ -28,9 +29,17 @@ public class EmotionAdapter extends BaseQuickAdapter<EmotionDeatils, BaseViewHol
protected void convert(BaseViewHolder helper, EmotionDeatils item) {
ImageUtils.loadHeadCC(item.getImage(), helper.getView(R.id.iv_emotion));
helper.setText(R.id.tv_emotion_name, item.getName());
if (item.is_lock()==0){
helper.setVisible(R.id.iv_select,false);
}else {
helper.setVisible(R.id.iv_select,true);
}
// 设置点击事件
helper.itemView.setOnClickListener(v -> {
if (item.is_lock()==1){
ToastUtils.show("当前属于爵位专属,请先开通爵位");
return;
}
if (onEmotionClickListener != null) {
onEmotionClickListener.onEmotionClick(item);
}

View File

@@ -1,5 +1,6 @@
package com.xscm.modulemain.adapter;
import android.graphics.Color;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -53,6 +54,7 @@ public class ExpandColumnAdapter extends BaseQuickAdapter<ExpandColumnBean, Base
helper.setText(R.id.tv_agree,(item.getAgree()!=null?item.getAgree():"0")+"");
//昵称
helper.setText(R.id.dy_name_text, item.getNickname());
helper.setTextColor(R.id.dy_name_text,(item.getNickname_color()!=null && !item.getNickname_color().isEmpty())? Color.parseColor(item.getNickname_color()):Color.parseColor("#333333"));
helper.setText(R.id.tv_address, item.getLoginip());
if (item.getUser_id().equals(SpUtil.getUserId()+"")){
helper.setVisible(R.id.gensui, false);
@@ -77,7 +79,7 @@ public class ExpandColumnAdapter extends BaseQuickAdapter<ExpandColumnBean, Base
//头像
// ImageUtils.loadHeadCC(item.getAvatar(), (ImageView) helper.getView(R.id.dy_head_image));
MeHeadView headView = helper.getView(R.id.dy_head_image);
headView.setData(item.getAvatar(), "", item.getSex());
headView.setData(item.getAvatar(), "", item.getNobility_image());
if (item.getHome_bgimages() != null && !item.getHome_bgimages().isEmpty()) {
// String[] arrIv = item.getHome_bgimages().toArray(new String[item.getHome_bgimages().size()]);

View File

@@ -1,4 +1,4 @@
package com.example.modulevocal.activity.ui.main;
package com.xscm.modulemain.adapter;
import android.view.LayoutInflater;
import android.view.View;
@@ -6,15 +6,14 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.TopUsersAdapter;
import com.xscm.modulemain.R;
import com.xscm.moduleutil.bean.CombinedGiftBean;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.ImageLoader;
import com.xscm.moduleutil.utils.ImageUtils;

View File

@@ -1,24 +1,16 @@
package com.example.modulevocal.adapter;
package com.xscm.modulemain.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.modulevocal.R;
import com.example.modulevocal.activity.ui.main.GiftWallAdapter;
import com.xscm.moduleutil.bean.CombinedGiftBean;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.modulemain.R;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.utils.ImageLoader;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.widget.CircularImage;
import java.util.ArrayList;
import java.util.List;
/**

View File

@@ -1,8 +1,8 @@
package com.example.modulevocal.adapter;
package com.xscm.modulemain.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevocal.R;
import com.xscm.modulemain.R;
import com.xscm.moduleutil.bean.NobilityPrice;
/**

View File

@@ -1,9 +1,8 @@
package com.example.modulevocal.adapter;
package com.xscm.modulemain.adapter;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.modulevocal.R;
import com.xscm.modulemain.R;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.TopRoom;
import com.xscm.moduleutil.utils.ImageLoader;

View File

@@ -38,7 +38,7 @@ public class SearchUserResultAdapter extends BaseQuickAdapter<UserResultResp, Ba
helper.setText(R.id.dy_name_text, KeyWordUtil.matcherSearchTitle(Color.parseColor("#FFBC00"), item.getNickname(), keyWord));
helper.setText(R.id.tv_id, "ID:" + item.getUser_code());
MeHeadView headView = helper.getView(R.id.dy_head_image);
headView.setData(item.getHead_picture(), "", item.getSex());
headView.setData(item.getHead_picture(), "", "");
// if (item.getUser_id().equals(SpUtil.getUserId() + "")) {
// helper.setVisible(R.id.gensui, false);
// } else {

View File

@@ -1,12 +1,14 @@
package com.example.modulevocal.activity.ui.main;
package com.xscm.modulemain.adapter;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.fragment.app.*;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import java.io.Serializable;
@@ -15,7 +17,7 @@ import java.io.Serializable;
* A [FragmentPagerAdapter] that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentStateAdapter {
public class SectionsGifPagerAdapter extends FragmentStateAdapter {
@StringRes
private static final int[] TAB_TITLES = new int[]{com.xscm.moduleutil.R.string.tab_text_1, com.xscm.moduleutil.R.string.tab_text_2};
@@ -28,7 +30,7 @@ public class SectionsPagerAdapter extends FragmentStateAdapter {
// this.giftData = giftData;
// }
public SectionsPagerAdapter(@NonNull FragmentActivity fragmentActivity, GiftUserWallBean giftData) {
public SectionsGifPagerAdapter(@NonNull FragmentActivity fragmentActivity, GiftUserWallBean giftData) {
super(fragmentActivity);
this.mContext = fragmentActivity;
this.giftData = giftData;

View File

@@ -6,6 +6,7 @@ import static android.view.View.VISIBLE;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -376,9 +377,12 @@ public class RoomUserInfoFragment extends BaseMvpDialogFragment<RoomUserPresente
@Override
public void getRoomUserInfo(UserInfo userInfo1) {
this.userInfo = userInfo1;
mBinding.ivAvatar.setData(userInfo.getAvatar(), "", userInfo.getSex() + "");
mBinding.ivAvatar.setData(userInfo.getAvatar(), "", userInfo.getNobility_image() + "");
String sex = userInfo.getSex()==1?"":"";
mBinding.tvId.setText(sex+" | ID:"+userInfo.getUser_code());
mBinding.tvName.setText(userInfo.getNickname());
mBinding.tvId.setText("ID:" + userInfo.getUser_code());
mBinding.tvName.setTextColor( (userInfo.getNickname_color()!=null && !userInfo.getNickname_color().equals(""))? Color.parseColor(userInfo.getNickname_color()):Color.parseColor("#333333"));
// mBinding.tvId.setText("ID:" + userInfo.getUser_code());
if (userInfo.getIs_in_pit() == 1) {
mBinding.roomMCz.setText("下麦");
} else {

View File

@@ -120,15 +120,15 @@ public class SoundEffectsDialogFragment extends BaseMvpDialogFragment<WheatPrese
mBinding.tvSure.setOnClickListener(v -> {
if (selectedPosition != -1){
if (selectedPosition == 0){
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "xs.mp3").getPath());
AgoraManager.getInstance().potexao(new File(getSavePath() + "xs.mp3").getPath());
}else if (selectedPosition == 1){
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "hh.mp3").getPath());
AgoraManager.getInstance().potexao(new File(getSavePath() + "hh.mp3").getPath());
}else if (selectedPosition == 2){
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "gg.mp3").getPath());
AgoraManager.getInstance().potexao(new File(getSavePath() + "gg.mp3").getPath());
}else if (selectedPosition == 3){
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "zs.mp3").getPath());
AgoraManager.getInstance().potexao(new File(getSavePath() + "zs.mp3").getPath());
}else if (selectedPosition == 4){
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "mmd.mp3").getPath());
AgoraManager.getInstance().potexao(new File(getSavePath() + "mmd.mp3").getPath());
}
}

View File

@@ -105,7 +105,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
mBinding.swMonitoring.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
AgoraManager.getInstance(getContext()).enableHeadphoneMonitor(b);
AgoraManager.getInstance().enableHeadphoneMonitor(b);
//耳返设置完保存本地
SpUtil.setAuricularBack(b ? 1 : 0);
}
@@ -135,7 +135,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
int percentage = (int) ((progress / 200.0) * 100);
mBinding.tvSeekbarValue.setText("人声" + percentage + "%");
SpUtil.setMusicVolume(progress); // 保存原始值(0-200)
AgoraManager.getInstance(getContext()).setMusicVolume(progress); // 使用原始值(0-200)
AgoraManager.getInstance().setMusicVolume(progress); // 使用原始值(0-200)
// 保存当前用户的音量设置
volumeManager.saveCurrentVolumes(
mBinding.seekBar1.getProgress(),
@@ -167,7 +167,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mBinding.tvSeekbarValue2.setText("伴奏" + progress + "%");
SpUtil.settPlayoutVolume(progress);
AgoraManager.getInstance(getContext()).setPlayoutVolume(progress);
AgoraManager.getInstance().setPlayoutVolume(progress);
// 保存当前用户的音量设置
volumeManager.saveCurrentVolumes(
mBinding.seekBar1.getProgress(),
@@ -204,7 +204,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
MixerResp item = tunerAdapter.getItem(position);
// MvpPre.setUserMixer(roomId, item.getId());
// RtcManager.getInstance().setTone(item.getId());
AgoraManager.getInstance(mContext).setTone(item.getId());
AgoraManager.getInstance().setTone(item.getId());
}
});
@@ -225,7 +225,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
// 执行选中项的操作
MixerResp item = tunerAdapter2.getItem(position);
AgoraManager.getInstance(mContext).setTone(item.getId());
AgoraManager.getInstance().setTone(item.getId());
// MvpPre.setUserMixer(roomId, item.getId());
// RtcManager.getInstance().setTone(item.getId());
}
@@ -245,12 +245,12 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
mBinding.seekBar1.setMax(200);
mBinding.seekBar1.setProgress(musicVolume);
mBinding.tvSeekbarValue.setText("人声" + musicPercentage + "%");
AgoraManager.getInstance(getContext()).setMusicVolume(musicVolume); // 使用原始值(0-200)
AgoraManager.getInstance().setMusicVolume(musicVolume); // 使用原始值(0-200)
// 更新伴奏音量
mBinding.seekBar2.setProgress(playoutVolume);
// int playoutPercentage = (int) ((playoutVolume / 200.0) * 100);
mBinding.tvSeekbarValue2.setText("伴奏" + playoutVolume + "%");
AgoraManager.getInstance(getContext()).setPlayoutVolume(playoutVolume);
AgoraManager.getInstance().setPlayoutVolume(playoutVolume);
}
@Override

View File

@@ -147,7 +147,7 @@ public class RoomManager {
LogUtils.e("token", token);
LogUtils.e("roomId:", roomId);
// 初始化 Agora 并加入房间
AgoraManager.getInstance(context)
AgoraManager.getInstance()
.joinRoom(token, roomId, uid, enableMic, enableJs);
cacheRoomData(roomId, resp);
navigateToRoom(context, roomId, password, resp, false, taskId);

View File

@@ -467,6 +467,7 @@ class WheatLayoutSingManager private constructor(
sex = ""
user_code = ""
dress_picture = ""
mic_cycle = ""
}
view.setData(view.pitBean)
}

View File

@@ -64,7 +64,7 @@
android:layout_marginStart="@dimen/dp_4"
android:layout_toRightOf="@+id/im_1"
android:gravity="left|center"
android:text="111111000"
tools:text="111111000"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_28" />
</RelativeLayout>

View File

@@ -229,34 +229,45 @@
<!-- android:layout_marginEnd="@dimen/dp_20"-->
<!-- android:layout_marginBottom="@dimen/dp_100"-->
<!-- android:src="@mipmap/shouchl"/>-->
<com.stx.xhb.xbanner.XBanner
android:id="@+id/banner"
android:layout_width="@dimen/dp_75"
android:layout_height="@dimen/dp_85"
<com.xscm.moduleutil.widget.DropHomeView
android:id="@+id/dvr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_100"
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
app:AutoPlayTime="3000"
app:pageChangeDuration="3000"
app:pointContainerPosition="BOTTOM"
app:pointNormal="@mipmap/room_ic_banner_point_normal"
app:pointSelect="@mipmap/room_ic_banner_point_select"
app:pointTopBottomPadding="@dimen/dp_2"
app:pointsPosition="CENTER"
app:pointsVisibility="true" />
android:gravity="center_vertical"
android:orientation="horizontal"
android:visibility="gone"
tools:visibility="visible">
<com.stx.xhb.xbanner.XBanner
android:id="@+id/banner"
android:layout_width="@dimen/dp_75"
android:layout_height="@dimen/dp_85"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_100"
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
app:AutoPlayTime="3000"
app:pageChangeDuration="3000"
app:pointContainerPosition="BOTTOM"
app:pointNormal="@mipmap/room_ic_banner_point_normal"
app:pointSelect="@mipmap/room_ic_banner_point_select"
app:pointTopBottomPadding="@dimen/dp_2"
app:pointsPosition="CENTER"
app:pointsVisibility="true" />
</com.xscm.moduleutil.widget.DropHomeView>
<RelativeLayout
android:id="@+id/cool_wait_view"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:visibility="gone">
<app.dinus.com.loadingdrawable.LoadingView
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"

View File

@@ -60,7 +60,7 @@
android:layout_marginStart="@dimen/dp_4"
android:layout_toRightOf="@+id/im_1"
android:gravity="left|center"
android:text="111111000"
tools:text="111111000"
android:textColor="@color/colorWhite100"
android:textSize="@dimen/sp_28" />
</RelativeLayout>

View File

@@ -111,6 +111,34 @@
android:layout_alignParentBottom="true"
android:background="@color/color_FFE5E5E5" />
<LinearLayout
android:id="@+id/ll_qhdz"
style="@style/My_Info_Item_LL_Style"
android:background="@drawable/bg_r15_white"
android:visibility="gone"
tools:visibility="visible"
>
<TextView
style="@style/My_Info_Item_Title_Style"
android:text="是否隐身" />
<Switch
android:id="@+id/swit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right|center"
android:gravity="right"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_alignParentBottom="true"
android:background="@color/color_e2e2e2" />
<LinearLayout
android:id="@+id/ll_shb"
style="@style/My_Info_Item_LL_Style"
@@ -236,33 +264,6 @@
android:layout_alignParentBottom="true"
android:background="@color/color_e2e2e2" />
<LinearLayout
android:id="@+id/ll_qhdz"
style="@style/My_Info_Item_LL_Style"
android:layout_marginTop="@dimen/dp_12"
android:background="@drawable/bg_r15_white"
android:visibility="gone"
>
<TextView
style="@style/My_Info_Item_Title_Style"
android:text="@string/change_address" />
<Switch
android:id="@+id/swit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right|center"
android:gravity="right"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_alignParentBottom="true"
android:background="@color/color_e2e2e2" />
<LinearLayout
android:id="@+id/ll_qhzh"

View File

@@ -65,7 +65,7 @@
android:layout_marginStart="@dimen/dp_4"
android:layout_toRightOf="@+id/im_1"
android:gravity="left|center"
android:text="111111000"
tools:text="111111000"
android:textColor="@color/colorWhite100"
android:textSize="@dimen/sp_28" />
</RelativeLayout>

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:padding="8dp">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_85"
xmlns:tools="http://schemas.android.com/tools"
>
<ImageView
android:id="@+id/iv_emotion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
tools:src="@mipmap/ic_launcher"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:id="@+id/iv_emotion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
tools:src="@mipmap/ic_launcher"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginBottom="@dimen/dp_10"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_emotion_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_4"
android:ellipsize="end"
android:maxLines="1"
android:gravity="center"
android:textColor="#BBB9C6"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_emotion" />
android:id="@+id/tv_emotion_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_4"
android:ellipsize="end"
android:maxLines="1"
android:gravity="center"
android:textColor="#BBB9C6"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_emotion" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"
android:src="@mipmap/noble_is_lock"
android:scaleType="fitCenter"
android:id="@+id/iv_select"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -108,7 +108,8 @@
android:gravity="center"
android:text="0"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
android:textSize="@dimen/sp_12"
android:visibility="gone"/>
<ImageView

View File

@@ -71,7 +71,8 @@
android:layout_height="@dimen/dp_20"
android:text="ID:"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12" />
android:textSize="@dimen/sp_12"
android:visibility="gone"/>
<TextView
android:id="@+id/tv_user_id"
@@ -81,6 +82,16 @@
android:textSize="@dimen/sp_12"
tools:text="123131" />
<ImageView
android:id="@+id/im_beautiful"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_11"
android:layout_marginLeft="5dp"
app:layout_constraintStart_toEndOf="@+id/tv_copy"
app:layout_constraintTop_toTopOf="@+id/tv_copy"
android:scaleType="fitCenter"
android:src="@mipmap/beautiful"/>
</LinearLayout>
<TextView

View File

@@ -66,19 +66,19 @@ android {
// // 测试版配置
beta {
// dimension "environment"
dimension "environment"
// // 测试版包名:基础包名 + .betacom.example.myapp.beta
// applicationIdSuffix ".beta"
applicationIdSuffix ".beta"
// // 测试版版本名1.0-beta
// versionNameSuffix "-beta"
versionNameSuffix "-beta"
//
// // 【测试版应用名称】动态生成带标识的名称
// resValue "string", "app_name", "羽声-测试版"
resValue "string", "app_name", "羽声-测试版"
//
// // 【测试版图标】替换为测试专用图标
// manifestPlaceholders = [
// appIcon: "@mipmap/ic_launcher_app_bat" // 需在main/res/mipmap放置该图标
// ]
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher_app_bat" // 需在main/res/mipmap放置该图标
]
}
}

View File

@@ -46,7 +46,8 @@ public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
// 支付成功:这里需要调用后台接口确认支付状态(避免本地判断不可靠)
PayEvent messageEvent = new PayEvent(1, "支付成功");
EventBus.getDefault().post(messageEvent);
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
checkPayResultFromServer();

View File

@@ -59,6 +59,11 @@ legacySupportV4 = "1.0.0"
fragmentKtx = "1.5.6"
interpolator = "1.0.0"
material3Android = "1.4.0"
uiToolingPreviewAndroid = "1.9.4"
tilesToolingPreview = "1.5.0"
constraintlayoutVersion = "2.2.1"
[libraries]
alipay-alipaysdk-android = { module = "com.alipay.sdk:alipaysdk-android", version.ref = "alipayAlipaysdkAndroid" }
android-flexbox = { module = "com.google.android:flexbox", version.ref = "flexboxVersion" }
@@ -118,6 +123,10 @@ androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version
androidx-legacy-support-v4 = { group = "androidx.legacy", name = "legacy-support-v4", version.ref = "legacySupportV4" }
androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragmentKtx" }
androidx-interpolator = { group = "androidx.interpolator", name = "interpolator", version.ref = "interpolator" }
androidx-material3-android = { group = "androidx.compose.material3", name = "material3-android", version.ref = "material3Android" }
androidx-ui-tooling-preview-android = { group = "androidx.compose.ui", name = "ui-tooling-preview-android", version.ref = "uiToolingPreviewAndroid" }
androidx-tiles-tooling-preview = { group = "androidx.wear.tiles", name = "tiles-tooling-preview", version.ref = "tilesToolingPreview" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayoutVersion" }
[plugins]

View File

@@ -62,4 +62,4 @@ include ':tuiconversation'
include ':tuicore'
//include ':moduleroom'
include ':Loadinglibrary'
include 'locktableview'