1:修改时间选择框,根据需要,展示时分秒和不显示时分秒
2:修改展示设备id,在头部信息中,使用第三方的获取设备唯一id 3:优化群聊成员列表展示 4:修改房间封面,上传图片的时候,需要裁剪 5:添加营业时间展示 6:pk修改开始的时候,选择时间去掉1分钟 7:修改声网,添加声卡开关
This commit is contained in:
@@ -137,7 +137,7 @@ public class CommonAppContext extends MultiDexApplication implements Application
|
||||
@Getter
|
||||
public UnreadCountEvent unreadCountEvent;
|
||||
|
||||
public static int selectRelease = 1;
|
||||
public static int selectRelease = -1;
|
||||
|
||||
public int is_open = 0;//主题的开关
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ package com.xscm.moduleutil.bean
|
||||
class GroupBean {
|
||||
var guild_id: String = ""
|
||||
var guild_cover: String = ""
|
||||
var is_deacon: Int = 0 //是否是群主 1:是 ,其他的不是
|
||||
var is_deacon: Int = 0 //是否是群主 1:是 ,其他的不是 2:管理员 3:普通成员
|
||||
var user_list: List<GroupUserBean> = ArrayList()
|
||||
|
||||
var name: String = ""
|
||||
@@ -27,6 +27,7 @@ class GroupBean {
|
||||
var role_str: String = ""
|
||||
var in_room_id: Int = 0 //是否在房间内 1:在 0:不在
|
||||
var is_mute: Int = 0 //是否被禁言 1:是 0:不是
|
||||
var group_role : Int = 0 //群角色 1:群主 2:管理员 3:普通成员
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -19,4 +19,6 @@ public class PkRoomInfo implements Serializable {
|
||||
private String pk_part;;//2:等待开始、3:进行中、4:惩罚阶段
|
||||
private String pk_end_times;
|
||||
private int receive_pk_user_id = -2;//接受pk的用户id
|
||||
|
||||
private String close_users="";//关闭pk麦克风的用户id
|
||||
}
|
||||
|
||||
@@ -65,6 +65,10 @@ public class RoomSettingBean implements MultiItemEntity {
|
||||
public static final int QXRoomSettingTypeRoomTimeSpace = 34;//时空之巅
|
||||
public static final int QXRoomSettingTypeRoomTimeRedSound = 35;//红包声音
|
||||
|
||||
public static final int QXRoomSettingTypeRoomBusinessTime = 37;//营业时间
|
||||
|
||||
|
||||
|
||||
public static final int ITEM_TYPE_DEFAULT = 0;
|
||||
public static final int ITEM_TYPE_WITH_ICON = 1;
|
||||
|
||||
|
||||
@@ -360,7 +360,7 @@ public interface ApiServer {
|
||||
@GET(Constants.GET_CUSTOM_GIFT_LIST)
|
||||
Call<BaseModel<List<RoonGiftModel>>> getCustomGiftList(@Query("user_id") String user_id);
|
||||
|
||||
@GET(Constants.GET_NEW_GIFT_LIST)
|
||||
@GET(Constants.GET_NEW_GIFT_LIST) //拍卖位选择拍卖礼物,type=3 label =99
|
||||
Call<BaseModel<List<RoonGiftModel>>> getNewGiftList(@Query("label") int label, @Query("type") String type );
|
||||
|
||||
@GET(Constants.SET_CUSTOM_GIFT)
|
||||
@@ -528,6 +528,10 @@ public interface ApiServer {
|
||||
@POST(Constants.postRoomSwToken)
|
||||
Call<BaseModel<PkSwTokenBean>> postRoomSwToken(@Field("room_id") String roomId);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST(Constants.POST_CLOSE_PK_MIC)
|
||||
Call<BaseModel<String>> closePkMic(@Field("pk_id") String pk_id,@Field("type") String type,@Field("user_id") String user_id);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST(Constants.SET_USER_DECORATE)
|
||||
Call<BaseModel<String>> setUserDecorate(@Field("udid") String udid);
|
||||
@@ -749,6 +753,10 @@ public interface ApiServer {
|
||||
@GET(Constants.GET_BLIND_BOX_STATUS)
|
||||
Call<BaseModel<List<BlindBoxStatus>>> blindBoxStatus();
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST(Constants.SET_ROOM_BUSINESS_TIME)
|
||||
Call<BaseModel<String>> setRoomBusinessTime(@Field("room_id") String roomId,@Field("start_time") String startTime,@Field("end_time") String endTime);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST(Constants.POST_END_SONG)
|
||||
Call<BaseModel<String>> endSong(@Field("room_id") String roomId);
|
||||
@@ -770,7 +778,7 @@ public interface ApiServer {
|
||||
Call<BaseModel<List<RoomCharmRankBean>>> getCharmRank(@Field("room_id") String roomId);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST(Constants.POST_ROOM_RELATION_LIST)
|
||||
@POST(Constants.POST_ROOM_RELATION_LIST) //1:真爱拍 2:亲密拍 3:星球(互娱)
|
||||
Call<BaseModel<List<RoomRelationBean>>> roomRelationList(@Field("type") String type);
|
||||
|
||||
@FormUrlEncoded
|
||||
|
||||
@@ -749,7 +749,7 @@ public class RetrofitClient {
|
||||
|
||||
@Override
|
||||
public void onResponse(Call<BaseModel<GroupUserListBean>> call, Response<BaseModel<GroupUserListBean>> response) {
|
||||
if (response.code() == 200) {
|
||||
if (response.code() == 200) {
|
||||
BaseModel<GroupUserListBean> baseModel = response.body();
|
||||
if (baseModel.getCode() == 1)
|
||||
observer.onNext(baseModel.getData());
|
||||
@@ -3363,7 +3363,6 @@ public class RetrofitClient {
|
||||
setCode301(indexRecommendRoomBaseModel.getMsg());
|
||||
}
|
||||
} else {
|
||||
ToastUtils.showLong("首页房间推荐异常", response.code());
|
||||
LogUtils.e("首页房间推荐", response.message());
|
||||
}
|
||||
}
|
||||
@@ -4654,6 +4653,33 @@ public class RetrofitClient {
|
||||
});
|
||||
}
|
||||
|
||||
public void setRoomBusinessTime(String roomId,String start_time,String end_time, BaseObserver<String> observer) {
|
||||
sApiServer.setRoomBusinessTime(roomId,start_time,end_time).enqueue(new Callback<BaseModel<String>>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
|
||||
if (response.code() == 200) {
|
||||
BaseModel<String> baseModel = response.body();
|
||||
if (baseModel.getCode() == 1)
|
||||
ToastUtils.showLong(baseModel.getMsg());
|
||||
else if (baseModel.getCode() == 301) {
|
||||
setCode301(baseModel.getMsg());
|
||||
}else if (baseModel.getCode() == 0) {
|
||||
ToastUtils.showLong(baseModel.getMsg());
|
||||
}
|
||||
}else {
|
||||
ToastUtils.showLong("设置营业时间失败,", response.code());
|
||||
LogUtils.e("setRoomBusinessTime", response.message());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
|
||||
LogUtils.e("setRoomBusinessTime", t.fillInStackTrace());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void endSong(String room_id, BaseObserver<String> observer) {
|
||||
sApiServer.endSong(room_id).enqueue(new Callback<BaseModel<String>>() {
|
||||
@Override
|
||||
@@ -5343,6 +5369,33 @@ public class RetrofitClient {
|
||||
});
|
||||
}
|
||||
|
||||
public void closePkMic(String pk_id ,String type ,String user_id,BaseObserver<String> observer) {
|
||||
sApiServer.closePkMic(pk_id,type,user_id).enqueue(new Callback<BaseModel<String>>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
|
||||
if (response.code() == 200) {
|
||||
BaseModel<String> baseModel = response.body();
|
||||
if (baseModel.getCode() == 1) {
|
||||
observer.onNext(baseModel.getMsg());
|
||||
} else if (baseModel.getCode() == 301) {
|
||||
setCode301(baseModel.getMsg());
|
||||
} else if (baseModel.getCode() == 0) {
|
||||
ToastUtils.showShort(baseModel.getMsg());
|
||||
}
|
||||
} else {
|
||||
ToastUtils.showLong("数据错误", response.code());
|
||||
LogUtils.e("closePkMic", response.message());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
|
||||
LogUtils.e("closePkMic", t.fillInStackTrace());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void removeBlackList(String user_id, BaseObserver<String> observer) {
|
||||
sApiServer.removeBlackList(user_id).enqueue(new Callback<BaseModel<String>>() {
|
||||
@Override
|
||||
|
||||
@@ -94,7 +94,7 @@ import io.reactivex.disposables.Disposable;
|
||||
public class AgoraManager {
|
||||
|
||||
private static volatile AgoraManager instance;
|
||||
public RtcEngineEx rtcEngine;
|
||||
public RtcEngineEx rtcEngine;
|
||||
// private RtcEngineEx rtcEngineEx;
|
||||
private Context context;
|
||||
private boolean isLocalAudioEnabled = true; // 默认开启麦克风
|
||||
@@ -230,6 +230,9 @@ public class AgoraManager {
|
||||
"}" +
|
||||
"}");
|
||||
rtcEngine.setParameters("{\"che.video.mobile_1080p\":true}");
|
||||
|
||||
setEnable();
|
||||
|
||||
} catch (Exception e) {
|
||||
LogUtils.w("AgoraManager", "Failed to set parameters", e);
|
||||
}
|
||||
@@ -242,6 +245,7 @@ public class AgoraManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static int calculateScreenAngle(int orientation) {
|
||||
if (orientation >= 315 || orientation < 45) {
|
||||
return 0; // 竖屏(0度)
|
||||
@@ -253,6 +257,7 @@ public class AgoraManager {
|
||||
return 270; // 横屏左(270度)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 加入语音聊天房间
|
||||
*/
|
||||
@@ -281,6 +286,7 @@ public class AgoraManager {
|
||||
// 在频道中发布屏幕采集的音频
|
||||
options.publishScreenCaptureAudio = true;
|
||||
ClientRole(isCamerJs);
|
||||
|
||||
// options.publishMediaPlayerId = 0;
|
||||
rtcEngine.joinChannel(token, mRoomId, uid, options);
|
||||
|
||||
@@ -289,6 +295,18 @@ public class AgoraManager {
|
||||
|
||||
}
|
||||
|
||||
public void setEnable(){
|
||||
if (SpUtil.getSkService()==1){
|
||||
rtcEngine.setParameters("{\"che.audio.aec.enable\":false}"); // 关闭回音消除
|
||||
rtcEngine.setParameters("{\"che.audio.ans.enable\":false}"); // 关闭降噪
|
||||
rtcEngine.setParameters("{\"che.audio.agc.enable\":false}"); // 关闭增益控制
|
||||
}else {
|
||||
rtcEngine.setParameters("{\"che.audio.aec.enable\":true}"); // 开启回音消除
|
||||
rtcEngine.setParameters("{\"che.audio.ans.enable\":true}"); // 开启降噪
|
||||
rtcEngine.setParameters("{\"che.audio.agc.enable\":true}"); // 开启增益控制
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理资源但保留实例
|
||||
*/
|
||||
@@ -342,14 +360,14 @@ public class AgoraManager {
|
||||
}
|
||||
handlers.clear();
|
||||
}
|
||||
if (disposableA != null && !disposableA.isDisposed()){
|
||||
if (disposableA != null && !disposableA.isDisposed()) {
|
||||
disposableA.dispose();
|
||||
}
|
||||
if (disposableB != null && !disposableB.isDisposed()){
|
||||
disposableB.dispose();
|
||||
if (disposableB != null && !disposableB.isDisposed()) {
|
||||
disposableB.dispose();
|
||||
}
|
||||
if (disposableC != null && !disposableC.isDisposed()){
|
||||
disposableC.dispose();
|
||||
if (disposableC != null && !disposableC.isDisposed()) {
|
||||
disposableC.dispose();
|
||||
}
|
||||
// 关闭线程池
|
||||
if (executorService != null && !executorService.isShutdown()) {
|
||||
@@ -412,7 +430,7 @@ public class AgoraManager {
|
||||
@Override
|
||||
public void onRemoteAudioStateChanged(int uid, int state, int reason, int elapsed) {
|
||||
super.onRemoteAudioStateChanged(uid, state, reason, elapsed);
|
||||
if (state == 0){
|
||||
if (state == 0) {
|
||||
// LogUtils.e("onRemoteAudioStateChanged", "uid------>" + uid, "state------>" + state, "reason------>" + reason, "elapsed------>" + elapsed);
|
||||
for (SoundLevelUpdateListener listener : soundLevelUpdateListeners) {
|
||||
if (listener != null) {
|
||||
@@ -485,7 +503,7 @@ public class AgoraManager {
|
||||
@Override
|
||||
public void onLyricResult(String requestId, long songCode, String lyricUrl, int reason) {
|
||||
if (lyricUrl != null) {
|
||||
LogUtils.e("roomInfoEvent",lyricUrl);
|
||||
LogUtils.e("roomInfoEvent", lyricUrl);
|
||||
getLyricsInstance(lyricUrl);
|
||||
}
|
||||
}
|
||||
@@ -563,7 +581,7 @@ public class AgoraManager {
|
||||
Map<String, Integer> localMap = new HashMap<>();
|
||||
for (AudioVolumeInfo info : speakers) {
|
||||
String userId = (info.uid == 0)
|
||||
? SpUtil.getUserId()+""
|
||||
? SpUtil.getUserId() + ""
|
||||
: String.valueOf(info.uid);
|
||||
localMap.put(userId, info.volume);
|
||||
}
|
||||
@@ -575,6 +593,7 @@ public class AgoraManager {
|
||||
// 2️⃣ 只把“不可变快照”丢给 UI
|
||||
uiHandler.post(() -> dispatchVolume(localMap));
|
||||
}
|
||||
|
||||
private void dispatchVolume(Map<String, Integer> volumeSnapshot) {
|
||||
if (soundLevelUpdateListeners.isEmpty()) return;
|
||||
|
||||
@@ -587,6 +606,7 @@ public class AgoraManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLocalVideoStateChanged(Constants.VideoSourceType source, int state, int reason) {
|
||||
super.onLocalVideoStateChanged(source, state, reason);
|
||||
@@ -658,6 +678,7 @@ public class AgoraManager {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建并返回 IMediaPlayerObserver 实例
|
||||
*/
|
||||
@@ -755,6 +776,7 @@ public class AgoraManager {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public void potexao(String page) {
|
||||
ClientRole(true);
|
||||
rtcEngine.playEffect(1, page, 0, 1, 0, 100, true);
|
||||
@@ -770,7 +792,7 @@ public class AgoraManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void joinChannelEx(String token, String channelId, int uid,String pkUserIds) {
|
||||
public void joinChannelEx(String token, String channelId, int uid, String pkUserIds) {
|
||||
if (rtcEngine == null) {
|
||||
init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
|
||||
}
|
||||
@@ -810,17 +832,17 @@ public class AgoraManager {
|
||||
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
|
||||
Display display = manager.getDefaultDisplay();
|
||||
|
||||
DisplayMetrics outMetrics=new DisplayMetrics();
|
||||
DisplayMetrics outMetrics = new DisplayMetrics();
|
||||
display.getMetrics(outMetrics);
|
||||
|
||||
// // 设置屏幕采集的参数
|
||||
screenCaptureParameters.captureVideo = true;
|
||||
screenCaptureParameters.videoCaptureParameters.width = outMetrics.widthPixels;
|
||||
screenCaptureParameters.videoCaptureParameters.height = outMetrics.heightPixels;
|
||||
screenCaptureParameters.videoCaptureParameters.width = outMetrics.widthPixels;
|
||||
screenCaptureParameters.videoCaptureParameters.height = outMetrics.heightPixels;
|
||||
screenCaptureParameters.videoCaptureParameters.framerate = 15;
|
||||
screenCaptureParameters.captureAudio = true;
|
||||
screenCaptureParameters.audioCaptureParameters.captureSignalVolume =50;
|
||||
screenCaptureParameters.videoCaptureParameters.contentHint=1 ;
|
||||
screenCaptureParameters.audioCaptureParameters.captureSignalVolume = 50;
|
||||
screenCaptureParameters.videoCaptureParameters.contentHint = 1;
|
||||
rtcEngine.setVideoEncoderConfiguration(new VideoEncoderConfiguration(
|
||||
VD_1280x720,
|
||||
FRAME_RATE_FPS_15,
|
||||
@@ -833,12 +855,12 @@ public class AgoraManager {
|
||||
}
|
||||
|
||||
|
||||
public void setExternalMediaProjection(MediaProjection[] mediaProjection){
|
||||
public void setExternalMediaProjection(MediaProjection[] mediaProjection) {
|
||||
rtcEngine.setExternalMediaProjection(mediaProjection[0]);
|
||||
}
|
||||
|
||||
public void isPost(){
|
||||
if (rtcEngine != null){
|
||||
public void isPost() {
|
||||
if (rtcEngine != null) {
|
||||
ScreenCaptureParameters screenCaptureParameters = new ScreenCaptureParameters();
|
||||
|
||||
// 设置新的屏幕共享参数
|
||||
@@ -917,6 +939,7 @@ public class AgoraManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//关闭对方的所有推流
|
||||
public void muteAllRemoteAudioStreamsEx(boolean enabled) {
|
||||
if (rtcEngine == null) {
|
||||
@@ -932,10 +955,11 @@ public class AgoraManager {
|
||||
// rtcEngine.muteAllRemoteAudioStreamsEx(enabled, connection);
|
||||
}
|
||||
}
|
||||
|
||||
//打开对方支持的推流
|
||||
public void muteAllRemoteAudioStreamsExUserId(boolean enabled){
|
||||
if (rtcEngine != null){
|
||||
rtcEngine.muteRemoteAudioStreamEx(pkUserId,enabled,connection);
|
||||
public void muteAllRemoteAudioStreamsExUserId(boolean enabled) {
|
||||
if (rtcEngine != null) {
|
||||
rtcEngine.muteRemoteAudioStreamEx(pkUserId, enabled, connection);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1011,7 +1035,7 @@ public class AgoraManager {
|
||||
// }
|
||||
// }
|
||||
public void addSoundLevelListener(SoundLevelUpdateListener listener) {
|
||||
LogUtils.e("AgoraManager", "addSoundLevelListener: " + listener +"============"+soundLevelUpdateListeners.size());
|
||||
LogUtils.e("AgoraManager", "addSoundLevelListener: " + listener + "============" + soundLevelUpdateListeners.size());
|
||||
if (soundLevelUpdateListeners != null) {
|
||||
soundLevelUpdateListeners.add(listener);
|
||||
}
|
||||
@@ -1028,19 +1052,19 @@ public class AgoraManager {
|
||||
soundLevelUpdateListeners.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method searches for music based on a given keyword and page number.
|
||||
* It initializes the music content center if it's not already created.
|
||||
*
|
||||
* @param keyword The keyword to search for music
|
||||
* @param page The page number of the search results
|
||||
*/
|
||||
/**
|
||||
* This method searches for music based on a given keyword and page number.
|
||||
* It initializes the music content center if it's not already created.
|
||||
*
|
||||
* @param keyword The keyword to search for music
|
||||
* @param page The page number of the search results
|
||||
*/
|
||||
public void searchMusic(String keyword, int page) {
|
||||
// Check if musicContentCenter is initialized, if not create it
|
||||
// Check if musicContentCenter is initialized, if not create it
|
||||
if (musicContentCenter == null) {
|
||||
musicContentCenter = IAgoraMusicContentCenter.create(rtcEngine);
|
||||
}
|
||||
// Perform the music search with the keyword, page number and page size (20)
|
||||
// Perform the music search with the keyword, page number and page size (20)
|
||||
musicContentCenter.searchMusic(keyword, page, 20);
|
||||
}
|
||||
|
||||
@@ -1112,8 +1136,8 @@ public class AgoraManager {
|
||||
String result = musicContentCenter.preload(mSongCode);
|
||||
// 使用后台线程池处理预加载检查,避免阻塞UI线程
|
||||
disposableC = Observable.timer(3000, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(aLong -> {
|
||||
isPreload(mSongCode, type);
|
||||
});
|
||||
isPreload(mSongCode, type);
|
||||
});
|
||||
} else {
|
||||
try {
|
||||
musicPlayer.open(mSongCode, 0);
|
||||
@@ -1262,15 +1286,17 @@ public class AgoraManager {
|
||||
public void setPlayoutVolume(int volume) {
|
||||
if (musicPlayer != null) {
|
||||
musicPlayer.adjustPlayoutVolume(volume);//调节本地播放音量。 参数是0-100
|
||||
musicPlayer.adjustPublishSignalVolume(volume*2);//调节远端用户听到的音量。 参数是0-400
|
||||
musicPlayer.adjustPublishSignalVolume(volume * 2);//调节远端用户听到的音量。 参数是0-400
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 伴奏音量
|
||||
*
|
||||
* @param volume
|
||||
*/
|
||||
public void setAdjustPublishSignalVolume(int volume){
|
||||
public void setAdjustPublishSignalVolume(int volume) {
|
||||
musicPlayer.adjustPublishSignalVolume(volume);//调节远端用户听到的音量。 参数是0-400
|
||||
}
|
||||
|
||||
@@ -1362,7 +1388,7 @@ public class AgoraManager {
|
||||
.build();
|
||||
if (StatusUtil.isCompleted(task)) {
|
||||
MusicFileBean musicFileBean = new MusicFileBean();
|
||||
LogUtils.e("roomInfoEvent",convertFileToByteArray(task.getFile()));
|
||||
LogUtils.e("roomInfoEvent", convertFileToByteArray(task.getFile()));
|
||||
musicFileBean.setFileData(convertFileToByteArray(task.getFile()));
|
||||
EventBus.getDefault().post(musicFileBean);
|
||||
} else {
|
||||
@@ -1391,7 +1417,7 @@ public class AgoraManager {
|
||||
@Override
|
||||
public void taskEnd(@NonNull DownloadTask task, @NonNull EndCause cause, @Nullable Exception realCause, @NonNull Listener1Assist.Listener1Model model) {
|
||||
Logger.e("taskEnd", model);
|
||||
LogUtils.e("roomInfoEvent",convertFileToByteArray(task.getFile()));
|
||||
LogUtils.e("roomInfoEvent", convertFileToByteArray(task.getFile()));
|
||||
MusicFileBean musicFileBean = new MusicFileBean();
|
||||
musicFileBean.setFileData(convertFileToByteArray(task.getFile()));
|
||||
EventBus.getDefault().post(musicFileBean);
|
||||
|
||||
@@ -354,6 +354,15 @@ public class SpUtil {
|
||||
return SPUtils.getInstance(SPConstants.PREFERENCE_NAME).getInt(SPConstants.TASK_SERVICE);
|
||||
}
|
||||
|
||||
public static int setSkService(int taskService){
|
||||
SPUtils.getInstance(SPConstants.PREFERENCE_NAME).put("skService", taskService);
|
||||
return taskService;
|
||||
}
|
||||
public static int getSkService(){
|
||||
return SPUtils.getInstance(SPConstants.PREFERENCE_NAME).getInt("skService");
|
||||
}
|
||||
|
||||
|
||||
//获取SharedPreferences音乐轮播方式
|
||||
public static int getPlayPattern() {
|
||||
return SPUtils.getInstance(SPConstants.PREFERENCE_NAME).getInt(SPConstants.PLAY_MODE, 1);
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.content.Context;
|
||||
import android.os.Build;
|
||||
|
||||
import com.blankj.utilcode.util.AppUtils;
|
||||
import com.blankj.utilcode.util.DeviceUtils;
|
||||
import com.blankj.utilcode.util.MetaDataUtils;
|
||||
import com.xscm.moduleutil.base.CommonAppContext;
|
||||
import com.xscm.moduleutil.utils.config.ConfigUtils;
|
||||
@@ -77,7 +78,8 @@ public class SystemUtils {
|
||||
}
|
||||
|
||||
public static String getShortClientID(Context context) {
|
||||
String cid = getClientID("xqipaoandroid");
|
||||
// String cid = getClientID("xqipaoandroid");
|
||||
String cid = DeviceUtils.getUniqueDeviceId();
|
||||
return Md5Utils.get(cid + getUUID(context));
|
||||
}
|
||||
|
||||
|
||||
@@ -317,6 +317,7 @@ public class Constants {
|
||||
public static final String POST_APPLY_SONG = "/api/RoomSong/apply_song";//申请点歌
|
||||
public static final String POST_AGREE_SONG = "/api/RoomSong/agree_song";//同意、拒绝点歌
|
||||
public static final String GET_BLIND_BOX_STATUS = "/api/BlindBoxTurntable/blind_box_status";//盲盒转盘状态
|
||||
public static final String SET_ROOM_BUSINESS_TIME = "/api/Room/set_room_business_time";//设置房间的营业时间
|
||||
public static final String POST_SONG_LIST = "/api/RoomSong/song_list";//获取已点歌曲
|
||||
public static final String POST_SONG = "/api/RoomSong/song";//点歌
|
||||
public static final String POST_UP_SONG = "/api/RoomSong/up_song";//移动歌曲
|
||||
@@ -411,6 +412,7 @@ public class Constants {
|
||||
public static final String GET_INDEX_RECOMMEND_ROOM = "/api/Index/index_recommend_room";//首页弹窗推荐房间
|
||||
public static final String GET_DAY_DROP_GIFT = "/api/Activities/day_drop_gift";//天降好礼列表接口(弹框)
|
||||
public static final String postRoomSwToken = "/api/Room/update_user_sw_token";//获取用户声网token
|
||||
public static final String POST_CLOSE_PK_MIC = "/api/RoomPk/close_pk_mic";//PK闭麦
|
||||
public static final String POST_CANCEL_USER_DECORATE = "/api/Decorate/cancel_user_decorate";//取消装扮
|
||||
public static final String GET_THEME_DATA = "/api/Theme/get_theme_data";//主题接口
|
||||
public static final String START_FRIEND = "/api/Friend/start_friend";//点击开始按钮 交友房
|
||||
|
||||
@@ -20,6 +20,9 @@ import java.util.Date;
|
||||
public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment {
|
||||
|
||||
private OnTimeRangeSelectedListener listener;
|
||||
private boolean showTime = true; // 默认显示时分秒
|
||||
private boolean showDate = true; // 默认显示日期
|
||||
private boolean showSeconds = true; // 默认显示秒
|
||||
|
||||
public interface OnTimeRangeSelectedListener {
|
||||
void onTimeRangeSelected(Date startDate, Date endDate);
|
||||
@@ -28,6 +31,54 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment {
|
||||
public void setOnTimeRangeSelectedListener(OnTimeRangeSelectedListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否显示时分秒
|
||||
* @param showTime true显示年月日时分秒,false只显示年月日
|
||||
*/
|
||||
public void setShowTime(boolean showTime) {
|
||||
this.showTime = showTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否显示日期
|
||||
* @param showDate true显示日期,false只显示时间
|
||||
*/
|
||||
public void setShowDate(boolean showDate) {
|
||||
this.showDate = showDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否显示秒
|
||||
* @param showSeconds true显示秒,false不显示秒
|
||||
*/
|
||||
public void setShowSeconds(boolean showSeconds) {
|
||||
this.showSeconds = showSeconds;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建实例
|
||||
* @param showTime true显示年月日时分秒,false只显示年月日
|
||||
* @return DoubleTimePickerBottomSheet实例
|
||||
*/
|
||||
public static DoubleTimePickerBottomSheet newInstance(boolean showTime) {
|
||||
DoubleTimePickerBottomSheet fragment = new DoubleTimePickerBottomSheet();
|
||||
fragment.setShowTime(showTime);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建实例
|
||||
* @param showTime true显示年月日时分秒,false只显示年月日
|
||||
* @param showDate true显示日期,false只显示时间
|
||||
* @return DoubleTimePickerBottomSheet实例
|
||||
*/
|
||||
public static DoubleTimePickerBottomSheet newInstance(boolean showTime, boolean showDate) {
|
||||
DoubleTimePickerBottomSheet fragment = new DoubleTimePickerBottomSheet();
|
||||
fragment.setShowTime(showTime);
|
||||
fragment.setShowDate(showDate);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
@@ -52,17 +103,77 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment {
|
||||
WheelTimePicker wheelStartTime = view.findViewById(R.id.wheel_start_time);
|
||||
WheelDatePicker wheelEndDate = view.findViewById(R.id.wheel_end_date);
|
||||
WheelTimePicker wheelEndTime = view.findViewById(R.id.wheel_end_time);
|
||||
|
||||
// 根据showDate和showTime参数控制日期和时间选择器的显示和布局
|
||||
if (showDate && showTime) {
|
||||
// 显示日期和时间时,使用默认布局
|
||||
wheelStartDate.setVisibility(View.VISIBLE);
|
||||
wheelStartTime.setVisibility(View.VISIBLE);
|
||||
wheelEndDate.setVisibility(View.VISIBLE);
|
||||
wheelEndTime.setVisibility(View.VISIBLE);
|
||||
|
||||
// 重置日期选择器的布局参数为默认值
|
||||
ViewGroup.LayoutParams startDateParams = wheelStartDate.getLayoutParams();
|
||||
startDateParams.width = ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||
wheelStartDate.setLayoutParams(startDateParams);
|
||||
|
||||
ViewGroup.LayoutParams endDateParams = wheelEndDate.getLayoutParams();
|
||||
endDateParams.width = ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||
wheelEndDate.setLayoutParams(endDateParams);
|
||||
} else if (showDate && !showTime) {
|
||||
// 只显示日期时,隐藏时间选择器并让日期选择器铺满宽度
|
||||
wheelStartTime.setVisibility(View.GONE);
|
||||
wheelEndTime.setVisibility(View.GONE);
|
||||
|
||||
// 设置日期选择器铺满宽度
|
||||
ViewGroup.LayoutParams startDateParams = wheelStartDate.getLayoutParams();
|
||||
startDateParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
wheelStartDate.setLayoutParams(startDateParams);
|
||||
|
||||
ViewGroup.LayoutParams endDateParams = wheelEndDate.getLayoutParams();
|
||||
endDateParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
wheelEndDate.setLayoutParams(endDateParams);
|
||||
} else if (!showDate && showTime) {
|
||||
// 只显示时间时,隐藏日期选择器并让时间选择器铺满宽度
|
||||
wheelStartDate.setVisibility(View.GONE);
|
||||
wheelStartTime.setVisibility(View.VISIBLE);
|
||||
wheelEndDate.setVisibility(View.GONE);
|
||||
wheelEndTime.setVisibility(View.VISIBLE);
|
||||
|
||||
// 设置时间选择器铺满宽度
|
||||
ViewGroup.LayoutParams startTimeParams = wheelStartTime.getLayoutParams();
|
||||
startTimeParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
wheelStartTime.setLayoutParams(startTimeParams);
|
||||
|
||||
ViewGroup.LayoutParams endTimeParams = wheelEndTime.getLayoutParams();
|
||||
endTimeParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
wheelEndTime.setLayoutParams(endTimeParams);
|
||||
}
|
||||
|
||||
// 默认设置当前时间
|
||||
Calendar startCal = Calendar.getInstance();
|
||||
wheelStartDate.init(startCal.get(Calendar.YEAR), startCal.get(Calendar.MONTH), startCal.get(Calendar.DAY_OF_MONTH));
|
||||
wheelStartTime.init(startCal.get(Calendar.HOUR_OF_DAY), startCal.get(Calendar.MINUTE),startCal.get(Calendar.SECOND));
|
||||
if (showDate) {
|
||||
wheelStartDate.init(startCal.get(Calendar.YEAR), startCal.get(Calendar.MONTH), startCal.get(Calendar.DAY_OF_MONTH));
|
||||
}
|
||||
if (showTime) {
|
||||
wheelStartTime.init(startCal.get(Calendar.HOUR_OF_DAY), startCal.get(Calendar.MINUTE), showSeconds ? startCal.get(Calendar.SECOND) : 0);
|
||||
wheelStartTime.setShowSeconds(showSeconds);
|
||||
}
|
||||
|
||||
// 设置默认结束时间略晚于开始时间
|
||||
Calendar endCal = (Calendar) startCal.clone();
|
||||
endCal.add(Calendar.HOUR, 1);
|
||||
wheelEndDate.init(endCal.get(Calendar.YEAR), endCal.get(Calendar.MONTH), endCal.get(Calendar.DAY_OF_MONTH));
|
||||
wheelEndTime.init(endCal.get(Calendar.HOUR_OF_DAY), endCal.get(Calendar.MINUTE),endCal.get(Calendar.SECOND));
|
||||
if (showTime) {
|
||||
endCal.add(Calendar.HOUR, 1);
|
||||
} else {
|
||||
endCal.add(Calendar.DAY_OF_MONTH, 1);
|
||||
}
|
||||
if (showDate) {
|
||||
wheelEndDate.init(endCal.get(Calendar.YEAR), endCal.get(Calendar.MONTH), endCal.get(Calendar.DAY_OF_MONTH));
|
||||
}
|
||||
if (showTime) {
|
||||
wheelEndTime.init(endCal.get(Calendar.HOUR_OF_DAY), endCal.get(Calendar.MINUTE), showSeconds ? endCal.get(Calendar.SECOND) : 0);
|
||||
wheelEndTime.setShowSeconds(showSeconds);
|
||||
}
|
||||
|
||||
// 取消按钮
|
||||
view.findViewById(R.id.btn_cancel).setOnClickListener(v -> dismiss());
|
||||
@@ -70,16 +181,36 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment {
|
||||
// 确定按钮
|
||||
view.findViewById(R.id.btn_sure).setOnClickListener(v -> {
|
||||
Calendar start = Calendar.getInstance();
|
||||
start.set(wheelStartDate.getYear(), wheelStartDate.getMonth(), wheelStartDate.getDay(),
|
||||
wheelStartTime.getHour(), wheelStartTime.getMinute(), wheelStartTime.getSecond());
|
||||
|
||||
Calendar end = Calendar.getInstance();
|
||||
end.set(wheelEndDate.getYear(), wheelEndDate.getMonth(), wheelEndDate.getDay(),
|
||||
wheelEndTime.getHour(), wheelEndTime.getMinute(), wheelEndTime.getSecond());
|
||||
|
||||
if (end.getTime().before(start.getTime())) {
|
||||
Toast.makeText(requireContext(), "结束时间不能早于开始时间", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
|
||||
if (showDate && showTime) {
|
||||
// 显示日期和时间
|
||||
start.set(wheelStartDate.getYear(), wheelStartDate.getMonth(), wheelStartDate.getDay(),
|
||||
wheelStartTime.getHour(), wheelStartTime.getMinute(), wheelStartTime.getSecond());
|
||||
end.set(wheelEndDate.getYear(), wheelEndDate.getMonth(), wheelEndDate.getDay(),
|
||||
wheelEndTime.getHour(), wheelEndTime.getMinute(), wheelEndTime.getSecond());
|
||||
} else if (showDate && !showTime) {
|
||||
// 只显示日期
|
||||
start.set(wheelStartDate.getYear(), wheelStartDate.getMonth(), wheelStartDate.getDay(),
|
||||
0, 0, 0);
|
||||
end.set(wheelEndDate.getYear(), wheelEndDate.getMonth(), wheelEndDate.getDay(),
|
||||
23, 59, 59);
|
||||
} else if (!showDate && showTime) {
|
||||
// 只显示时间,使用当前日期
|
||||
int currentYear = start.get(Calendar.YEAR);
|
||||
int currentMonth = start.get(Calendar.MONTH);
|
||||
int currentDay = start.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
start.set(currentYear, currentMonth, currentDay,
|
||||
wheelStartTime.getHour(), wheelStartTime.getMinute(), wheelStartTime.getSecond());
|
||||
end.set(currentYear, currentMonth, currentDay,
|
||||
wheelEndTime.getHour(), wheelEndTime.getMinute(), wheelEndTime.getSecond());
|
||||
}
|
||||
if ((showDate && showTime) || (showDate && !showTime) ) {
|
||||
if (end.getTime().before(start.getTime())) {
|
||||
Toast.makeText(requireContext(), "结束时间不能早于开始时间", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (listener != null) {
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.widget.NumberPicker;
|
||||
public class WheelTimePicker extends LinearLayout {
|
||||
|
||||
private NumberPicker hourPicker, minutePicker, secondPicker;
|
||||
private boolean showSeconds = true; // 默认显示秒
|
||||
|
||||
public WheelTimePicker(Context context) {
|
||||
this(context, null);
|
||||
@@ -33,6 +34,9 @@ public class WheelTimePicker extends LinearLayout {
|
||||
addView(hourPicker);
|
||||
addView(minutePicker);
|
||||
addView(secondPicker);
|
||||
|
||||
// 根据showSeconds参数决定是否显示秒选择器
|
||||
secondPicker.setVisibility(showSeconds ? VISIBLE : GONE);
|
||||
|
||||
// 设置小时范围
|
||||
hourPicker.setMinValue(0);
|
||||
@@ -64,4 +68,15 @@ public class WheelTimePicker extends LinearLayout {
|
||||
public int getSecond() {
|
||||
return secondPicker.getValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否显示秒
|
||||
* @param showSeconds true显示秒,false不显示秒
|
||||
*/
|
||||
public void setShowSeconds(boolean showSeconds) {
|
||||
this.showSeconds = showSeconds;
|
||||
if (secondPicker != null) {
|
||||
secondPicker.setVisibility(showSeconds ? VISIBLE : GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,7 +216,7 @@ public class RewardGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPr
|
||||
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), giftLabelBeans, fragmentList, ""));
|
||||
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
|
||||
mBinding.slidingTabLayout.setCurrentTab(0);
|
||||
refreshCurrentGiftFragment(giftLabelBeans.get(0).getId(), 2, "");
|
||||
refreshCurrentGiftFragment(giftLabelBeans.get(0).getId(), 2, "5");
|
||||
mBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
@@ -226,7 +226,7 @@ public class RewardGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPr
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
// 当页面切换时,控制 tv_bb_qs 按钮的显示
|
||||
refreshCurrentGiftFragment(giftLabelBeans.get(position).getId(), 2, "");
|
||||
refreshCurrentGiftFragment(giftLabelBeans.get(position).getId(), 2, "5");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -236,9 +236,9 @@ public class RewardGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPr
|
||||
});
|
||||
}
|
||||
|
||||
private void refreshCurrentGiftFragment(String id, int type, String roomId) {
|
||||
private void refreshCurrentGiftFragment(String id, int status, String type) {
|
||||
if (getCurrentGiftFragment() != null) {
|
||||
getCurrentGiftFragment().loadDataIfNeeded(id, type, roomId);
|
||||
getCurrentGiftFragment().loadDataIfNeeded(id, status, type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,12 +2,16 @@ package com.xscm.modulemain.activity
|
||||
|
||||
import android.content.Intent
|
||||
import android.view.View
|
||||
import android.widget.CompoundButton
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.blankj.utilcode.util.LogUtils
|
||||
import com.blankj.utilcode.util.ToastUtils
|
||||
import com.tencent.imsdk.v2.V2TIMCallback
|
||||
import com.tencent.imsdk.v2.V2TIMConversation
|
||||
import com.tencent.imsdk.v2.V2TIMGroupInfoResult
|
||||
import com.tencent.imsdk.v2.V2TIMGroupManager
|
||||
import com.tencent.imsdk.v2.V2TIMManager
|
||||
import com.tencent.imsdk.v2.V2TIMMessage
|
||||
import com.tencent.imsdk.v2.V2TIMValueCallback
|
||||
import com.xscm.modulemain.BaseMvpActivity
|
||||
import com.xscm.modulemain.R
|
||||
import com.xscm.modulemain.activity.msg.NewsContacts
|
||||
@@ -19,6 +23,7 @@ import com.xscm.moduleutil.bean.GroupUserListBean
|
||||
import com.xscm.moduleutil.bean.NewsMessageList
|
||||
import com.xscm.moduleutil.utils.ImageUtils
|
||||
|
||||
|
||||
/**
|
||||
* @Author
|
||||
* @Time 2026/1/2 14:57
|
||||
@@ -31,7 +36,7 @@ class GroupChatSettingsActivity :
|
||||
var groupAdapter: GroupAdapter? = GroupAdapter()
|
||||
val v2TIMGroupManager: V2TIMGroupManager?= V2TIMManager.getGroupManager()
|
||||
var groupId: String = ""
|
||||
var isOwner : Boolean = false
|
||||
var isOwner : Int = 0
|
||||
|
||||
var groupBean : GroupBean= GroupBean()
|
||||
|
||||
@@ -88,6 +93,45 @@ class GroupChatSettingsActivity :
|
||||
})
|
||||
}
|
||||
|
||||
mBinding?.switDoNotDisturb?.setOnCheckedChangeListener { compoundButton, b ->
|
||||
V2TIMManager.getMessageManager().setGroupReceiveMessageOpt(
|
||||
groupId,
|
||||
if (b) V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE else V2TIMMessage.V2TIM_RECEIVE_MESSAGE,
|
||||
object : V2TIMCallback {
|
||||
override fun onSuccess() {
|
||||
// 修改群消息接收选项成功
|
||||
ToastUtils.showLong(if (b) "已开启消息免打扰" else "已关闭消息免打扰")
|
||||
}
|
||||
|
||||
override fun onError(code: Int, desc: String?) {
|
||||
// 修改群消息接收选项失败
|
||||
ToastUtils.showLong("免打扰功能开启失败",code,desc)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
val groupIDs: MutableList<String?> = ArrayList<String?>()
|
||||
groupIDs.add(groupId)
|
||||
V2TIMManager.getGroupManager().getGroupsInfo(
|
||||
groupIDs,
|
||||
object : V2TIMValueCallback<MutableList<V2TIMGroupInfoResult?>?> {
|
||||
|
||||
override fun onSuccess(t: MutableList<V2TIMGroupInfoResult?>?) {
|
||||
|
||||
if (t != null && !t.isEmpty()) {
|
||||
val result = t[0]
|
||||
if (result?.resultCode == 0) {
|
||||
val groupInfo = result.groupInfo
|
||||
mBinding?.switDoNotDisturb?.isChecked = groupInfo.recvOpt == V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError(code: Int, desc: String?) {
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
@@ -111,18 +155,18 @@ class GroupChatSettingsActivity :
|
||||
this.groupBean=groupBean
|
||||
mBinding?.groupName?.text = groupBean.name
|
||||
ImageUtils.loadHead(groupBean.guild_cover, mBinding?.imGroup)
|
||||
if (groupBean.is_deacon == 1) {
|
||||
isOwner=true
|
||||
if (groupBean.is_deacon == 1 || groupBean.is_deacon == 2) {
|
||||
mBinding?.llGroup?.visibility = View.VISIBLE
|
||||
mBinding?.switJy?.isChecked = groupBean.mute_all_member == 1
|
||||
mBinding?.etG?.isEnabled = true
|
||||
mBinding?.evGroupName?.isEnabled = true
|
||||
} else {
|
||||
isOwner=false
|
||||
}
|
||||
else {
|
||||
mBinding?.llGroup?.visibility = View.GONE
|
||||
mBinding?.etG?.isEnabled = false
|
||||
mBinding?.evGroupName?.isEnabled = false
|
||||
}
|
||||
isOwner=groupBean.is_deacon
|
||||
mBinding?.etG?.text?.append(groupBean.notification)
|
||||
mBinding?.evGroupName?.text?.append(groupBean.name)
|
||||
|
||||
@@ -143,4 +187,5 @@ class GroupChatSettingsActivity :
|
||||
super.doDone()
|
||||
groupId = intent.getStringExtra("groupId").toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,12 +5,14 @@ import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.blankj.utilcode.util.LogUtils
|
||||
import com.blankj.utilcode.util.ToastUtils
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.scwang.smartrefresh.layout.api.RefreshLayout
|
||||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
|
||||
import com.tencent.imsdk.v2.V2TIMCallback
|
||||
import com.tencent.imsdk.v2.V2TIMGroupManager
|
||||
import com.tencent.imsdk.v2.V2TIMGroupMemberFullInfo
|
||||
import com.tencent.imsdk.v2.V2TIMManager
|
||||
import com.xscm.modulemain.BaseMvpActivity
|
||||
import com.xscm.modulemain.R
|
||||
@@ -37,7 +39,7 @@ class GroupUserListActivity : BaseMvpActivity<NewsPresenter, ActivityGroupUserLi
|
||||
val v2TIMGroupManager: V2TIMGroupManager? = V2TIMManager.getGroupManager()
|
||||
|
||||
var groupId: String? = null
|
||||
var isOwner: Boolean = false
|
||||
var isOwner: Int = 0
|
||||
var page: Int = 1
|
||||
var search: String = ""
|
||||
var groupUserBean: List<GroupBean.GroupUserBean> = ArrayList()
|
||||
@@ -50,7 +52,7 @@ class GroupUserListActivity : BaseMvpActivity<NewsPresenter, ActivityGroupUserLi
|
||||
override fun doDone() {
|
||||
super.doDone()
|
||||
groupId = intent.getStringExtra("groupId").toString()
|
||||
isOwner = intent.getBooleanExtra("isOwner", false)
|
||||
isOwner = intent.getIntExtra("isOwner", 0)
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
@@ -76,16 +78,46 @@ class GroupUserListActivity : BaseMvpActivity<NewsPresenter, ActivityGroupUserLi
|
||||
item?.is_mute = 1
|
||||
}
|
||||
groupUserListAdapter.notifyDataSetChanged()
|
||||
ToastUtils.showLong("操作成功")
|
||||
}
|
||||
|
||||
override fun onError(code: Int, desc: String?) {
|
||||
ToastUtils.showLong(desc)
|
||||
LogUtils.e("禁言失败:$code $desc")
|
||||
}
|
||||
})
|
||||
} else {
|
||||
onCommentLongClick(item)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onItemGroupMemberClick(
|
||||
item: GroupBean.GroupUserBean?,
|
||||
b: Boolean
|
||||
) {
|
||||
if (item?.group_role == 4){
|
||||
ToastUtils.showLong("当前用户数据错误,请联系管理员")
|
||||
return
|
||||
}
|
||||
v2TIMGroupManager?.setGroupMemberRole(
|
||||
groupId,
|
||||
"u" + item?.user_id.toString(),
|
||||
if (b) V2TIMGroupMemberFullInfo.V2TIM_GROUP_MEMBER_ROLE_MEMBER else V2TIMGroupMemberFullInfo.V2TIM_GROUP_MEMBER_ROLE_ADMIN,
|
||||
object : V2TIMCallback {
|
||||
override fun onSuccess() {
|
||||
if (b) {
|
||||
item?.group_role = 2 //管理员
|
||||
} else {
|
||||
item?.group_role = 3 //普通成员
|
||||
}
|
||||
groupUserListAdapter.notifyDataSetChanged()
|
||||
LogUtils.e("群成员设置角色成功")
|
||||
}
|
||||
|
||||
override fun onError(code: Int, desc: String?) {
|
||||
LogUtils.e("群成员设置角色失败:$code $desc")
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
mBinding.tvCancel.setOnClickListener { view ->
|
||||
@@ -107,7 +139,7 @@ class GroupUserListActivity : BaseMvpActivity<NewsPresenter, ActivityGroupUserLi
|
||||
}
|
||||
})
|
||||
|
||||
if (isOwner) {
|
||||
if (isOwner == 1 || isOwner == 2) {
|
||||
mBinding.llSearch.visibility = View.VISIBLE
|
||||
} else {
|
||||
mBinding.llSearch.visibility = View.GONE
|
||||
@@ -218,10 +250,11 @@ class GroupUserListActivity : BaseMvpActivity<NewsPresenter, ActivityGroupUserLi
|
||||
item?.is_mute = 1
|
||||
}
|
||||
groupUserListAdapter.notifyDataSetChanged()
|
||||
ToastUtils.showLong("操作成功")
|
||||
}
|
||||
|
||||
override fun onError(code: Int, desc: String?) {
|
||||
ToastUtils.showLong(desc)
|
||||
LogUtils.e("muteGroupMember", "muteGroupMember code=$code desc=$desc")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -631,7 +631,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
mBinding!!.roomTop.root.isClickable = false
|
||||
setView(mRoomInfoResp)
|
||||
|
||||
MvpPre?.getRoomOnline(roomId, "1", "10")
|
||||
// MvpPre?.getRoomOnline(roomId, "1", "10")
|
||||
}
|
||||
|
||||
private var bgEffectView: View? = null
|
||||
@@ -3076,6 +3076,21 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
AgoraManager.getInstance().muteLocalAudioStream(false)
|
||||
AgoraManager.getInstance().ClientRole(true)
|
||||
CommonAppContext.getInstance().isMai = true
|
||||
var userId : String =""
|
||||
mRoomInfoResp?.room_info?.pit_list?.size?.let {
|
||||
if (it < 9) {
|
||||
return
|
||||
}
|
||||
userId = mRoomInfoResp?.room_info?.pit_list!![8].user_id
|
||||
}
|
||||
// 方案1:使用安全调用和let操作符
|
||||
mRoomInfoResp?.pk_info?.close_users?.let { users ->
|
||||
if (users.contains(userId)) {
|
||||
AgoraManagerEx.getInstance().muteLocalAudioStreamEx(true)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off)
|
||||
AgoraManager.getInstance()
|
||||
|
||||
@@ -29,5 +29,7 @@ public class RoomSettingContacts {
|
||||
void agreeSong(String roomId, String type);
|
||||
|
||||
void blindBoxStatus();
|
||||
|
||||
void setRoomBusinessTime(String roomId,String startTime,String endTime);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,8 @@ public class SingSongContacts {
|
||||
void userOnlineStatus(List<UserOnlineStatusBean> list);
|
||||
|
||||
void postAgora(PkSwTokenBean pkSwTokenBean);
|
||||
|
||||
void closePkMic();
|
||||
}
|
||||
|
||||
public interface IEmotionRoomPre extends IPresenter {
|
||||
@@ -39,5 +41,7 @@ public class SingSongContacts {
|
||||
void endPk(String pk_id,String type,String user_id);
|
||||
void userOnlineStatus(String userId, String roomid);
|
||||
|
||||
void closePkMic(String pk_id,String type,String user_id);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -281,12 +281,12 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
|
||||
}
|
||||
}
|
||||
|
||||
if (userIds.length() > 0 && roomId != null) {
|
||||
if (MvpPre == null) {
|
||||
MvpPre = new FriendshipRoomPresenter(this, getActivity());
|
||||
}
|
||||
MvpPre.userOnlineStatus(userIds.toString(), roomId);
|
||||
}
|
||||
// if (userIds.length() > 0 && roomId != null) {
|
||||
// if (MvpPre == null) {
|
||||
// MvpPre = new FriendshipRoomPresenter(this, getActivity());
|
||||
// }
|
||||
// MvpPre.userOnlineStatus(userIds.toString(), roomId);
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -286,9 +286,9 @@ public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow
|
||||
userIds.append(auctionUserBean.getUser_id());
|
||||
}
|
||||
|
||||
if (userIds.length() > 0 && roomInfoResp.getRoom_info().getRoom_id() != null) {
|
||||
MvpPre.userOnlineStatus(userIds.toString(), roomInfoResp.getRoom_info().getRoom_id());
|
||||
}
|
||||
// if (userIds.length() > 0 && roomInfoResp.getRoom_info().getRoom_id() != null) {
|
||||
// MvpPre.userOnlineStatus(userIds.toString(), roomInfoResp.getRoom_info().getRoom_id());
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -267,9 +267,9 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
|
||||
userIds.append(roomPitBean.getUser_id());
|
||||
}
|
||||
|
||||
if (userIds.length() > 0 && roomInfoResp.getRoom_info().getRoom_id() != null) {
|
||||
MvpPre.userOnlineStatus(userIds.toString(), roomInfoResp.getRoom_info().getRoom_id());
|
||||
}
|
||||
// if (userIds.length() > 0 && roomInfoResp.getRoom_info().getRoom_id() != null) {
|
||||
// MvpPre.userOnlineStatus(userIds.toString(), roomInfoResp.getRoom_info().getRoom_id());
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -191,6 +191,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
|
||||
|
||||
if (mRoomInfoResp?.sign_info?.sign_id != "-1") {
|
||||
mSignId = mRoomInfoResp?.sign_info?.sign_id
|
||||
LogUtils.e("初始的时候,mSignId = $mSignId")
|
||||
if (mRoomInfoResp?.sign_info?.sign_status == 1) {
|
||||
startTimer(mRoomInfoResp?.sign_info?.end_time!!)
|
||||
if (mUserInfo?.user_id?.toString().equals(mSignPitBean?.user_id)) {
|
||||
@@ -396,6 +397,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
|
||||
mBinding.ivApplyForMai.isClickable = true
|
||||
|
||||
mSignId = messageEvent?.text?.sign_id
|
||||
LogUtils.e("场次开始的时候,mSignId = $mSignId")
|
||||
val endTime = messageEvent?.text?.end_time
|
||||
val signDay = messageEvent?.text?.sign_day
|
||||
val currBodyValue = messageEvent?.text?.current_body_value
|
||||
@@ -423,6 +425,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
|
||||
fun event1091(messageEvent: RoomMessageEvent?) {
|
||||
val fromUserInfo = messageEvent?.text?.fromUserInfo
|
||||
val signId = messageEvent?.text?.sign_id
|
||||
LogUtils.e("出价后的场次,mSignId = $mSignId")
|
||||
if (fromUserInfo != null && mSignId == signId) {
|
||||
val pitBean = RoomPitBean()
|
||||
pitBean.pit_number = indexList[2]
|
||||
|
||||
@@ -129,7 +129,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
this.roomInfoResp = roomInfoResp;
|
||||
}
|
||||
|
||||
public void upRoomInfo(RoomInfoResp roomInfoResp){
|
||||
public void upRoomInfo(RoomInfoResp roomInfoResp) {
|
||||
this.roomInfoResp = roomInfoResp;
|
||||
upDataView();
|
||||
}
|
||||
@@ -158,7 +158,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
|
||||
@Override
|
||||
public void onMeilingClick(@NonNull RoomSingSongWheatView view, int pitNumber) {
|
||||
if (ClickUtils.isFastDoubleClick(view)){
|
||||
if (ClickUtils.isFastDoubleClick(view)) {
|
||||
return;
|
||||
}
|
||||
if (view.pitBean != null && !view.pitBean.getUser_id().isEmpty() && !view.pitBean.getUser_id().equals("0")) {
|
||||
@@ -174,7 +174,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
@Override
|
||||
public void onWheatClick(@NonNull RoomSingSongWheatView view, int pitNumber1) {
|
||||
|
||||
if (ClickUtils.isFastDoubleClick(view)){
|
||||
if (ClickUtils.isFastDoubleClick(view)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -188,16 +188,16 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
pitNumber = pitBean.getPit_number();
|
||||
roomPitBean = pitBean;
|
||||
// showPopupMenu(view); // v 是点击的按钮视图
|
||||
if(getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||
if (getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||
}
|
||||
} else if (pitNumber1 == 10) {
|
||||
if (getActivity() != null && getActivity() instanceof RoomActivity){
|
||||
if (getActivity() != null && ((RoomActivity) getActivity()).getHostUser() < 4){
|
||||
if (getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||
if (getActivity() != null && ((RoomActivity) getActivity()).getHostUser() < 4) {
|
||||
if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) {
|
||||
((RoomActivity)getActivity()).showUserListDialog(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
com.hjq.toast.ToastUtils.show("请等待主持抱麦");
|
||||
}
|
||||
}
|
||||
@@ -346,7 +346,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
|
||||
tvHugMic.setOnClickListener(v -> {
|
||||
// 处理抱麦逻辑
|
||||
if(getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||
if (getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||
}
|
||||
popupWindow.dismiss();
|
||||
@@ -416,7 +416,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
if (MvpPre == null) {
|
||||
MvpPre = new SingSongPresenter(this, getContext());
|
||||
}
|
||||
MvpPre.userOnlineStatus(userIds.toString(), roomId);
|
||||
// MvpPre.userOnlineStatus(userIds.toString(), roomId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -576,35 +576,8 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
} else {
|
||||
MvpPre.endPk(roomInfoRespPk.getPk_info().getPk_id(), "3", SpUtil.getUserId() + "");
|
||||
}
|
||||
} else if (id == R.id.im_mkf) {
|
||||
if (pkMicIsOn) {
|
||||
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
|
||||
is_mute = 0;
|
||||
pkMicIsOn = false;
|
||||
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(false);
|
||||
} else {
|
||||
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off);
|
||||
is_mute = 1;
|
||||
pkMicIsOn = true;
|
||||
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(true);
|
||||
}
|
||||
RoomMessageEvent.text text = new RoomMessageEvent.text();
|
||||
text.setIs_mute(is_mute);
|
||||
String s = com.blankj.utilcode.util.GsonUtils.toJson(text);
|
||||
RoomMessageEvent.T t = new RoomMessageEvent.T();
|
||||
t.setText(s);
|
||||
if (roomInfoRespPk != null && roomInfoRespPk.getPk_info() != null) {
|
||||
RoomMessageEvent roomMessageEvent = new RoomMessageEvent(125, roomInfoResp.getRoom_info().getRoom_id(), t);
|
||||
String json = com.blankj.utilcode.util.GsonUtils.toJson(roomMessageEvent);
|
||||
// 转换为 byte[]
|
||||
byte[] binaryData = json.getBytes(StandardCharsets.UTF_8);
|
||||
// 创建自定义消息
|
||||
MessageListenerSingleton.getInstance().sendCustomC2CMessage125(
|
||||
roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id(),
|
||||
binaryData
|
||||
);
|
||||
}
|
||||
|
||||
} else if (id == R.id.im_mkf) {//关闭、打开对方麦克风
|
||||
MvpPre.closePkMic(roomInfoRespPk.getPk_info().getPk_id(), pkMicIsOn ? "2" : "1", roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id() + "");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -693,6 +666,37 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
.joinChannelEx(pkSwTokenBean.getAgora_token(), roomInfoRespPk.getRoom_info().getRoom_id(), pkUserId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closePkMic() {
|
||||
if (pkMicIsOn) {
|
||||
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
|
||||
is_mute = 0;
|
||||
pkMicIsOn = false;
|
||||
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(false);
|
||||
} else {
|
||||
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off);
|
||||
is_mute = 1;
|
||||
pkMicIsOn = true;
|
||||
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(true);
|
||||
}
|
||||
RoomMessageEvent.text text = new RoomMessageEvent.text();
|
||||
text.setIs_mute(is_mute);
|
||||
String s = com.blankj.utilcode.util.GsonUtils.toJson(text);
|
||||
RoomMessageEvent.T t = new RoomMessageEvent.T();
|
||||
t.setText(s);
|
||||
if (roomInfoRespPk != null && roomInfoRespPk.getPk_info() != null) {
|
||||
RoomMessageEvent roomMessageEvent = new RoomMessageEvent(125, roomInfoResp.getRoom_info().getRoom_id(), t);
|
||||
String json = com.blankj.utilcode.util.GsonUtils.toJson(roomMessageEvent);
|
||||
// 转换为 byte[]
|
||||
byte[] binaryData = json.getBytes(StandardCharsets.UTF_8);
|
||||
// 创建自定义消息
|
||||
MessageListenerSingleton.getInstance().sendCustomC2CMessage125(
|
||||
roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id(),
|
||||
binaryData
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private void pkView() {
|
||||
flexboxLayout.setVisibility(View.GONE);
|
||||
mBinding.cl.setVisibility(VISIBLE);
|
||||
@@ -720,7 +724,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
pitNumber = pitBean.getPit_number();
|
||||
roomPitBean = pitBean;
|
||||
// showPopupMenu(view); // v 是点击的按钮视图
|
||||
if(getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||
if (getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||
}
|
||||
} else if (pitNumber1 == 10) {
|
||||
@@ -763,6 +767,22 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
mBinding.imMkf.setVisibility(GONE);
|
||||
} else {
|
||||
mBinding.imMkf.setVisibility(VISIBLE);
|
||||
if (roomInfoResp.getPk_info()!=null && roomInfoResp.getPk_info().getClose_users()!=null) {
|
||||
if (roomInfoResp.getPk_info().getClose_users().contains(roomInfoResp.getRoom_info().getPit_list().get(8).getUser_id())) {
|
||||
is_mute = 1;
|
||||
pkMicIsOn = true;
|
||||
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(true);
|
||||
} else {
|
||||
is_mute = 0;
|
||||
pkMicIsOn = false;
|
||||
AgoraManagerEx.getInstance().muteAllRemoteAudioStreamsEx(false);
|
||||
}
|
||||
if (roomInfoResp.getPk_info().getClose_users().contains(roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id())) {
|
||||
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off);
|
||||
} else {
|
||||
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
FlexboxLayout flexboxLayout2 = mBinding.flexboxLayout2;
|
||||
@@ -794,7 +814,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
pitNumber = pitBean.getPit_number();
|
||||
roomPitBean = pitBean;
|
||||
// showPopupMenu(view); // v 是点击的按钮视图
|
||||
if(getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||
if (getActivity() != null && getActivity() instanceof RoomActivity) {
|
||||
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
|
||||
}
|
||||
} else if (pitNumber1 == 10) {
|
||||
@@ -926,7 +946,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
countDownTime(Long.parseLong(roomInfoRespPk.getPk_info().getPk_end_times() != null ? roomInfoRespPk.getPk_info().getPk_end_times() : "0"), 2);
|
||||
}
|
||||
|
||||
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
|
||||
// mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
|
||||
|
||||
}
|
||||
|
||||
@@ -1028,13 +1048,13 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
|
||||
public void event1021(RoomMessageEvent message) {
|
||||
if (roomInfoRespPk != null && roomInfoRespPk.getPk_info() != null) {
|
||||
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()){
|
||||
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
|
||||
pitBean.setCharm("0");
|
||||
if (pitBean.getUser_id()!=null && !pitBean.getUser_id().isEmpty() && !pitBean.getUser_id().equals("0")) {
|
||||
if (pitBean.getUser_id() != null && !pitBean.getUser_id().isEmpty() && !pitBean.getUser_id().equals("0")) {
|
||||
wheatLayoutManager1.updateSingleCharm(pitBean, Integer.parseInt(pitBean.getPit_number()), 1);
|
||||
}
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
|
||||
pitBean.setCharm("0");
|
||||
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
|
||||
@@ -1104,13 +1124,13 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
|
||||
/// 推送的下麦1003
|
||||
public void event1003(RoomMessageEvent message) {
|
||||
int pitNumber = Integer.parseInt(message.getText().getPit_number()) ;
|
||||
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(pitNumber- 1);
|
||||
int pitNumber = Integer.parseInt(message.getText().getPit_number());
|
||||
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(pitNumber - 1);
|
||||
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
|
||||
wheatLayoutSingManager.updateSingleWheat(pitBean, pitNumber);
|
||||
} else {
|
||||
if (message.getText().getIs_pk() == null) {
|
||||
wheatLayoutManager1.updateSingleWheat(pitBean,pitNumber, 1);
|
||||
wheatLayoutManager1.updateSingleWheat(pitBean, pitNumber, 1);
|
||||
} else {
|
||||
wheatLayoutManager2.updateSingleWheat(pitBean, pitNumber, 2);
|
||||
}
|
||||
@@ -1123,8 +1143,8 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
|
||||
/// 1004
|
||||
public void event1004(RoomMessageEvent message) {
|
||||
int pitNumber = Integer.parseInt(message.getText().getPit_number()) ;
|
||||
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(pitNumber- 1);
|
||||
int pitNumber = Integer.parseInt(message.getText().getPit_number());
|
||||
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(pitNumber - 1);
|
||||
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
|
||||
wheatLayoutSingManager.updateSingleWheat(pitBean, pitNumber);
|
||||
} else {
|
||||
|
||||
@@ -113,4 +113,19 @@ public class RoomSettingPresenter extends BasePresenter<RoomSettingContacts.View
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRoomBusinessTime(String roomId, String startTime, String endTime) {
|
||||
api.setRoomBusinessTime(roomId, startTime, endTime, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -160,6 +160,24 @@ public class SingSongPresenter extends BaseRoomPresenter<SingSongContacts.View>
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closePkMic(String pk_id, String type, String user_id) {
|
||||
RetrofitClient.getInstance().closePkMic(pk_id, type, user_id, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
if (MvpRef==null)
|
||||
MvpRef=new WeakReference<>(mView);
|
||||
MvpRef.get().closePkMic();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void postRoomSwToken(String roomId,int uid,int invite_pk_user_id) {
|
||||
RetrofitClient.getInstance().postRoomSwToken(roomId, new BaseObserver<PkSwTokenBean>() {
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package com.xscm.modulemain.activity.user.activity;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
@@ -10,12 +14,19 @@ import android.text.TextWatcher;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.activity.OnBackPressedCallback;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Autowired;
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.request.target.CustomTarget;
|
||||
import com.bumptech.glide.request.transition.Transition;
|
||||
import com.luck.picture.lib.engine.CropFileEngine;
|
||||
import com.xscm.modulemain.R;
|
||||
import com.xscm.modulemain.databinding.ActivityCreatedRoomBinding;
|
||||
import com.example.zhouwei.library.CustomPopWindow;
|
||||
@@ -34,8 +45,12 @@ import com.xscm.moduleutil.utils.GlideEngine;
|
||||
import com.xscm.moduleutil.utils.ImageUtils;
|
||||
import com.xscm.moduleutil.utils.PermissionDescriptionHelper;
|
||||
import com.xscm.moduleutil.widget.Constants;
|
||||
import com.xscm.moduleutil.widget.picker.PictureSelectorUtil;
|
||||
import com.yalantis.ucrop.UCrop;
|
||||
import com.yalantis.ucrop.UCropImageEngine;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -256,17 +271,65 @@ public class CreatedRoomActivity extends BaseMvpActivity<CreatedRoomPresenter, A
|
||||
// .setPictureStyle(MyPictureParameterStyle.Companion.selectPicture())
|
||||
// .forResult(requestCode); //结果回调onActivityResult code
|
||||
|
||||
// TODO: 2026/1/20 不带裁剪的方法
|
||||
|
||||
// PictureSelector.create(this)
|
||||
// .openGallery(mimeType)
|
||||
// .isGif(false)
|
||||
// .setImageEngine(GlideEngine.createGlideEngine())
|
||||
// .setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||
// .setMaxSelectNum(1)
|
||||
// .isPreviewImage(true)
|
||||
// .isDisplayCamera(false)
|
||||
// .setOutputCameraDir(Constants.FILE_PATH)
|
||||
// .isOriginalSkipCompress(true)
|
||||
// .forResult(requestCode); //结果回调onActivityResult code
|
||||
|
||||
PictureSelectorUtil pictureSelectorUtil = new PictureSelectorUtil();
|
||||
|
||||
PictureSelector.create(this)
|
||||
.openGallery(mimeType)
|
||||
.isGif(false)
|
||||
.setImageEngine(GlideEngine.createGlideEngine())
|
||||
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||
.setMaxSelectNum(1)
|
||||
.isPreviewImage(true)
|
||||
.isPreviewImage(false)
|
||||
.isDisplayCamera(false)
|
||||
.setOutputCameraDir(Constants.FILE_PATH)
|
||||
.isOriginalSkipCompress(true)
|
||||
.forResult(requestCode); //结果回调onActivityResult code
|
||||
.setImageEngine(GlideEngine.createGlideEngine()) // 选择器展示不出图片则添加
|
||||
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||
.setCropEngine(new CropFileEngine() {
|
||||
@Override
|
||||
public void onStartCrop(Fragment fragment, Uri srcUri, Uri destinationUri, ArrayList<String> dataSource, int requestCode) {
|
||||
UCrop.Options options = pictureSelectorUtil.buildOptions();
|
||||
UCrop uCrop = UCrop.of(srcUri, destinationUri, dataSource);
|
||||
uCrop.withOptions(options);
|
||||
uCrop.setImageEngine(new UCropImageEngine() {
|
||||
@Override
|
||||
public void loadImage(Context context, String url, ImageView imageView) {
|
||||
Glide.with(context).load(url).override(180, 180).into(imageView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadImage(Context context, Uri url, int maxWidth, int maxHeight, OnCallbackListener<Bitmap> call) {
|
||||
Glide.with(context).asBitmap().load(url).override(maxWidth, maxHeight).into(new CustomTarget<Bitmap>() {
|
||||
@Override
|
||||
public void onResourceReady(@NonNull Bitmap resource, @org.jetbrains.annotations.Nullable Transition<? super Bitmap> transition) {
|
||||
if (call != null) {
|
||||
call.onCall(resource);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadCleared(@org.jetbrains.annotations.Nullable Drawable placeholder) {
|
||||
if (call != null) {
|
||||
call.onCall(null);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
uCrop.start(fragment.requireActivity(), fragment, requestCode);
|
||||
}
|
||||
})
|
||||
.forResult(requestCode);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ public class RoomDetailsActivity extends BaseMvpActivity<RoomDetailsPresenter, A
|
||||
|
||||
MvpPre.getCharmList(roomId, stime, etime, currentPage + "", type);
|
||||
});
|
||||
dialog.setShowTime(false);
|
||||
dialog.show(getSupportFragmentManager(), "DoubleTimePicker");
|
||||
});
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.xscm.moduleutil.base.CommonAppContext;
|
||||
import com.xscm.moduleutil.bean.UserInfo;
|
||||
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
||||
import com.xscm.moduleutil.dialog.RealNameDialog;
|
||||
import com.xscm.moduleutil.rtc.AgoraManager;
|
||||
import com.xscm.moduleutil.utils.ARouteConstants;
|
||||
import com.xscm.moduleutil.utils.ColorManager;
|
||||
import com.xscm.moduleutil.utils.SpUtil;
|
||||
@@ -98,6 +99,7 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
|
||||
mBinding.llQh.setVisibility(View.VISIBLE);
|
||||
}
|
||||
mBinding.switQh.setChecked(SpUtil.getTaskService()==1);
|
||||
mBinding.switSk.setChecked(SpUtil.getSkService()==1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -124,6 +126,7 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
|
||||
mBinding.tvShare.setOnClickListener(this::onClick);
|
||||
mBinding.llSendLog.setOnClickListener(this::onClick);
|
||||
mBinding.switQh.setOnClickListener(this::onClick);
|
||||
mBinding.switSk.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
@@ -309,7 +312,15 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
|
||||
}
|
||||
|
||||
// MvpPre.clearLoginInfo();
|
||||
}else if (id == R.id.swit_sk){
|
||||
if (mBinding.switSk.isChecked()) {
|
||||
SpUtil.setSkService(1);
|
||||
} else {
|
||||
SpUtil.setSkService(0);
|
||||
}
|
||||
AgoraManager.getInstance().setEnable();
|
||||
}
|
||||
|
||||
// 通过 ID 获取资源名称
|
||||
String viewName = "";
|
||||
try {
|
||||
|
||||
@@ -73,7 +73,7 @@ class TotalRevenueActivity : BaseMvpActivity<UserFamilyPresenter, ActivityTotalR
|
||||
)
|
||||
})
|
||||
val fragmentManager = supportFragmentManager
|
||||
|
||||
dialog.setShowTime(false)
|
||||
dialog.show(fragmentManager, "DoubleTimePickerBottomSheet")
|
||||
})
|
||||
|
||||
|
||||
@@ -11,9 +11,14 @@ import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.xscm.modulemain.R;
|
||||
import com.xscm.modulemain.activity.user.PageViewModel;
|
||||
import com.xscm.modulemain.activity.user.conacts.GiftWallConacts;
|
||||
import com.xscm.modulemain.activity.user.presenter.GiftWallPresenter;
|
||||
import com.xscm.modulemain.adapter.GiftWallAdapter;
|
||||
import com.xscm.modulemain.databinding.DialogPlaceholderBinding;
|
||||
import com.xscm.modulemain.databinding.FragmentGiftWallBinding;
|
||||
import com.xscm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.xscm.moduleutil.bean.GiftUserWallBean;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -22,16 +27,14 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A placeholder fragment containing a simple view.
|
||||
*/
|
||||
public class PlaceholderFragment extends Fragment {
|
||||
|
||||
private static final String ARG_SECTION_NUMBER = "section_number";
|
||||
* @Author qx
|
||||
* @Time 2026/1/20 9:53
|
||||
* @Description 礼物墙展示用户送礼的dialog
|
||||
*/
|
||||
public class PlaceholderFragment extends BaseMvpDialogFragment<GiftWallPresenter, DialogPlaceholderBinding> implements GiftWallConacts.View{
|
||||
|
||||
private PageViewModel pageViewModel;
|
||||
private FragmentGiftWallBinding binding;
|
||||
|
||||
private GiftWallAdapter mGiftWallAdapter;
|
||||
|
||||
public static PlaceholderFragment newInstance(int index) {
|
||||
PlaceholderFragment fragment = new PlaceholderFragment();
|
||||
@@ -47,7 +50,6 @@ public class PlaceholderFragment extends Fragment {
|
||||
pageViewModel = new ViewModelProvider(this).get(PageViewModel.class);
|
||||
int index = 1;
|
||||
if (getArguments() != null) {
|
||||
index = getArguments().getInt(ARG_SECTION_NUMBER);
|
||||
|
||||
// 获取传递的礼物列表数据
|
||||
List<GiftUserWallBean.GiftWallBean> giftList =
|
||||
@@ -64,37 +66,37 @@ public class PlaceholderFragment extends Fragment {
|
||||
}
|
||||
pageViewModel.setIndex(index);
|
||||
|
||||
mGiftWallAdapter= new GiftWallAdapter(new ArrayList<>());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
protected GiftWallPresenter bindPresenter() {
|
||||
return new GiftWallPresenter(this,getActivity());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(
|
||||
@NonNull LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
protected void initView() {
|
||||
|
||||
binding = FragmentGiftWallBinding.inflate(inflater, container, false);
|
||||
View root = binding.getRoot();
|
||||
// 设置 GridView
|
||||
GridView gridView = binding.gridView;
|
||||
gridView.setAdapter(mGiftWallAdapter);
|
||||
// 观察数据变化并更新 GridView
|
||||
pageViewModel.getDataList().observe(getViewLifecycleOwner(), dataList -> {
|
||||
if (dataList != null) {
|
||||
mGiftWallAdapter.updateData(dataList);
|
||||
}
|
||||
});
|
||||
return root;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.dialog_placeholder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
binding = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGiftWall(GiftUserWallBean data) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -22,8 +22,10 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A placeholder fragment containing a simple view.
|
||||
*/
|
||||
* @Author qx
|
||||
* @Time 2026/1/20 9:53
|
||||
* @Description 礼物墙展示的fragment
|
||||
*/
|
||||
public class PlaceholderGiftFragment extends Fragment {
|
||||
|
||||
private static final String ARG_SECTION_NUMBER = "section_number";
|
||||
@@ -65,6 +67,14 @@ public class PlaceholderGiftFragment extends Fragment {
|
||||
pageViewModel.setIndex(index);
|
||||
|
||||
mGiftWallAdapter= new GiftWallAdapter(new ArrayList<>());
|
||||
|
||||
mGiftWallAdapter.setOnUserClickListener(new GiftWallAdapter.OnUserClickListener() {
|
||||
|
||||
@Override
|
||||
public void onUserClick(GiftUserWallBean.GiftWallBean emotion) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -14,6 +14,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
import com.xscm.modulemain.R;
|
||||
import com.xscm.moduleutil.bean.CombinedGiftBean;
|
||||
import com.xscm.moduleutil.bean.GiftUserWallBean;
|
||||
import com.xscm.moduleutil.bean.room.EmotionDeatils;
|
||||
import com.xscm.moduleutil.utils.ImageLoader;
|
||||
import com.xscm.moduleutil.utils.ImageUtils;
|
||||
|
||||
@@ -28,6 +29,17 @@ import java.util.List;
|
||||
public class GiftWallAdapter extends BaseAdapter {
|
||||
private List<GiftUserWallBean.GiftWallBean> mDataList;
|
||||
|
||||
private OnUserClickListener mOnUserClickListener;
|
||||
// 定义接口
|
||||
public interface OnUserClickListener {
|
||||
void onUserClick(GiftUserWallBean.GiftWallBean emotion);
|
||||
}
|
||||
|
||||
// 转换后的 Java 代码
|
||||
public void setOnUserClickListener(OnUserClickListener listener) {
|
||||
this.mOnUserClickListener= listener;
|
||||
}
|
||||
|
||||
public GiftWallAdapter(List<GiftUserWallBean.GiftWallBean> dataList) {
|
||||
this.mDataList = dataList;
|
||||
}
|
||||
@@ -77,6 +89,18 @@ public class GiftWallAdapter extends BaseAdapter {
|
||||
holder.textView.setText(item.getGift_name());
|
||||
// ImageUtils.loadHeadCC(item.getBase_image(), holder.iv_gift_image);
|
||||
holder.tv_price33.setText(item.getGift_price());
|
||||
|
||||
// 为整个礼物项添加点击事件
|
||||
holder.cl_gift_item.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (item.is_liang()) {
|
||||
if (mOnUserClickListener != null) {
|
||||
mOnUserClickListener.onUserClick(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
TextView tv_number = holder.gift_num;
|
||||
@@ -113,8 +137,8 @@ public class GiftWallAdapter extends BaseAdapter {
|
||||
TopUsersAdapter topUsersAdapter = new TopUsersAdapter(displayUsers);
|
||||
recyclerView.setAdapter(topUsersAdapter);
|
||||
holder.tv_gift_values.setText("等" + item.getTop_users().size() + "人");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
package com.xscm.modulemain.adapter
|
||||
|
||||
import android.graphics.Color
|
||||
import android.widget.TextView
|
||||
import android.app.AlertDialog
|
||||
import android.content.DialogInterface
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.xscm.modulemain.R
|
||||
import com.xscm.moduleutil.bean.BlackUserBean
|
||||
import com.xscm.moduleutil.bean.GroupBean
|
||||
import com.xscm.moduleutil.color.ThemeableDrawableUtils
|
||||
import com.xscm.moduleutil.utils.MeHeadView
|
||||
|
||||
/**
|
||||
* 项目名称:羽声语音
|
||||
* 时间:2026/1/3 14:17
|
||||
* 用途:
|
||||
* 用途:群成员列表 长按根据角色不同展示不同的权限
|
||||
*/
|
||||
class GroupUserListAdapter : BaseQuickAdapter<GroupBean.GroupUserBean, BaseViewHolder>(R.layout.item_group_user) {
|
||||
class GroupUserListAdapter :
|
||||
BaseQuickAdapter<GroupBean.GroupUserBean, BaseViewHolder>(R.layout.item_group_user) {
|
||||
interface OnItemClickListener {
|
||||
fun onItemClick(ismute: Int, item: GroupBean.GroupUserBean?)
|
||||
}
|
||||
|
||||
fun onItemGroupMemberClick(item: GroupBean.GroupUserBean?, b: Boolean)
|
||||
}
|
||||
|
||||
|
||||
private var onItemClickListener: OnItemClickListener? = null
|
||||
@@ -27,11 +27,12 @@ class GroupUserListAdapter : BaseQuickAdapter<GroupBean.GroupUserBean, BaseViewH
|
||||
fun setOnItemClickListener(listener: OnItemClickListener?) {
|
||||
this.onItemClickListener = listener
|
||||
}
|
||||
var isOwner = false
|
||||
|
||||
var isOwner = 0
|
||||
var ismute: Int = 0
|
||||
|
||||
// 在适配器中添加设置方法
|
||||
fun updateOwnerStatus(isOwner: Boolean) {
|
||||
fun updateOwnerStatus(isOwner: Int) {
|
||||
this.isOwner = isOwner
|
||||
notifyDataSetChanged() // 如果需要刷新视图
|
||||
}
|
||||
@@ -41,31 +42,65 @@ class GroupUserListAdapter : BaseQuickAdapter<GroupBean.GroupUserBean, BaseViewH
|
||||
helper: BaseViewHolder,
|
||||
item: GroupBean.GroupUserBean?
|
||||
) {
|
||||
helper.getView<MeHeadView>(R.id.im_user).setData(item?.avatar, "","")
|
||||
helper.getView<MeHeadView>(R.id.im_user).setData(item?.avatar, "", "")
|
||||
helper.setText(R.id.tv_nick_name, item?.nickname)
|
||||
if (isOwner == 1 || isOwner == 2) {
|
||||
helper.setVisible(R.id.im_g, false)
|
||||
// ThemeableDrawableUtils.setThemeableRoundedBackground(
|
||||
// helper.getView<TextView>(R.id.im_g),
|
||||
// Color.parseColor("#333333"),
|
||||
// 34
|
||||
// )
|
||||
// helper.getView<TextView>(R.id.im_g).setTextColor(Color.WHITE)
|
||||
// if (item?.is_mute == 1) {
|
||||
// helper.getView<TextView>(R.id.im_g).text = "解禁"
|
||||
// ismute = 1
|
||||
// } else {
|
||||
// helper.getView<TextView>(R.id.im_g).text = "禁言"
|
||||
// ismute = 0
|
||||
// }
|
||||
// helper.getView<TextView>(R.id.im_g).setOnClickListener {
|
||||
// if (onItemClickListener != null) {
|
||||
// onItemClickListener?.onItemClick(ismute, item)
|
||||
// }
|
||||
// }
|
||||
|
||||
if (isOwner){
|
||||
helper.setVisible(R.id.im_g, true)
|
||||
ThemeableDrawableUtils.setThemeableRoundedBackground(
|
||||
helper.getView<TextView>(R.id.im_g),
|
||||
Color.parseColor("#333333"),
|
||||
34
|
||||
)
|
||||
helper.getView<TextView>(R.id.im_g).setTextColor(Color.WHITE)
|
||||
if (item?.is_mute==1){
|
||||
helper.getView<TextView>(R.id.im_g).text = "解禁"
|
||||
ismute=1
|
||||
}else{
|
||||
helper.getView<TextView>(R.id.im_g).text = "禁言"
|
||||
ismute=0
|
||||
|
||||
helper.itemView.setOnLongClickListener {
|
||||
showOptionsDialog(
|
||||
item?.is_mute!!,
|
||||
item,
|
||||
if (item.group_role == 2) true else false
|
||||
)
|
||||
return@setOnLongClickListener true
|
||||
}
|
||||
helper.getView<TextView>(R.id.im_g).setOnClickListener {
|
||||
if (onItemClickListener != null) {
|
||||
onItemClickListener?.onItemClick(ismute,item)
|
||||
}
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
helper.setVisible(R.id.im_g, false)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示选项对话框
|
||||
*/
|
||||
private fun showOptionsDialog(ismute: Int, item: GroupBean.GroupUserBean?, b: Boolean) {
|
||||
val options = arrayOf<String?>(
|
||||
if (ismute == 1) "解禁" else "禁言",
|
||||
if (b) "设置成普通成员" else "设置成管理员"
|
||||
)
|
||||
if (isOwner != 1){
|
||||
options[1] = ""
|
||||
}
|
||||
val builder = AlertDialog.Builder(mContext)
|
||||
builder.setTitle("选择操作")
|
||||
.setItems(
|
||||
options,
|
||||
DialogInterface.OnClickListener { dialog: DialogInterface?, which: Int ->
|
||||
when (which) {
|
||||
0 -> onItemClickListener?.onItemClick(ismute, item)
|
||||
|
||||
1 -> onItemClickListener?.onItemGroupMemberClick(item, b)
|
||||
}
|
||||
})
|
||||
.show()
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ public class HorizontalListAdapter extends RecyclerView.Adapter<HorizontalListAd
|
||||
private OnItemClickListener mListener;
|
||||
|
||||
public interface OnItemClickListener {
|
||||
void onItemClick(int itemPos,RoomSettingBean item,HorizontalListAdapter itemAdapter);
|
||||
void onItemClick(int itemPos, RoomSettingBean item, HorizontalListAdapter itemAdapter);
|
||||
}
|
||||
|
||||
public HorizontalListAdapter(List<RoomSettingBean> data) {
|
||||
@@ -43,7 +43,7 @@ public class HorizontalListAdapter extends RecyclerView.Adapter<HorizontalListAd
|
||||
super.onBindViewHolder(holder, position, payloads);
|
||||
if (payloads.isEmpty()) {
|
||||
for (Object payload : payloads) {
|
||||
if(((Integer)payload) == 1){
|
||||
if (((Integer) payload) == 1) {
|
||||
RoomSettingBean item = mData.get(position);
|
||||
if (item.isStatus()) {
|
||||
holder.tvName.setText(getName(item.getType(), item.isSelect(), item.getName()));
|
||||
@@ -63,7 +63,7 @@ public class HorizontalListAdapter extends RecyclerView.Adapter<HorizontalListAd
|
||||
}
|
||||
holder.itemView.setOnClickListener(v -> {
|
||||
if (mListener != null) {
|
||||
mListener.onItemClick(position,item,HorizontalListAdapter.this);
|
||||
mListener.onItemClick(position, item, HorizontalListAdapter.this);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -135,6 +135,9 @@ public class HorizontalListAdapter extends RecyclerView.Adapter<HorizontalListAd
|
||||
return com.xscm.moduleutil.R.mipmap.ic_bg_music;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomBgImage:
|
||||
return com.xscm.moduleutil.R.mipmap.ic_bg_image;
|
||||
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomBusinessTime: // 营业时间
|
||||
return com.xscm.moduleutil.R.mipmap.icon_room_time;
|
||||
// 更多操作
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomShare:
|
||||
return com.xscm.moduleutil.R.mipmap.ic_share;
|
||||
|
||||
@@ -120,7 +120,6 @@ public class PkTimeDialogFragment extends BaseMvpDialogFragment<PkTimePresenter,
|
||||
|
||||
public static List<RoomAutionTimeBean> getDefaultTimeOptions() {
|
||||
List<RoomAutionTimeBean> list = new ArrayList<>();
|
||||
list.add(new RoomAutionTimeBean(1));
|
||||
list.add(new RoomAutionTimeBean(5));
|
||||
list.add(new RoomAutionTimeBean(10));
|
||||
list.add(new RoomAutionTimeBean(15));
|
||||
|
||||
@@ -130,7 +130,7 @@ public class RoomConcernDialogFragment extends BaseMvpDialogFragment<RoomClosePr
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
MvpPre.roomRelationList("2");
|
||||
MvpPre.roomRelationList("3");
|
||||
// MvpPre.getConcernList();
|
||||
|
||||
}
|
||||
|
||||
@@ -775,7 +775,7 @@ public class RoomGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPres
|
||||
mBinding.viewPager.setOffscreenPageLimit(0);
|
||||
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
|
||||
mBinding.slidingTabLayout.setCurrentTab(1);
|
||||
refreshCurrentGiftFragment(giftLabelBeans.get(1).getId(), 1, roomId);
|
||||
refreshCurrentGiftFragment(giftLabelBeans.get(1).getId(), 1, "1");
|
||||
mBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
@@ -786,7 +786,7 @@ public class RoomGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPres
|
||||
public void onPageSelected(int position) {
|
||||
// 当页面切换时,控制 tv_bb_qs 按钮的显示
|
||||
updateTvBbQsVisibility(position);
|
||||
refreshCurrentGiftFragment(giftLabelBeans.get(position).getId(), 1, roomId);
|
||||
refreshCurrentGiftFragment(giftLabelBeans.get(position).getId(), 1, "1");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -799,9 +799,9 @@ public class RoomGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPres
|
||||
}
|
||||
|
||||
// 调用示例
|
||||
private void refreshCurrentGiftFragment(String id, int type, String roomId) {
|
||||
private void refreshCurrentGiftFragment(String id, int status, String type) {
|
||||
if (getCurrentGiftFragment() != null) {
|
||||
getCurrentGiftFragment().loadDataIfNeeded(id, type, roomId);
|
||||
getCurrentGiftFragment().loadDataIfNeeded(id, status, type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.xscm.modulemain.dialog;
|
||||
|
||||
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomBusinessTime;
|
||||
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomOrderMic;
|
||||
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomTimeRedSound;
|
||||
import static com.xscm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomTimeSpace;
|
||||
@@ -44,14 +45,18 @@ import com.xscm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.xscm.moduleutil.bean.room.RoomSettingBean;
|
||||
import com.xscm.moduleutil.utils.ARouteConstants;
|
||||
import com.xscm.moduleutil.utils.SpUtil;
|
||||
import com.xscm.moduleutil.widget.DoubleTimePickerBottomSheet;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -174,6 +179,7 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
|
||||
toolsChildren.add(new RoomSettingBean("排麦模式", "ic_order_mic", null, null, QXRoomSettingTypeRoomOrderMic, read, isSelected, false, roomInfoResp.getRoom_info().getRoom_up_pit_type().equals("1")));
|
||||
toolsChildren.add(new RoomSettingBean("背景音乐", "ic_bg_music", null, null, RoomSettingBean.QXRoomSettingTypeRoomBgMusic, read, isSelected, false, false));
|
||||
toolsChildren.add(new RoomSettingBean("背景图片", "ic_bg_image", null, null, RoomSettingBean.QXRoomSettingTypeRoomBgImage, read, isSelected, false, false));
|
||||
toolsChildren.add(new RoomSettingBean("营业时间", "ic_bg_image", null, null, QXRoomSettingTypeRoomBusinessTime, read, isSelected, false, false));
|
||||
toolsParent.setChildren(toolsChildren);
|
||||
parentList.add(toolsParent);
|
||||
|
||||
@@ -397,10 +403,9 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
|
||||
// }
|
||||
else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNCONTRACT) {
|
||||
queren("10");
|
||||
}else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM) {
|
||||
} else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM) {
|
||||
queren("11");
|
||||
}
|
||||
else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomSetting) {
|
||||
} else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomSetting) {
|
||||
if (roomInfoResp != null) {
|
||||
ARouter.getInstance().build(ARouteConstants.CREATED_ROOM).withSerializable("roomInfoResp", roomInfoResp).navigation();
|
||||
} else {
|
||||
@@ -486,6 +491,36 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
|
||||
bean.setSelect(true);
|
||||
}
|
||||
itemAdapter.notifyItemChanged(itemPos);
|
||||
} else if (bean.getType() == QXRoomSettingTypeRoomBusinessTime) {//营业时间
|
||||
DoubleTimePickerBottomSheet dialog = new DoubleTimePickerBottomSheet();
|
||||
dialog.setOnTimeRangeSelectedListener((startDate, endDate) -> {
|
||||
// 处理选择的时间范围
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.getDefault());
|
||||
// 获取开始时间的Calendar实例
|
||||
Calendar startCalendar = Calendar.getInstance();
|
||||
startCalendar.setTime(startDate);
|
||||
// 将秒设置为00
|
||||
startCalendar.set(Calendar.SECOND, 0);
|
||||
|
||||
// 获取结束时间的Calendar实例
|
||||
Calendar endCalendar = Calendar.getInstance();
|
||||
endCalendar.setTime(endDate);
|
||||
// 将秒设置为59
|
||||
endCalendar.set(Calendar.SECOND, 59);
|
||||
|
||||
// 格式化时间
|
||||
String startTime = sdf.format(startCalendar.getTime());
|
||||
String endTime = sdf.format(endCalendar.getTime());
|
||||
|
||||
Log.d("SelectedTime", "开始时间:" + startTime);
|
||||
Log.d("SelectedTime", "结束时间:" + endTime);
|
||||
MvpPre.setRoomBusinessTime(roomId, startTime, endTime);
|
||||
// MvpPre.getCharmList(roomId, stime, etime, currentPage + "", type);
|
||||
});
|
||||
dialog.setShowDate(false);
|
||||
dialog.setShowTime(true);
|
||||
dialog.setShowSeconds(false);
|
||||
dialog.show(getChildFragmentManager(), "DoubleTimePicker");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -725,7 +760,7 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomTypeJiaoy || type == RoomSettingBean.QXRoomSettingTypeRoomSetting ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomSubsidy || type == RoomSettingBean.QXRoomSettingTypeRoomMyDress ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomTypeLianG || type == RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNCONTRACT ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM || type == QXRoomSettingTypeRoomBusinessTime ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomClearMessage || type == QXRoomSettingTypeRoomOrderMic || type == RoomSettingBean.QXRoomSettingTypeRoomFloatingScreen
|
||||
|| type == RoomSettingBean.QXRoomSettingTypeRoomBgMusic || type == RoomSettingBean.QXRoomSettingTypeRoomBgImage || type == -1) {
|
||||
|
||||
|
||||
@@ -123,14 +123,41 @@
|
||||
android:textSize="@dimen/sp_15" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/rl_do_not_disturb"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
app:layout_constraintTop_toBottomOf="@+id/rl_group_announcement">
|
||||
<TextView
|
||||
android:id="@+id/tv_do_not_disturb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:text="消息免打扰"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="@dimen/sp_15"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<Switch
|
||||
android:id="@+id/swit_do_not_disturb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
tools:ignore="UseSwitchCompatOrMaterialXml" />
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_group"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintTop_toBottomOf="@+id/rl_group_announcement">
|
||||
app:layout_constraintTop_toBottomOf="@+id/rl_do_not_disturb">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -15,68 +15,67 @@
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_search"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_44"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintTop_toBottomOf="@+id/top_bar">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="@dimen/dp_32"
|
||||
android:layout_marginLeft="@dimen/dp_20"
|
||||
android:layout_marginTop="@dimen/dp_6"
|
||||
android:layout_marginRight="@dimen/dp_20"
|
||||
android:layout_marginBottom="@dimen/dp_6"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/shape_search_in"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="@dimen/dp_18"
|
||||
android:layout_height="@dimen/dp_18"
|
||||
android:layout_marginLeft="@dimen/dp_11"
|
||||
android:layout_marginRight="@dimen/dp_7"
|
||||
android:src="@drawable/index_level_search" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/edit_query"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:background="@android:color/transparent"
|
||||
android:hint="请输入ID/用户搜索"
|
||||
android:maxLength="10"
|
||||
android:singleLine="true"
|
||||
android:textColor="#333333"
|
||||
android:textColorHint="@color/color_FF999999"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_cancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingRight="@dimen/dp_20"
|
||||
android:text="搜索"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintTop_toBottomOf="@id/ll_search">
|
||||
app:layout_constraintTop_toBottomOf="@id/top_bar">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_search"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_44"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="@dimen/dp_32"
|
||||
android:layout_marginLeft="@dimen/dp_20"
|
||||
android:layout_marginTop="@dimen/dp_6"
|
||||
android:layout_marginRight="@dimen/dp_20"
|
||||
android:layout_marginBottom="@dimen/dp_6"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/shape_search_in"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="@dimen/dp_18"
|
||||
android:layout_height="@dimen/dp_18"
|
||||
android:layout_marginLeft="@dimen/dp_11"
|
||||
android:layout_marginRight="@dimen/dp_7"
|
||||
android:src="@drawable/index_level_search" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/edit_query"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:background="@android:color/transparent"
|
||||
android:hint="请输入ID/用户搜索"
|
||||
android:maxLength="10"
|
||||
android:singleLine="true"
|
||||
android:textColor="#333333"
|
||||
android:textColorHint="@color/color_FF999999"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_cancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingRight="@dimen/dp_20"
|
||||
android:text="搜索"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
</LinearLayout>
|
||||
|
||||
<com.scwang.smartrefresh.layout.SmartRefreshLayout
|
||||
android:id="@+id/smart_refresh_layout"
|
||||
@@ -90,8 +89,8 @@
|
||||
android:id="@+id/recycle_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="@dimen/dp_40"
|
||||
android:clipToPadding="false"/>
|
||||
android:clipToPadding="false"
|
||||
android:paddingBottom="@dimen/dp_40" />
|
||||
|
||||
|
||||
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
|
||||
|
||||
@@ -307,6 +307,31 @@
|
||||
<ImageView style="@style/My_Info_Item_Arrow_Style" />
|
||||
</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_sk"
|
||||
style="@style/My_Info_Item_LL_Style"
|
||||
android:background="@drawable/bg_r15_white"
|
||||
android:visibility="visible">
|
||||
|
||||
<TextView
|
||||
style="@style/My_Info_Item_Title_Style"
|
||||
android:text="是否使用声卡" />
|
||||
|
||||
<Switch
|
||||
android:id="@+id/swit_sk"
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user