Compare commits
138 Commits
molistar_r
...
molistar/1
Author | SHA1 | Date | |
---|---|---|---|
![]() |
654bc45c8c | ||
![]() |
87a36d796c | ||
![]() |
0bc1023c99 | ||
![]() |
154e688673 | ||
![]() |
a91dee592d | ||
![]() |
7ef78bc3e1 | ||
![]() |
b5bcd9cb5f | ||
![]() |
de7eb25045 | ||
![]() |
029b7fcf96 | ||
![]() |
23a3858a2c | ||
![]() |
67044ded6b | ||
![]() |
3e6d34a986 | ||
![]() |
e7ca237a3e | ||
![]() |
e26d548515 | ||
![]() |
539be23e47 | ||
![]() |
dcafb35e24 | ||
![]() |
8fa429aca6 | ||
![]() |
f08b6d4577 | ||
![]() |
3ea7aecd5c | ||
![]() |
178f4e24ef | ||
![]() |
e2861459fb | ||
![]() |
d704a44106 | ||
![]() |
da81a4e905 | ||
![]() |
6c081d9a38 | ||
![]() |
37d897035f | ||
![]() |
cea25c7497 | ||
![]() |
47d2bfd145 | ||
![]() |
047e1454bd | ||
![]() |
714d5baec6 | ||
![]() |
b20ee8064c | ||
![]() |
711135ae90 | ||
![]() |
ecf42e368e | ||
![]() |
205e1180e7 | ||
![]() |
bc48cc86a9 | ||
![]() |
e7b73a2961 | ||
![]() |
5070e21d16 | ||
![]() |
049006aa8b | ||
![]() |
86b498c00e | ||
![]() |
6df95cf11f | ||
![]() |
3b407c0bd6 | ||
![]() |
83af08076a | ||
![]() |
cdc1c51fec | ||
![]() |
a8191616a3 | ||
![]() |
410832690f | ||
![]() |
b1d2f0515b | ||
![]() |
82c2d8c25d | ||
![]() |
549088c99e | ||
![]() |
5910e7c5fd | ||
![]() |
53aed7599a | ||
![]() |
8aebb7c2c2 | ||
![]() |
3a120bf5f0 | ||
![]() |
2a0d8f06fa | ||
![]() |
495bae0d00 | ||
![]() |
2af7cec8dd | ||
![]() |
e9e4da8d60 | ||
![]() |
14c1805a2b | ||
![]() |
066fc4056b | ||
![]() |
f8ad0d3961 | ||
![]() |
0d974866c8 | ||
![]() |
b4f3c4f3e3 | ||
![]() |
f74b744f56 | ||
![]() |
b8f73ec0d5 | ||
![]() |
3ff80994f1 | ||
![]() |
c1426b39c4 | ||
![]() |
3b28974919 | ||
![]() |
63a28bc142 | ||
![]() |
729d626006 | ||
![]() |
a407268be1 | ||
![]() |
f4808e8acf | ||
![]() |
3e49dae43b | ||
![]() |
35d53ccdb2 | ||
![]() |
2a20d75ffd | ||
![]() |
5f157d8454 | ||
![]() |
5fbee068dc | ||
![]() |
046c7d66cd | ||
![]() |
accf4562b1 | ||
![]() |
5b90524144 | ||
![]() |
1284a6e8a2 | ||
![]() |
afdf3093a1 | ||
![]() |
843a37ed97 | ||
![]() |
f99c6d8b37 | ||
![]() |
7add521040 | ||
![]() |
b673f5603f | ||
![]() |
a4f9559ad9 | ||
![]() |
3226109442 | ||
![]() |
3c60225e35 | ||
![]() |
0a70c6a478 | ||
![]() |
16a8f9a52a | ||
![]() |
2a1983aa46 | ||
![]() |
eb187ebc56 | ||
![]() |
f4ef62d2d6 | ||
![]() |
49a10d9f40 | ||
![]() |
42b47fcb64 | ||
![]() |
709b0b0274 | ||
![]() |
b6d59b5986 | ||
![]() |
ef80b15f27 | ||
![]() |
c14d376a1a | ||
![]() |
7f8cd70d99 | ||
![]() |
d2a686f572 | ||
![]() |
693a14d6cf | ||
![]() |
cf078ebc5b | ||
![]() |
408fe443f4 | ||
![]() |
442bd1f238 | ||
![]() |
4eed4c0cfb | ||
![]() |
bf3ea4b437 | ||
![]() |
f161a8e96b | ||
![]() |
574f290004 | ||
![]() |
a46b5b4f32 | ||
![]() |
936dd2f8e8 | ||
![]() |
9d0b6e3a9f | ||
![]() |
14fa576814 | ||
![]() |
9d14936d9c | ||
![]() |
3dec68b1fc | ||
![]() |
3c75f0e86a | ||
![]() |
0caee6e191 | ||
![]() |
b9f87b4984 | ||
![]() |
2b22fb3d4c | ||
![]() |
d80128f217 | ||
![]() |
57a7bee15d | ||
![]() |
677eb4327b | ||
![]() |
d8815a23e7 | ||
![]() |
a7faa20321 | ||
![]() |
612bd50545 | ||
![]() |
3187bc0d37 | ||
![]() |
48d2bc88b8 | ||
![]() |
168c0eab09 | ||
![]() |
d1fc37aa24 | ||
![]() |
94cebe457a | ||
![]() |
6e8f69d273 | ||
![]() |
80d852114c | ||
![]() |
634adc5f19 | ||
![]() |
3408f444aa | ||
![]() |
95f65558a4 | ||
![]() |
fbb7d20f3d | ||
![]() |
12edababcd | ||
![]() |
97949c4828 | ||
![]() |
78fa5751a6 | ||
![]() |
a6798cf35d |
@@ -117,6 +117,7 @@ android {
|
||||
'src/module_treasure_box/java',
|
||||
'src/module_public_chat/java',
|
||||
'src/module_game/java',
|
||||
'src/module_community/java',
|
||||
|
||||
]
|
||||
|
||||
@@ -133,6 +134,7 @@ android {
|
||||
'src/module_treasure_box/res',
|
||||
'src/module_public_chat/res',
|
||||
'src/module_game/res',
|
||||
'src/module_community/res',
|
||||
|
||||
]
|
||||
|
||||
@@ -219,7 +221,6 @@ dependencies {
|
||||
api "com.jzxiang.pickerview:TimePickerDialog:1.0.1"
|
||||
api "com.github.zyyoona7:EasyPopup:1.0.2"
|
||||
api "com.github.donkingliang:LabelsView:1.6.5"
|
||||
api "com.github.yyued:SVGAPlayer-Android:2.6.1"
|
||||
api "com.ms-square:expandableTextView:0.1.4"
|
||||
annotationProcessor 'androidx.annotation:annotation:1.6.0'
|
||||
|
||||
@@ -337,6 +338,16 @@ xmlClassGuard {
|
||||
"com.chwl.core": "com.hhchu.core",
|
||||
"com.chwl.library": "com.hhchu.library"]
|
||||
moveDir = [
|
||||
"com.chwl.app.community.dynamic" : "ffefcef.ddbccaec",
|
||||
"com.chwl.app.community.helper" : "eaeecbea.ccefdeaf",
|
||||
"com.chwl.app.community.holder" : "aafebee.febeeba",
|
||||
"com.chwl.app.community.im" : "eedadfa.cccedea",
|
||||
"com.chwl.app.community.publish" : "ddae.cfdb",
|
||||
"com.chwl.app.community.square" : "bddfb.eedde",
|
||||
"com.chwl.app.community.user_dynamic" : "ddcdbcbc.acbfcfba",
|
||||
"com.chwl.app.community.utils" : "cceaf.cbdcdb",
|
||||
"com.chwl.app.community.widget" : "bdfaa.beeefc",
|
||||
"com.chwl.app.community" : "cadfd.aeddb",
|
||||
"com.chwl.app.avroom.headline" : "eefce.eecad",
|
||||
"com.chwl.core.bean.game" : "caeccd.fdedac",
|
||||
"com.chwl.core.bean.room" : "afceec.aaafbc",
|
||||
|
@@ -82,7 +82,8 @@
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<!-- 对于 Android 12.0 及以上设备,还需要添加如下权限: -->
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING" />
|
||||
<application
|
||||
android:name=".application.App"
|
||||
android:allowBackup="false"
|
||||
@@ -265,6 +266,9 @@
|
||||
android:name=".avroom.activity.RoomSettingActivity"
|
||||
android:label="@string/main_androidmanifest_07"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".avroom.activity.RoomTypeSwitchActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".avroom.activity.RoomBgSettingActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
@@ -873,17 +877,22 @@
|
||||
|
||||
<service
|
||||
android:name="com.netease.nimlib.service.NimService"
|
||||
android:foregroundServiceType="remoteMessaging"
|
||||
android:process=":core" />
|
||||
<service
|
||||
android:name="com.netease.nimlib.service.NimService$Aux"
|
||||
android:foregroundServiceType="remoteMessaging"
|
||||
android:process=":core" />
|
||||
<service
|
||||
android:name="com.netease.nimlib.job.NIMJobService"
|
||||
android:foregroundServiceType="remoteMessaging"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE"
|
||||
android:process=":core" />
|
||||
<service android:name="com.netease.nimlib.service.ResponseService" />
|
||||
<service android:name="com.netease.nimlib.service.ResponseService"
|
||||
android:foregroundServiceType="remoteMessaging"/>
|
||||
<service
|
||||
android:name=".service.DaemonService"
|
||||
android:foregroundServiceType="mediaPlayback"
|
||||
android:enabled="true" />
|
||||
|
||||
<activity android:name=".avroom.room_album.RoomAlbumActivity" />
|
||||
@@ -931,6 +940,23 @@
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".community.dynamic.view.DynamicDetailActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".community.publish.view.PublishActivity"
|
||||
android:launchMode="singleTop"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustNothing" />
|
||||
<activity
|
||||
android:windowSoftInputMode="adjustPan"
|
||||
android:name=".ui.feedback.FeedbackActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity android:name=".ui.debug.DebugActivity"
|
||||
android:screenOrientation="portrait"/>
|
||||
<activity android:name=".ui.game_team.record.GameTeamRecordActivity"
|
||||
android:screenOrientation="portrait"/>
|
||||
</application>
|
||||
|
||||
</manifest>
|
BIN
app/src/main/assets/svga/home_pk.svga
Normal file
BIN
app/src/main/assets/svga/home_pk.svga
Normal file
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 25 KiB |
@@ -25,34 +25,28 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.chwl.app.base.GlobalViewModelOwner;
|
||||
import com.chwl.app.common.widget.dialog.DialogManager;
|
||||
import com.chwl.app.community.square.SquareFragment;
|
||||
import com.chwl.app.game.core.GameStateAbility;
|
||||
import com.chwl.app.game.data.GameModel2;
|
||||
import com.chwl.app.game.ui.game.GameActivity;
|
||||
import com.chwl.app.game.ui.game.GameIntent;
|
||||
import com.chwl.app.game.ui.home.GameHomeFragment;
|
||||
import com.chwl.app.game.ui.home.GameHomeViewModel;
|
||||
import com.chwl.app.star.StarFragment;
|
||||
import com.chwl.app.support.PreloadResourceViewModel;
|
||||
import com.chwl.app.ui.login.LoginPasswordActivity;
|
||||
import com.chwl.core.bean.game.GameRoomInfo;
|
||||
import com.chwl.core.home.bean.MainTabInfo;
|
||||
import com.chwl.core.settings.SettingsModel;
|
||||
import com.chwl.library.utils.JavaUtil;
|
||||
import com.chwl.library.utils.StringUtils;
|
||||
import com.example.lib_utils.StringUtils2;
|
||||
import com.netease.nim.uikit.StatusBarUtil;
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
import com.netease.nim.uikit.common.util.string.StringUtil;
|
||||
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
|
||||
import com.netease.nimlib.sdk.NIMClient;
|
||||
import com.netease.nimlib.sdk.RequestCallbackWrapper;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent;
|
||||
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
|
||||
import com.netease.nimlib.sdk.msg.model.RecentContact;
|
||||
import com.netease.nimlib.sdk.team.TeamService;
|
||||
import com.netease.nimlib.sdk.team.constant.TeamMessageNotifyTypeEnum;
|
||||
import com.netease.nimlib.sdk.team.model.Team;
|
||||
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.trello.rxlifecycle3.android.ActivityEvent;
|
||||
import com.chwl.app.application.IReportConstants;
|
||||
@@ -98,7 +92,6 @@ import com.chwl.core.channel_page.model.ChannelPageModel;
|
||||
import com.chwl.core.community.event.SquareTaskEvent;
|
||||
import com.chwl.core.community.event.UnReadCountEvent;
|
||||
import com.chwl.core.home.bean.MainTabType;
|
||||
import com.chwl.core.home.event.RefreshHomeDataEvent;
|
||||
import com.chwl.core.home.event.VisitorUnreadCountEvent;
|
||||
import com.chwl.core.home.model.GameHomeModel;
|
||||
import com.chwl.core.home.model.HomeModel;
|
||||
@@ -133,11 +126,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.functions.Consumer;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
@@ -150,13 +138,13 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
private static final String TAG = "MainActivity";
|
||||
private static final String EXTRA_APP_QUIT = "APP_QUIT";
|
||||
private final SparseArray<Fragment> fragmentArray = new SparseArray<>();
|
||||
private DragLayout avatarLayout;
|
||||
private View avatarLayout;
|
||||
private CircleImageView avatarImage;
|
||||
private LivingIconView userLivingView;
|
||||
private MainTabLayout mMainTabLayout;
|
||||
private AnchorCardView anchorCardView;
|
||||
private View viewClose;
|
||||
private int mCurrentTabType = MainTabType.TAB_TYPE_STAR;
|
||||
private int mCurrentTabType = MainTabType.TAB_TYPE_HOME;
|
||||
/**
|
||||
* 房间最小化动画,换成属性动画,原先的补间动画影响了activity的生命周期
|
||||
*/
|
||||
@@ -175,9 +163,9 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
private Runnable touchRunnable;
|
||||
|
||||
{
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_STAR, new StarFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_GAME, new GameHomeFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_HOME, new HomeFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_GAME, new GameHomeFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_SQUARE, new SquareFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_MSG, new ContactsListFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_ME, new MeFragment());
|
||||
}
|
||||
@@ -260,11 +248,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
EventBus.getDefault().register(this);
|
||||
otherModelInit();
|
||||
|
||||
Observable.interval(60, TimeUnit.SECONDS)
|
||||
.compose(bindToLifecycle())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(aLong -> EventBus.getDefault().post(new RefreshHomeDataEvent()));
|
||||
|
||||
homeViewModel.getAnchorInfoLiveData().observe(this, anchorInfo -> {
|
||||
if (anchorInfo != null) {
|
||||
anchorCardView.setAnchorInfo(anchorInfo);
|
||||
@@ -592,27 +575,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
private void updateRoomState() {
|
||||
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
if (roomInfo != null) {
|
||||
UserModel.get().getUserInfo(roomInfo.getUid())
|
||||
.subscribe(userInfo -> {
|
||||
if (userInfo != null) {
|
||||
displayAvatarLayout(userInfo.getAvatar(), roomInfo.getTitle(), userInfo.getErbanNo());
|
||||
} else {
|
||||
NimUserInfo nimUserInfo = NimUserInfoCache.getInstance().getUserInfo(roomInfo.getUid() + "");
|
||||
if (nimUserInfo == null) {
|
||||
NimUserInfoCache.getInstance().getUserInfoFromRemote(roomInfo.getUid() + "", new RequestCallbackWrapper<NimUserInfo>() {
|
||||
@Override
|
||||
public void onResult(int i, NimUserInfo nimUserInfo, Throwable throwable) {
|
||||
if (nimUserInfo != null) {
|
||||
displayAvatarLayout(nimUserInfo.getAvatar(), roomInfo.getTitle(), userInfo.getUid());
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
displayAvatarLayout(nimUserInfo.getAvatar(), roomInfo.getTitle(), userInfo.getUid());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
displayAvatarLayout(roomInfo.getAvatar(), roomInfo.getTitle(), roomInfo.getUid());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -84,7 +84,6 @@ import com.chwl.library.common.file.FileHelper;
|
||||
import com.chwl.library.net.rxnet.RxNet;
|
||||
import com.chwl.library.net.rxnet.converter.GsonConverterPlugins;
|
||||
import com.chwl.library.utils.AppMetaDataUtil;
|
||||
import com.chwl.library.utils.AppUtils;
|
||||
import com.chwl.library.utils.DeviceUuidFactory;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.SingleToastUtil;
|
||||
@@ -417,7 +416,7 @@ public class App extends BaseApp {
|
||||
httpParams.put("netType", String.valueOf(SystemUtils.getNetworkType(context)));
|
||||
httpParams.put("model", SystemUtils.getPhoneModel());
|
||||
httpParams.put("appVersion", VersionUtil.getLocalName(context));
|
||||
httpParams.put("appVersionCode", String.valueOf(AppUtils.getVersionCode(context)));
|
||||
httpParams.put("appVersionCode", String.valueOf(VersionUtil.getVersionCode(context)));
|
||||
httpParams.put("deviceId", DeviceUuidFactory.getDeviceId(context));
|
||||
httpParams.put("androidId", MD5Utils.getMD5String(Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID)));
|
||||
httpParams.put("channel", AppMetaDataUtil.getChannelID());
|
||||
@@ -484,7 +483,6 @@ public class App extends BaseApp {
|
||||
ChannelModel.get();
|
||||
MarketVerifyModel.get();
|
||||
GiftModel.get();
|
||||
GiftModel.get().tryLoadGiftList();
|
||||
// 模厅
|
||||
HallDataManager.get().application();
|
||||
//全局处理
|
||||
|
@@ -47,8 +47,7 @@ public abstract class BottomViewListenerWrapper {
|
||||
|
||||
}
|
||||
|
||||
public void onRoomGameplayClick(){
|
||||
public void onRoomGameplayClick(boolean isOnlyPK){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -42,6 +42,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.chwl.app.notify.RoomNotifyManager;
|
||||
import com.chwl.app.ui.webview.baishun.BaiShunGameWebFragment;
|
||||
import com.chwl.app.ui.webview.baishun.IBaiShunGameListener;
|
||||
import com.chwl.library.widget.SVGAView;
|
||||
import com.chwl.core.monsterhunting.bean.MonsterDataBean;
|
||||
import com.chwl.core.room.game.bean.BaiShunGameConfig;
|
||||
import com.chwl.core.support.room.AudioRoomContext;
|
||||
@@ -177,6 +178,15 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
private static final String TAG = "AVRoomActivity";
|
||||
private static final int SHOW_RED_DIALOG_MAX = 10;
|
||||
public static boolean isPKModel = false;
|
||||
private static SVGAView.SVGACache svgaCache;
|
||||
|
||||
public static SVGAView.SVGACache getSvgaCache() {
|
||||
if (svgaCache == null) {
|
||||
svgaCache = SVGAView.newCache(20);
|
||||
}
|
||||
return svgaCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理限制进房
|
||||
*/
|
||||
@@ -899,6 +909,10 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
GiftModel.get().cancelCountDownTimer();
|
||||
EventBus.getDefault().unregister(this);
|
||||
DemoCache.saveBoolean("FirstCharge", false);
|
||||
if (svgaCache != null) {
|
||||
svgaCache.clear();
|
||||
}
|
||||
svgaCache = null;
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,142 @@
|
||||
package com.chwl.app.avroom.activity
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.view.View
|
||||
import androidx.core.view.isVisible
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseViewBindingActivity
|
||||
import com.chwl.app.databinding.RoomTypeSwitchActivityBinding
|
||||
import com.chwl.app.home.helper.OpenRoomHelper
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.room.bean.RoomInfo
|
||||
import com.chwl.core.super_admin.util.SuperAdminUtil
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import com.chwl.library.utils.SingleToastUtil
|
||||
import com.example.lib_utils.ktx.singleClick
|
||||
import com.netease.nim.uikit.StatusBarUtil
|
||||
|
||||
class RoomTypeSwitchActivity : BaseViewBindingActivity<RoomTypeSwitchActivityBinding>() {
|
||||
|
||||
private var currentType: Int? = null
|
||||
|
||||
private var selectType: Int? = null
|
||||
|
||||
companion object {
|
||||
fun isCanSwitch(): Boolean {
|
||||
if (SuperAdminUtil.isSuperAdmin()) {
|
||||
return false
|
||||
}
|
||||
if (AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_HOME_PARTY && AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_PARTY && AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_REVELRY) {
|
||||
return false
|
||||
}
|
||||
if (AvRoomDataManager.get().isDatingMode) {
|
||||
return false
|
||||
}
|
||||
val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo
|
||||
if (roomInfo == null || roomInfo.isPermitRoom == 1) {
|
||||
return false
|
||||
}
|
||||
return AvRoomDataManager.get().isManager
|
||||
}
|
||||
|
||||
fun start(context: Context) {
|
||||
context.startActivity(Intent(context, RoomTypeSwitchActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
override fun init() {
|
||||
initWhiteTitleBar(ResUtil.getString(R.string.room_type))
|
||||
initEvent()
|
||||
this.currentType = AvRoomDataManager.get().mCurrentRoomInfo?.type
|
||||
updateSelectView(currentType)
|
||||
}
|
||||
|
||||
private fun initEvent() {
|
||||
binding.tvSubmit.singleClick {
|
||||
selectType?.let {
|
||||
if (currentType != it) {
|
||||
trySwitchRoomType(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
addTypeSelectClick(binding.iv9, RoomInfo.ROOMTYPE_HOME_PARTY)
|
||||
addTypeSelectClick(binding.iv10, RoomInfo.ROOMTYPE_PARTY)
|
||||
addTypeSelectClick(binding.iv15, RoomInfo.ROOMTYPE_REVELRY)
|
||||
}
|
||||
|
||||
private fun addTypeSelectClick(view: View, type: Int) {
|
||||
view.setOnClickListener {
|
||||
updateSelectView(type)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateSelectView(type: Int?) {
|
||||
this.selectType = type
|
||||
val views = mapOf(
|
||||
RoomInfo.ROOMTYPE_HOME_PARTY to binding.iv9Border,
|
||||
RoomInfo.ROOMTYPE_PARTY to binding.iv10Border,
|
||||
RoomInfo.ROOMTYPE_REVELRY to binding.iv15Border
|
||||
)
|
||||
val displayRes = mapOf(
|
||||
RoomInfo.ROOMTYPE_HOME_PARTY to R.drawable.room_type_bg_9,
|
||||
RoomInfo.ROOMTYPE_PARTY to R.drawable.room_type_bg_10,
|
||||
RoomInfo.ROOMTYPE_REVELRY to R.drawable.room_type_bg_15
|
||||
)
|
||||
views.forEach {
|
||||
it.value.isVisible = it.key == type
|
||||
}
|
||||
val resId = displayRes.get(type)
|
||||
if (resId != null) {
|
||||
binding.ivSelected.setImageResource(resId)
|
||||
} else {
|
||||
binding.ivSelected.setImageDrawable(null)
|
||||
}
|
||||
if (type == currentType) {
|
||||
binding.tvSubmit.setText(R.string.room_type_using)
|
||||
} else {
|
||||
binding.tvSubmit.setText(R.string.room_type_use)
|
||||
}
|
||||
}
|
||||
|
||||
private fun trySwitchRoomType(type: Int) {
|
||||
val currentType = this.currentType
|
||||
if (currentType != null && currentType > type) {
|
||||
dialogManager.showOkCancelDialog(
|
||||
ResUtil.getString(R.string.switch_room_type_tips),
|
||||
ResUtil.getString(R.string.login_fragment_adduserinfofragment_04)
|
||||
) {
|
||||
requestSwitchRoomType(type)
|
||||
}
|
||||
} else {
|
||||
requestSwitchRoomType(type)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
private fun requestSwitchRoomType(type: Int) {
|
||||
dialogManager.showProgressDialog(context)
|
||||
OpenRoomHelper.updateRoomInfoRx(
|
||||
AvRoomDataManager.get().mCurrentRoomInfo,
|
||||
type,
|
||||
0
|
||||
).compose(bindToLifecycle()).subscribe({
|
||||
dialogManager.dismissDialog()
|
||||
finish()
|
||||
}, {
|
||||
SingleToastUtil.showToast(it.message)
|
||||
dialogManager.dismissDialog()
|
||||
})
|
||||
}
|
||||
|
||||
override fun needSteepStateBar(): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun setStatusBar() {
|
||||
super.setStatusBar()
|
||||
StatusBarUtil.transparencyBar(this)
|
||||
StatusBarUtil.StatusBarLightMode(this)
|
||||
}
|
||||
}
|
@@ -15,8 +15,12 @@ import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity;
|
||||
import com.chwl.app.utils.AvatarHelper;
|
||||
import com.chwl.library.widget.SVGAView;
|
||||
import com.chwl.core.utils.extension.StringExtensionKt;
|
||||
import com.coorchice.library.SuperTextView;
|
||||
import com.example.lib_utils.StringUtils2;
|
||||
import com.netease.nim.uikit.common.util.string.StringUtil;
|
||||
import com.opensource.svgaplayer.SVGAImageView;
|
||||
import com.chwl.app.R;
|
||||
@@ -55,6 +59,9 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
public static final String MICRO_TYPE_DATING = "dating";
|
||||
public static final String MICRO_TYPE_DATING_VIP = "dating_vip";
|
||||
public static final String MICRO_TYPE_SINGLE = "single";
|
||||
public static final String MICRO_TYPE_PARTY = "party";
|
||||
public static final String MICRO_TYPE_REVELRY = "revelry";
|
||||
|
||||
protected static final int TYPE_KING = 2;
|
||||
protected static final int TYPE_BOSS = 1;
|
||||
protected static final int TYPE_NORMAL = 0;
|
||||
@@ -76,11 +83,16 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().getRoomQueueMemberInfoByMicPosition(position - 1);
|
||||
if (roomQueueInfo == null) return;
|
||||
NormalMicroViewHolder holder = (NormalMicroViewHolder) viewHolder;
|
||||
holder.micPositionNameOffset = getMicPositionNameOffset();
|
||||
holder.bind(roomQueueInfo, position - 1);
|
||||
}
|
||||
|
||||
public abstract String microType();
|
||||
|
||||
protected int getMicPositionNameOffset() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return 9;
|
||||
@@ -137,7 +149,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
SVGAImageView ivHalo;
|
||||
|
||||
@Nullable
|
||||
ImageView ivHeadWear;
|
||||
SVGAView ivHeadWear;
|
||||
@Nullable
|
||||
ImageView ivCharmLevelTag;
|
||||
|
||||
@@ -146,6 +158,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
|
||||
RoomQueueInfo info;
|
||||
int position = TYPE_INVALID;
|
||||
int micPositionNameOffset = 2;
|
||||
|
||||
NormalMicroViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
@@ -162,6 +175,9 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
ivUpImage.setOnClickListener(this);
|
||||
ivLockImage.setOnClickListener(this);
|
||||
ivAvatar.setOnClickListener(this);
|
||||
if (ivHeadWear != null) {
|
||||
ivHeadWear.bindCache(AVRoomActivity.getSvgaCache());
|
||||
}
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
@@ -267,6 +283,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
private void clearHeadWear() {
|
||||
if (ivHeadWear == null) return;
|
||||
ivHeadWear.clearAnimation();
|
||||
ivHeadWear.stopAnimation();
|
||||
ivHeadWear.setImageDrawable(null);
|
||||
ivHeadWear.setTag(R.id.mic_item_head_wear, null);
|
||||
ivHeadWear.setVisibility(View.GONE);
|
||||
@@ -274,7 +291,11 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
|
||||
protected void setDefalutText(int index) {
|
||||
tvNick.setTextColor(Color.WHITE);
|
||||
tvNick.setText("NO."+ (index + 1));
|
||||
tvNick.setText(getMicPositionName(index));
|
||||
}
|
||||
|
||||
protected String getMicPositionName(int index) {
|
||||
return "NO." + (index + micPositionNameOffset);
|
||||
}
|
||||
|
||||
protected void setSelectText(int index, String nick, int gender) {
|
||||
@@ -286,10 +307,13 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
private void updateNobleView(MicMemberInfo chatRoomMember) {
|
||||
if (ivHeadWear == null) return;
|
||||
String headWear = chatRoomMember.getHeadWearUrl();
|
||||
int headWearType = chatRoomMember.getHeadWearType();
|
||||
if (TextUtils.isEmpty(headWear)) {
|
||||
headWear = NobleUtil.getHeadResource(HeadWearInfo.EFFECT, chatRoomMember) != null ?
|
||||
NobleUtil.getHeadResource(HeadWearInfo.EFFECT, chatRoomMember) :
|
||||
NobleUtil.getHeadResource(HeadWearInfo.PIC, chatRoomMember);
|
||||
String type = NobleUtil.getHeadResource(HeadWearInfo.TYPE, chatRoomMember);
|
||||
headWearType = StringUtils2.INSTANCE.toInt(type);
|
||||
}
|
||||
String nobleHeadWear = (String) NobleUtil.getResource(NobleResourceType.KEY_HEAD_WEAR, chatRoomMember);
|
||||
if (!TextUtils.isEmpty(headWear)) {
|
||||
@@ -297,7 +321,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
//只有头饰发生改变才更新,防止闪烁
|
||||
if (!headWear.equals(ivHeadWear.getTag(R.id.mic_item_head_wear))) {
|
||||
ivHeadWear.setTag(R.id.mic_item_head_wear, headWear);
|
||||
NobleUtil.loadMicHeadWear(headWear, ivHeadWear, R.id.mic_item_head_wear, headWear);
|
||||
AvatarHelper.loadAvatarFrame(ivHeadWear, headWear, headWearType);
|
||||
}
|
||||
} else if (!TextUtils.isEmpty(nobleHeadWear)) {
|
||||
// 头饰
|
||||
@@ -478,10 +502,10 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
//控制最高最低头饰
|
||||
Observer<Integer> headWearObserver = headWearValue -> {
|
||||
if (ivCharmLevelTag == null) return;
|
||||
ivCharmLevelTag.setVisibility(View.GONE);
|
||||
if (headWearValue == 1) {
|
||||
ivCharmLevelTag.setVisibility(View.VISIBLE);
|
||||
ivCharmLevelTag.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_charm_level_min));
|
||||
ivCharmLevelTag.setVisibility(View.GONE);
|
||||
// ivCharmLevelTag.setVisibility(View.VISIBLE);
|
||||
// ivCharmLevelTag.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_charm_level_min));
|
||||
} else if (headWearValue == 2) {
|
||||
ivCharmLevelTag.setVisibility(View.VISIBLE);
|
||||
ivCharmLevelTag.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_charm_level_max));
|
||||
|
@@ -27,6 +27,11 @@ public class CpMicroViewAdapter extends BaseMicroViewAdapter {
|
||||
return BaseMicroViewAdapter.MICRO_TYPE_CP;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getMicPositionNameOffset() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bindToRecyclerView(RecyclerView recyclerView) {
|
||||
GridLayoutManager layoutManager = new GridLayoutManager(context, 3);
|
||||
|
@@ -27,6 +27,9 @@ import com.chwl.library.utils.ResUtil
|
||||
* @date 2017/12/18
|
||||
*/
|
||||
class DatingMicroViewAdapter(context: Context?) : BaseMicroViewAdapter(context) {
|
||||
override fun getMicPositionNameOffset(): Int {
|
||||
return 1
|
||||
}
|
||||
|
||||
/**
|
||||
* Set LayoutManager and bind this to RecyclerView
|
||||
|
@@ -2,7 +2,6 @@ package com.chwl.app.avroom.adapter;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -13,8 +12,6 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.core.bean.RoomQueueInfo;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
|
||||
/**
|
||||
* @author xiaoyu
|
||||
@@ -27,6 +24,11 @@ public class MicroViewAdapter extends BaseMicroViewAdapter {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getMicPositionNameOffset() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set LayoutManager and bind this to RecyclerView
|
||||
*/
|
||||
@@ -62,15 +64,6 @@ public class MicroViewAdapter extends BaseMicroViewAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) {
|
||||
RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().getRoomQueueMemberInfoByMicPosition(position - 1);
|
||||
if (roomQueueInfo == null) {
|
||||
return;
|
||||
}
|
||||
NormalMicroViewHolder holder = (NormalMicroViewHolder) viewHolder;
|
||||
holder.bind(roomQueueInfo, position - 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String microType() {
|
||||
|
@@ -0,0 +1,79 @@
|
||||
package com.chwl.app.avroom.adapter;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.core.bean.RoomQueueInfo;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
|
||||
/**
|
||||
* @author xiaoyu
|
||||
* @date 2017/12/18
|
||||
*/
|
||||
|
||||
public class PartyMicroViewAdapter extends BaseMicroViewAdapter {
|
||||
|
||||
public PartyMicroViewAdapter(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set LayoutManager and bind this to RecyclerView
|
||||
*/
|
||||
@Override
|
||||
public void bindToRecyclerView(RecyclerView recyclerView) {
|
||||
GridLayoutManager layoutManager = new GridLayoutManager(context, 5);
|
||||
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
recyclerView.setAdapter(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View item;
|
||||
item = LayoutInflater.from(parent.getContext()).
|
||||
inflate(R.layout.list_item_micro, parent, false);
|
||||
return new MicroViewHolder(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String microType() {
|
||||
return BaseMicroViewAdapter.MICRO_TYPE_PARTY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
return TYPE_NORMAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
class MicroViewHolder extends GiftValueViewHolder {
|
||||
MicroViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bind(RoomQueueInfo info, int position) {
|
||||
super.bind(info, position);
|
||||
ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void setDefalutText(int index) {
|
||||
super.setDefalutText(index);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,79 @@
|
||||
package com.chwl.app.avroom.adapter;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.core.bean.RoomQueueInfo;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
|
||||
/**
|
||||
* @author xiaoyu
|
||||
* @date 2017/12/18
|
||||
*/
|
||||
|
||||
public class RevelryMicroViewAdapter extends BaseMicroViewAdapter {
|
||||
|
||||
public RevelryMicroViewAdapter(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set LayoutManager and bind this to RecyclerView
|
||||
*/
|
||||
@Override
|
||||
public void bindToRecyclerView(RecyclerView recyclerView) {
|
||||
GridLayoutManager layoutManager = new GridLayoutManager(context, 5);
|
||||
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
recyclerView.setAdapter(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View item;
|
||||
item = LayoutInflater.from(parent.getContext()).
|
||||
inflate(R.layout.list_item_micro, parent, false);
|
||||
return new MicroViewHolder(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String microType() {
|
||||
return BaseMicroViewAdapter.MICRO_TYPE_REVELRY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
return TYPE_NORMAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
class MicroViewHolder extends GiftValueViewHolder {
|
||||
MicroViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bind(RoomQueueInfo info, int position) {
|
||||
super.bind(info, position);
|
||||
ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
public void setDefalutText(int index) {
|
||||
super.setDefalutText(index);
|
||||
}
|
||||
}
|
||||
}
|
@@ -8,17 +8,18 @@ import android.util.AttributeSet
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.PopupWindow
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.view.marginBottom
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.lifecycle.Observer
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.netease.nim.uikit.common.util.sys.TimeUtil
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.common.widget.DragLayout
|
||||
import com.chwl.app.databinding.LayoutRoomPkBoardViewBinding
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
import com.chwl.core.im.custom.bean.RoomPkBean
|
||||
@@ -29,6 +30,9 @@ import com.chwl.core.utils.CurrentTimeUtils
|
||||
import com.chwl.core.utils.extension.subAndReplaceDot
|
||||
import com.chwl.library.rxbus.RxBus
|
||||
import com.chwl.library.utils.CommonUtils
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import com.chwl.library.widget.drag.ViewDragLayout
|
||||
import com.example.lib_utils.UiUtils
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
@@ -36,7 +40,7 @@ import java.util.concurrent.TimeUnit
|
||||
|
||||
class RoomPKBoardView @JvmOverloads constructor(
|
||||
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
) : DragLayout(context, attrs, defStyleAttr) {
|
||||
) : ViewDragLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
private val binding = LayoutRoomPkBoardViewBinding.inflate(LayoutInflater.from(context))
|
||||
private val observer = Observer<RoomPkBean?> { updateView(it) }
|
||||
@@ -45,25 +49,34 @@ class RoomPKBoardView @JvmOverloads constructor(
|
||||
private var roomPkBean: RoomPkBean? = null
|
||||
|
||||
init {
|
||||
addView(binding.root, LayoutParams(ScreenUtil.dip2px(339f), ScreenUtil.dip2px(233f)))
|
||||
addView(
|
||||
binding.root,
|
||||
FrameLayout.LayoutParams(
|
||||
context.resources.getDimensionPixelOffset(R.dimen.dp_309),
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT
|
||||
).apply {
|
||||
this.gravity = Gravity.CENTER
|
||||
this.setMargins(0, 0, 0, UiUtils.dip2px(50f))
|
||||
}
|
||||
)
|
||||
//注意这里需要先改变Style,再订阅数据
|
||||
binding.viewRankListCharmLeft.showCharmStyle()
|
||||
binding.viewRankListCharmRight.showCharmStyle()
|
||||
AvRoomDataManager.get().roomPkLiveData.observeForever(observer)
|
||||
binding.ivDetails.setOnClickListener {
|
||||
if (CommonUtils.isFastDoubleClick(1000)) return@setOnClickListener
|
||||
if (CommonUtils.isFastDoubleClick(500)) return@setOnClickListener
|
||||
binding.groupRank.isVisible = !binding.groupRank.isVisible
|
||||
if (binding.groupRank.isVisible) {
|
||||
binding.clRoot.setBackgroundResource(R.drawable.bg_room_pk_board)
|
||||
binding.clRoot.updateLayoutParams<FrameLayout.LayoutParams> {
|
||||
width = ScreenUtil.dip2px(339f)
|
||||
height = ScreenUtil.dip2px(233f)
|
||||
binding.ivBg.setImageResource(R.drawable.room_pk_bg_full)
|
||||
binding.ivBg.updateLayoutParams<ConstraintLayout.LayoutParams> {
|
||||
width = ViewGroup.LayoutParams.MATCH_PARENT
|
||||
height = context.resources.getDimensionPixelOffset(R.dimen.dp_285)
|
||||
}
|
||||
} else {
|
||||
binding.clRoot.setBackgroundResource(R.drawable.bg_room_pk_board_small)
|
||||
binding.clRoot.updateLayoutParams<FrameLayout.LayoutParams> {
|
||||
width = ScreenUtil.dip2px(339f)
|
||||
height = ScreenUtil.dip2px(137f)
|
||||
binding.ivBg.setImageResource(R.drawable.room_pk_bg_small)
|
||||
binding.ivBg.updateLayoutParams<ConstraintLayout.LayoutParams> {
|
||||
width = ViewGroup.LayoutParams.MATCH_PARENT
|
||||
height = context.resources.getDimensionPixelOffset(R.dimen.dp_130)
|
||||
}
|
||||
}
|
||||
binding.ivDetails.animate().rotationBy(180f).start()
|
||||
@@ -122,11 +135,17 @@ class RoomPKBoardView @JvmOverloads constructor(
|
||||
)
|
||||
binding.viewRankListCharmRight.updateData(roomPkBean?.arRank)
|
||||
binding.viewRankListContributeRight.updateData(roomPkBean?.asRank)
|
||||
|
||||
binding.pbScore.progress = ((roomPkBean?.cPercent ?: 0.5f) * 100).toInt()
|
||||
val layoutParams = binding.svgaHot.layoutParams as ConstraintLayout.LayoutParams
|
||||
layoutParams.horizontalBias = roomPkBean?.cPercent ?: 0.5f
|
||||
binding.svgaHot.layoutParams = layoutParams
|
||||
binding.pbScore.post {
|
||||
val progress = binding.pbScore.width * (roomPkBean?.cPercent ?: 0.5f)
|
||||
var bias =
|
||||
(progress - binding.svgaHot.width / 2f) / (binding.pbScore.width - binding.svgaHot.width)
|
||||
val layoutParams = binding.svgaHot.layoutParams as ConstraintLayout.LayoutParams
|
||||
bias = 1f.coerceAtMost(bias)
|
||||
bias = 0f.coerceAtLeast(bias)
|
||||
layoutParams.horizontalBias = bias
|
||||
binding.svgaHot.layoutParams = layoutParams
|
||||
}
|
||||
|
||||
binding.tvScoreLeft.text = "${roomPkBean?.cAmount ?: 0}"
|
||||
binding.tvScoreRight.text = "${roomPkBean?.aAmount ?: 0}"
|
||||
@@ -134,13 +153,18 @@ class RoomPKBoardView @JvmOverloads constructor(
|
||||
disposable = Observable.interval(1, TimeUnit.SECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe { _ ->
|
||||
binding.tvTime.text = roomPkBean?.endTime?.let {
|
||||
roomPkBean?.endTime?.let {
|
||||
val remainTime = (it - CurrentTimeUtils.getCurrentTime()).toInt() / 1000
|
||||
binding.tvTime.setTextColor(Color.parseColor(if (remainTime <= 30) "#ff87a1" else "#fff600"))
|
||||
binding.tvTime.isVisible = remainTime > 0
|
||||
binding.tvEndHint.isVisible = remainTime <= 0
|
||||
TimeUtil.secToTime(remainTime)
|
||||
} ?: "00:00"
|
||||
binding.tvTime.setTextColor(Color.parseColor(if (remainTime <= 30) "#FFF17D" else "#ffffff"))
|
||||
if (remainTime > 0) {
|
||||
binding.tvTime.text = TimeUtil.secToTime(remainTime)
|
||||
} else {
|
||||
binding.tvTime.text =
|
||||
ResUtil.getString(R.string.layout_layout_room_pk_board_view_02)
|
||||
}
|
||||
} ?: let {
|
||||
binding.tvTime.text = "00:00"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +174,11 @@ class RoomPKBoardView @JvmOverloads constructor(
|
||||
contentView =
|
||||
LayoutInflater.from(context).inflate(R.layout.layout_room_pk_help_view, null)
|
||||
helpPopupWindow =
|
||||
PopupWindow(contentView, ScreenUtil.dip2px(244f), ScreenUtil.dip2px(177f))
|
||||
PopupWindow(
|
||||
contentView,
|
||||
resources.getDimensionPixelOffset(R.dimen.dp_209),
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
helpPopupWindow.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||
helpPopupWindow.isOutsideTouchable = true
|
||||
helpPopupWindow.isFocusable = true
|
||||
@@ -158,10 +186,10 @@ class RoomPKBoardView @JvmOverloads constructor(
|
||||
|
||||
try {
|
||||
helpPopupWindow.showAsDropDown(
|
||||
binding.viewHelpAnchor,
|
||||
binding.ivHelp,
|
||||
0,
|
||||
0,
|
||||
Gravity.START or Gravity.BOTTOM
|
||||
ScreenUtil.dip2px(7f),
|
||||
Gravity.END or Gravity.BOTTOM
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
|
@@ -5,6 +5,8 @@ import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.widget.FrameLayout
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isInvisible
|
||||
import androidx.core.view.isVisible
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.databinding.LayoutRoomPkRankListViewBinding
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
@@ -19,7 +21,6 @@ class RoomPKRankListView @JvmOverloads constructor(
|
||||
private val binding = LayoutRoomPkRankListViewBinding.inflate(LayoutInflater.from(context))
|
||||
private val tvValues = arrayOf(binding.tvValue1, binding.tvValue2, binding.tvValue3)
|
||||
private val ivAvatars = arrayOf(binding.ivAvatar1, binding.ivAvatar2, binding.ivAvatar3)
|
||||
private var defaultAvatarRes = R.drawable.bg_room_pk_rank_contribute_default
|
||||
|
||||
init {
|
||||
addView(binding.root)
|
||||
@@ -36,13 +37,9 @@ class RoomPKRankListView @JvmOverloads constructor(
|
||||
binding.tvValue1.setBackgroundResource(R.drawable.bg_room_pk_charm)
|
||||
binding.tvValue2.setBackgroundResource(R.drawable.bg_room_pk_charm)
|
||||
binding.tvValue3.setBackgroundResource(R.drawable.bg_room_pk_charm)
|
||||
binding.viewBg1.setBackgroundResource(R.drawable.bg_room_pk_rank_charm1)
|
||||
binding.viewBg2.setBackgroundResource(R.drawable.bg_room_pk_rank_charm2)
|
||||
binding.viewBg3.setBackgroundResource(R.drawable.bg_room_pk_rank_charm2)
|
||||
binding.ivAvatar1.setImageResource(R.drawable.bg_room_pk_rank_charm_default)
|
||||
binding.ivAvatar2.setImageResource(R.drawable.bg_room_pk_rank_charm_default)
|
||||
binding.ivAvatar3.setImageResource(R.drawable.bg_room_pk_rank_charm_default)
|
||||
defaultAvatarRes = R.drawable.bg_room_pk_rank_charm_default
|
||||
binding.ivAvatarSeat1.setImageResource(R.drawable.room_pk_ic_seat_charm)
|
||||
binding.ivAvatarSeat2.setImageResource(R.drawable.room_pk_ic_seat_charm)
|
||||
binding.ivAvatarSeat3.setImageResource(R.drawable.room_pk_ic_seat_charm)
|
||||
}
|
||||
|
||||
fun updateData(data: List<RoomPkBean.RankBean>?) {
|
||||
@@ -50,12 +47,16 @@ class RoomPKRankListView @JvmOverloads constructor(
|
||||
val rankBean = data?.getOrNull(i)
|
||||
tvValues[i].text = rankBean?.amount ?: "0"
|
||||
tvValues[i].isGone = "0" == tvValues[i].text
|
||||
ImageLoadUtils.loadImage(
|
||||
context,
|
||||
rankBean?.avatar,
|
||||
ivAvatars[i],
|
||||
if (rankBean?.avatar.isNullOrEmpty()) defaultAvatarRes else R.drawable.default_avatar
|
||||
)
|
||||
if (rankBean?.avatar.isNullOrEmpty()) {
|
||||
ivAvatars[i].isInvisible = true
|
||||
} else {
|
||||
ivAvatars[i].isVisible = true
|
||||
ImageLoadUtils.loadImage(
|
||||
context,
|
||||
rankBean?.avatar,
|
||||
ivAvatars[i], R.drawable.default_avatar
|
||||
)
|
||||
}
|
||||
ivAvatars[i].tag = rankBean?.uid
|
||||
}
|
||||
}
|
||||
|
@@ -3,15 +3,14 @@ package com.chwl.app.avroom.anotherroompk
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.WindowManager
|
||||
import androidx.core.view.isVisible
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogRoomPkFinishBinding
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
import com.chwl.core.im.custom.bean.RoomPkBean
|
||||
import com.chwl.core.utils.extension.subAndReplaceDot
|
||||
|
||||
class RoomPkFinishDialog : BaseDialog<DialogRoomPkFinishBinding>() {
|
||||
class RoomPkFinishDialog : BaseDialogFragment<DialogRoomPkFinishBinding>() {
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
@@ -30,10 +29,8 @@ class RoomPkFinishDialog : BaseDialog<DialogRoomPkFinishBinding>() {
|
||||
|
||||
@SuppressLint("CheckResult", "SetTextI18n")
|
||||
override fun init() {
|
||||
binding?.ivClose?.setOnClickListener { dismissAllowingStateLoss() }
|
||||
binding?.tvTitleRed?.text = roomPkBean.cTitle.subAndReplaceDot(7)
|
||||
binding?.tvValueRed?.text = "${roomPkBean.cAmount}"
|
||||
binding?.ivRedWin?.isVisible = roomPkBean.cUid == roomPkBean.winUid && roomPkBean.winUid != 0L
|
||||
ImageLoadUtils.loadImage(
|
||||
context,
|
||||
roomPkBean.cAvatar,
|
||||
@@ -43,8 +40,6 @@ class RoomPkFinishDialog : BaseDialog<DialogRoomPkFinishBinding>() {
|
||||
|
||||
binding?.tvTitleBlue?.text = roomPkBean.aTitle.subAndReplaceDot(7)
|
||||
binding?.tvValueBlue?.text = "${roomPkBean.aAmount}"
|
||||
binding?.ivBlueWin?.isVisible =
|
||||
roomPkBean.cUid != roomPkBean.winUid && roomPkBean.winUid != 0L
|
||||
ImageLoadUtils.loadImage(
|
||||
context,
|
||||
roomPkBean.aAvatar,
|
||||
@@ -53,7 +48,7 @@ class RoomPkFinishDialog : BaseDialog<DialogRoomPkFinishBinding>() {
|
||||
)
|
||||
|
||||
roomPkBean.csRank.getOrNull(0)?.let {
|
||||
binding?.tvNickContribute?.text = it.nick.subAndReplaceDot(7)
|
||||
binding?.tvNickContribute?.text = it.nick
|
||||
binding?.tvValueContribute?.text =
|
||||
context?.getString(R.string.layout_dialog_room_pk_finish_07, it.amount.toString())
|
||||
?: ""
|
||||
@@ -66,7 +61,7 @@ class RoomPkFinishDialog : BaseDialog<DialogRoomPkFinishBinding>() {
|
||||
}
|
||||
|
||||
roomPkBean.crRank.getOrNull(0)?.let {
|
||||
binding?.tvNickCharm?.text = it.nick.subAndReplaceDot(7)
|
||||
binding?.tvNickCharm?.text = it.nick
|
||||
binding?.tvValueCharm?.text =
|
||||
context?.getString(R.string.layout_activity_jewel_09, it.amount?.toString()) ?: ""
|
||||
ImageLoadUtils.loadImage(
|
||||
@@ -79,25 +74,13 @@ class RoomPkFinishDialog : BaseDialog<DialogRoomPkFinishBinding>() {
|
||||
|
||||
when (roomPkBean.winUid) {
|
||||
0L -> {
|
||||
binding?.viewBg?.setBackgroundResource(R.drawable.bg_719cea_radius_10)
|
||||
binding?.clRoot?.setBackgroundResource(R.drawable.bg_room_pk_finish_deuce)
|
||||
binding?.viewContribute?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_deuce)
|
||||
binding?.viewCharm?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_deuce)
|
||||
binding?.ivClose?.setImageResource(R.drawable.ic_room_pk_finish_close_deuce)
|
||||
binding?.ivStatus?.setImageResource(R.drawable.room_pk_result_draw)
|
||||
}
|
||||
roomPkBean.cUid -> {
|
||||
binding?.viewBg?.setBackgroundResource(R.drawable.bg_edbf89_radius_10)
|
||||
binding?.clRoot?.setBackgroundResource(R.drawable.bg_room_pk_finish_win)
|
||||
binding?.viewContribute?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_win)
|
||||
binding?.viewCharm?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_win)
|
||||
binding?.ivClose?.setImageResource(R.drawable.ic_room_pk_finish_close_win)
|
||||
binding?.ivStatus?.setImageResource(R.drawable.room_pk_result_win)
|
||||
}
|
||||
else -> {
|
||||
binding?.viewBg?.setBackgroundResource(R.drawable.bg_bfabf6_radius_10)
|
||||
binding?.clRoot?.setBackgroundResource(R.drawable.bg_room_pk_finish_failed)
|
||||
binding?.viewContribute?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_failed)
|
||||
binding?.viewCharm?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_failed)
|
||||
binding?.ivClose?.setImageResource(R.drawable.ic_room_pk_finish_close_failed)
|
||||
binding?.ivStatus?.setImageResource(R.drawable.room_pk_result_fail)
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -4,13 +4,13 @@ import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.WindowManager
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogRoomPkForceFinishBinding
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
import com.chwl.core.im.custom.bean.RoomPkBean
|
||||
import com.chwl.core.utils.extension.subAndReplaceDot
|
||||
|
||||
class RoomPkForceFinishDialog : BaseDialog<DialogRoomPkForceFinishBinding>() {
|
||||
class RoomPkForceFinishDialog : BaseDialogFragment<DialogRoomPkForceFinishBinding>() {
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
|
@@ -4,12 +4,11 @@ import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import androidx.core.view.isVisible
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogRoomPkReceivedBinding
|
||||
import com.chwl.core.im.custom.bean.RoomPkBean
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.room.anotherroompk.RoomPKModel
|
||||
import com.chwl.core.utils.extension.ifNotNullOrEmpty
|
||||
import com.chwl.core.utils.extension.subAndReplaceDot
|
||||
import com.chwl.core.utils.extension.toast
|
||||
import io.reactivex.Observable
|
||||
@@ -17,7 +16,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class RoomPkReceivedDialog : BaseDialog<DialogRoomPkReceivedBinding>() {
|
||||
class RoomPkReceivedDialog : BaseDialogFragment<DialogRoomPkReceivedBinding>() {
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -37,12 +36,20 @@ class RoomPkReceivedDialog : BaseDialog<DialogRoomPkReceivedBinding>() {
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
override fun init() {
|
||||
binding?.tvNick?.text = pkBean.inviteRoomTitle.subAndReplaceDot(7)
|
||||
binding?.tvNick?.text = pkBean.inviteRoomTitle
|
||||
binding?.tvTime?.text = "${pkBean.pkDuration}${getString(R.string.layout_activity_room_pk_create_010)}"
|
||||
pkBean.pkDesc.ifNotNullOrEmpty {
|
||||
binding?.tvDescTitle?.isVisible = true
|
||||
binding?.tvDesc?.isVisible = true
|
||||
binding?.tvDesc?.text = it
|
||||
val height: Int
|
||||
if (pkBean.pkDesc.isNullOrEmpty()) {
|
||||
binding?.groupDesc?.isVisible = false
|
||||
height = resources.getDimensionPixelOffset(R.dimen.dp_192)
|
||||
} else {
|
||||
binding?.tvDesc?.text = pkBean.pkDesc
|
||||
binding?.groupDesc?.isVisible = true
|
||||
height = resources.getDimensionPixelOffset(R.dimen.dp_211)
|
||||
}
|
||||
binding?.layoutContent?.let {
|
||||
it.layoutParams.height = height
|
||||
it.requestLayout()
|
||||
}
|
||||
disposable = Observable.intervalRange(0, 10, 0, 1, TimeUnit.SECONDS)
|
||||
.compose(bindToLifecycle())
|
||||
|
@@ -1,9 +1,9 @@
|
||||
package com.chwl.app.avroom.anotherroompk
|
||||
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogRoomPkRuleBinding
|
||||
|
||||
class RoomPkRuleDialog : BaseDialog<DialogRoomPkRuleBinding>() {
|
||||
class RoomPkRuleDialog : BaseDialogFragment<DialogRoomPkRuleBinding>() {
|
||||
|
||||
companion object {
|
||||
|
||||
|
@@ -6,7 +6,7 @@ import android.view.WindowManager
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import com.chwl.app.avroom.adapter.CreateRoomGameGuideAdapter
|
||||
import com.chwl.app.base.BaseActivity
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogCreateGameRoomBinding
|
||||
import com.chwl.app.home.helper.OpenRoomHelper
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
@@ -14,7 +14,7 @@ import com.chwl.core.room.bean.RoomInfo
|
||||
import com.chwl.core.room.game.bean.GameInfo
|
||||
import com.chwl.core.room.game.GameModel
|
||||
|
||||
class CreateGameRoomDialog : BaseDialog<DialogCreateGameRoomBinding>() {
|
||||
class CreateGameRoomDialog : BaseDialogFragment<DialogCreateGameRoomBinding>() {
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<GameInfo>
|
||||
private val gameAdapter = CreateRoomGameGuideAdapter()
|
||||
|
@@ -9,7 +9,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.adapter.CreateRoomGameAdapter
|
||||
import com.chwl.app.base.BaseActivity
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogCreateRoomBinding
|
||||
import com.chwl.app.home.helper.OpenRoomHelper
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
@@ -19,7 +19,7 @@ import com.chwl.core.room.game.GameModel
|
||||
import com.chwl.core.utils.extension.toast
|
||||
import com.chwl.library.utils.ResUtil
|
||||
|
||||
class CreateRoomDialog : BaseDialog<DialogCreateRoomBinding>() {
|
||||
class CreateRoomDialog : BaseDialogFragment<DialogCreateRoomBinding>() {
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<GameInfo>
|
||||
private val gameAdapter = CreateRoomGameAdapter()
|
||||
|
@@ -1,12 +1,12 @@
|
||||
package com.chwl.app.avroom.dialog
|
||||
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogNewUserGiftBinding
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.core.gift.bean.GiftInfo
|
||||
|
||||
class NewUserGiftDialog(val giftInfo: GiftInfo) :
|
||||
BaseDialog<DialogNewUserGiftBinding>() {
|
||||
BaseDialogFragment<DialogNewUserGiftBinding>() {
|
||||
|
||||
override fun init() {
|
||||
binding?.ivClose?.setOnClickListener {
|
||||
|
@@ -1,297 +0,0 @@
|
||||
package com.chwl.app.avroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.netease.nim.uikit.support.glide.GlideApp;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.common.widget.CircleImageView;
|
||||
import com.chwl.app.ui.widget.dialog.BaseDialog;
|
||||
import com.chwl.app.ui.widget.dialog.CommonTipDialog;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.manager.IMNetEaseManager;
|
||||
import com.chwl.core.manager.RoomEvent;
|
||||
import com.chwl.core.room.pk.bean.PKMemberInfo;
|
||||
import com.chwl.core.room.pk.bean.PKTeamInfo;
|
||||
import com.chwl.core.room.pk.bean.PKTeamMember;
|
||||
import com.chwl.core.room.pk.bean.RoomPkData;
|
||||
import com.chwl.core.room.pk.event.PKDataUpdateEvent;
|
||||
import com.chwl.core.room.pk.event.PKTimeFinishEvent;
|
||||
import com.chwl.core.room.pk.event.PKTimeTickEvent;
|
||||
import com.chwl.core.room.pk.model.PkModel;
|
||||
import com.chwl.core.super_admin.util.SuperAdminUtil;
|
||||
import com.chwl.library.utils.FormatUtils;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.SingleObserver;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
/**
|
||||
* @author jack
|
||||
* @Description
|
||||
* @Date 2019/1/3
|
||||
*/
|
||||
public class PKScoreBoardDialog extends BaseDialog {
|
||||
|
||||
|
||||
private TextView tvPkVoteMode;
|
||||
private View tvClose;
|
||||
private ProgressBar pbScore;
|
||||
private TextView tvRedTeamScore;
|
||||
private TextView tvBlueTeamScore;
|
||||
private TextView tvPkTimer;
|
||||
private CircleImageView ivRedAvatar1;
|
||||
private CircleImageView ivRedAvatar2;
|
||||
private CircleImageView ivRedAvatar3;
|
||||
private CircleImageView ivRedAvatar4;
|
||||
private CircleImageView ivBlueAvatar1;
|
||||
private CircleImageView ivBlueAvatar2;
|
||||
private CircleImageView ivBlueAvatar3;
|
||||
private CircleImageView ivBlueAvatar4;
|
||||
private TextView tvRestart;
|
||||
|
||||
private final List<CircleImageView> redTeamAvatars = new ArrayList<>();
|
||||
|
||||
private final List<CircleImageView> blueTeamAvatars = new ArrayList<>();
|
||||
|
||||
private RoomPkData roomPkData;
|
||||
|
||||
private CompositeDisposable compositeDisposable;
|
||||
|
||||
public PKScoreBoardDialog(Context context) {
|
||||
super(context, R.style.easy_dialog_style);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setCanceledOnTouchOutside(true);
|
||||
setContentView(R.layout.dialog_pk_score_board);
|
||||
|
||||
tvPkVoteMode = (TextView) findViewById(R.id.tv_pk_vote_mode);
|
||||
tvClose = findViewById(R.id.tv_close);
|
||||
pbScore = (ProgressBar) findViewById(R.id.pb_score);
|
||||
tvRedTeamScore = (TextView) findViewById(R.id.tv_red_team_score);
|
||||
tvBlueTeamScore = (TextView) findViewById(R.id.tv_blue_team_score);
|
||||
tvPkTimer = (TextView) findViewById(R.id.tv_pk_timer);
|
||||
tvRestart = (TextView) findViewById(R.id.tv_restart);
|
||||
|
||||
ivRedAvatar1 = (CircleImageView) findViewById(R.id.iv_red_avatar_1);
|
||||
ivRedAvatar2 = (CircleImageView) findViewById(R.id.iv_red_avatar_2);
|
||||
ivRedAvatar3 = (CircleImageView) findViewById(R.id.iv_red_avatar_3);
|
||||
ivRedAvatar4 = (CircleImageView) findViewById(R.id.iv_red_avatar_4);
|
||||
|
||||
ivBlueAvatar1 = (CircleImageView) findViewById(R.id.iv_blue_avatar_1);
|
||||
ivBlueAvatar2 = (CircleImageView) findViewById(R.id.iv_blue_avatar_2);
|
||||
ivBlueAvatar3 = (CircleImageView) findViewById(R.id.iv_blue_avatar_3);
|
||||
ivBlueAvatar4 = (CircleImageView) findViewById(R.id.iv_blue_avatar_4);
|
||||
|
||||
redTeamAvatars.add(ivRedAvatar1);
|
||||
redTeamAvatars.add(ivRedAvatar2);
|
||||
redTeamAvatars.add(ivRedAvatar3);
|
||||
redTeamAvatars.add(ivRedAvatar4);
|
||||
|
||||
blueTeamAvatars.add(ivBlueAvatar1);
|
||||
blueTeamAvatars.add(ivBlueAvatar2);
|
||||
blueTeamAvatars.add(ivBlueAvatar3);
|
||||
blueTeamAvatars.add(ivBlueAvatar4);
|
||||
init();
|
||||
}
|
||||
|
||||
private void init() {
|
||||
tvClose.setOnClickListener(v -> dismiss());
|
||||
roomPkData = PkModel.get().getCurPkInfo();
|
||||
if (roomPkData == null) {
|
||||
return;
|
||||
}
|
||||
if (roomPkData.getVoteMode() == RoomPkData.VOTE_MODE_GIFT) {
|
||||
tvPkVoteMode.setText(getContext().getResources().getString(R.string.vote_type_gift_value));
|
||||
} else if (roomPkData.getVoteMode() == RoomPkData.VOTE_MODE_PERSON) {
|
||||
tvPkVoteMode.setText(getContext().getResources().getString(R.string.vote_type_gift_member));
|
||||
}
|
||||
|
||||
PKTeamInfo redTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_RED);
|
||||
for (int i = 0; i < redTeamAvatars.size(); i++) {
|
||||
if (i < redTeam.getTeamMembers().size()) {
|
||||
redTeamAvatars.get(i).setVisibility(View.VISIBLE);
|
||||
PKTeamMember pkTeamMember = redTeam.getTeamMembers().get(i);
|
||||
PKMemberInfo pkMemberInfo = findPKMemberInfo(pkTeamMember.getUid());
|
||||
if (pkMemberInfo == null || pkMemberInfo.getUserInfo() == null) {
|
||||
continue;
|
||||
}
|
||||
GlideApp.with(redTeamAvatars.get(i))
|
||||
.load(pkMemberInfo.getUserInfo().getAvatar())
|
||||
.placeholder(R.drawable.default_avatar)
|
||||
.dontAnimate()
|
||||
.into(redTeamAvatars.get(i));
|
||||
} else {
|
||||
redTeamAvatars.get(i).setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
PKTeamInfo blueTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_BLUE);
|
||||
for (int i = 0; i < blueTeamAvatars.size(); i++) {
|
||||
if (i < blueTeam.getTeamMembers().size()) {
|
||||
blueTeamAvatars.get(i).setVisibility(View.VISIBLE);
|
||||
PKTeamMember pkTeamMember = blueTeam.getTeamMembers().get(i);
|
||||
PKMemberInfo pkMemberInfo = findPKMemberInfo(pkTeamMember.getUid());
|
||||
if (pkMemberInfo == null || pkMemberInfo.getUserInfo() == null) {
|
||||
continue;
|
||||
}
|
||||
GlideApp.with(blueTeamAvatars.get(i))
|
||||
.load(pkMemberInfo.getUserInfo().getAvatar())
|
||||
.placeholder(R.drawable.default_avatar)
|
||||
.dontAnimate()
|
||||
.into(blueTeamAvatars.get(i));
|
||||
|
||||
} else {
|
||||
blueTeamAvatars.get(i).setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
if (AvRoomDataManager.get().isManager() && !SuperAdminUtil.isSuperAdmin()) {
|
||||
tvRestart.setVisibility(View.VISIBLE);
|
||||
tvRestart.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (PkModel.get().getCurPkInfo() == null) {
|
||||
toast(ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_01));
|
||||
dismiss();
|
||||
return;
|
||||
}
|
||||
if (PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK) {
|
||||
toast(ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_02));
|
||||
dismiss();
|
||||
return;
|
||||
}
|
||||
CommonTipDialog tipDialog = new CommonTipDialog(getContext());
|
||||
tipDialog.setTipMsg(ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_03) +
|
||||
ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_04));
|
||||
tipDialog.setOnActionListener(
|
||||
new CommonTipDialog.OnActionListener() {
|
||||
@Override
|
||||
public void onOk() {
|
||||
PkModel.get().toPKAgain().subscribe(new SingleObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
compositeDisposable.add(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String s) {
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
toast(e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
tipDialog.show();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
tvRestart.setVisibility(View.GONE);
|
||||
tvRestart.setOnClickListener(null);
|
||||
}
|
||||
updateTime();
|
||||
onPKDataUpdateEvent(null);
|
||||
}
|
||||
|
||||
private PKMemberInfo findPKMemberInfo(String account) {
|
||||
for (PKMemberInfo pkMemberInfo : PkModel.get().getPkMemberInfoList()) {
|
||||
if (String.valueOf(pkMemberInfo.getUserInfo().getUid()).equals(account)) {
|
||||
return pkMemberInfo;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private void updateTime() {
|
||||
roomPkData = PkModel.get().getCurPkInfo();
|
||||
if (roomPkData == null) {
|
||||
return;
|
||||
}
|
||||
long pkTimeUntilEnd = roomPkData.getCurPkTimeUntilEnd();
|
||||
tvPkTimer.setText(String.format("%1$02d:%2$02d", pkTimeUntilEnd / 60, pkTimeUntilEnd % 60));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
EventBus.getDefault().register(this);
|
||||
compositeDisposable = new CompositeDisposable();
|
||||
compositeDisposable.add(IMNetEaseManager.get().getChatRoomEventObservable()
|
||||
.subscribe(this::onReceiveRoomEvent));
|
||||
}
|
||||
|
||||
private void onReceiveRoomEvent(RoomEvent roomEvent) {
|
||||
int event = roomEvent.getEvent();
|
||||
switch (event) {
|
||||
case RoomEvent.PK_INFO_UPDATE:
|
||||
roomPkData = PkModel.get().getCurPkInfo();
|
||||
if (roomPkData != null && (roomPkData.getPkStatus() == RoomPkData.PK_STATUS_BEFORE_PK ||
|
||||
roomPkData.getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK)) {
|
||||
dismiss();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
EventBus.getDefault().unregister(this);
|
||||
compositeDisposable.dispose();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onPKDataUpdateEvent(PKDataUpdateEvent event) {
|
||||
if (PkModel.get().getCurPkInfo() == null
|
||||
|| PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK) {
|
||||
dismiss();
|
||||
return;
|
||||
}
|
||||
|
||||
PKTeamInfo redTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_RED);
|
||||
PKTeamInfo blueTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_BLUE);
|
||||
if (redTeam == null || blueTeam == null) {
|
||||
return;
|
||||
}
|
||||
long totalScore = redTeam.getScore() + blueTeam.getScore();
|
||||
if (totalScore > 0) {
|
||||
tvRedTeamScore.setText(FormatUtils.formatPKValue(redTeam.getScore()));
|
||||
tvBlueTeamScore.setText(FormatUtils.formatPKValue(blueTeam.getScore()));
|
||||
int percent = (int) ((float) redTeam.getScore() / (float) totalScore * 100.0f);
|
||||
pbScore.setProgress(percent);
|
||||
} else {
|
||||
pbScore.setProgress(50);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onPKTimeTickEvent(PKTimeTickEvent event) {
|
||||
updateTime();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onPKTimeFinishEvent(PKTimeFinishEvent event) {
|
||||
tvPkTimer.setText("00:00");
|
||||
}
|
||||
}
|
@@ -95,7 +95,10 @@ public class PKSelectPeopleDialog extends BaseDialog implements View.OnClickList
|
||||
keys[i] = micQueue.keyAt(i);
|
||||
}
|
||||
Arrays.sort(keys);
|
||||
for (int i = 0; i < keys.length; i++) {
|
||||
for (int i = 0; i < micEntityList.size(); i++) {
|
||||
if (i >= micQueue.size()) {
|
||||
continue;
|
||||
}
|
||||
RoomQueueInfo roomQueueInfo = micQueue.get(keys[i]);
|
||||
MicMemberInfo chatRoomMember = roomQueueInfo.mChatRoomMember;
|
||||
if (chatRoomMember != null) {
|
||||
|
@@ -11,6 +11,7 @@ import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.LifecycleObserver
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.adapter.RoomGameListAdapter
|
||||
import com.chwl.app.base.BaseActivity
|
||||
@@ -38,7 +39,7 @@ class RoomGameListDialog :
|
||||
private var compositeDisposable: CompositeDisposable? = null
|
||||
private val adapter = RoomGameListAdapter()
|
||||
private var dialogManager: DialogManager? = null
|
||||
|
||||
private lateinit var recycleView: RecyclerView
|
||||
override fun getTheme(): Int {
|
||||
return R.style.ErbanBottomSheetDialogDimFalse
|
||||
}
|
||||
@@ -61,6 +62,8 @@ class RoomGameListDialog :
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
initView()
|
||||
val recyclerView: RecyclerView = view.findViewById(R.id.recyclerView)
|
||||
recycleView = recyclerView
|
||||
switchStatus(0)
|
||||
requestData()
|
||||
}
|
||||
@@ -89,6 +92,14 @@ class RoomGameListDialog :
|
||||
binding?.recyclerView?.adapter = adapter
|
||||
}
|
||||
|
||||
private fun updateDialogHeight(count: Int) {
|
||||
if (count > 10) {
|
||||
val layoutParams = recycleView.layoutParams
|
||||
layoutParams.height = 600
|
||||
recycleView.layoutParams = layoutParams
|
||||
}
|
||||
}
|
||||
|
||||
private fun requestData() {
|
||||
val dataService =
|
||||
AudioRoomContext.get()
|
||||
@@ -96,6 +107,7 @@ class RoomGameListDialog :
|
||||
val cacheKey = "game_list#${parentFragment.hashCode()}"
|
||||
val list = dataService?.getData(cacheKey) as? List<GameInfo>
|
||||
if (!list.isNullOrEmpty()) {
|
||||
updateDialogHeight(list.size)
|
||||
loadData(list)
|
||||
return
|
||||
}
|
||||
@@ -106,6 +118,7 @@ class RoomGameListDialog :
|
||||
}
|
||||
.subscribe { it: List<GameInfo> ->
|
||||
dataService?.putData(cacheKey, it)
|
||||
updateDialogHeight(it.size)
|
||||
loadData(it)
|
||||
}
|
||||
getCompositeDisposable().add(disposable)
|
||||
|
@@ -10,6 +10,8 @@ import androidx.core.view.isVisible
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.activity.CreatePKActivity
|
||||
import com.chwl.app.avroom.adapter.RoomGameplayAdapter
|
||||
@@ -25,6 +27,7 @@ import com.chwl.core.auth.AuthModel
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.room.anotherroompk.SingleRoomPKModel
|
||||
import com.chwl.core.room.bean.RoomIcon
|
||||
import com.chwl.core.room.bean.RoomInfo
|
||||
import com.chwl.core.room.core.RoomDataService
|
||||
import com.chwl.core.room.game.bean.BaiShunGameConfig
|
||||
import com.chwl.core.room.model.AvRoomModel
|
||||
@@ -38,8 +41,11 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import com.google.gson.Gson
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
|
||||
class RoomGameplayDialog :
|
||||
BottomSheetDialogFragment() {
|
||||
class RoomGameplayDialog : BottomSheetDialogFragment() {
|
||||
|
||||
var isOnlyPK = false
|
||||
private lateinit var recycleView: RecyclerView
|
||||
|
||||
private var binding: RoomGameplayDialogBinding? = null
|
||||
private var compositeDisposable: CompositeDisposable? = null
|
||||
private val adapter = RoomGameplayAdapter()
|
||||
@@ -68,6 +74,10 @@ class RoomGameplayDialog :
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
initView()
|
||||
|
||||
val recyclerView: RecyclerView = view.findViewById(R.id.recyclerView)
|
||||
recycleView = recyclerView
|
||||
|
||||
switchStatus(0)
|
||||
requestData()
|
||||
}
|
||||
@@ -96,28 +106,46 @@ class RoomGameplayDialog :
|
||||
}
|
||||
|
||||
private fun requestData() {
|
||||
val dataService =
|
||||
AudioRoomContext.get()
|
||||
?.findAbility<RoomDataService>(RoomDataService::class.java.simpleName)
|
||||
val cacheKey = "gameplay_list#${parentFragment.hashCode()}"
|
||||
val list = dataService?.getData(cacheKey) as? List<RoomIcon>
|
||||
if (!list.isNullOrEmpty()) {
|
||||
loadSuccess(list)
|
||||
return
|
||||
if (isOnlyPK) {
|
||||
loadSuccess(arrayListOf())
|
||||
} else {
|
||||
val dataService =
|
||||
AudioRoomContext.get()
|
||||
?.findAbility<RoomDataService>(RoomDataService::class.java.simpleName)
|
||||
val cacheKey = "gameplay_list#${parentFragment.hashCode()}"
|
||||
val list = dataService?.getData(cacheKey) as? List<RoomIcon>
|
||||
|
||||
if (!list.isNullOrEmpty()) {
|
||||
updateDialogHeight(list.size)
|
||||
loadSuccess(list)
|
||||
return
|
||||
}
|
||||
val disposable = AvRoomModel.get().roomGamePlayList
|
||||
.doOnError {
|
||||
loadFail(it)
|
||||
}
|
||||
.subscribe { it: List<RoomIcon> ->
|
||||
dataService?.putData(cacheKey, it)
|
||||
updateDialogHeight(it.size)
|
||||
loadSuccess(it)
|
||||
}
|
||||
getCompositeDisposable().add(disposable)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateDialogHeight(count: Int) {
|
||||
if (count > 10) {
|
||||
val layoutParams = recycleView.layoutParams
|
||||
layoutParams.height = 600
|
||||
recycleView.layoutParams = layoutParams
|
||||
}
|
||||
val disposable = AvRoomModel.get().roomGamePlayList
|
||||
.doOnError {
|
||||
loadFail(it)
|
||||
}
|
||||
.subscribe { it: List<RoomIcon> ->
|
||||
dataService?.putData(cacheKey, it)
|
||||
loadSuccess(it)
|
||||
}
|
||||
getCompositeDisposable().add(disposable)
|
||||
}
|
||||
|
||||
private fun loadSuccess(list: List<RoomIcon>?) {
|
||||
val finalList = getLocalList()
|
||||
var finalList = mutableListOf<RoomGameplayItem>()
|
||||
if (isOnlyPK) {
|
||||
finalList = getLocalList()
|
||||
}
|
||||
list?.let {
|
||||
finalList.addAll(list.map {
|
||||
RoomGameplayItem.RoomIconItem(it) { dialog, item ->
|
||||
@@ -244,12 +272,12 @@ class RoomGameplayDialog :
|
||||
|
||||
private fun getLocalList(): MutableList<RoomGameplayItem> {
|
||||
val list = ArrayList<RoomGameplayItem>()
|
||||
// getPkItem()?.let {
|
||||
// list.add(it)
|
||||
// }
|
||||
// getRoomPkItem()?.let {
|
||||
// list.add(it)
|
||||
// }
|
||||
getPkItem()?.let {
|
||||
list.add(it)
|
||||
}
|
||||
getRoomPkItem()?.let {
|
||||
list.add(it)
|
||||
}
|
||||
// getSingleRoomPkItem()?.let {
|
||||
// list.add(it)
|
||||
// }
|
||||
@@ -261,10 +289,7 @@ class RoomGameplayDialog :
|
||||
if (SuperAdminUtil.isSuperAdmin()) {
|
||||
return null
|
||||
}
|
||||
if (AvRoomDataManager.get().isOpenGame) {
|
||||
return null
|
||||
}
|
||||
if (AvRoomDataManager.get().isSingleRoom) {
|
||||
if (AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_HOME_PARTY && AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_PARTY && AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_REVELRY) {
|
||||
return null
|
||||
}
|
||||
val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo
|
||||
@@ -277,7 +302,7 @@ class RoomGameplayDialog :
|
||||
R.string.room_PK_mode
|
||||
)
|
||||
val icon =
|
||||
if (AvRoomDataManager.get().isOpenPKMode) R.drawable.ic_room_opt_op_pk else R.drawable.ic_room_opt_in_pk
|
||||
if (AvRoomDataManager.get().isOpenPKMode) R.drawable.room_gameplay_ic_team_pk else R.drawable.room_gameplay_ic_team_pk
|
||||
return RoomGameplayItem.CustomItem(str, icon) { dialog, item ->
|
||||
if (AvRoomDataManager.get().isDatingMode) {
|
||||
SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_dialog_roomoperationdialog_01))
|
||||
@@ -299,10 +324,7 @@ class RoomGameplayDialog :
|
||||
if (SuperAdminUtil.isSuperAdmin()) {
|
||||
return null
|
||||
}
|
||||
if (AvRoomDataManager.get().isOpenGame) {
|
||||
return null
|
||||
}
|
||||
if (AvRoomDataManager.get().isSingleRoom) {
|
||||
if (AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_HOME_PARTY && AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_PARTY && AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_REVELRY) {
|
||||
return null
|
||||
}
|
||||
val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo
|
||||
@@ -317,7 +339,7 @@ class RoomGameplayDialog :
|
||||
R.string.avroom_dialog_roomoperationdialog_04
|
||||
)
|
||||
val icon =
|
||||
if (AvRoomDataManager.get().isOpenAnotherPKMode) R.drawable.ic_room_opt_another_pk_in else R.drawable.ic_room_opt_another_pk_open
|
||||
if (AvRoomDataManager.get().isOpenAnotherPKMode) R.drawable.room_gameplay_ic_room_pk else R.drawable.room_gameplay_ic_room_pk
|
||||
return RoomGameplayItem.CustomItem(str, icon) { dialog, item ->
|
||||
if (AvRoomDataManager.get().isDatingMode) {
|
||||
SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_dialog_roomoperationdialog_05))
|
||||
|
@@ -14,6 +14,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.chwl.app.avroom.activity.RoomTypeSwitchActivity;
|
||||
import com.coorchice.library.utils.LogUtils;
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
@@ -115,8 +116,8 @@ public class RoomOperationDialog extends BottomSheetDialog {
|
||||
optAdapter = new OptAdapter(context, null);
|
||||
addRoomAlbum(optAdapter);
|
||||
addDatingAction(optAdapter);
|
||||
addPKAction(optAdapter);
|
||||
addRoomPKAction(optAdapter);
|
||||
// addPKAction(optAdapter);
|
||||
// addRoomPKAction(optAdapter);
|
||||
addSingleRoomPKAction(optAdapter);
|
||||
addSendBroadcastAction(optAdapter);
|
||||
// addInviteFansOptAdapter();
|
||||
@@ -131,6 +132,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
|
||||
// addGiftValueAction(optAdapter);
|
||||
addSuperAdminAction(optAdapter);
|
||||
addShieldReportAction(optAdapter);
|
||||
addRoomTypeSwitchAction(optAdapter);
|
||||
rvOPtList.setAdapter(optAdapter);
|
||||
}
|
||||
|
||||
@@ -286,10 +288,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
|
||||
if (SuperAdminUtil.isSuperAdmin()) {
|
||||
return;
|
||||
}
|
||||
if (AvRoomDataManager.get().isOpenGame()) {
|
||||
return;
|
||||
}
|
||||
if (AvRoomDataManager.get().isSingleRoom()) {
|
||||
if (AvRoomDataManager.get().getRoomType() != RoomInfo.ROOMTYPE_HOME_PARTY) {
|
||||
return;
|
||||
}
|
||||
if (AvRoomDataManager.get().isManager() && !AvRoomDataManager.get().isCpRoom()) {
|
||||
@@ -556,6 +555,18 @@ public class RoomOperationDialog extends BottomSheetDialog {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 房间类型切换
|
||||
*
|
||||
* @param optAdapter
|
||||
*/
|
||||
private void addRoomTypeSwitchAction(OptAdapter optAdapter) {
|
||||
if (RoomTypeSwitchActivity.Companion.isCanSwitch()) {
|
||||
optAdapter.addData(new OptAction(R.drawable.icon_room_type_switch,
|
||||
getContext().getResources().getString(R.string.room_type), () -> RoomTypeSwitchActivity.Companion.start(getContext())));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 超管管理
|
||||
*/
|
||||
|
@@ -1,14 +1,13 @@
|
||||
package com.chwl.app.avroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -17,18 +16,16 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.netease.nim.uikit.support.glide.GlideApp;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.common.widget.CircleImageView;
|
||||
import com.chwl.app.databinding.RoomTeamPkResultDialogBinding;
|
||||
import com.chwl.app.ui.widget.dialog.BaseDialog;
|
||||
import com.chwl.library.common.util.Utils;
|
||||
import com.chwl.app.ui.widget.recyclerview.decoration.ColorDecoration;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.room.pk.bean.PKTeamInfo;
|
||||
import com.chwl.core.room.pk.bean.PKTeamMember;
|
||||
import com.chwl.core.room.pk.bean.RoomPkData;
|
||||
import com.chwl.library.utils.FormatUtils;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.netease.nim.uikit.support.glide.GlideApp;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -40,19 +37,14 @@ import lombok.Data;
|
||||
* @Description
|
||||
* @Date 2019/1/4
|
||||
*/
|
||||
public class PKResultDialog extends BaseDialog {
|
||||
public class RoomTeamPKResultDialog extends BaseDialog {
|
||||
private final static int TEAM_RED = PKTeamInfo.TEAM_RED;
|
||||
private final static int TEAM_BLUE = PKTeamInfo.TEAM_BLUE;
|
||||
|
||||
private final static int PK_RESULT_VICTORY = 1;
|
||||
private final static int PK_RESULT_FAIL = -1;
|
||||
private final static int PK_RESULT_TIE = 0;
|
||||
|
||||
private LinearLayout llGuardianName;
|
||||
private LinearLayout llGuardianValue;
|
||||
private LinearLayout llPkMember;
|
||||
private LinearLayout llScore;
|
||||
private ImageView ivResultBottom;
|
||||
private RoomTeamPkResultDialogBinding binding;
|
||||
private ImageView ivResultTop;
|
||||
private RecyclerView rvList;
|
||||
private TextView tvScore;
|
||||
@@ -60,9 +52,6 @@ public class PKResultDialog extends BaseDialog {
|
||||
private TextView tvGuardianValue;
|
||||
private TextView tvTeamStatus;
|
||||
private TextView tvSeeOtherTeam;
|
||||
private TextView tvTeamLose;
|
||||
private LinearLayout llResultTie;
|
||||
private TextView tvTieScore;
|
||||
|
||||
private int pkResult = PK_RESULT_TIE;
|
||||
private boolean isShowOpponent = false;//是否在显示对手
|
||||
@@ -70,8 +59,9 @@ public class PKResultDialog extends BaseDialog {
|
||||
private RoomPkData roomPkData;
|
||||
private PKTeamInfo teamInfo;
|
||||
|
||||
public PKResultDialog(Context context, RoomPkData roomPkData) {
|
||||
public RoomTeamPKResultDialog(Context context, RoomPkData roomPkData) {
|
||||
super(context, R.style.full_screen_dialog);
|
||||
binding = RoomTeamPkResultDialogBinding.inflate(LayoutInflater.from(getContext()));
|
||||
Window window = getWindow();
|
||||
if (window != null) {
|
||||
WindowManager.LayoutParams lps = window.getAttributes();
|
||||
@@ -87,31 +77,20 @@ public class PKResultDialog extends BaseDialog {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setCanceledOnTouchOutside(true);
|
||||
setContentView(R.layout.dialog_pk_result);
|
||||
setContentView(binding.getRoot());
|
||||
|
||||
llPkMember = (LinearLayout) findViewById(R.id.ll_pk_member);
|
||||
llScore = (LinearLayout) findViewById(R.id.ll_score);
|
||||
|
||||
ivResultBottom = (ImageView) findViewById(R.id.iv_result_bottom);
|
||||
ivResultTop = (ImageView) findViewById(R.id.iv_result_top);
|
||||
rvList = (RecyclerView) findViewById(R.id.rv_list);
|
||||
rvList = (RecyclerView) findViewById(R.id.recycler_view);
|
||||
|
||||
tvScore = (TextView) findViewById(R.id.tv_score);
|
||||
llGuardianName = (LinearLayout) findViewById(R.id.ll_guardian_name);
|
||||
llGuardianValue = (LinearLayout) findViewById(R.id.ll_guardian_value);
|
||||
tvGuardianName = (TextView) findViewById(R.id.tv_guardian_name);
|
||||
tvGuardianValue = (TextView) findViewById(R.id.tv_guardian_value);
|
||||
tvTeamStatus = (TextView) findViewById(R.id.tv_team_status);
|
||||
tvSeeOtherTeam = (TextView) findViewById(R.id.tv_see_other_team);
|
||||
tvTeamLose = (TextView) findViewById(R.id.tv_team_lose);
|
||||
|
||||
llResultTie = (LinearLayout) findViewById(R.id.ll_result_tie);
|
||||
tvTieScore = (TextView) findViewById(R.id.tv_tie_score);
|
||||
|
||||
|
||||
adapter = new PkResultMemberAdapter(null);
|
||||
rvList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
|
||||
rvList.addItemDecoration(new ColorDecoration(Color.TRANSPARENT, Utils.dip2px(getContext(), 10), 0, true));
|
||||
rvList.setAdapter(adapter);
|
||||
|
||||
tvSeeOtherTeam.setOnClickListener(v -> {
|
||||
@@ -130,28 +109,29 @@ public class PKResultDialog extends BaseDialog {
|
||||
return;
|
||||
}
|
||||
if (roomPkData.getVoteMode() == RoomPkData.VOTE_MODE_PERSON) {
|
||||
llGuardianName.setVisibility(View.GONE);
|
||||
llGuardianValue.setVisibility(View.GONE);
|
||||
binding.groupGuardianName.setVisibility(View.GONE);
|
||||
binding.groupGuardianValue.setVisibility(View.GONE);
|
||||
}
|
||||
int result = roomPkData.getResult();
|
||||
int teamId = findTeamIdByAccount(String.valueOf(AuthModel.get().getCurrentUid()));
|
||||
if (teamId == PKTeamInfo.TEAM_NONE) {
|
||||
//观众
|
||||
if (result == RoomPkData.PK_RESULT_DRAW) {
|
||||
teamInfo = findTeamByTeamId(PKTeamInfo.TEAM_RED);
|
||||
pkResult = PK_RESULT_TIE;
|
||||
tvTeamStatus.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_01));
|
||||
llPkMember.setVisibility(View.GONE);
|
||||
llScore.setVisibility(View.GONE);
|
||||
llGuardianName.setVisibility(View.GONE);
|
||||
llGuardianValue.setVisibility(View.GONE);
|
||||
llResultTie.setVisibility(View.VISIBLE);
|
||||
tvTieScore.setText(FormatUtils.formatPKValue(roomPkData.getTeams().get(0).getScore()));
|
||||
refreshBgByStatus();
|
||||
if (teamInfo != null) {
|
||||
tvScore.setText(teamInfo.getScore() + "");
|
||||
} else {
|
||||
tvScore.setText("0");
|
||||
}
|
||||
binding.groupGuardianName.setVisibility(View.GONE);
|
||||
binding.groupGuardianValue.setVisibility(View.GONE);
|
||||
refreshView(pkResult, teamInfo);
|
||||
} else {
|
||||
pkResult = PK_RESULT_VICTORY;
|
||||
teamInfo = findTeamByTeamId(result);
|
||||
refreshView(pkResult, teamInfo);
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -161,10 +141,13 @@ public class PKResultDialog extends BaseDialog {
|
||||
if (result == RoomPkData.PK_RESULT_DRAW) {
|
||||
pkResult = PK_RESULT_TIE;
|
||||
tvTeamStatus.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_02));
|
||||
tvScore.setText(teamInfo.getScore() + "");
|
||||
llGuardianName.setVisibility(View.GONE);
|
||||
llGuardianValue.setVisibility(View.GONE);
|
||||
tvTeamLose.setVisibility(View.GONE);
|
||||
if (teamInfo != null) {
|
||||
tvScore.setText(teamInfo.getScore() + "");
|
||||
} else {
|
||||
tvScore.setText("0");
|
||||
}
|
||||
binding.groupGuardianName.setVisibility(View.GONE);
|
||||
binding.groupGuardianValue.setVisibility(View.GONE);
|
||||
refreshView(pkResult, teamInfo);
|
||||
|
||||
} else {
|
||||
@@ -175,7 +158,7 @@ public class PKResultDialog extends BaseDialog {
|
||||
}
|
||||
|
||||
|
||||
private void showTeamMembers(PKTeamInfo teamInfo) {
|
||||
private void showTeamMembers(int pkResult, PKTeamInfo teamInfo) {
|
||||
List<PkResultMember> pkResultMembers = new ArrayList<>();
|
||||
for (PKTeamMember pkTeamMember : teamInfo.getTeamMembers()) {
|
||||
PkResultMember resultMember = new PkResultMember();
|
||||
@@ -184,22 +167,29 @@ public class PKResultDialog extends BaseDialog {
|
||||
resultMember.isMVP = pkTeamMember.getUid().equals(teamInfo.getMvp());
|
||||
pkResultMembers.add(resultMember);
|
||||
}
|
||||
if (pkResult == PK_RESULT_VICTORY) {
|
||||
adapter.setAvatarBg(R.drawable.room_team_pk_result_avatar_bg_win);
|
||||
} else if (pkResult == PK_RESULT_FAIL) {
|
||||
adapter.setAvatarBg(R.drawable.room_team_pk_result_avatar_bg_fail);
|
||||
} else {
|
||||
adapter.setAvatarBg(R.drawable.room_team_pk_result_avatar_bg_draw);
|
||||
}
|
||||
adapter.setNewData(pkResultMembers);
|
||||
}
|
||||
|
||||
private void showColorByTeam(PKTeamInfo pkTeamInfo) {
|
||||
if (pkTeamInfo.getTeam() == PKTeamInfo.TEAM_RED) {
|
||||
tvScore.setTextColor(getContext().getResources().getColor(R.color.color_FD4D72));
|
||||
tvGuardianName.setTextColor(getContext().getResources().getColor(R.color.color_FD4D72));
|
||||
tvGuardianValue.setTextColor(getContext().getResources().getColor(R.color.color_FD4D72));
|
||||
tvTeamStatus.setTextColor(getContext().getResources().getColor(R.color.color_FD4D72));
|
||||
tvSeeOtherTeam.setTextColor(getContext().getResources().getColor(R.color.color_59B9FB));
|
||||
tvScore.setTextColor(getContext().getResources().getColor(R.color.color_FF396F));
|
||||
tvGuardianName.setTextColor(getContext().getResources().getColor(R.color.color_FF396F));
|
||||
tvGuardianValue.setTextColor(getContext().getResources().getColor(R.color.color_FF396F));
|
||||
tvTeamStatus.setTextColor(getContext().getResources().getColor(R.color.color_FF4B81));
|
||||
tvSeeOtherTeam.setTextColor(getContext().getResources().getColor(R.color.color_73B8FF));
|
||||
} else if (pkTeamInfo.getTeam() == PKTeamInfo.TEAM_BLUE) {
|
||||
tvScore.setTextColor(getContext().getResources().getColor(R.color.color_59B9FB));
|
||||
tvGuardianName.setTextColor(getContext().getResources().getColor(R.color.color_59B9FB));
|
||||
tvGuardianValue.setTextColor(getContext().getResources().getColor(R.color.color_59B9FB));
|
||||
tvTeamStatus.setTextColor(getContext().getResources().getColor(R.color.color_59B9FB));
|
||||
tvSeeOtherTeam.setTextColor(getContext().getResources().getColor(R.color.color_FD4D72));
|
||||
tvScore.setTextColor(getContext().getResources().getColor(R.color.color_73B8FF));
|
||||
tvGuardianName.setTextColor(getContext().getResources().getColor(R.color.color_73B8FF));
|
||||
tvGuardianValue.setTextColor(getContext().getResources().getColor(R.color.color_73B8FF));
|
||||
tvTeamStatus.setTextColor(getContext().getResources().getColor(R.color.color_73B8FF));
|
||||
tvSeeOtherTeam.setTextColor(getContext().getResources().getColor(R.color.color_FF4B81));
|
||||
} else {
|
||||
//未知
|
||||
}
|
||||
@@ -207,14 +197,11 @@ public class PKResultDialog extends BaseDialog {
|
||||
|
||||
private void refreshBgByStatus() {
|
||||
if (pkResult == PK_RESULT_VICTORY) {
|
||||
ivResultTop.setImageResource(R.drawable.pk_result_victory_top);
|
||||
ivResultBottom.setImageResource(R.mipmap.pk_result_victory_bottom);
|
||||
ivResultTop.setImageResource(R.drawable.room_team_pk_result_top_win);
|
||||
} else if (pkResult == PK_RESULT_FAIL) {
|
||||
ivResultTop.setImageResource(R.drawable.pk_result_fail_top);
|
||||
ivResultBottom.setImageResource(R.mipmap.pk_result_fail_bottom);
|
||||
ivResultTop.setImageResource(R.drawable.room_team_pk_result_top_fail);
|
||||
} else if (pkResult == PK_RESULT_TIE) {
|
||||
ivResultTop.setImageResource(R.drawable.pk_result_tie_top);
|
||||
ivResultBottom.setImageResource(R.mipmap.pk_result_tie_bottom);
|
||||
ivResultTop.setImageResource(R.drawable.room_team_pk_result_top_draw);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,7 +255,7 @@ public class PKResultDialog extends BaseDialog {
|
||||
|
||||
private void refreshView(int pkResult, PKTeamInfo teamInfo) {
|
||||
refreshBgByStatus();
|
||||
showTeamMembers(teamInfo);
|
||||
showTeamMembers(pkResult, teamInfo);
|
||||
showColorByTeam(teamInfo);
|
||||
|
||||
tvScore.setText(FormatUtils.formatPKValue(teamInfo.getScore()));
|
||||
@@ -291,7 +278,6 @@ public class PKResultDialog extends BaseDialog {
|
||||
if (pkResult == PK_RESULT_VICTORY) {
|
||||
tvTeamStatus.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_06));
|
||||
} else if (pkResult == PK_RESULT_FAIL) {
|
||||
tvTeamLose.setVisibility(View.VISIBLE);
|
||||
}
|
||||
tvSeeOtherTeam.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_07));
|
||||
} else {
|
||||
@@ -305,7 +291,6 @@ public class PKResultDialog extends BaseDialog {
|
||||
if (pkResult == PK_RESULT_VICTORY) {
|
||||
tvTeamStatus.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_011));
|
||||
} else if (pkResult == PK_RESULT_FAIL) {
|
||||
tvTeamLose.setVisibility(View.VISIBLE);
|
||||
}
|
||||
tvSeeOtherTeam.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_012));
|
||||
} else {
|
||||
@@ -327,20 +312,26 @@ public class PKResultDialog extends BaseDialog {
|
||||
|
||||
class PkResultMemberAdapter extends BaseQuickAdapter<PkResultMember, BaseViewHolder> {
|
||||
|
||||
private int avatarBgResId = R.drawable.room_team_pk_result_avatar_bg_win;
|
||||
|
||||
public void setAvatarBg(int redId) {
|
||||
this.avatarBgResId = redId;
|
||||
}
|
||||
|
||||
public PkResultMemberAdapter(@Nullable List<PkResultMember> data) {
|
||||
super(R.layout.item_pk_result_member_rv, data);
|
||||
super(R.layout.room_team_pk_result_item, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, PkResultMember item) {
|
||||
CircleImageView avatar = helper.getView(R.id.civ_avatar);
|
||||
ImageView avatarBg = helper.getView(R.id.iv_avatar_bg);
|
||||
avatarBg.setImageResource(avatarBgResId);
|
||||
ImageView avatar = helper.getView(R.id.iv_avatar);
|
||||
GlideApp.with(avatar)
|
||||
.load(item.avatar)
|
||||
.placeholder(R.drawable.default_avatar)
|
||||
.dontAnimate()
|
||||
.into(avatar);
|
||||
|
||||
helper.setVisible(R.id.iv_mvp_mark, item.isMVP);
|
||||
}
|
||||
}
|
||||
|
325
app/src/main/java/com/chwl/app/avroom/dialog/RoomTeamPkDialog.kt
Normal file
325
app/src/main/java/com/chwl/app/avroom/dialog/RoomTeamPkDialog.kt
Normal file
@@ -0,0 +1,325 @@
|
||||
package com.chwl.app.avroom.dialog
|
||||
|
||||
import android.text.TextUtils
|
||||
import android.view.WindowManager
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.view.isVisible
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.RoomTeamPkDialogBinding
|
||||
import com.chwl.app.ui.utils.loadAvatar
|
||||
import com.chwl.app.ui.widget.dialog.CommonTipDialog
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.room.pk.bean.PKTeamInfo
|
||||
import com.chwl.core.room.pk.bean.RoomPKInvitedUpMicMember
|
||||
import com.chwl.core.room.pk.bean.RoomPkData
|
||||
import com.chwl.core.room.pk.event.PKDataUpdateEvent
|
||||
import com.chwl.core.room.pk.event.PKTimeFinishEvent
|
||||
import com.chwl.core.room.pk.event.PKTimeTickEvent
|
||||
import com.chwl.core.room.pk.model.PkModel
|
||||
import com.chwl.library.utils.FormatUtils
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import com.chwl.library.utils.SingleToastUtil
|
||||
import io.reactivex.SingleObserver
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import io.reactivex.disposables.Disposable
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
import java.util.Locale
|
||||
|
||||
class RoomTeamPkDialog : BaseDialogFragment<RoomTeamPkDialogBinding>() {
|
||||
|
||||
private var compositeDisposable: CompositeDisposable? = null
|
||||
|
||||
private var onActionListener: OnActionListener? = null
|
||||
|
||||
override var width = WindowManager.LayoutParams.MATCH_PARENT
|
||||
|
||||
override fun init() {
|
||||
binding.layoutRoot.setOnClickListener {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
binding.userListBlue.showBlueStyle()
|
||||
binding.ivClose.setOnClickListener {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
binding.tvNext.setOnClickListener {
|
||||
if (PkModel.get().isFighting) {
|
||||
onRestartClick()
|
||||
} else {
|
||||
onStartClick()
|
||||
}
|
||||
}
|
||||
binding.ivAvatarRed.setOnClickListener {
|
||||
if (!PkModel.get().isFighting) {
|
||||
onSeatClick(PKTeamInfo.TEAM_RED)
|
||||
}
|
||||
}
|
||||
binding.ivAvatarBlue.setOnClickListener {
|
||||
if (!PkModel.get().isFighting) {
|
||||
onSeatClick(PKTeamInfo.TEAM_BLUE)
|
||||
}
|
||||
}
|
||||
binding.userListRed.setOnClickListener {
|
||||
if (!PkModel.get().isFighting) {
|
||||
onSeatClick(PKTeamInfo.TEAM_RED)
|
||||
}
|
||||
}
|
||||
binding.userListBlue.setOnClickListener {
|
||||
if (!PkModel.get().isFighting) {
|
||||
onSeatClick(PKTeamInfo.TEAM_BLUE)
|
||||
}
|
||||
}
|
||||
updateView()
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
EventBus.getDefault().register(this)
|
||||
compositeDisposable = CompositeDisposable()
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
EventBus.getDefault().unregister(this)
|
||||
compositeDisposable?.dispose()
|
||||
}
|
||||
|
||||
fun setOnActionListener(onActionListener: OnActionListener?) {
|
||||
this.onActionListener = onActionListener
|
||||
}
|
||||
|
||||
fun updateView() {
|
||||
if (_binding == null) {
|
||||
return
|
||||
}
|
||||
updateTeamUserList()
|
||||
updateTime()
|
||||
updateProgress()
|
||||
if (PkModel.get().isFighting) {
|
||||
binding.tvNext.setText(R.string.pk_restart)
|
||||
} else {
|
||||
binding.tvNext.setText(R.string.start_pk)
|
||||
}
|
||||
updateManageButtonVisible(AvRoomDataManager.get().isManager)
|
||||
}
|
||||
|
||||
private fun updateTeamUserList() {
|
||||
val pkMemberInfoList = PkModel.get().pkMemberInfoList
|
||||
val redList =
|
||||
pkMemberInfoList.filter { it.teamId == PKTeamInfo.TEAM_RED }.take(4).mapNotNull {
|
||||
it.userInfo
|
||||
}
|
||||
val blueList =
|
||||
pkMemberInfoList.filter { it.teamId == PKTeamInfo.TEAM_BLUE }.take(4).mapNotNull {
|
||||
it.userInfo
|
||||
}
|
||||
binding.userListRed.updateData(redList.drop(1).map {
|
||||
it.avatar
|
||||
})
|
||||
binding.userListBlue.updateData(blueList.drop(1).map {
|
||||
it.avatar
|
||||
})
|
||||
binding.ivAvatarRed.loadAvatar(redList.firstOrNull()?.avatar)
|
||||
binding.ivAvatarBlue.loadAvatar(blueList.firstOrNull()?.avatar)
|
||||
}
|
||||
|
||||
private fun updateManageButtonVisible(isVisible: Boolean) {
|
||||
val dimensionRatio: String
|
||||
if (isVisible) {
|
||||
binding.ivBg.setImageResource(R.drawable.room_team_pk_bg)
|
||||
binding.tvNext.isVisible = true
|
||||
dimensionRatio = "309:379"
|
||||
} else {
|
||||
binding.ivBg.setImageResource(R.drawable.room_team_pk_bg_no_manage)
|
||||
binding.tvNext.isVisible = false
|
||||
dimensionRatio = "309:324"
|
||||
}
|
||||
val params = binding.layoutContent.layoutParams as ConstraintLayout.LayoutParams
|
||||
params.dimensionRatio = dimensionRatio
|
||||
binding.layoutContent.layoutParams = params
|
||||
}
|
||||
|
||||
private fun updateTime() {
|
||||
if (_binding == null) {
|
||||
return
|
||||
}
|
||||
val roomPkData = PkModel.get().curPkInfo
|
||||
val pkTimeUntilEnd: Long
|
||||
if (roomPkData?.pkStatus != RoomPkData.PK_STATUS_IN_PK) {
|
||||
pkTimeUntilEnd = roomPkData?.duration ?: 0
|
||||
} else {
|
||||
pkTimeUntilEnd = roomPkData.curPkTimeUntilEnd
|
||||
}
|
||||
binding.tvTime.text =
|
||||
String.format(Locale.ENGLISH, "%1$02d:%2$02d", pkTimeUntilEnd / 60, pkTimeUntilEnd % 60)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onPKDataUpdateEvent(event: PKDataUpdateEvent) {
|
||||
updateProgress()
|
||||
if (event.type == PKDataUpdateEvent.TYPE_RESULT) {
|
||||
safeDismiss()
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateProgress() {
|
||||
if (_binding == null) {
|
||||
return
|
||||
}
|
||||
val roomPkData = PkModel.get().curPkInfo
|
||||
if (roomPkData?.pkStatus != RoomPkData.PK_STATUS_IN_PK) {
|
||||
updateProgress(0, 0)
|
||||
return
|
||||
}
|
||||
val redTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_RED)
|
||||
val blueTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_BLUE)
|
||||
if (redTeam == null || blueTeam == null) {
|
||||
updateProgress(0, 0)
|
||||
return
|
||||
}
|
||||
updateProgress(redTeam.score, blueTeam.score)
|
||||
}
|
||||
|
||||
private fun updateProgress(redScore: Long, blueScore: Long) {
|
||||
val totalScore = redScore + blueScore
|
||||
if (totalScore > 0) {
|
||||
binding.tvScoreRed.text = FormatUtils.formatPKValue(redScore)
|
||||
binding.tvScoreBlue.text = FormatUtils.formatPKValue(blueScore)
|
||||
updateProgress(redScore.toFloat() / totalScore.toFloat())
|
||||
} else {
|
||||
updateProgress(0.5f)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateProgress(percent: Float) {
|
||||
binding.pbScore.post {
|
||||
binding.pbScore.progress = (percent * 100).toInt()
|
||||
val progress = binding.pbScore.width * (percent)
|
||||
var bias =
|
||||
(progress - binding.svgaHot.width / 2f) / (binding.pbScore.width - binding.svgaHot.width)
|
||||
val layoutParams = binding.svgaHot.layoutParams as ConstraintLayout.LayoutParams
|
||||
bias = 1f.coerceAtMost(bias)
|
||||
bias = 0f.coerceAtLeast(bias)
|
||||
layoutParams.horizontalBias = bias
|
||||
binding.svgaHot.layoutParams = layoutParams
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onPKTimeTickEvent(event: PKTimeTickEvent?) {
|
||||
updateTime()
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onPKTimeFinishEvent(event: PKTimeFinishEvent?) {
|
||||
updateView()
|
||||
}
|
||||
|
||||
private fun onSeatClick(teamType: Int) {
|
||||
//不是管理员或者房主弹出排麦dialog
|
||||
if (!AvRoomDataManager.get().isManager) {
|
||||
//已经排麦不操作
|
||||
if (!PkModel.get().pkMemberInfoList.isNullOrEmpty() && AvRoomDataManager.get().myIsInQueue) {
|
||||
SingleToastUtil.showToastShort(ResUtil.getString(R.string.avroom_widget_pkboardview_03))
|
||||
return
|
||||
}
|
||||
onActionListener?.onShowPKMicQueueDialog()
|
||||
return
|
||||
}
|
||||
//添加红队人员
|
||||
val selectDialog =
|
||||
PKSelectPeopleDialog(context, teamType, PkModel.get().pkMemberInfoList)
|
||||
selectDialog.setOnSelectPeopleListener { micEntityList -> //更新队伍,麦序,显示头像
|
||||
val upMicMemberList: MutableList<RoomPKInvitedUpMicMember> =
|
||||
ArrayList()
|
||||
for (micEntity in micEntityList) {
|
||||
if (TextUtils.isEmpty(micEntity.uid)) {
|
||||
continue
|
||||
}
|
||||
val roomPKInvitedUpMicMember = RoomPKInvitedUpMicMember()
|
||||
if (micEntity.isSelect) {
|
||||
roomPKInvitedUpMicMember.groupType = teamType
|
||||
} else {
|
||||
if (TextUtils.isEmpty(micEntity.uid)) {
|
||||
roomPKInvitedUpMicMember.groupType = PKTeamInfo.TEAM_NONE
|
||||
} else {
|
||||
val teamId = PkModel.get().getTeamIdInPKMemberList(micEntity.uid)
|
||||
roomPKInvitedUpMicMember.groupType =
|
||||
if (teamId == teamType) PKTeamInfo.TEAM_NONE else teamId
|
||||
}
|
||||
}
|
||||
roomPKInvitedUpMicMember.uid = micEntity.uid
|
||||
roomPKInvitedUpMicMember.nick = micEntity.nick
|
||||
val micQueue = AvRoomDataManager.get().mMicQueueMemberMap
|
||||
//设置坑位的位置
|
||||
for (i in 0 until micQueue.size()) {
|
||||
val key = micQueue.keyAt(i)
|
||||
val roomQueueInfo = micQueue[key]
|
||||
if (roomQueueInfo.mChatRoomMember != null && roomQueueInfo.mChatRoomMember.account == micEntity.uid
|
||||
) {
|
||||
roomPKInvitedUpMicMember.position = key
|
||||
}
|
||||
}
|
||||
upMicMemberList.add(roomPKInvitedUpMicMember)
|
||||
}
|
||||
PkModel.get().inviteInTeam(upMicMemberList)
|
||||
.doOnError { throwable: Throwable ->
|
||||
SingleToastUtil.showToastShort(
|
||||
throwable.message
|
||||
)
|
||||
}
|
||||
.subscribe()
|
||||
}
|
||||
selectDialog.show()
|
||||
}
|
||||
|
||||
private fun onStartClick() {
|
||||
onActionListener?.onBeginPK()
|
||||
}
|
||||
|
||||
private fun onRestartClick() {
|
||||
if (PkModel.get().curPkInfo == null) {
|
||||
SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_01))
|
||||
dismissAllowingStateLoss()
|
||||
return
|
||||
}
|
||||
if (PkModel.get().curPkInfo?.pkStatus == RoomPkData.PK_STATUS_AFTER_PK) {
|
||||
SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_02))
|
||||
dismissAllowingStateLoss()
|
||||
return
|
||||
}
|
||||
val tipDialog = CommonTipDialog(context)
|
||||
tipDialog.setTipMsg(
|
||||
ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_03) +
|
||||
ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_04)
|
||||
)
|
||||
tipDialog.setOnActionListener(
|
||||
object : CommonTipDialog.OnActionListener {
|
||||
override fun onOk() {
|
||||
PkModel.get().toPKAgain().subscribe(object : SingleObserver<String?> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
compositeDisposable?.add(d)
|
||||
}
|
||||
|
||||
override fun onSuccess(t: String) {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
|
||||
override fun onError(e: Throwable) {
|
||||
SingleToastUtil.showToast(e.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
)
|
||||
tipDialog.show()
|
||||
}
|
||||
|
||||
interface OnActionListener {
|
||||
fun onBeginPK()
|
||||
fun onShowPKMicQueueDialog()
|
||||
}
|
||||
}
|
@@ -9,7 +9,7 @@ import android.view.WindowManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.chwl.app.avroom.adapter.SendBroadcastAdapter
|
||||
import com.chwl.app.base.BaseActivity
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogSendBroadcastBinding
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.app.utils.SpannableBuilder
|
||||
@@ -24,7 +24,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class SendBroadcastDialog : BaseDialog<DialogSendBroadcastBinding>() {
|
||||
class SendBroadcastDialog : BaseDialogFragment<DialogSendBroadcastBinding>() {
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<String>
|
||||
private lateinit var adapter: SendBroadcastAdapter
|
||||
|
@@ -2,11 +2,11 @@ package com.chwl.app.avroom.dialog
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.view.WindowManager
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogSingleRoomTipBinding
|
||||
|
||||
class SingleRoomTipDialog :
|
||||
BaseDialog<DialogSingleRoomTipBinding>() {
|
||||
BaseDialogFragment<DialogSingleRoomTipBinding>() {
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
override fun init() {
|
||||
binding?.root?.setOnClickListener {
|
||||
|
@@ -63,6 +63,7 @@ import com.chwl.app.music.widget.MusicPlayerView
|
||||
import com.chwl.app.public_chat.ui.message.HeadlineViewModel
|
||||
import com.chwl.app.room_chat.activity.RoomMsgActivity
|
||||
import com.chwl.app.ui.pay.ChargeActivity
|
||||
import com.chwl.app.ui.webview.CommonWebViewActivity
|
||||
import com.chwl.app.ui.webview.DialogWebViewActivity
|
||||
import com.chwl.app.ui.widget.ButtonItem
|
||||
import com.chwl.app.ui.widget.GiftDialog
|
||||
@@ -98,6 +99,8 @@ import com.chwl.core.manager.RoomEvent
|
||||
import com.chwl.core.mentoring_relationship.event.MentoringStopCountingEvent
|
||||
import com.chwl.core.room.anotherroompk.ShowGiftDialogEvent
|
||||
import com.chwl.core.room.anotherroompk.ShowUserInfoDialogEvent
|
||||
import com.chwl.core.room.bean.RightBottomIconConfig
|
||||
import com.chwl.core.room.bean.RoomIcon
|
||||
import com.chwl.core.room.bean.RoomInfo
|
||||
import com.chwl.core.room.event.RoomAtEvent
|
||||
import com.chwl.core.room.event.RoomClearScreenEvent
|
||||
@@ -122,6 +125,7 @@ import com.chwl.library.common.util.LimitClickUtils
|
||||
import com.chwl.library.net.rxnet.utils.RxNetWorkUtils
|
||||
import com.chwl.library.rxbus.RxBus
|
||||
import com.chwl.library.utils.*
|
||||
import com.google.gson.Gson
|
||||
import com.netease.nim.uikit.common.antispam.AntiSpamEvent
|
||||
import com.netease.nimlib.sdk.StatusCode
|
||||
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder
|
||||
@@ -650,6 +654,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
|
||||
open fun updateView() {
|
||||
// 更新底欄
|
||||
showBottomViewForDifRole()
|
||||
bottomView.notifyStateChanged()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -664,6 +669,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
|
||||
bottomView.showHomePartyDownMicBottom()
|
||||
}
|
||||
bottomView.showInputOrIcon(isOnMic)
|
||||
bottomView.updateGameEntrance()
|
||||
// 更新聽筒消息
|
||||
bottomView.setRemoteMuteOpen(!AudioEngineManager.get().isRemoteMute)
|
||||
if (isOnMic) {
|
||||
@@ -791,8 +797,24 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
|
||||
override fun onClick(v: View) {
|
||||
if (mClickLimit.checkForTime(500)) return
|
||||
when (v.id) {
|
||||
R.id.iv_config_entrance -> {
|
||||
val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo ?: return
|
||||
val configInfo = AvRoomDataManager.get().rightBottomIconConfig ?: return
|
||||
if (configInfo.skipType == 1) {
|
||||
playConfigWeb(configInfo.skipUrl)
|
||||
} else if (configInfo.skipType == 2) {
|
||||
playConfigBaishunGame(configInfo)
|
||||
}
|
||||
}
|
||||
R.id.iv_game -> {
|
||||
RoomGameListDialog().show(childFragmentManager, "GAME_LIST")
|
||||
val dialog = RoomGameplayDialog()
|
||||
dialog.isOnlyPK = false
|
||||
dialog.listener = object : RoomGameplayDialog.GameplayDialogListener {
|
||||
override fun onShowBaiShunGame(url: String, config: BaiShunGameConfig) {
|
||||
(activity as? AVRoomActivity)?.showBaiShunGame(url, config)
|
||||
}
|
||||
}
|
||||
dialog.show(childFragmentManager, "ROOM_GAME_PLAY")
|
||||
}
|
||||
R.id.input_send -> {
|
||||
sendMsg()
|
||||
@@ -806,6 +828,38 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
|
||||
}
|
||||
}
|
||||
|
||||
private fun playConfigWeb(url: String) {
|
||||
CommonWebViewActivity.start(mContext, url)
|
||||
}
|
||||
|
||||
private fun playConfigBaishunGame(configInfo: RightBottomIconConfig) {
|
||||
val roomIcon: RoomIcon = RoomIcon(
|
||||
skipContent = configInfo.skipUrl,
|
||||
skipType = 3,
|
||||
showType = 1,
|
||||
code = "BAISHUN",
|
||||
ruleValue = configInfo.reserve)
|
||||
try {
|
||||
val url = roomIcon.skipContent
|
||||
val ruleValue = Gson().fromJson<RoomIcon.RuleValueBean>(
|
||||
roomIcon.ruleValue,
|
||||
RoomIcon.RuleValueBean::class.java
|
||||
)
|
||||
val config = Gson().fromJson<BaiShunGameConfig>(
|
||||
ruleValue.RESERVE,
|
||||
BaiShunGameConfig::class.java
|
||||
)
|
||||
if (config != null && url != null) {
|
||||
config.reloadDynamicParams()
|
||||
(activity as? AVRoomActivity)?.showBaiShunGame(url, config)
|
||||
} else {
|
||||
SingleToastUtil.showToast(R.string.manager_trtc_trtcengineadapter_042)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
private fun sendMsg() {
|
||||
val message = inputEdit.text.toString().trim()
|
||||
if (isPublicMessageTab()) {
|
||||
@@ -1433,14 +1487,19 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
|
||||
RoomMsgActivity.start(mContext)
|
||||
}
|
||||
|
||||
override fun onRoomGameplayClick() {
|
||||
val dialog = RoomGameplayDialog()
|
||||
dialog.listener = object : RoomGameplayDialog.GameplayDialogListener {
|
||||
override fun onShowBaiShunGame(url: String, config: BaiShunGameConfig) {
|
||||
(activity as? AVRoomActivity)?.showBaiShunGame(url, config)
|
||||
override fun onRoomGameplayClick(isOnlyPK: Boolean) {
|
||||
if (isOnlyPK) {
|
||||
val dialog = RoomGameplayDialog()
|
||||
dialog.isOnlyPK = isOnlyPK
|
||||
dialog.listener = object : RoomGameplayDialog.GameplayDialogListener {
|
||||
override fun onShowBaiShunGame(url: String, config: BaiShunGameConfig) {
|
||||
(activity as? AVRoomActivity)?.showBaiShunGame(url, config)
|
||||
}
|
||||
}
|
||||
dialog.show(childFragmentManager, "ROOM_GAME_PLAY")
|
||||
} else {
|
||||
RoomGameListDialog().show(childFragmentManager, "GAME_LIST")
|
||||
}
|
||||
dialog.show(childFragmentManager, "ROOM_GAME_PLAY")
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -18,6 +18,7 @@ import com.chwl.app.avroom.game.OnGameStatusChangeListener
|
||||
import com.chwl.app.avroom.headline.RoomHeadlineWidget
|
||||
import com.chwl.app.avroom.online.RoomOnlineWidget
|
||||
import com.chwl.app.avroom.presenter.GameRoomPresenter
|
||||
import com.chwl.app.avroom.rank.RoomRankNumberWidget
|
||||
import com.chwl.app.avroom.view.IGameRoomView
|
||||
import com.chwl.app.databinding.FragmentGameRoomBinding
|
||||
import com.chwl.app.home.helper.OpenRoomHelper
|
||||
@@ -115,10 +116,14 @@ class GameRoomFragment : BaseRoomFragment<IGameRoomView?, GameRoomPresenter?>(),
|
||||
dialogManager.showOkCancelDialog(
|
||||
getString(R.string.room_switch_standard_room_tips)
|
||||
) {
|
||||
var type = AvRoomDataManager.get().mCurrentRoomInfo?.oldType
|
||||
if (type == null || type <= 0) {
|
||||
type = RoomInfo.ROOMTYPE_HOME_PARTY
|
||||
}
|
||||
OpenRoomHelper.updateRoomInfo(
|
||||
baseActivity,
|
||||
AvRoomDataManager.get().mCurrentRoomInfo,
|
||||
RoomInfo.ROOMTYPE_HOME_PARTY,
|
||||
type,
|
||||
0,
|
||||
false
|
||||
)
|
||||
@@ -271,5 +276,6 @@ class GameRoomFragment : BaseRoomFragment<IGameRoomView?, GameRoomPresenter?>(),
|
||||
super.initWidget()
|
||||
registerWidget(RoomOnlineWidget::class.java.simpleName, gameBinding.onlineWidget)
|
||||
registerWidget(RoomHeadlineWidget::class.java.simpleName, gameBinding.headlineWidget)
|
||||
registerWidget(RoomRankNumberWidget::class.java.simpleName, gameBinding.rankNumberWidget)
|
||||
}
|
||||
}
|
@@ -15,8 +15,10 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.chwl.app.avroom.activity.RoomTitleEditActivity;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtilsV2;
|
||||
import com.chwl.app.ui.widget.GiftDialog;
|
||||
import com.chwl.app.ui.widget.UserInfoDialog;
|
||||
@@ -117,7 +119,6 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
|
||||
if (roomFragment instanceof HomePartyRoomFragment) {
|
||||
((HomePartyRoomFragment) roomFragment).onNewIntent(intent);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -193,6 +194,7 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
|
||||
|
||||
@Override
|
||||
public void onSetListener() {
|
||||
gameMainBinding.ivRoomNotice.setOnClickListener(this);
|
||||
roomMore.setOnClickListener(this);
|
||||
ivFollowRoom.setOnClickListener(this);
|
||||
// ivRoomShare.setOnClickListener(this);
|
||||
@@ -359,8 +361,18 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
|
||||
tempFragment = SingleRoomFragment.newInstance();
|
||||
}
|
||||
break;
|
||||
case RoomInfo.ROOMTYPE_PARTY:
|
||||
if (!(tempFragment instanceof PartyRoomFragment)) {
|
||||
tempFragment = PartyRoomFragment.Companion.newInstance();
|
||||
}
|
||||
break;
|
||||
case RoomInfo.ROOMTYPE_REVELRY:
|
||||
if (!(tempFragment instanceof RevelryRoomFragment)) {
|
||||
tempFragment = RevelryRoomFragment.Companion.newInstance();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (!(tempFragment instanceof HomePartyRoomFragment)) {
|
||||
if (tempFragment == null || !(tempFragment.getClass().getSimpleName().equals(HomePartyRoomFragment.class.getSimpleName()))) {
|
||||
tempFragment = HomePartyRoomFragment.newInstance();
|
||||
}
|
||||
break;
|
||||
@@ -390,6 +402,12 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
|
||||
ivFollowRoom.setImageResource(AvRoomDataManager.get().isRoomFans ? R.drawable.room_ic_collect_yes : R.drawable.room_ic_collect_no);
|
||||
|
||||
setIdOnlineData();
|
||||
|
||||
if (AvRoomDataManager.get().getRoomType() != RoomInfo.ROOMTYPE_GAME) {
|
||||
gameMainBinding.ivRoomNotice.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
gameMainBinding.ivRoomNotice.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -411,6 +429,9 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.iv_room_notice:
|
||||
showRoomIntroduction(AvRoomDataManager.get().isRoomOwner() || AvRoomDataManager.get().isRoomAdmin());
|
||||
break;
|
||||
case R.id.room_more:
|
||||
int gravity = Gravity.END;
|
||||
if(UiUtils.INSTANCE.isRtl(requireContext())){
|
||||
@@ -572,4 +593,22 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void showRoomIntroduction(Boolean modify) {
|
||||
var isModify = modify;
|
||||
RoomInfo info = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
if (info == null) {
|
||||
return;
|
||||
}
|
||||
if (SuperAdminUtil.isSuperAdmin()) {
|
||||
isModify = false;
|
||||
}
|
||||
if (isModify) {
|
||||
RoomTitleEditActivity.startForResult(getActivity(), info.getRoomDesc(), info.getIntroduction());
|
||||
} else {
|
||||
DialogFragment dialogFragment =
|
||||
RoomTitleDialogFragment.getInstance(info.getRoomDesc(), info.getIntroduction());
|
||||
dialogFragment.show(requireActivity().getSupportFragmentManager(), "roomTitle");
|
||||
}
|
||||
}
|
||||
}
|
@@ -4,14 +4,24 @@ import android.annotation.SuppressLint;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.chwl.app.avroom.dialog.RoomTeamPKResultDialog;
|
||||
import com.chwl.app.avroom.dialog.RoomTeamPkDialog;
|
||||
import com.chwl.app.avroom.headline.RoomHeadlineWidget;
|
||||
import com.chwl.app.avroom.online.RoomOnlineWidget;
|
||||
import com.chwl.app.avroom.rank.RoomRankNumberWidget;
|
||||
import com.chwl.app.music.widget.MusicPlayerView;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils;
|
||||
import com.chwl.app.ui.webview.DialogWebViewActivity;
|
||||
import com.chwl.core.room.bean.RightBottomIconConfig;
|
||||
import com.chwl.core.room.bean.RoomIcon;
|
||||
import com.chwl.core.room.core.RoomDataService;
|
||||
import com.chwl.core.room.pk.event.PKDataUpdateEvent;
|
||||
import com.chwl.core.support.room.AudioRoomContext;
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
import com.trello.rxlifecycle3.android.FragmentEvent;
|
||||
import com.chwl.app.R;
|
||||
@@ -25,12 +35,9 @@ import com.chwl.app.avroom.anotherroompk.RoomPkForceFinishDialog;
|
||||
import com.chwl.app.avroom.anotherroompk.RoomPkReceivedDialog;
|
||||
import com.chwl.app.avroom.dialog.MicQueueDialog;
|
||||
import com.chwl.app.avroom.dialog.PKMicQueueDialog;
|
||||
import com.chwl.app.avroom.dialog.PKResultDialog;
|
||||
import com.chwl.app.avroom.dialog.PKScoreBoardDialog;
|
||||
import com.chwl.app.avroom.giftvalue.GiftValueDialogUiHelper;
|
||||
import com.chwl.app.avroom.presenter.HomePartyPresenter;
|
||||
import com.chwl.app.avroom.view.IHomePartyView;
|
||||
import com.chwl.app.avroom.widget.PKBoardView;
|
||||
import com.chwl.app.base.BaseMvpActivity;
|
||||
import com.chwl.app.common.widget.dialog.DialogManager;
|
||||
import com.chwl.app.databinding.FragmentAvRoomGameBinding;
|
||||
@@ -78,6 +85,7 @@ import io.reactivex.Single;
|
||||
import io.reactivex.SingleObserver;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.functions.Consumer;
|
||||
|
||||
/**
|
||||
* 轰趴房间
|
||||
@@ -87,10 +95,10 @@ import io.reactivex.disposables.Disposable;
|
||||
*/
|
||||
@CreatePresenter(HomePartyPresenter.class)
|
||||
public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, HomePartyPresenter> implements
|
||||
IHomePartyView, PKBoardView.OnActionListener {
|
||||
IHomePartyView, RoomTeamPkDialog.OnActionListener {
|
||||
|
||||
private long myUid;
|
||||
private PKBoardView pkBoardView;
|
||||
private RoomTeamPkDialog teamPkDialog;
|
||||
private Disposable mDisposable;
|
||||
private FragmentAvRoomGameBinding gameBinding;
|
||||
/**
|
||||
@@ -100,6 +108,8 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
private PKMicQueueDialog pkMicQueueDialog;
|
||||
private Disposable roomPkOrderDisposable;
|
||||
|
||||
private boolean hasBaishunGames;
|
||||
|
||||
public static HomePartyRoomFragment newInstance() {
|
||||
HomePartyRoomFragment roomFragment = new HomePartyRoomFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
@@ -121,8 +131,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
gameBinding.setKtvModel(false);
|
||||
gameBinding.playTogether.setVisibility(View.GONE);
|
||||
microView = mView.findViewById(R.id.micro_view);
|
||||
pkBoardView = mView.findViewById(R.id.layout_pk_board);
|
||||
pkBoardView.setOnActionListener(this);
|
||||
gameBinding.ivTeamPk.setOnClickListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -136,6 +145,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
super.initWidget();
|
||||
registerWidget(RoomOnlineWidget.class.getSimpleName(), gameBinding.onlineWidget);
|
||||
registerWidget(RoomHeadlineWidget.class.getSimpleName(), gameBinding.headlineWidget);
|
||||
registerWidget(RoomRankNumberWidget.class.getSimpleName(), gameBinding.rankNumberWidget);
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
@@ -148,6 +158,28 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
updateQueuingMicBtn();
|
||||
updatePkScoreBoard();
|
||||
initRoomPkOrder(AvRoomDataManager.get().showPkBeginTime, AvRoomDataManager.get().pkBeginTime);
|
||||
requestData();
|
||||
}
|
||||
|
||||
private void requestData() {
|
||||
RoomDataService dataService = (RoomDataService) AudioRoomContext.Companion.get().findAbility(RoomDataService.class.getSimpleName());
|
||||
String cacheKey = "gameplay_list#" + hashCode();
|
||||
Disposable disposable = AvRoomModel.get().getRoomGamePlayList().doOnError(new Consumer<Throwable>() {
|
||||
@Override
|
||||
public void accept(Throwable throwable) throws Exception {
|
||||
hasBaishunGames = false;
|
||||
updateConfigButtonArea();
|
||||
}
|
||||
}).subscribe(new Consumer<List<RoomIcon>>() {
|
||||
@Override
|
||||
public void accept(List<RoomIcon> roomIcons) throws Exception {
|
||||
if (dataService != null) {
|
||||
dataService.putData(cacheKey, roomIcons);
|
||||
}
|
||||
hasBaishunGames = roomIcons.size() > 0;
|
||||
updateConfigButtonArea();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -196,6 +228,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
gameBinding.setRoomInfo(AvRoomDataManager.get().mCurrentRoomInfo);
|
||||
updateQueuingMicBtn();
|
||||
updatePkScoreBoard();
|
||||
updateConfigButtonArea();
|
||||
getMvpPresenter().updateLeaveMode();
|
||||
break;
|
||||
case RoomEvent.ENTER_ROOM:
|
||||
@@ -257,8 +290,12 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
//PK 开始弹出大记分板
|
||||
if (PkModel.get().getCurPkInfo() != null
|
||||
&& PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_IN_PK) {
|
||||
PKScoreBoardDialog pkScoreBoardDialog = new PKScoreBoardDialog(getContext());
|
||||
pkScoreBoardDialog.show();
|
||||
showTeamPkDialog();
|
||||
}
|
||||
break;
|
||||
case RoomEvent.PK_CREATE:
|
||||
if (PkModel.get().getCurPkInfo() != null) {
|
||||
showTeamPkDialog();
|
||||
}
|
||||
break;
|
||||
case RoomEvent.ROOM_PK_INVITE:
|
||||
@@ -345,14 +382,14 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
private void updatePkScoreBoard() {
|
||||
if (AvRoomDataManager.get().isOpenPKMode()) {
|
||||
|
||||
if (pkBoardView.getVisibility() == View.GONE) {
|
||||
if (gameBinding.ivTeamPk.getVisibility() == View.GONE) {
|
||||
// 通知更新背景
|
||||
PKStateEvent pkStateEvent = new PKStateEvent();
|
||||
pkStateEvent.setCreate(true);
|
||||
EventBus.getDefault().post(pkStateEvent);
|
||||
showTeamPkDialog();
|
||||
}
|
||||
|
||||
pkBoardView.setVisibility(View.VISIBLE);
|
||||
gameBinding.ivTeamPk.setVisibility(View.VISIBLE);
|
||||
//这里通过接口获取PK 详情 更新pk 记分板
|
||||
if (PkModel.get().getCurPkInfo() == null) {
|
||||
PkModel.get().loadPKDataByRoomId(
|
||||
@@ -366,7 +403,9 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
|
||||
@Override
|
||||
public void onSuccess(RoomPkData roomPkData) {
|
||||
pkBoardView.updateView();
|
||||
if (teamPkDialog != null) {
|
||||
teamPkDialog.updateView();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -375,7 +414,9 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
}
|
||||
});
|
||||
} else {
|
||||
pkBoardView.updateView();
|
||||
if (teamPkDialog != null) {
|
||||
teamPkDialog.updateView();
|
||||
}
|
||||
}
|
||||
//取消掉正在进行的龙珠
|
||||
if (AvRoomDataManager.get().haveStartDragon) {
|
||||
@@ -387,23 +428,41 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
}
|
||||
|
||||
} else {
|
||||
if (pkBoardView.getVisibility() == View.VISIBLE) {
|
||||
if (gameBinding.ivTeamPk.getVisibility() == View.VISIBLE) {
|
||||
// 通知更新bg
|
||||
PKStateEvent pkStateEvent = new PKStateEvent();
|
||||
pkStateEvent.setCreate(false);
|
||||
EventBus.getDefault().post(pkStateEvent);
|
||||
}
|
||||
pkBoardView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (SuperAdminUtil.isSuperAdmin()) {
|
||||
pkBoardView.setVisibility(View.GONE);
|
||||
gameBinding.ivTeamPk.setVisibility(View.GONE);
|
||||
dismissTeamPkDialog();
|
||||
}
|
||||
|
||||
//龙珠相关界面设置
|
||||
setDragonView();
|
||||
}
|
||||
|
||||
private void showTeamPkDialog() {
|
||||
if (getActivity() == null) {
|
||||
return;
|
||||
}
|
||||
if (teamPkDialog != null) {
|
||||
if (teamPkDialog.isResumed()) {
|
||||
return;
|
||||
}
|
||||
dismissTeamPkDialog();
|
||||
}
|
||||
teamPkDialog = new RoomTeamPkDialog();
|
||||
teamPkDialog.setOnActionListener(this);
|
||||
teamPkDialog.safeShow(requireActivity().getSupportFragmentManager(), this, null);
|
||||
}
|
||||
|
||||
private void dismissTeamPkDialog() {
|
||||
if (teamPkDialog != null) {
|
||||
teamPkDialog.safeDismiss();
|
||||
teamPkDialog = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanDragonBar() {
|
||||
LogUtil.e("cleanDragonBar");
|
||||
@@ -440,6 +499,13 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
gameBinding.ivQueuingMicro.setVisibility(View.GONE);
|
||||
gameBinding.bottomView.updateQueuingMicButton();
|
||||
}
|
||||
updateMicroView();
|
||||
changeModelShowView();
|
||||
refreshDatingNextStatus();
|
||||
// updateConfigButtonArea();
|
||||
}
|
||||
|
||||
protected void updateMicroView(){
|
||||
String microType = microView.getAdapter() == null ? BaseMicroViewAdapter.MICRO_TYPE_NULL : microView.getAdapter().microType();
|
||||
if (AvRoomDataManager.get().isCpRoom()) {
|
||||
if (!microType.equals(BaseMicroViewAdapter.MICRO_TYPE_CP)) {
|
||||
@@ -457,21 +523,37 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
if (microView.getAdapter() != null) {
|
||||
microView.getAdapter().notifyDataSetChanged();
|
||||
}
|
||||
changeModelShowView();
|
||||
refreshDatingNextStatus();
|
||||
if (AvRoomDataManager.get().isDatingMode()) {
|
||||
gameBinding.ivGame.setVisibility(View.GONE);
|
||||
} else {
|
||||
gameBinding.ivGame.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void updateMicBtn() {
|
||||
super.updateMicBtn();
|
||||
refreshDatingNextStatus();
|
||||
}
|
||||
|
||||
public void updateConfigButtonArea() {
|
||||
RightBottomIconConfig configModel = AvRoomDataManager.get().rightBottomIconConfig;
|
||||
if (configModel == null) {
|
||||
gameBinding.ivConfigEntrance.setVisibility(View.GONE);
|
||||
} else {
|
||||
if (configModel.getIcon1Url() == null) {
|
||||
gameBinding.ivConfigEntrance.setVisibility(View.GONE);
|
||||
} else {
|
||||
ImageLoadUtils.loadAvatar(configModel.getIcon1Url(), gameBinding.ivConfigEntrance);
|
||||
gameBinding.ivConfigEntrance.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if (configModel.getIcon2Url() != null) {
|
||||
ImageLoadUtils.loadAvatar(configModel.getIcon2Url(), gameBinding.ivGame);
|
||||
}
|
||||
}
|
||||
|
||||
if (hasBaishunGames) {
|
||||
gameBinding.ivGame.setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
gameBinding.ivGame.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateQueuingMicBtn() {
|
||||
if (AvRoomDataManager.get().mCurrentRoomInfo != null) {
|
||||
bottomView.updateQueuingMicButton();
|
||||
@@ -530,10 +612,10 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
mDisposable.dispose();
|
||||
mDisposable = null;
|
||||
}
|
||||
dismissTeamPkDialog();
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onDatingSelectUserEvent(DatingSelectUserEvent event) {
|
||||
if (getMvpPresenter() != null) {
|
||||
@@ -565,6 +647,9 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
public void onClick(View v) {
|
||||
super.onClick(v);
|
||||
switch (v.getId()) {
|
||||
case R.id.iv_team_pk:
|
||||
showTeamPkDialog();
|
||||
break;
|
||||
case R.id.play_together:
|
||||
if (!DynamicFaceModel.get().isShowingFace()) {
|
||||
FaceInfo faceInfo = DynamicFaceModel.get().getPlayTogetherFace();
|
||||
@@ -690,12 +775,6 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEndPK() {
|
||||
PKResultDialog pkResultDialog = new PKResultDialog(getContext(), PkModel.get().getCurPkInfo());
|
||||
pkResultDialog.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShowPKMicQueueDialog() {
|
||||
if (PkModel.get().isFighting()) {
|
||||
@@ -1024,4 +1103,16 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
super.onInitMusicPlayerView(view);
|
||||
view.linkIconView(gameBinding.ivMusic, gameBinding.ivMusic);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onPKDataUpdateEvent(PKDataUpdateEvent event) {
|
||||
RoomPkData data = PkModel.get().getCurPkInfo();
|
||||
if (data == null) {
|
||||
return;
|
||||
}
|
||||
if (event.getType() == PKDataUpdateEvent.TYPE_RESULT && data.getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK) {
|
||||
RoomTeamPKResultDialog teamPkResultDialog = new RoomTeamPKResultDialog(getContext(), PkModel.get().getCurPkInfo());
|
||||
teamPkResultDialog.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,34 @@
|
||||
package com.chwl.app.avroom.fragment
|
||||
|
||||
import com.chwl.app.avroom.adapter.BaseMicroViewAdapter
|
||||
import com.chwl.app.avroom.adapter.PartyMicroViewAdapter
|
||||
import com.example.lib_utils.UiUtils
|
||||
import com.example.lib_utils.ktx.setMargin
|
||||
|
||||
/**
|
||||
* 聚会房
|
||||
*/
|
||||
class PartyRoomFragment : HomePartyRoomFragment() {
|
||||
|
||||
companion object {
|
||||
fun newInstance(): PartyRoomFragment {
|
||||
return PartyRoomFragment()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFindViews() {
|
||||
super.onFindViews()
|
||||
microView.setMargin(0,UiUtils.dip2px(30f),0,0)
|
||||
}
|
||||
|
||||
override fun updateMicroView() {
|
||||
val microType =
|
||||
if (microView.adapter == null) BaseMicroViewAdapter.MICRO_TYPE_NULL else microView.adapter.microType()
|
||||
if (microType != BaseMicroViewAdapter.MICRO_TYPE_PARTY) {
|
||||
microView.bindAdapter(PartyMicroViewAdapter(mContext))
|
||||
}
|
||||
if (microView.adapter != null) {
|
||||
microView.adapter.notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
package com.chwl.app.avroom.fragment
|
||||
|
||||
import com.chwl.app.avroom.adapter.BaseMicroViewAdapter
|
||||
import com.chwl.app.avroom.adapter.RevelryMicroViewAdapter
|
||||
import com.example.lib_utils.UiUtils
|
||||
import com.example.lib_utils.ktx.setMargin
|
||||
|
||||
/**
|
||||
* 狂欢房
|
||||
*/
|
||||
class RevelryRoomFragment : HomePartyRoomFragment() {
|
||||
|
||||
companion object {
|
||||
fun newInstance(): RevelryRoomFragment {
|
||||
return RevelryRoomFragment()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFindViews() {
|
||||
super.onFindViews()
|
||||
microView.setMargin(0, UiUtils.dip2px(30f),0,0)
|
||||
}
|
||||
|
||||
override fun updateMicroView() {
|
||||
val microType =
|
||||
if (microView.adapter == null) BaseMicroViewAdapter.MICRO_TYPE_NULL else microView.adapter.microType()
|
||||
if (microType != BaseMicroViewAdapter.MICRO_TYPE_REVELRY) {
|
||||
microView.bindAdapter(RevelryMicroViewAdapter(mContext))
|
||||
}
|
||||
if (microView.adapter != null) {
|
||||
microView.adapter.notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,6 +16,7 @@ import com.chwl.app.avroom.dialog.RequestUpMicDialog
|
||||
import com.chwl.app.avroom.headline.RoomHeadlineWidget
|
||||
import com.chwl.app.avroom.online.RoomOnlineWidget
|
||||
import com.chwl.app.avroom.presenter.SingleRoomPresenter
|
||||
import com.chwl.app.avroom.rank.RoomRankNumberWidget
|
||||
import com.chwl.app.avroom.singleroompk.SingleRoomPkFinishDialog
|
||||
import com.chwl.app.avroom.singleroompk.SingleRoomPkForceFinishDialog
|
||||
import com.chwl.app.avroom.singleroompk.SingleRoomPkReceivedDialog
|
||||
@@ -25,6 +26,7 @@ import com.chwl.app.fansteam.FansTeamJoinActivity
|
||||
import com.chwl.app.fansteam.FansTeamJoinedActivity
|
||||
import com.chwl.app.fansteam.FansTeamViewModel
|
||||
import com.chwl.app.music.widget.MusicPlayerView
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
import com.chwl.app.ui.webview.CommonWebViewActivity
|
||||
import com.chwl.app.ui.webview.DialogWebViewActivity
|
||||
import com.chwl.core.UriProvider
|
||||
@@ -35,6 +37,10 @@ import com.chwl.core.im.custom.bean.RequestUpmicAttachment
|
||||
import com.chwl.core.im.custom.bean.RoomPKAttachment
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.manager.RoomEvent
|
||||
import com.chwl.core.room.core.RoomDataService
|
||||
import com.chwl.core.room.model.AvRoomModel
|
||||
import com.chwl.core.support.room.AudioRoomContext.Companion.get
|
||||
import com.chwl.core.support.room.RoomAbility
|
||||
import com.chwl.core.user.bean.UserInfo
|
||||
import com.chwl.library.base.factory.CreatePresenter
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
@@ -62,6 +68,8 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
|
||||
private lateinit var gameBinding: FragmentSingleRoomBinding
|
||||
private lateinit var upMicDialog: RequestUpMicDialog
|
||||
|
||||
private var hasBaishunGames = false
|
||||
|
||||
private val fansTeamViewModel: FansTeamViewModel by viewModels()
|
||||
override fun getRootLayoutId(): Int {
|
||||
return R.layout.fragment_single_room
|
||||
@@ -238,6 +246,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
|
||||
super.initWidget()
|
||||
registerWidget(RoomOnlineWidget::class.java.simpleName, gameBinding.onlineWidget)
|
||||
registerWidget(RoomHeadlineWidget::class.java.simpleName, gameBinding.headlineWidget)
|
||||
registerWidget(RoomRankNumberWidget::class.java.simpleName, gameBinding.rankNumberWidget)
|
||||
}
|
||||
|
||||
override fun onInitMusicPlayerView(view: MusicPlayerView) {
|
||||
|
@@ -2,6 +2,7 @@ package com.chwl.app.avroom.headline
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.databinding.DataBindingUtil
|
||||
@@ -9,12 +10,15 @@ import com.chwl.app.R
|
||||
import com.chwl.app.databinding.RoomHeadlineWidgetBinding
|
||||
import com.chwl.app.public_chat.core.ChatRoomClient
|
||||
import com.chwl.app.public_chat.core.ChatRoomClientManager
|
||||
import com.chwl.app.ui.utils.loadAvatar
|
||||
import com.chwl.core.im.custom.bean.CustomAttachment
|
||||
import com.chwl.core.im.custom.bean.HeadlineChangedAttachment
|
||||
import com.chwl.core.public_chat_hall.bean.HeadlineBean
|
||||
import com.chwl.core.public_chat_hall.model.PublicChatModel
|
||||
import com.chwl.core.support.room.FrameLayoutRoomWidget
|
||||
import com.chwl.core.support.room.RoomView
|
||||
import com.example.lib_utils.AppUtils
|
||||
import com.example.lib_utils.UiUtils
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
|
||||
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum
|
||||
|
||||
@@ -44,6 +48,12 @@ class RoomHeadlineWidget : FrameLayoutRoomWidget {
|
||||
defStyleRes: Int
|
||||
) : super(context, attrs, defStyleAttr, defStyleRes)
|
||||
|
||||
init {
|
||||
if (UiUtils.isRtl(AppUtils.getApp())) {
|
||||
binding.tvHeadlineContent.gravity = Gravity.RIGHT
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStart(roomView: RoomView) {
|
||||
super.onStart(roomView)
|
||||
if (!isInEditMode) {
|
||||
@@ -89,13 +99,11 @@ class RoomHeadlineWidget : FrameLayoutRoomWidget {
|
||||
}
|
||||
|
||||
private fun updateHeadline(data: HeadlineBean?) {
|
||||
val content = data?.content
|
||||
if (data?.isValid() == true && !content.isNullOrEmpty()) {
|
||||
binding.tvHeadlineContent.text = content
|
||||
this.isVisible = true
|
||||
} else {
|
||||
this.isVisible = false
|
||||
}
|
||||
binding.tvHeadlineContent.text = data?.content ?: ""
|
||||
binding.ivAvatar.loadAvatar(data?.avatar)
|
||||
binding.tvName.text = "${data?.nick ?: ""} :"
|
||||
binding.tvMoney.text = data?.payMoneyNum?.toString() ?: "0"
|
||||
this.isVisible = data?.isValid() == true && !data.content.isNullOrEmpty()
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
|
@@ -152,7 +152,7 @@ class RoomOnlineWidget : FrameLayoutRoomWidget, RoomWidget {
|
||||
|
||||
private fun startUpdateOnlineTask() {
|
||||
getCompositeDisposable().add(Observable.interval(
|
||||
0, 10, TimeUnit.SECONDS
|
||||
0, 30, TimeUnit.SECONDS
|
||||
).subscribe {
|
||||
refreshData()
|
||||
})
|
||||
|
@@ -9,6 +9,7 @@ import android.util.SparseArray;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.chwl.core.manager.RoomMicQueueModel;
|
||||
import com.chwl.core.support.room.AudioRoomContext;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonElement;
|
||||
@@ -121,11 +122,11 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
|
||||
AvRoomDataManager.get().updateServiceRoomInfo(roomInfo);
|
||||
mAvRoomModel.enterRoom(roomInfo.getRoomId(), 3, fromType, fromNick, fromUid)
|
||||
.flatMap(this::dealServerMicInfo)
|
||||
.map(this::dealMicMemberFromIMNet)
|
||||
.flatMap(this::dealMicChatRoomMemberFromIMNet)
|
||||
.flatMap((Function<SparseArray<RoomQueueInfo>, ObservableSource<SparseArray<RoomQueueInfo>>>) roomQueue -> RoomMicQueueModel.INSTANCE.queueMicQueue(roomInfo.getRoomId(),roomQueue))
|
||||
.compose(bindUntilEvent(PresenterEvent.DESTROY))
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(roomQueueInfoSparseArray -> {
|
||||
AvRoomDataManager.get().replaceMicQueue(roomQueueInfoSparseArray);
|
||||
long uid = AuthModel.get().getCurrentUid();
|
||||
AudioEngineManager.get().startRtcEngine(uid, roomInfo.getAudioSdkType());
|
||||
// TODO 临时方案:后续逐步完善整个房间的RoomContext替换计划
|
||||
@@ -220,52 +221,12 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
|
||||
IMNetEaseManager.get().getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.ROOM_EXIT));
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理网易云信队列上人员的信息
|
||||
*/
|
||||
private Observable<SparseArray<RoomQueueInfo>> dealMicChatRoomMemberFromIMNet(List<String> accounts) {
|
||||
if (ListUtils.isListEmpty(accounts))
|
||||
return Observable.just(AvRoomDataManager.get().mMicQueueMemberMap);
|
||||
return IMNetEaseManager.get().fetchRoomMembersByIds(accounts).observeOn(AndroidSchedulers.mainThread())
|
||||
.flatMap(chatRoomMembers -> {
|
||||
for (ChatRoomMember chatRoomMember : chatRoomMembers) {
|
||||
AvRoomDataManager.get().updateQueueChatRoomMemberExtension(chatRoomMember);
|
||||
}
|
||||
return Single.just(AvRoomDataManager.get().mMicQueueMemberMap);
|
||||
}).toObservable();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 处理网易云信坑位信息
|
||||
*/
|
||||
private List<String> dealMicMemberFromIMNet(List<Entry<String, String>> entries) {
|
||||
List<String> accounts = new ArrayList<>();
|
||||
if (!ListUtils.isListEmpty(entries)) {
|
||||
JsonParser jsonParser = new JsonParser();
|
||||
MicMemberInfo chatRoomMember;
|
||||
for (Entry<String, String> entry : entries) {
|
||||
RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(Integer.parseInt(entry.key));
|
||||
if (roomQueueInfo != null) {
|
||||
JsonObject valueJsonObj = jsonParser.parse(entry.value).getAsJsonObject();
|
||||
if (valueJsonObj != null) {
|
||||
chatRoomMember = mGson.fromJson(valueJsonObj, MicMemberInfo.class);
|
||||
accounts.add(chatRoomMember.getAccount());
|
||||
roomQueueInfo.mChatRoomMember = chatRoomMember;
|
||||
}
|
||||
AvRoomDataManager.get().mMicQueueMemberMap.put(Integer.valueOf(entry.key), roomQueueInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
return accounts;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 处理服务端坑位信息
|
||||
*/
|
||||
@Nullable
|
||||
private ObservableSource<List<Entry<String, String>>> dealServerMicInfo(EnterChatRoomResultData enterChatRoomResultData) {
|
||||
private ObservableSource<SparseArray<RoomQueueInfo>> dealServerMicInfo(EnterChatRoomResultData enterChatRoomResultData) {
|
||||
AvRoomDataManager.get().mEnterChatRoomResultData = enterChatRoomResultData;
|
||||
if (enterChatRoomResultData == null)
|
||||
return Observable.error(new Throwable(GET_ROOM_FROM_IMNET_ERROR));
|
||||
@@ -295,11 +256,12 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
|
||||
//初始化所有坑位
|
||||
Map<String, String> micMapStr = mGson.fromJson(roomMicStr, new TypeToken<Map<String, String>>() {
|
||||
}.getType());
|
||||
SparseArray<RoomQueueInfo> queue = new SparseArray<>();
|
||||
for (Map.Entry<String, String> entry : micMapStr.entrySet()) {
|
||||
AvRoomDataManager.get().mMicQueueMemberMap.put(Integer.valueOf(entry.getKey()),
|
||||
queue.put(Integer.valueOf(entry.getKey()),
|
||||
new RoomQueueInfo(mGson.fromJson(entry.getValue(), RoomMicInfo.class), null));
|
||||
}
|
||||
return mAvRoomModel.queryRoomMicInfo(roomInfo.getRoomId());
|
||||
return Observable.just(queue);
|
||||
}
|
||||
}
|
||||
return Observable.error(new Throwable(GET_ROOM_FROM_IMNET_ERROR));
|
||||
|
@@ -32,7 +32,7 @@ import androidx.recyclerview.widget.SimpleItemAnimator;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.UIHelper;
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity;
|
||||
import com.chwl.app.avroom.dialog.PKResultDialog;
|
||||
import com.chwl.app.avroom.dialog.RoomTeamPKResultDialog;
|
||||
import com.chwl.app.avroom.widget.OnMsgLongClickListener;
|
||||
import com.chwl.app.avroom.widget.TemplateMessageAdapter;
|
||||
import com.chwl.app.common.widget.CustomImageSpan;
|
||||
@@ -50,7 +50,6 @@ import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.chwl.app.utils.ObjectTypeHelper;
|
||||
import com.chwl.app.utils.RegexUtil;
|
||||
import com.chwl.core.DemoCache;
|
||||
import com.chwl.core.XConstants;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.bean.attachmsg.RoomQueueMsgAttachment;
|
||||
import com.chwl.core.decoration.car.bean.CarInfo;
|
||||
@@ -90,6 +89,7 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessageExtension;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomNotificationAttachment;
|
||||
import com.netease.nimlib.sdk.msg.attachment.ImageAttachment;
|
||||
import com.netease.nimlib.sdk.msg.attachment.MsgAttachment;
|
||||
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
|
||||
import com.netease.nimlib.sdk.msg.constant.NotificationType;
|
||||
|
||||
@@ -546,16 +546,20 @@ public class PublicChatMessageView extends FrameLayout {
|
||||
setMsgNotification(chatRoomMessage, tvContent, baseViewHolder.getAdapterPosition());
|
||||
setVIPMessageBackground(chatRoomMessage, tvContent);
|
||||
} else if (chatRoomMessage.getMsgType() == MsgTypeEnum.custom) {
|
||||
CustomAttachment attachment = (CustomAttachment) chatRoomMessage.getAttachment();
|
||||
int first = attachment.getFirst();
|
||||
int second = attachment.getSecond();
|
||||
if (first == CustomAttachment.CUSTOM_MSG_HEADLINE_CHANGED) {
|
||||
if (second == CustomAttachment.CUSTOM_MSG_HEADLINE_CHANGED_SUB) {
|
||||
setHeadlineMsg(chatRoomMessage, tvContent, attachment);
|
||||
if (chatRoomMessage.getAttachment() != null && chatRoomMessage.getAttachment() instanceof CustomAttachment) {
|
||||
CustomAttachment attachment = (CustomAttachment) chatRoomMessage.getAttachment();
|
||||
int first = attachment.getFirst();
|
||||
int second = attachment.getSecond();
|
||||
if (first == CustomAttachment.CUSTOM_MSG_HEADLINE_CHANGED) {
|
||||
if (second == CustomAttachment.CUSTOM_MSG_HEADLINE_CHANGED_SUB) {
|
||||
setHeadlineMsg(chatRoomMessage, tvContent, attachment);
|
||||
}
|
||||
} else {
|
||||
tvContent.setTextColor(Color.WHITE);
|
||||
tvContent.setText(tvContent.getResources().getText(R.string.not_support_message_tip));
|
||||
}
|
||||
} else {
|
||||
tvContent.setTextColor(Color.WHITE);
|
||||
tvContent.setText(tvContent.getResources().getText(R.string.not_support_message_tip));
|
||||
tvContent.setText("");
|
||||
}
|
||||
}
|
||||
} catch (UnsupportedOperationException e) {
|
||||
@@ -563,6 +567,9 @@ public class PublicChatMessageView extends FrameLayout {
|
||||
clearBackground(tvContent);
|
||||
tvContent.setTextColor(Color.WHITE);
|
||||
tvContent.setText(tvContent.getResources().getText(R.string.not_support_message_tip));
|
||||
} catch (Exception e) {
|
||||
clearBackground(tvContent);
|
||||
tvContent.setText("");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -830,7 +837,7 @@ public class PublicChatMessageView extends FrameLayout {
|
||||
}
|
||||
} else if (attachment.getFirst() == CustomAttachment.CUSTOM_MESS_HEAD_ROOM_PK) {
|
||||
if (attachment.getSecond() == CustomAttachment.CUSTOM_MESS_SUB_ROOM_PK_RESULT) {
|
||||
PKResultDialog pkResultDialog = new PKResultDialog(getContext(), ((RoomPkAttachment) attachment).getRoomPkData());
|
||||
RoomTeamPKResultDialog pkResultDialog = new RoomTeamPKResultDialog(getContext(), ((RoomPkAttachment) attachment).getRoomPkData());
|
||||
pkResultDialog.show();
|
||||
}
|
||||
} else if (attachment instanceof RoomFollowOwnerAttachment2 && !AvRoomDataManager.get().isRoomFans) {
|
||||
|
@@ -0,0 +1,92 @@
|
||||
package com.chwl.app.avroom.rank
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import com.chwl.core.support.room.FrameLayoutRoomWidget
|
||||
import com.chwl.core.support.room.RoomWidget
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.databinding.RoomRankNumberWidgetBinding
|
||||
import com.chwl.app.ui.webview.DialogWebViewActivity
|
||||
import com.chwl.core.UriProvider
|
||||
import com.chwl.core.im.custom.bean.RoomSerialValueChangedAttachment
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.manager.IMNetEaseManager
|
||||
import com.chwl.core.manager.RoomEvent
|
||||
import com.chwl.core.support.room.RoomContext
|
||||
import com.chwl.core.support.room.RoomView
|
||||
import com.chwl.library.utils.FormatUtils
|
||||
import com.example.lib_utils.ktx.singleClick
|
||||
|
||||
/**
|
||||
* 房间榜单入口
|
||||
*/
|
||||
class RoomRankNumberWidget : FrameLayoutRoomWidget, RoomWidget {
|
||||
|
||||
private val binding: RoomRankNumberWidgetBinding =
|
||||
DataBindingUtil.inflate(
|
||||
LayoutInflater.from(
|
||||
context
|
||||
), R.layout.room_rank_number_widget, this, true
|
||||
)
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
|
||||
context,
|
||||
attrs,
|
||||
defStyleAttr
|
||||
)
|
||||
|
||||
constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet?,
|
||||
defStyleAttr: Int,
|
||||
defStyleRes: Int
|
||||
) : super(context, attrs, defStyleAttr, defStyleRes)
|
||||
|
||||
init {
|
||||
this.singleClick {
|
||||
DialogWebViewActivity.start(context, UriProvider.getRoomRanking())
|
||||
}
|
||||
}
|
||||
|
||||
override fun onInitialize(roomView: RoomView, roomContext: RoomContext) {
|
||||
super.onInitialize(roomView, roomContext)
|
||||
refreshData()
|
||||
registerMemberChangedListener()
|
||||
}
|
||||
|
||||
override fun onUnbindContext() {
|
||||
super.onUnbindContext()
|
||||
updateView(null)
|
||||
}
|
||||
|
||||
private fun registerMemberChangedListener() {
|
||||
getCompositeDisposable().add(IMNetEaseManager.get().chatRoomEventObservable.subscribe {
|
||||
when (it.event) {
|
||||
RoomEvent.SERIAL_VALUE_CHANGED -> {
|
||||
val attachment =
|
||||
it.chatRoomMessage.attachment as? RoomSerialValueChangedAttachment
|
||||
attachment?.serialValue?.let {
|
||||
updateView(attachment.serialValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun refreshData() {
|
||||
val value = AvRoomDataManager.get().serialValue
|
||||
updateView(value)
|
||||
}
|
||||
|
||||
private fun updateView(value: Double?) {
|
||||
if (value == null || value <= 0) {
|
||||
binding.tvNumber.text = "0"
|
||||
} else {
|
||||
binding.tvNumber.text = FormatUtils.formatToShortKMHalfUp(value)
|
||||
}
|
||||
}
|
||||
}
|
@@ -3,13 +3,13 @@ package com.chwl.app.avroom.room_album
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import com.hjq.toast.ToastUtils
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogLockRoomAlbumPhotoBinding
|
||||
import com.chwl.app.ui.utils.ImageLoadUtilsV2
|
||||
import com.chwl.core.gift.bean.GiftReceiveInfo
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
|
||||
class UnlockRoomAlbumPhotoDialog : BaseDialog<DialogLockRoomAlbumPhotoBinding>(){
|
||||
class UnlockRoomAlbumPhotoDialog : BaseDialogFragment<DialogLockRoomAlbumPhotoBinding>(){
|
||||
|
||||
var onUnlockRoomPhotoListener: OnUnlockRoomPhotoListener? = null
|
||||
|
||||
|
@@ -5,7 +5,7 @@ import android.os.Bundle
|
||||
import android.view.WindowManager
|
||||
import androidx.core.view.isVisible
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogSingleRoomPkFinishBinding
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.core.im.custom.bean.RoomPkBean
|
||||
@@ -14,7 +14,7 @@ import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class SingleRoomPkFinishDialog : BaseDialog<DialogSingleRoomPkFinishBinding>() {
|
||||
class SingleRoomPkFinishDialog : BaseDialogFragment<DialogSingleRoomPkFinishBinding>() {
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
|
@@ -4,13 +4,13 @@ import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.WindowManager
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogSingleRoomPkForceFinishBinding
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
import com.chwl.core.im.custom.bean.RoomPkBean
|
||||
import com.chwl.core.utils.extension.subAndReplaceDot
|
||||
|
||||
class SingleRoomPkForceFinishDialog : BaseDialog<DialogSingleRoomPkForceFinishBinding>() {
|
||||
class SingleRoomPkForceFinishDialog : BaseDialogFragment<DialogSingleRoomPkForceFinishBinding>() {
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
|
@@ -4,7 +4,7 @@ import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import androidx.core.view.isVisible
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogSingleRoomPkReceivedBinding
|
||||
import com.chwl.core.im.custom.bean.RoomPkBean
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
@@ -17,7 +17,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class SingleRoomPkReceivedDialog : BaseDialog<DialogSingleRoomPkReceivedBinding>() {
|
||||
class SingleRoomPkReceivedDialog : BaseDialogFragment<DialogSingleRoomPkReceivedBinding>() {
|
||||
|
||||
companion object {
|
||||
|
||||
|
@@ -1,12 +1,12 @@
|
||||
package com.chwl.app.avroom.singleroompk
|
||||
|
||||
import android.text.method.ScrollingMovementMethod
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogSingleRoomPkRuleBinding
|
||||
import com.chwl.core.room.anotherroompk.SingleRoomPKModel
|
||||
import com.chwl.core.utils.extension.toast
|
||||
|
||||
class SingleRoomPkRuleDialog : BaseDialog<DialogSingleRoomPkRuleBinding>() {
|
||||
class SingleRoomPkRuleDialog : BaseDialogFragment<DialogSingleRoomPkRuleBinding>() {
|
||||
|
||||
companion object {
|
||||
|
||||
|
@@ -16,11 +16,11 @@ import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.PopupWindow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.chwl.app.avroom.dialog.RoomGameplayDialog;
|
||||
import com.chwl.app.avroom.activity.RoomTypeSwitchActivity;
|
||||
import com.chwl.core.utils.extension.StringExtensionKt;
|
||||
import com.netease.nim.uikit.api.NimUIKit;
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
|
||||
@@ -29,7 +29,6 @@ import com.netease.nimlib.sdk.uinfo.model.UserInfo;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.avroom.BottomViewListenerWrapper;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils;
|
||||
import com.chwl.app.vip.VipMainActivity;
|
||||
import com.chwl.app.room_chat.activity.RoomMsgActivity;
|
||||
import com.chwl.core.helper.ImHelperUtils;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
@@ -59,6 +58,7 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
*/
|
||||
private static final int NEW_OPTION = 1;
|
||||
private static final String SH_NEW_OPTION = "sh_new_option";
|
||||
private static final String NEW_OPTION_ROOM_TYPE = "new_option_room_type";
|
||||
|
||||
private BottomViewListenerWrapper wrapper;
|
||||
private ImageView openMic;
|
||||
@@ -73,6 +73,10 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
private ImageView iconMicQueue;
|
||||
private ImageView iconRoomMsg;
|
||||
|
||||
private ImageView iconRoomBaiShunGame;
|
||||
|
||||
private ImageView pkGameView;
|
||||
|
||||
@Nullable
|
||||
private PopupWindow msgTipPopupWindow;
|
||||
@NonNull
|
||||
@@ -104,11 +108,12 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
remoteMute = findViewById(R.id.icon_room_open_remote_mic);
|
||||
faceLayout = findViewById(R.id.room_face_layout);
|
||||
micLayout = findViewById(R.id.room_mic_layout);
|
||||
iconRoomBaiShunGame = findViewById(R.id.icon_room_baishun_game);
|
||||
|
||||
iconMicQueue = (ImageView) findViewById(R.id.icon_mic_queue);
|
||||
|
||||
iconRoomMsg = findViewById(R.id.iv_room_message);
|
||||
ImageView gameView = findViewById(R.id.icon_room_game);
|
||||
pkGameView = findViewById(R.id.icon_room_PK_game);
|
||||
openMic.setOnClickListener(this);
|
||||
sendMsgInput.setOnClickListener(this);
|
||||
sendFace.setOnClickListener(this);
|
||||
@@ -117,7 +122,8 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
sendMagic.setOnClickListener(this);
|
||||
iconMicQueue.setOnClickListener(this);
|
||||
iconRoomMsg.setOnClickListener(this);
|
||||
gameView.setOnClickListener(this);
|
||||
pkGameView.setOnClickListener(this);
|
||||
iconRoomBaiShunGame.setOnClickListener(this);
|
||||
|
||||
setMicBtnEnable(false);
|
||||
setMicBtnOpen(false);
|
||||
@@ -156,8 +162,11 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
|
||||
if (newOption == NEW_OPTION) {
|
||||
sendMagic.setImageResource(R.drawable.room_menu_ic_more);
|
||||
if (isRemindOptionForRoomType()) {
|
||||
sendMagic.setImageResource(R.drawable.room_menu_ic_more_new);
|
||||
}
|
||||
} else {
|
||||
sendMagic.setImageResource(R.drawable.room_menu_ic_more);
|
||||
sendMagic.setImageResource(R.drawable.room_menu_ic_more_new);
|
||||
}
|
||||
sendMagic.setClickable(true);
|
||||
sendMagic.setOnClickListener(this);
|
||||
@@ -168,6 +177,29 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isRemindOptionForRoomType() {
|
||||
boolean isReminded = (boolean) SharedPreferenceUtils.get(NEW_OPTION_ROOM_TYPE, false);
|
||||
if (isReminded) {
|
||||
return false;
|
||||
}
|
||||
if (RoomTypeSwitchActivity.Companion.isCanSwitch()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean updateOptionForRoomType() {
|
||||
boolean isReminded = (boolean) SharedPreferenceUtils.get(NEW_OPTION_ROOM_TYPE, false);
|
||||
if (isReminded) {
|
||||
return false;
|
||||
}
|
||||
if (RoomTypeSwitchActivity.Companion.isCanSwitch()) {
|
||||
SharedPreferenceUtils.put(NEW_OPTION_ROOM_TYPE, true);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onReceiveRecentContactChanged(List<RecentContact> imMessages) {
|
||||
setRoomMessageUnread(IMMessageManager.get().queryUnreadMsg());
|
||||
@@ -215,11 +247,34 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
}
|
||||
}
|
||||
|
||||
public void setBaiShunBtnOpen(boolean isOpen) {
|
||||
iconRoomBaiShunGame.setVisibility(isOpen ? VISIBLE : GONE);
|
||||
}
|
||||
|
||||
public void notifyStateChanged() {
|
||||
setMagicBtnEnable(true);
|
||||
}
|
||||
|
||||
public void showHomePartyUpMicBottom() {
|
||||
faceLayout.setVisibility(VISIBLE);
|
||||
micLayout.setVisibility(VISIBLE);
|
||||
}
|
||||
|
||||
public void updateGameEntrance() {
|
||||
if (AvRoomDataManager.get().isManager() || SuperAdminUtil.isSuperAdmin()) {
|
||||
if (!AvRoomDataManager.get().isCpRoom()) {
|
||||
pkGameView.setVisibility(VISIBLE);
|
||||
iconRoomBaiShunGame.setVisibility(VISIBLE);
|
||||
}
|
||||
} else {
|
||||
pkGameView.setVisibility(GONE);
|
||||
iconRoomBaiShunGame.setVisibility(GONE);
|
||||
}
|
||||
if (AvRoomDataManager.get().isSingleRoom() || AvRoomDataManager.get().isDatingMode()) {
|
||||
pkGameView.setVisibility(GONE);
|
||||
}
|
||||
}
|
||||
|
||||
public void showHomePartyDownMicBottom() {
|
||||
faceLayout.setVisibility(GONE);
|
||||
micLayout.setVisibility(GONE);
|
||||
@@ -295,12 +350,14 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
}
|
||||
break;
|
||||
case R.id.icon_room_send_magic:
|
||||
|
||||
int newOption = (int) SharedPreferenceUtils.get(SH_NEW_OPTION, 0);
|
||||
if (newOption != NEW_OPTION) {
|
||||
SharedPreferenceUtils.put(SH_NEW_OPTION, NEW_OPTION);
|
||||
setMagicBtnEnable(true);
|
||||
}
|
||||
if (updateOptionForRoomType()) {
|
||||
setMagicBtnEnable(true);
|
||||
}
|
||||
|
||||
if (wrapper != null) {
|
||||
wrapper.onMoreBtnClick();
|
||||
@@ -317,9 +374,14 @@ public class BottomView extends LinearLayout implements View.OnClickListener {
|
||||
wrapper.onRoomMessageClick();
|
||||
}
|
||||
break;
|
||||
case R.id.icon_room_game:
|
||||
case R.id.icon_room_PK_game:
|
||||
if (wrapper != null) {
|
||||
wrapper.onRoomGameplayClick();
|
||||
wrapper.onRoomGameplayClick(true);
|
||||
}
|
||||
break;
|
||||
case R.id.icon_room_baishun_game:
|
||||
if (wrapper != null) {
|
||||
wrapper.onRoomGameplayClick(false);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@@ -6,7 +6,6 @@ import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.animation.AccelerateDecelerateInterpolator;
|
||||
@@ -14,7 +13,7 @@ import android.widget.RelativeLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.chwl.core.helper.PathHelper;
|
||||
import com.chwl.library.utils.PathHelper;
|
||||
import com.chwl.library.download.DownloadException;
|
||||
import com.chwl.library.download.DownloadManager;
|
||||
import com.chwl.library.download.DownloadRequest;
|
||||
|
@@ -29,12 +29,9 @@ import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.Editable;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextUtils;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
@@ -42,7 +39,6 @@ import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
@@ -81,11 +77,9 @@ import com.chwl.app.sadmin.utils.SaAttachmentToMsgUtil;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.UIHelper;
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity;
|
||||
import com.chwl.app.avroom.dialog.PKResultDialog;
|
||||
import com.chwl.app.avroom.dialog.RoomTeamPKResultDialog;
|
||||
import com.chwl.app.avroom.room_album.UnlockRoomAlbumPhotoDialog;
|
||||
import com.chwl.library.common.util.Utils;
|
||||
import com.chwl.app.common.widget.CustomAutoWidthImageSpan;
|
||||
import com.chwl.app.common.widget.CustomImageSpan;
|
||||
import com.chwl.app.common.widget.OriginalDrawStatusClickSpan;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtilsV2;
|
||||
@@ -95,7 +89,6 @@ import com.chwl.app.ui.widget.RecyclerViewNoViewpagerScroll;
|
||||
import com.chwl.app.ui.widget.UserInfoDialog;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.chwl.app.utils.RegexUtil;
|
||||
import com.chwl.core.XConstants;
|
||||
import com.chwl.core.DemoCache;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.bean.attachmsg.RoomQueueMsgAttachment;
|
||||
@@ -162,7 +155,6 @@ import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.manager.IMNetEaseManager;
|
||||
import com.chwl.core.miniworld.bean.MiniWorldInWorldInfo;
|
||||
import com.chwl.core.monsterhunting.bean.MonsterHuntingResult;
|
||||
import com.chwl.core.monsterhunting.bean.MonsterProtocol;
|
||||
import com.chwl.core.noble.bean.NobleInfo;
|
||||
import com.chwl.core.noble.NobleUtil;
|
||||
import com.chwl.core.praise.PraiseModel;
|
||||
@@ -2294,7 +2286,7 @@ public class MessageView extends FrameLayout {
|
||||
})
|
||||
.append(ResUtil.getString(R.string.gift_message_01), new ForegroundColorSpan(getResources().getColor(R.color.white)));
|
||||
|
||||
text.append(luckyGiftInfo.getGiftName() + ResUtil.getString(R.string.gift_message_02), new ForegroundColorSpan(getResources().getColor(R.color.white)))
|
||||
text.append(luckyGiftInfo.getFirstGiftName() + ResUtil.getString(R.string.gift_message_02), new ForegroundColorSpan(getResources().getColor(R.color.white)))
|
||||
.append(luckyGiftInfo.getUser().getNick(), new ForegroundColorSpan(roomTipNickColor), new OriginalDrawStatusClickSpan() {
|
||||
@Override
|
||||
public void onClick(@NonNull View widget) {
|
||||
@@ -2349,7 +2341,7 @@ public class MessageView extends FrameLayout {
|
||||
})
|
||||
.append(ResUtil.getString(R.string.gift_message_01), new ForegroundColorSpan(getResources().getColor(R.color.white)));
|
||||
|
||||
text.append(luckyGiftInfo.getGiftName() + ResUtil.getString(R.string.gift_message_02), new ForegroundColorSpan(getResources().getColor(R.color.white)))
|
||||
text.append(luckyGiftInfo.getFirstGiftName() + ResUtil.getString(R.string.gift_message_02), new ForegroundColorSpan(getResources().getColor(R.color.white)))
|
||||
.append(luckyGiftInfo.getUser().getNick(), new ForegroundColorSpan(roomTipNickColor), new OriginalDrawStatusClickSpan() {
|
||||
@Override
|
||||
public void onClick(@NonNull View widget) {
|
||||
@@ -2919,7 +2911,7 @@ public class MessageView extends FrameLayout {
|
||||
}
|
||||
} else if (attachment.getFirst() == CustomAttachment.CUSTOM_MESS_HEAD_ROOM_PK) {
|
||||
if (attachment.getSecond() == CustomAttachment.CUSTOM_MESS_SUB_ROOM_PK_RESULT) {
|
||||
PKResultDialog pkResultDialog = new PKResultDialog(getContext(), ((RoomPkAttachment) attachment).getRoomPkData());
|
||||
RoomTeamPKResultDialog pkResultDialog = new RoomTeamPKResultDialog(getContext(), ((RoomPkAttachment) attachment).getRoomPkData());
|
||||
pkResultDialog.show();
|
||||
}
|
||||
} else if (attachment instanceof RoomFollowOwnerAttachment2 && !AvRoomDataManager.get().isRoomFans) {
|
||||
|
@@ -1,448 +0,0 @@
|
||||
package com.chwl.app.avroom.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.SparseArray;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.netease.nim.uikit.support.glide.GlideApp;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.avroom.dialog.PKScoreBoardDialog;
|
||||
import com.chwl.app.avroom.dialog.PKSelectPeopleDialog;
|
||||
import com.chwl.app.common.widget.CircleImageView;
|
||||
import com.chwl.core.bean.RoomQueueInfo;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.room.pk.bean.PKMemberInfo;
|
||||
import com.chwl.core.room.pk.bean.PKTeamInfo;
|
||||
import com.chwl.core.room.pk.bean.RoomPKInvitedUpMicMember;
|
||||
import com.chwl.core.room.pk.bean.RoomPkData;
|
||||
import com.chwl.core.room.pk.event.PKDataUpdateEvent;
|
||||
import com.chwl.core.room.pk.event.PKTimeFinishEvent;
|
||||
import com.chwl.core.room.pk.event.PKTimeTickEvent;
|
||||
import com.chwl.core.room.pk.model.PkModel;
|
||||
import com.chwl.library.utils.FormatUtils;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.SingleToastUtil;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* @author jack
|
||||
* @Description
|
||||
* @Date 2019/1/8
|
||||
*/
|
||||
public class PKBoardView extends RelativeLayout implements View.OnClickListener {
|
||||
|
||||
public PKBoardView(Context context) {
|
||||
super(context);
|
||||
init();
|
||||
}
|
||||
|
||||
public PKBoardView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init();
|
||||
}
|
||||
|
||||
public PKBoardView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
init();
|
||||
}
|
||||
|
||||
private View llPkScoreBoard;
|
||||
private View rlRedTeamAddPeople;
|
||||
private TextView tvRedTeamScore;
|
||||
private View rlBlueTeamAddPeople;
|
||||
private TextView tvBlueTeamScore;
|
||||
private TextView tvPkTimer;
|
||||
private CircleImageView civRedTeamMember1;
|
||||
private CircleImageView civRedTeamMember2;
|
||||
private CircleImageView civRedTeamMember3;
|
||||
private CircleImageView civRedTeamMember4;
|
||||
private CircleImageView ivAddRedTeamMember;
|
||||
private CircleImageView civBlueTeamMember1;
|
||||
private CircleImageView civBlueTeamMember2;
|
||||
private CircleImageView civBlueTeamMember3;
|
||||
private CircleImageView civBlueTeamMember4;
|
||||
private CircleImageView ivAddBlueTeamMember;
|
||||
|
||||
private ProgressBar pbScore;
|
||||
private ImageView ivPkBegin;
|
||||
|
||||
private final List<CircleImageView> civRedAvatars = new ArrayList<>();
|
||||
private final List<CircleImageView> civBlueAvatars = new ArrayList<>();
|
||||
|
||||
private void init() {
|
||||
inflate(getContext(), R.layout.layout_pk_board_view, this);
|
||||
if (isInEditMode()) {
|
||||
return;
|
||||
}
|
||||
llPkScoreBoard = findViewById(R.id.root_view);
|
||||
rlRedTeamAddPeople = findViewById(R.id.fl_left);
|
||||
tvRedTeamScore = this.findViewById(R.id.tv_red_team_score);
|
||||
rlBlueTeamAddPeople = findViewById(R.id.fl_right);
|
||||
tvBlueTeamScore = this.findViewById(R.id.tv_blue_team_score);
|
||||
tvPkTimer = this.findViewById(R.id.tv_pk_timer);
|
||||
pbScore = findViewById(R.id.pb_score);
|
||||
ivPkBegin = findViewById(R.id.iv_pk_begin);
|
||||
civRedTeamMember1 = findViewById(R.id.civ_red_team_member_1);
|
||||
civRedTeamMember2 = findViewById(R.id.civ_red_team_member_2);
|
||||
civRedTeamMember3 = findViewById(R.id.civ_red_team_member_3);
|
||||
civRedTeamMember4 = findViewById(R.id.civ_red_team_member_4);
|
||||
ivAddRedTeamMember = findViewById(R.id.iv_add_red_team_member);
|
||||
civBlueTeamMember1 = findViewById(R.id.civ_blue_team_member_1);
|
||||
civBlueTeamMember2 = findViewById(R.id.civ_blue_team_member_2);
|
||||
civBlueTeamMember3 = findViewById(R.id.civ_blue_team_member_3);
|
||||
civBlueTeamMember4 = findViewById(R.id.civ_blue_team_member_4);
|
||||
ivAddBlueTeamMember = findViewById(R.id.iv_add_blue_team_member);
|
||||
|
||||
civRedAvatars.add(civRedTeamMember1);
|
||||
civRedAvatars.add(civRedTeamMember2);
|
||||
civRedAvatars.add(civRedTeamMember3);
|
||||
civRedAvatars.add(civRedTeamMember4);
|
||||
|
||||
civBlueAvatars.add(civBlueTeamMember1);
|
||||
civBlueAvatars.add(civBlueTeamMember2);
|
||||
civBlueAvatars.add(civBlueTeamMember3);
|
||||
civBlueAvatars.add(civBlueTeamMember4);
|
||||
|
||||
updateView();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
public void updateView() {
|
||||
if (PkModel.get().isFighting()) {
|
||||
long countDownTime = PkModel.get().getCurPkInfo().getCurPkTimeUntilEnd();
|
||||
tvPkTimer.setText(String.format(Locale.getDefault(), "%1$02d:%2$02d", countDownTime / 60, countDownTime % 60));
|
||||
ivAddRedTeamMember.setVisibility(GONE);
|
||||
ivAddBlueTeamMember.setVisibility(GONE);
|
||||
ivPkBegin.setVisibility(GONE);
|
||||
rlRedTeamAddPeople.setOnClickListener(null);
|
||||
rlBlueTeamAddPeople.setOnClickListener(null);
|
||||
tvPkTimer.setOnClickListener(null);
|
||||
llPkScoreBoard.setOnClickListener(this);
|
||||
showTeamAvatars();
|
||||
|
||||
PKTeamInfo blueTeamInfo = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_BLUE);
|
||||
if (blueTeamInfo != null) {
|
||||
tvBlueTeamScore.setText(FormatUtils.formatPKValue(blueTeamInfo.getScore()));
|
||||
}
|
||||
PKTeamInfo redTeamInfo = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_RED);
|
||||
if (redTeamInfo != null) {
|
||||
tvRedTeamScore.setText(FormatUtils.formatPKValue(redTeamInfo.getScore()));
|
||||
}
|
||||
|
||||
if (redTeamInfo != null && blueTeamInfo != null) {
|
||||
long totalScore = redTeamInfo.getScore() + blueTeamInfo.getScore();
|
||||
if (totalScore > 0) {
|
||||
int percent = (int) ((float) redTeamInfo.getScore() / (float) totalScore * 100.0f);
|
||||
pbScore.setProgress(percent);
|
||||
} else {
|
||||
pbScore.setProgress(50);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
tvPkTimer.setText(ResUtil.getString(R.string.avroom_widget_pkboardview_01));
|
||||
if (!isTeamHaveMember(PKTeamInfo.TEAM_RED)) {
|
||||
ivAddRedTeamMember.setVisibility(VISIBLE);
|
||||
} else {
|
||||
ivAddRedTeamMember.setVisibility(GONE);
|
||||
}
|
||||
|
||||
if (!isTeamHaveMember(PKTeamInfo.TEAM_BLUE)) {
|
||||
ivAddBlueTeamMember.setVisibility(VISIBLE);
|
||||
} else {
|
||||
ivAddBlueTeamMember.setVisibility(GONE);
|
||||
}
|
||||
|
||||
pbScore.setProgress(50);
|
||||
|
||||
showTeamAvatars();
|
||||
rlRedTeamAddPeople.setOnClickListener(this);
|
||||
rlBlueTeamAddPeople.setOnClickListener(this);
|
||||
if (AvRoomDataManager.get().isManager()) {
|
||||
ivPkBegin.setVisibility(VISIBLE);
|
||||
ivPkBegin.setOnClickListener(this);
|
||||
} else {
|
||||
ivPkBegin.setVisibility(GONE);
|
||||
}
|
||||
llPkScoreBoard.setOnClickListener(null);
|
||||
RoomPkData roomPkData = PkModel.get().getCurPkInfo();
|
||||
if (roomPkData != null &&
|
||||
(roomPkData.getPkStatus() == RoomPkData.PK_STATUS_BEFORE_PK || roomPkData.getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK)) {
|
||||
tvBlueTeamScore.setText(FormatUtils.formatPKValue(0));
|
||||
tvRedTeamScore.setText(FormatUtils.formatPKValue(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isTeamHaveMember(int teamId) {
|
||||
for (PKMemberInfo pkMemberInfo : PkModel.get().getPkMemberInfoList()) {
|
||||
if (pkMemberInfo.getTeamId() == teamId) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void showTeamAvatars() {
|
||||
List<PKMemberInfo> pkMemberInfoList = PkModel.get().getPkMemberInfoList();
|
||||
for (CircleImageView civRedAvatar : civRedAvatars) {
|
||||
civRedAvatar.setVisibility(GONE);
|
||||
}
|
||||
for (CircleImageView civBlueAvatar : civBlueAvatars) {
|
||||
civBlueAvatar.setVisibility(GONE);
|
||||
}
|
||||
int redIndex = 0;
|
||||
int blueIndex = 0;
|
||||
for (int i = 0; i < pkMemberInfoList.size(); i++) {
|
||||
PKMemberInfo pkMemberInfo = pkMemberInfoList.get(i);
|
||||
if (pkMemberInfo.getTeamId() == PKTeamInfo.TEAM_RED) {
|
||||
if (redIndex >= civRedAvatars.size()) {
|
||||
break;
|
||||
}
|
||||
civRedAvatars.get(redIndex).setVisibility(VISIBLE);
|
||||
GlideApp.with(this)
|
||||
.load(pkMemberInfo.getUserInfo().getAvatar())
|
||||
.placeholder(R.drawable.default_avatar)
|
||||
.dontAnimate()
|
||||
.into(civRedAvatars.get(redIndex));
|
||||
redIndex++;
|
||||
} else if (pkMemberInfoList.get(i).getTeamId() == PKTeamInfo.TEAM_BLUE) {
|
||||
if (blueIndex >= civBlueAvatars.size()) {
|
||||
break;
|
||||
}
|
||||
civBlueAvatars.get(blueIndex).setVisibility(VISIBLE);
|
||||
GlideApp.with(this)
|
||||
.load(pkMemberInfo.getUserInfo().getAvatar())
|
||||
.placeholder(R.drawable.default_avatar)
|
||||
.dontAnimate()
|
||||
.into(civBlueAvatars.get(blueIndex));
|
||||
blueIndex++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onPKTimeTickEvent(PKTimeTickEvent event) {
|
||||
if (PkModel.get().getCurPkInfo() == null) {
|
||||
return;
|
||||
}
|
||||
long countDownTime = PkModel.get().getCurPkInfo().getCurPkTimeUntilEnd();
|
||||
tvPkTimer.setText(String.format("%1$02d:%2$02d", countDownTime / 60, countDownTime % 60));
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onPKTimeFinishEvent(PKTimeFinishEvent event) {
|
||||
updateView();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onPKDataUpdateEvent(PKDataUpdateEvent event) {
|
||||
if (PkModel.get().getCurPkInfo() == null) {
|
||||
return;
|
||||
}
|
||||
if (PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_IN_PK) {
|
||||
PKTeamInfo blueTeamInfo = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_BLUE);
|
||||
if (blueTeamInfo != null) {
|
||||
tvBlueTeamScore.setText(FormatUtils.formatPKValue(blueTeamInfo.getScore()));
|
||||
}
|
||||
PKTeamInfo redTeamInfo = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_RED);
|
||||
if (redTeamInfo != null) {
|
||||
tvRedTeamScore.setText(FormatUtils.formatPKValue(redTeamInfo.getScore()));
|
||||
}
|
||||
|
||||
if (redTeamInfo != null && blueTeamInfo != null) {
|
||||
long totalScore = redTeamInfo.getScore() + blueTeamInfo.getScore();
|
||||
if (totalScore > 0) {
|
||||
int percent = (int) ((float) redTeamInfo.getScore() / (float) totalScore * 100.0f);
|
||||
pbScore.setProgress(percent);
|
||||
} else {
|
||||
pbScore.setProgress(50);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK) {
|
||||
if (onActionListener != null) {
|
||||
onActionListener.onEndPK();
|
||||
}
|
||||
tvBlueTeamScore.setText(FormatUtils.formatPKValue(0));
|
||||
tvRedTeamScore.setText(FormatUtils.formatPKValue(0));
|
||||
}
|
||||
if (PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_TERMINAL_PK_BEFORE_END) {
|
||||
tvBlueTeamScore.setText(FormatUtils.formatPKValue(0));
|
||||
tvRedTeamScore.setText(FormatUtils.formatPKValue(0));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.fl_left:
|
||||
//不是管理员或者房主弹出排麦dialog
|
||||
if (!AvRoomDataManager.get().isManager()) {
|
||||
//已经排麦不操作
|
||||
if (!PkModel.get().getPkMemberInfoList().isEmpty() && AvRoomDataManager.get().myIsInQueue) {
|
||||
// Toast.makeText(getContext(), ResUtil.getString(R.string.avroom_widget_pkboardview_02), Toast.LENGTH_SHORT).show();
|
||||
SingleToastUtil.showToastShort(ResUtil.getString(R.string.avroom_widget_pkboardview_03));
|
||||
return;
|
||||
}
|
||||
if (onActionListener != null) {
|
||||
onActionListener.onShowPKMicQueueDialog();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
//添加红队人员
|
||||
PKSelectPeopleDialog selectRedDialog = new PKSelectPeopleDialog(getContext(), PKTeamInfo.TEAM_RED, PkModel.get().getPkMemberInfoList());
|
||||
selectRedDialog.setOnSelectPeopleListener(new PKSelectPeopleDialog.OnSelectPeopleListener() {
|
||||
@Override
|
||||
public void onSelectPeople(List<PKSelectPeopleDialog.MicEntity> micEntityList) {
|
||||
//更新队伍,麦序,显示头像
|
||||
List<RoomPKInvitedUpMicMember> upMicMemberList = new ArrayList<>();
|
||||
for (PKSelectPeopleDialog.MicEntity micEntity : micEntityList) {
|
||||
if (TextUtils.isEmpty(micEntity.uid)) {
|
||||
continue;
|
||||
}
|
||||
RoomPKInvitedUpMicMember roomPKInvitedUpMicMember = new RoomPKInvitedUpMicMember();
|
||||
if (micEntity.isSelect) {
|
||||
roomPKInvitedUpMicMember.setGroupType(PKTeamInfo.TEAM_RED);
|
||||
} else {
|
||||
if (TextUtils.isEmpty(micEntity.uid)) {
|
||||
roomPKInvitedUpMicMember.setGroupType(PKTeamInfo.TEAM_NONE);
|
||||
} else {
|
||||
int teamId = PkModel.get().getTeamIdInPKMemberList(micEntity.uid);
|
||||
roomPKInvitedUpMicMember.setGroupType(
|
||||
teamId == PKTeamInfo.TEAM_RED ? PKTeamInfo.TEAM_NONE : teamId);
|
||||
}
|
||||
}
|
||||
roomPKInvitedUpMicMember.setUid(micEntity.uid);
|
||||
roomPKInvitedUpMicMember.setNick(micEntity.nick);
|
||||
SparseArray<RoomQueueInfo> micQueue = AvRoomDataManager.get().mMicQueueMemberMap;
|
||||
//设置坑位的位置
|
||||
for (int i = 0; i < micQueue.size(); i++) {
|
||||
int key = micQueue.keyAt(i);
|
||||
RoomQueueInfo roomQueueInfo = micQueue.get(key);
|
||||
if (roomQueueInfo.mChatRoomMember != null
|
||||
&& roomQueueInfo.mChatRoomMember.getAccount().equals(micEntity.uid)) {
|
||||
roomPKInvitedUpMicMember.setPosition(key);
|
||||
}
|
||||
}
|
||||
upMicMemberList.add(roomPKInvitedUpMicMember);
|
||||
}
|
||||
PkModel.get().inviteInTeam(upMicMemberList)
|
||||
.doOnError(throwable -> SingleToastUtil.showToastShort(throwable.getMessage()))
|
||||
.subscribe();
|
||||
|
||||
}
|
||||
});
|
||||
selectRedDialog.show();
|
||||
break;
|
||||
case R.id.fl_right:
|
||||
//不是管理员或者房主弹出排麦dialog
|
||||
if (!AvRoomDataManager.get().isManager()) {
|
||||
//已经排麦不操作
|
||||
if (!PkModel.get().getPkMemberInfoList().isEmpty() && AvRoomDataManager.get().myIsInQueue) {
|
||||
return;
|
||||
}
|
||||
if (onActionListener != null) {
|
||||
onActionListener.onShowPKMicQueueDialog();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
//添加蓝队人员
|
||||
PKSelectPeopleDialog selectBlueDialog = new PKSelectPeopleDialog(getContext(), PKTeamInfo.TEAM_BLUE, PkModel.get().getPkMemberInfoList());
|
||||
selectBlueDialog.setOnSelectPeopleListener(micEntityList -> {
|
||||
//更新队伍,麦序,显示头像
|
||||
List<RoomPKInvitedUpMicMember> upMicMemberList = new ArrayList<>();
|
||||
for (PKSelectPeopleDialog.MicEntity micEntity : micEntityList) {
|
||||
if (TextUtils.isEmpty(micEntity.uid)) {
|
||||
continue;
|
||||
}
|
||||
RoomPKInvitedUpMicMember roomPKInvitedUpMicMember = new RoomPKInvitedUpMicMember();
|
||||
if (micEntity.isSelect) {
|
||||
roomPKInvitedUpMicMember.setGroupType(PKTeamInfo.TEAM_BLUE);
|
||||
} else {
|
||||
int teamId = PkModel.get().getTeamIdInPKMemberList(micEntity.uid);
|
||||
roomPKInvitedUpMicMember.setGroupType(
|
||||
teamId == PKTeamInfo.TEAM_BLUE ? PKTeamInfo.TEAM_NONE : teamId);
|
||||
}
|
||||
roomPKInvitedUpMicMember.setUid(micEntity.uid);
|
||||
roomPKInvitedUpMicMember.setNick(micEntity.nick);
|
||||
SparseArray<RoomQueueInfo> micQueue = AvRoomDataManager.get().mMicQueueMemberMap;
|
||||
//设置坑位的位置
|
||||
for (int i = 0; i < micQueue.size(); i++) {
|
||||
int key = micQueue.keyAt(i);
|
||||
RoomQueueInfo roomQueueInfo = micQueue.get(key);
|
||||
if (roomQueueInfo.mChatRoomMember != null &&
|
||||
roomQueueInfo.mChatRoomMember.getAccount().equals(micEntity.uid)) {
|
||||
roomPKInvitedUpMicMember.setPosition(key);
|
||||
}
|
||||
}
|
||||
upMicMemberList.add(roomPKInvitedUpMicMember);
|
||||
}
|
||||
PkModel.get().inviteInTeam(upMicMemberList)
|
||||
.doOnError(throwable -> SingleToastUtil.showToastShort(throwable.getMessage()))
|
||||
.subscribe();
|
||||
});
|
||||
selectBlueDialog.show();
|
||||
break;
|
||||
case R.id.iv_pk_begin:
|
||||
// 开始PK 倒计时
|
||||
if (onActionListener != null) {
|
||||
onActionListener.onBeginPK();
|
||||
}
|
||||
break;
|
||||
case R.id.root_view:
|
||||
//pk中点击pk 面板
|
||||
if (PkModel.get().isFighting()) {
|
||||
PKScoreBoardDialog pkScoreBoardDialog = new PKScoreBoardDialog(getContext());
|
||||
pkScoreBoardDialog.show();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private OnActionListener onActionListener;
|
||||
|
||||
public void setOnActionListener(OnActionListener onActionListener) {
|
||||
this.onActionListener = onActionListener;
|
||||
}
|
||||
|
||||
public interface OnActionListener {
|
||||
void onBeginPK();
|
||||
|
||||
void onEndPK();
|
||||
|
||||
void onShowPKMicQueueDialog();
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,46 @@
|
||||
package com.chwl.app.avroom.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.widget.FrameLayout
|
||||
import androidx.core.view.isInvisible
|
||||
import androidx.core.view.isVisible
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.databinding.LayoutRoomTeamPkUserListViewBinding
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
import com.chwl.core.room.pk.bean.PKMemberInfo
|
||||
|
||||
class TeamPKUserListView @JvmOverloads constructor(
|
||||
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
) : FrameLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
private val binding = LayoutRoomTeamPkUserListViewBinding.inflate(LayoutInflater.from(context))
|
||||
private val ivAvatars = arrayOf(binding.ivAvatar1, binding.ivAvatar2, binding.ivAvatar3)
|
||||
|
||||
init {
|
||||
addView(binding.root)
|
||||
}
|
||||
|
||||
fun showBlueStyle() {
|
||||
binding.ivAvatarSeat1.setImageResource(R.drawable.room_team_pk_bg_seat_blue)
|
||||
binding.ivAvatarSeat2.setImageResource(R.drawable.room_team_pk_bg_seat_blue)
|
||||
binding.ivAvatarSeat3.setImageResource(R.drawable.room_team_pk_bg_seat_blue)
|
||||
}
|
||||
|
||||
fun updateData(data: List<String?>?) {
|
||||
for (i in ivAvatars.indices) {
|
||||
val item = data?.getOrNull(i)
|
||||
if (item.isNullOrEmpty()) {
|
||||
ivAvatars[i].isInvisible = true
|
||||
} else {
|
||||
ivAvatars[i].isVisible = true
|
||||
ImageLoadUtils.loadImage(
|
||||
context,
|
||||
item,
|
||||
ivAvatars[i], R.drawable.default_avatar
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -7,12 +7,17 @@ import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Bundle
|
||||
import android.view.*
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.withResumed
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.trello.rxlifecycle3.components.support.RxDialogFragment
|
||||
import kotlinx.coroutines.launch
|
||||
import java.lang.reflect.ParameterizedType
|
||||
|
||||
abstract class BaseDialog<T : ViewBinding> : RxDialogFragment() {
|
||||
abstract class BaseDialogFragment<T : ViewBinding> : RxDialogFragment() {
|
||||
|
||||
val isViewLoaded: Boolean get() = _binding != null
|
||||
protected var _binding: T? = null
|
||||
@@ -59,6 +64,46 @@ abstract class BaseDialog<T : ViewBinding> : RxDialogFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
private var safeShowTask: ((FragmentManager, String?) -> Unit)? = null
|
||||
|
||||
fun safeShow(fragmentManager: FragmentManager, lifecycleOwner: LifecycleOwner, tag: String? = null) {
|
||||
lifecycleOwner.lifecycleScope.launch {
|
||||
safeShowTask = { fm, tag ->
|
||||
try {
|
||||
show(fm, tag)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
lifecycleOwner.withResumed {
|
||||
safeShowTask?.invoke(fragmentManager, tag)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun safeDismiss() {
|
||||
try {
|
||||
dismissAllowingStateLoss()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
safeShowTask = null
|
||||
}
|
||||
|
||||
override fun dismiss() {
|
||||
super.dismiss()
|
||||
safeShowTask = null
|
||||
}
|
||||
|
||||
override fun dismissAllowingStateLoss() {
|
||||
super.dismissAllowingStateLoss()
|
||||
safeShowTask = null
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
onDismissListener?.invoke()
|
@@ -17,7 +17,6 @@ import com.chwl.app.databinding.PhotoDialogBinding
|
||||
import com.chwl.app.ui.widget.dialog.CommonTipDialog
|
||||
import com.chwl.library.common.base.BaseDialogFragment
|
||||
import com.chwl.library.common.photo.PhotoProvider
|
||||
import com.chwl.library.common.photo.PhotoProviderNew
|
||||
import com.chwl.library.common.util.PhotoCompressCallback
|
||||
import com.chwl.library.common.util.PhotoCompressUtil
|
||||
import com.chwl.library.common.util.PhotosCompressCallback
|
||||
@@ -84,7 +83,7 @@ class PhotoDialog : BaseDialogFragment<PhotoDialogBinding>(), EasyPermissions.Pe
|
||||
if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
|
||||
)
|
||||
} else {
|
||||
PhotoProviderNew.photoProvider(this, resultCode = REQUEST_CODE_OPEN_PHOTO_PROVIDER)
|
||||
PhotoProvider.photoProvider(this, resultCode = REQUEST_CODE_OPEN_PHOTO_PROVIDER)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,7 +117,7 @@ class PhotoDialog : BaseDialogFragment<PhotoDialogBinding>(), EasyPermissions.Pe
|
||||
if (Build.VERSION.SDK_INT >= 33) Manifest.permission.READ_MEDIA_IMAGES else Manifest.permission.READ_EXTERNAL_STORAGE
|
||||
)
|
||||
} else {
|
||||
PhotoProviderNew.photoCamera(this, REQUEST_CODE_OPEN_CAMERA_PROVIDER)
|
||||
PhotoProvider.photoCamera(this, REQUEST_CODE_OPEN_CAMERA_PROVIDER)
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,72 +0,0 @@
|
||||
package com.chwl.app.decoration.adapter;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.bindadapter.BaseAdapter;
|
||||
import com.chwl.app.bindadapter.BindingViewHolder;
|
||||
import com.chwl.app.databinding.ItemHeadWearBinding;
|
||||
import com.chwl.core.decoration.headwear.bean.HeadWearInfo;
|
||||
import com.chwl.core.noble.NobleUtil;
|
||||
import com.chwl.library.utils.ListUtils;
|
||||
|
||||
/**
|
||||
* Created by huangmeng1 on 2018/5/10.
|
||||
*/
|
||||
|
||||
public class HeadWearShopAdapter extends BaseAdapter<HeadWearInfo> {
|
||||
private int selectPosition;
|
||||
|
||||
public int getSelectPosition() {
|
||||
return selectPosition;
|
||||
}
|
||||
|
||||
public void setSelectPosition(int selectPosition) {
|
||||
notifyItemChanged(this.selectPosition);
|
||||
this.selectPosition = selectPosition;
|
||||
notifyItemChanged(this.selectPosition);
|
||||
}
|
||||
|
||||
public HeadWearShopAdapter(int layoutResId, int brid) {
|
||||
super(layoutResId, brid);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BindingViewHolder helper, HeadWearInfo item) {
|
||||
super.convert(helper, item);
|
||||
ItemHeadWearBinding binding = (ItemHeadWearBinding) helper.getBinding();
|
||||
binding.llRoot.setSelected(selectPosition == helper.getAdapterPosition());
|
||||
NobleUtil.loadHeadWears(item.getPic(), binding.ivHeadWear);
|
||||
binding.setSelectPosition(selectPosition == helper.getAdapterPosition());
|
||||
|
||||
if (item.getLabelType() == HeadWearInfo.LABEL_TYPE_NORMAL) {
|
||||
binding.ivTag.setVisibility(View.GONE);
|
||||
|
||||
} else if (HeadWearInfo.LABEL_TYPE_NEW == item.getLabelType()) {
|
||||
binding.ivTag.setVisibility(View.VISIBLE);
|
||||
binding.ivTag.setImageResource(R.drawable.ic_mark_new);
|
||||
|
||||
} else if (HeadWearInfo.LABEL_TYPE_DISCOUNT == item.getLabelType()) {
|
||||
binding.ivTag.setVisibility(View.VISIBLE);
|
||||
binding.ivTag.setImageResource(R.drawable.ic_mark_discount);
|
||||
|
||||
} else if (HeadWearInfo.LABEL_TYPE_LIMIT == item.getLabelType()) {
|
||||
binding.ivTag.setVisibility(View.VISIBLE);
|
||||
binding.ivTag.setImageResource(R.drawable.ic_mark_limit);
|
||||
|
||||
} else if (HeadWearInfo.LABEL_TYPE_EXCLUSIVE == item.getLabelType()) {
|
||||
binding.ivTag.setVisibility(View.VISIBLE);
|
||||
binding.ivTag.setImageResource(R.drawable.ic_mark_exclusive);
|
||||
}
|
||||
|
||||
binding.tvHeadName.setText(item.getName() + "");
|
||||
}
|
||||
|
||||
public void setCarInfoHasBeenBought(HeadWearInfo carInfo) {
|
||||
if (carInfo.getHeadwearId() <= 0 || ListUtils.isListEmpty(mData)) return;
|
||||
int index = mData.indexOf(carInfo);
|
||||
if (index == -1) return;
|
||||
mData.get(index).setStatus(HeadWearInfo.STATUS_IN_USED);
|
||||
notifyItemChanged(index);
|
||||
}
|
||||
}
|
@@ -6,9 +6,11 @@ import com.chwl.app.R;
|
||||
import com.chwl.app.bindadapter.BaseAdapter;
|
||||
import com.chwl.app.bindadapter.BindingViewHolder;
|
||||
import com.chwl.app.databinding.ItemMyHeadWearBinding;
|
||||
import com.chwl.app.utils.AvatarHelper;
|
||||
import com.chwl.core.decoration.headwear.bean.HeadWearInfo;
|
||||
import com.chwl.core.noble.NobleUtil;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.widget.SVGAView;
|
||||
|
||||
/**
|
||||
* Created by huangmeng1 on 2018/5/11.
|
||||
@@ -20,11 +22,14 @@ public class MyHeadWearAdapter extends BaseAdapter<HeadWearInfo> {
|
||||
super(layoutResId, brid);
|
||||
}
|
||||
|
||||
private SVGAView.SVGACache svgaCache = SVGAView.newCache(10);
|
||||
|
||||
@Override
|
||||
protected void convert(BindingViewHolder helper, HeadWearInfo item) {
|
||||
super.convert(helper, item);
|
||||
ItemMyHeadWearBinding binding = (ItemMyHeadWearBinding) helper.getBinding();
|
||||
NobleUtil.loadHeadWears(item.getPic(), binding.ivCarCover);
|
||||
binding.ivCarCover.bindCache(svgaCache);
|
||||
AvatarHelper.loadAvatarFrame(binding.ivCarCover, item.getFirstUrl(), item.getType());
|
||||
helper.addOnClickListener(R.id.tv_used);
|
||||
|
||||
if (item.getLabelType() == HeadWearInfo.LABEL_TYPE_NORMAL) {
|
||||
|
45
app/src/main/java/com/chwl/app/home/HomeMeViewModel.kt
Normal file
45
app/src/main/java/com/chwl/app/home/HomeMeViewModel.kt
Normal file
@@ -0,0 +1,45 @@
|
||||
package com.chwl.app.home
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.chwl.app.base.BaseViewModel
|
||||
import com.chwl.core.bean.response.ListResult
|
||||
import com.chwl.core.home.bean.HomeRoomCardInfo
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.home.model.HomeModel
|
||||
|
||||
class HomeMeViewModel : BaseViewModel() {
|
||||
|
||||
val roomInfoLiveData = MutableLiveData<HomeRoomCardInfo>()
|
||||
val historyRoomListLiveData = MutableLiveData<ListResult<HomeRoomInfo>?>()
|
||||
val collectRoomListLiveData = MutableLiveData<ListResult<HomeRoomInfo>?>()
|
||||
|
||||
fun getMyRoomInfo() {
|
||||
safeLaunch {
|
||||
roomInfoLiveData.postValue(HomeModel.getMyRoomInfo())
|
||||
}
|
||||
}
|
||||
|
||||
fun getHomeHistoryList(pageNum: Int, pageSize: Int) {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
historyRoomListLiveData.value = ListResult.failed(pageNum)
|
||||
},
|
||||
block = {
|
||||
val result = HomeModel.getHomeHistoryRoomList(pageNum, pageSize)
|
||||
historyRoomListLiveData.value = ListResult.success(result, pageNum)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun getHomeCollectList(pageNum: Int, pageSize: Int) {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
collectRoomListLiveData.value = ListResult.failed(pageNum)
|
||||
},
|
||||
block = {
|
||||
val result = HomeModel.getHomeMyCollectRoomList(pageNum, pageSize)
|
||||
collectRoomListLiveData.value = ListResult.success(result, pageNum)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
@@ -1,76 +1,40 @@
|
||||
package com.chwl.app.home
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.chwl.app.base.BaseViewModel
|
||||
import com.chwl.core.bean.response.ListResult
|
||||
import com.chwl.core.home.bean.*
|
||||
import com.chwl.core.home.model.HomeModel
|
||||
import com.chwl.core.room.bean.AnchorInfo
|
||||
import com.chwl.core.user.bean.UserInfo
|
||||
import com.chwl.core.utils.extension.toast
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
|
||||
class HomeViewModel : BaseViewModel() {
|
||||
|
||||
private val _tabHomeLiveData = MutableLiveData<ListResult<HomeRoomInfo>?>()
|
||||
val tabHomeLiveData: MutableLiveData<ListResult<HomeRoomInfo>?> = _tabHomeLiveData
|
||||
private val _bannerLiveData = MutableLiveData<List<BannerInfo>?>()
|
||||
val bannerLiveData: MutableLiveData<List<BannerInfo>?> = _bannerLiveData
|
||||
val tabRoomListLiveData = MutableLiveData<ListResult<HomeRoomInfo>?>()
|
||||
val bannerLiveData = MutableLiveData<List<BannerInfo>?>()
|
||||
|
||||
private val _currentResourceLiveData = MutableLiveData<List<CurrentResourceInfo>?>()
|
||||
val currentResourceLiveData: MutableLiveData<List<CurrentResourceInfo>?> = _currentResourceLiveData
|
||||
val homeResourceLiveData = MutableLiveData<List<CurrentResourceInfo>?>()
|
||||
|
||||
private val _resourceJumpLiveData = MutableLiveData<HomeRoomInfo?>()
|
||||
val resourceJumpLiveData: LiveData<HomeRoomInfo?> = _resourceJumpLiveData
|
||||
val resourceJumpFlow = MutableSharedFlow<HomeRoomInfo?>()
|
||||
|
||||
// private val _homeChatPickLiveData = MutableLiveData<String?>()
|
||||
// val homeChatPickLiveData: LiveData<String?> = _homeChatPickLiveData
|
||||
val pickRoomLiveData = MutableLiveData<HomeRoomInfo?>()
|
||||
|
||||
private val _gameRoomLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
|
||||
val gameRoomLiveData: LiveData<ListResult<HomeRoomInfo>> = _gameRoomLiveData
|
||||
val openGameRoomLiveData = MutableLiveData<Long?>()
|
||||
|
||||
private val _pickRoomLiveData = MutableLiveData<HomeRoomInfo?>()
|
||||
val pickRoomLiveData: MutableLiveData<HomeRoomInfo?> = _pickRoomLiveData
|
||||
val anchorInfoLiveData = MutableLiveData<AnchorInfo?>()
|
||||
|
||||
private val _openGameRoomLiveData = MutableLiveData<Long?>()
|
||||
val openGameRoomLiveData: MutableLiveData<Long?> = _openGameRoomLiveData
|
||||
val homeTabLiveData: MutableLiveData<List<HomeTagInfo>> = MutableLiveData<List<HomeTagInfo>>()
|
||||
|
||||
private val _concernsLiveData = MutableLiveData<List<HomeRoomInfo>>()
|
||||
val concernsLiveData: LiveData<List<HomeRoomInfo>> = _concernsLiveData
|
||||
|
||||
private val _collectLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
|
||||
val collectLiveData: LiveData<ListResult<HomeRoomInfo>> = _collectLiveData
|
||||
|
||||
private val _tagLiveData = MutableLiveData<List<HomeTagInfo>>()
|
||||
val tagLiveData: LiveData<List<HomeTagInfo>> = _tagLiveData
|
||||
|
||||
private val _emptyLiveData = MutableLiveData<Boolean>()
|
||||
val emptyLiveData: LiveData<Boolean> = _emptyLiveData
|
||||
|
||||
private val _anchorInfoLiveData = MutableLiveData<AnchorInfo?>()
|
||||
val anchorInfoLiveData: MutableLiveData<AnchorInfo?> = _anchorInfoLiveData
|
||||
|
||||
private val _homePlayInfoLiveData = MutableLiveData<List<HomeRoomInfo>?>()
|
||||
val homePlayInfoData: MutableLiveData<List<HomeRoomInfo>?> = _homePlayInfoLiveData
|
||||
|
||||
private val _homeHotRoomLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
|
||||
val homeHotRoomLiveData: LiveData<ListResult<HomeRoomInfo>> = _homeHotRoomLiveData
|
||||
|
||||
private val _newFriendLiveData = MutableLiveData<ListResult<UserInfo>>()
|
||||
val newFriendLiveData: LiveData<ListResult<UserInfo>> = _newFriendLiveData
|
||||
|
||||
val homeTagLiveData: MutableLiveData<List<HomeTagInfo>> = MutableLiveData<List<HomeTagInfo>>()
|
||||
|
||||
fun getHomeTabName(tabId: Int, pageNum: Int) {
|
||||
val homeRankListLiveData = MutableLiveData<List<List<HomeRankBean>>>()
|
||||
fun getTabRoomList(tabId: Int, pageNum: Int, pageSize: Int) {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
_tabHomeLiveData.value = ListResult.failed(pageNum)
|
||||
tabRoomListLiveData.value = ListResult.failed(pageNum)
|
||||
},
|
||||
block = {
|
||||
val result = HomeModel.getHomeTabHome(tabId, pageNum, 20)
|
||||
_tabHomeLiveData.value = ListResult.success(result, pageNum)
|
||||
val result = HomeModel.getHomeTabHome(tabId, pageNum, pageSize)
|
||||
tabRoomListLiveData.value = ListResult.success(result, pageNum)
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -78,13 +42,13 @@ class HomeViewModel : BaseViewModel() {
|
||||
/**
|
||||
* 首页改版资源位
|
||||
*/
|
||||
fun getCurrentResourceInfo() {
|
||||
fun getHomeResourceInfo() {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
_currentResourceLiveData.value = null
|
||||
homeResourceLiveData.value = null
|
||||
},
|
||||
block = {
|
||||
_currentResourceLiveData.value = HomeModel.getCurrentResource()
|
||||
homeResourceLiveData.value = HomeModel.getCurrentResource()
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -92,166 +56,35 @@ class HomeViewModel : BaseViewModel() {
|
||||
fun getResourceJumpInfo(id: Int) {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
_resourceJumpLiveData.value = null
|
||||
resourceJumpFlow.emit(null)
|
||||
it.message.toast()
|
||||
},
|
||||
block = {
|
||||
_resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id)
|
||||
resourceJumpFlow.emit(HomeModel.getResourceJumpInfo(id))
|
||||
}
|
||||
)
|
||||
}
|
||||
//
|
||||
// fun getHomeChatPick() {
|
||||
// safeLaunch(
|
||||
// onError = {
|
||||
// _homeChatPickLiveData.value = null
|
||||
// it.message.toast()
|
||||
// },
|
||||
// block = {
|
||||
// _homeChatPickLiveData.value = HomeModel.getHomeChatPick()
|
||||
// }
|
||||
// )
|
||||
// }
|
||||
|
||||
fun getBannerInfo() {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
_bannerLiveData.value = null
|
||||
bannerLiveData.value = null
|
||||
},
|
||||
block = {
|
||||
_bannerLiveData.value = HomeModel.getHomeBanner("1")
|
||||
bannerLiveData.value = HomeModel.getHomeBanner("1")
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun getTagInfo() {
|
||||
fun getHomeTabInfo() {
|
||||
safeLaunch {
|
||||
_tagLiveData.value = HomeModel.getHomeTag()
|
||||
homeTabLiveData.value = HomeModel.getNewHomeTab()
|
||||
}
|
||||
}
|
||||
|
||||
fun getGameRoom(pageNum: Int, pageSize: Int) {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
it.message.toast()
|
||||
_gameRoomLiveData.value = ListResult.failed(pageNum)
|
||||
},
|
||||
block = {
|
||||
val result = HomeModel.getGameRoom(pageNum, pageSize)
|
||||
_gameRoomLiveData.value = ListResult.success(result, pageNum)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun fastPickGameRoom(mgId: Long? = null) {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
it.message.toast()
|
||||
},
|
||||
block = {
|
||||
val homeRoomInfo = HomeModel.fastPickGameRoom(mgId)
|
||||
if (homeRoomInfo?.isPick == true) {
|
||||
_pickRoomLiveData.value = homeRoomInfo
|
||||
} else if (homeRoomInfo?.isNeedOpenSelfRoom == true) {
|
||||
_openGameRoomLiveData.value = mgId
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
fun getCollectRoom(pageNum: Int, pageSize: Int) {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
_collectLiveData.value = ListResult.failed(pageNum)
|
||||
_emptyLiveData.value = true
|
||||
},
|
||||
block = {
|
||||
if (pageNum == 1) {
|
||||
val concernsRooms = async(Dispatchers.IO) {
|
||||
try {
|
||||
HomeModel.getConcernsRoom()
|
||||
} catch (e: Throwable) {
|
||||
null
|
||||
}
|
||||
}
|
||||
val collectRooms = async(Dispatchers.IO) {
|
||||
try {
|
||||
HomeModel.getCollectRoom(pageNum, pageSize)
|
||||
} catch (e: Throwable) {
|
||||
null
|
||||
}
|
||||
}
|
||||
val data = concernsRooms.await()
|
||||
data?.let { _concernsLiveData.value = it }
|
||||
val collectList = collectRooms.await()
|
||||
if (collectList == null) {
|
||||
_collectLiveData.value = ListResult.failed(pageNum)
|
||||
} else {
|
||||
_collectLiveData.value =
|
||||
ListResult.success(collectList.fansRoomList, pageNum)
|
||||
}
|
||||
_emptyLiveData.value = _concernsLiveData.value.isNullOrEmpty() &&
|
||||
_collectLiveData.value?.data.isNullOrEmpty()
|
||||
} else {
|
||||
val result = HomeModel.getCollectRoom(pageNum, pageSize)
|
||||
_collectLiveData.value = ListResult.success(result?.fansRoomList, pageNum)
|
||||
}
|
||||
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun requestAnchorInfo() {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
_anchorInfoLiveData.value = null
|
||||
},
|
||||
block = {
|
||||
_anchorInfoLiveData.value = HomeModel.requestAnchorInfo()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun getHomePlayV2() {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
_homePlayInfoLiveData.value = null
|
||||
},
|
||||
block = {
|
||||
_homePlayInfoLiveData.value = HomeModel.getHomePlayV2()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun getHotRoom() {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
_homeHotRoomLiveData.value = ListResult.failed(1)
|
||||
},
|
||||
block = {
|
||||
val result = HomeModel.getHotRoom()
|
||||
_homeHotRoomLiveData.value = ListResult.success(result, 1)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun getNewFriendList(gender: Int? = null) {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
_newFriendLiveData.value = ListResult.failed(1)
|
||||
},
|
||||
block = {
|
||||
val result = HomeModel.getNewFriendList(gender)
|
||||
_newFriendLiveData.value = ListResult.success(result, 1)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun getHomeTagInfo() {
|
||||
fun getHomeRankList() {
|
||||
safeLaunch {
|
||||
homeTagLiveData.value = HomeModel.getNewHomeTag()
|
||||
homeRankListLiveData.value = HomeModel.getHomeRankList()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -3,108 +3,58 @@ package com.chwl.app.home
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseViewModel
|
||||
import com.chwl.core.UriProvider
|
||||
import com.chwl.core.home.model.HomeModel
|
||||
import com.chwl.core.im.custom.bean.RouterType
|
||||
import com.chwl.core.room.bean.MeCenterInfo
|
||||
import com.chwl.library.utils.ResUtil
|
||||
|
||||
class MeViewModel : BaseViewModel() {
|
||||
|
||||
private val _meCenterInfoLiveData = MutableLiveData<MutableList<MeCenterInfo>?>()
|
||||
val meCenterInfoLiveData: MutableLiveData<MutableList<MeCenterInfo>?> = _meCenterInfoLiveData
|
||||
private var menuList: List<MeCenterInfo>? = null
|
||||
|
||||
var donationMenuVisible = false
|
||||
val menuListLiveData = MutableLiveData<List<MeCenterInfo>?>()
|
||||
|
||||
val donationMenu: MeCenterInfo by lazy(LazyThreadSafetyMode.NONE) {
|
||||
MeCenterInfo(
|
||||
icon = R.drawable.me_ic_menu_donation,
|
||||
centerName = ResUtil.getString(R.string.me_donation),
|
||||
skipType = RouterType.USER_DONATION
|
||||
)
|
||||
private var donationMenuVisible = false
|
||||
|
||||
fun updateDonationMenuVisible(isVisible: Boolean) {
|
||||
donationMenuVisible = isVisible
|
||||
if (!menuList.isNullOrEmpty()) {
|
||||
menuListLiveData.value = transformMenuList(menuList)
|
||||
}
|
||||
}
|
||||
|
||||
// private val _bannerLiveData = MutableLiveData<List<BannerInfo>?>()
|
||||
// val bannerLiveData: MutableLiveData<List<BannerInfo>?> = _bannerLiveData
|
||||
|
||||
init {
|
||||
refreshData()
|
||||
}
|
||||
|
||||
fun refreshData() {
|
||||
// getBannerInfo()
|
||||
requestMeCenterInfoList()
|
||||
}
|
||||
|
||||
// private fun getBannerInfo() {
|
||||
// safeLaunch(
|
||||
// block = {
|
||||
// _bannerLiveData.value = HomeModel.getHomeBanner("10")
|
||||
// },
|
||||
// onError = {
|
||||
// _bannerLiveData.value = null
|
||||
// }
|
||||
// )
|
||||
// }
|
||||
|
||||
private fun requestMeCenterInfoList() {
|
||||
safeLaunch(
|
||||
block = {
|
||||
_meCenterInfoLiveData.value = requestCenterList()
|
||||
},
|
||||
onError = {
|
||||
_meCenterInfoLiveData.value = null
|
||||
fun requestMenuList() {
|
||||
safeLaunch(onError = {
|
||||
if (menuListLiveData.value.isNullOrEmpty()) {
|
||||
menuListLiveData.postValue(transformMenuList(null))
|
||||
}
|
||||
)
|
||||
}) {
|
||||
val value = HomeModel.requestMeCenterInfoList()
|
||||
menuList = value
|
||||
menuListLiveData.postValue(transformMenuList(value))
|
||||
}
|
||||
}
|
||||
|
||||
private fun requestCenterList(): MutableList<MeCenterInfo>? {
|
||||
private fun transformMenuList(list: List<MeCenterInfo>?): List<MeCenterInfo> {
|
||||
val finalList = ArrayList<MeCenterInfo>()
|
||||
if (list.isNullOrEmpty()) {
|
||||
finalList.addAll(getDefaultMenuList())
|
||||
} else {
|
||||
finalList.addAll(list)
|
||||
}
|
||||
if (!donationMenuVisible) {
|
||||
val donationMenuPosition = finalList.indexOfFirst {
|
||||
it.skipType == RouterType.MY_DONATION
|
||||
}
|
||||
if (donationMenuPosition >= 0) {
|
||||
finalList.removeAt(donationMenuPosition)
|
||||
}
|
||||
}
|
||||
return finalList
|
||||
}
|
||||
|
||||
private fun getDefaultMenuList(): MutableList<MeCenterInfo> {
|
||||
return ArrayList<MeCenterInfo>().apply {
|
||||
add(
|
||||
MeCenterInfo(
|
||||
icon = R.drawable.me_ic_menu_room,
|
||||
centerName = ResUtil.getString(R.string.me_my_room),
|
||||
skipType = RouterType.MY_ROOM
|
||||
)
|
||||
)
|
||||
add(
|
||||
MeCenterInfo(
|
||||
icon = R.drawable.me_ic_menu_invite_fan,
|
||||
centerName = ResUtil.getString(R.string.menu_my_invite),
|
||||
skipType = RouterType.H5,
|
||||
centerUrl = UriProvider.getInviteFan()
|
||||
)
|
||||
)
|
||||
add(
|
||||
MeCenterInfo(
|
||||
icon = R.drawable.me_ic_menu_dress_shop,
|
||||
centerName = ResUtil.getString(R.string.decoration_view_decorationstoreactivity_01),
|
||||
skipType = RouterType.DECORATION_STORE
|
||||
)
|
||||
)
|
||||
// add(
|
||||
// MeCenterInfo(
|
||||
// icon = R.drawable.me_ic_menu_revenue,
|
||||
// centerName = ResUtil.getString(R.string.me_gain_recording),
|
||||
// skipType = RouterType.MY_REVENUE
|
||||
// )
|
||||
// )
|
||||
if (donationMenuVisible) {
|
||||
add(donationMenu)
|
||||
}
|
||||
add(
|
||||
MeCenterInfo(
|
||||
icon = R.drawable.me_ic_menu_collect,
|
||||
centerName = ResUtil.getString(R.string.my_collection),
|
||||
skipType = RouterType.COLLECTION_ROOM
|
||||
)
|
||||
)
|
||||
add(
|
||||
MeCenterInfo(
|
||||
icon = R.drawable.me_ic_menu_level,
|
||||
centerName = ResUtil.getString(R.string.menu_my_level),
|
||||
skipType = RouterType.USER_LEVEL
|
||||
)
|
||||
)
|
||||
add(
|
||||
MeCenterInfo(
|
||||
icon = R.drawable.me_ic_menu_setting,
|
||||
|
@@ -1,6 +1,8 @@
|
||||
package com.chwl.app.home.adapter;
|
||||
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
@@ -59,7 +61,8 @@ public class CommunityNoticeAdapter extends BaseQuickAdapter<CommunityNoticeInfo
|
||||
}
|
||||
|
||||
helper.setGone(R.id.tv_label_community_notice_list, false);
|
||||
helper.setText(R.id.tv_content_community_notice_list, item.getMessage());
|
||||
TextView textView = helper.getView(R.id.tv_content_community_notice_list);
|
||||
textView.setText(item.getMessage());
|
||||
switch (item.getActionType()) {
|
||||
case 1: // 评论
|
||||
if (item.getTargetUid() == AuthModel.get().getCurrentUid()) {
|
||||
|
@@ -1,59 +0,0 @@
|
||||
package com.chwl.app.home.adapter
|
||||
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.isInvisible
|
||||
import androidx.core.view.isVisible
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
|
||||
/**
|
||||
* create by lvzebiao @2019/11/13
|
||||
*/
|
||||
class HomeHotAdapter :
|
||||
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_room_recommend) {
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
|
||||
helper.apply {
|
||||
getView<ImageView>(R.id.iv_room_image).load(item.avatar)
|
||||
setText(R.id.tv_online_number, item.onlineNum.toString())
|
||||
setText(R.id.tv_room_title, item.title)
|
||||
setText(R.id.tv_desc, item.introduction)
|
||||
}
|
||||
|
||||
val avatars: Array<ImageView> = arrayOf(
|
||||
helper.getView(R.id.iv_avatar_0),
|
||||
helper.getView(R.id.iv_avatar_1),
|
||||
helper.getView(R.id.iv_avatar_2),
|
||||
helper.getView(R.id.iv_avatar_3),
|
||||
helper.getView(R.id.iv_avatar_4)
|
||||
)
|
||||
for (i in avatars.indices) {
|
||||
val avatarUrl = item.micUsers?.getOrNull(i)?.avatar
|
||||
avatars[i].isInvisible = avatarUrl.isNullOrBlank()
|
||||
avatars[i].load(avatarUrl)
|
||||
}
|
||||
val topView = helper.getView<ImageView>(R.id.iv_top)
|
||||
if (item.isHourTop1 == 1) {
|
||||
topView.setImageResource(R.drawable.home_room_bg_hour_top)
|
||||
topView.visibility = View.VISIBLE
|
||||
} else if (item.isWeekTop1 == 1) {
|
||||
topView.setImageResource(R.drawable.home_room_bg_week_top)
|
||||
topView.visibility = View.VISIBLE
|
||||
} else {
|
||||
topView.visibility = View.INVISIBLE
|
||||
}
|
||||
val tagPict = item.tagPict
|
||||
val tagView = helper.getView<ImageView>(R.id.iv_tag)
|
||||
if (tagPict.isNullOrEmpty()) {
|
||||
tagView.isVisible = false
|
||||
} else {
|
||||
ImageLoadUtils.loadImage(tagView, tagPict)
|
||||
tagView.isVisible = true
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,103 @@
|
||||
package com.chwl.app.home.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.ui.widget.XRecyclerView.ScaleTransitionPagerTitleView;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class HomeIndicatorAdapter extends CommonNavigatorAdapter {
|
||||
private final Context mContext;
|
||||
private final List<? extends CharSequence> mTitleList;
|
||||
|
||||
private int textSize = 21;
|
||||
private float minScale = 0.857f;
|
||||
private boolean showIndicator = true;
|
||||
private OnItemSelectListener mOnItemSelectListener;
|
||||
|
||||
public HomeIndicatorAdapter(Context context, List<? extends CharSequence> charSequences) {
|
||||
this.mContext = context;
|
||||
this.mTitleList = charSequences;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return mTitleList == null ? 0 : mTitleList.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPagerTitleView getTitleView(Context context, final int i) {
|
||||
ScaleTransitionPagerTitleView scaleTransitionPagerTitleView = new ScaleTransitionPagerTitleView(context, true);
|
||||
scaleTransitionPagerTitleView.setNormalColor(ContextCompat.getColor(context, R.color.color_990C1D18));
|
||||
scaleTransitionPagerTitleView.setSelectedColor(ContextCompat.getColor(context, R.color.color_0C1D18));
|
||||
scaleTransitionPagerTitleView.setMinScale(minScale);
|
||||
scaleTransitionPagerTitleView.setTextSize(textSize);
|
||||
int padding = UIUtil.dip2px(context, 13);
|
||||
scaleTransitionPagerTitleView.setPadding(padding, 0, padding, 0);
|
||||
scaleTransitionPagerTitleView.setText(mTitleList.get(i));
|
||||
scaleTransitionPagerTitleView.setOnClickListener(view -> {
|
||||
if (mOnItemSelectListener != null) {
|
||||
mOnItemSelectListener.onItemSelect(i, scaleTransitionPagerTitleView);
|
||||
}
|
||||
|
||||
});
|
||||
return scaleTransitionPagerTitleView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPagerIndicator getIndicator(Context context) {
|
||||
LinePagerIndicator indicator = new LinePagerIndicator(context);
|
||||
indicator.setMode(LinePagerIndicator.MODE_EXACTLY);
|
||||
indicator.setLineHeight(context.getResources().getDimensionPixelOffset(R.dimen.dp_4));
|
||||
indicator.setRoundRadius(context.getResources().getDimensionPixelOffset(R.dimen.dp_2));
|
||||
indicator.setLineWidth(context.getResources().getDimensionPixelOffset(R.dimen.dp_13));
|
||||
indicator.setColors(context.getResources().getColor(R.color.color_002512));
|
||||
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
// lp.bottomMargin = mBottomMargin;
|
||||
indicator.setLayoutParams(lp);
|
||||
return indicator;
|
||||
}
|
||||
|
||||
public int getTextSize() {
|
||||
return textSize;
|
||||
}
|
||||
|
||||
public void setTextSize(int textSize) {
|
||||
this.textSize = textSize;
|
||||
}
|
||||
|
||||
public float getMinScale() {
|
||||
return minScale;
|
||||
}
|
||||
|
||||
public void setMinScale(float minScale) {
|
||||
this.minScale = minScale;
|
||||
}
|
||||
|
||||
public boolean isShowIndicator() {
|
||||
return showIndicator;
|
||||
}
|
||||
|
||||
public void setShowIndicator(boolean showIndicator) {
|
||||
this.showIndicator = showIndicator;
|
||||
}
|
||||
|
||||
public void setOnItemSelectListener(OnItemSelectListener onItemSelectListener) {
|
||||
mOnItemSelectListener = onItemSelectListener;
|
||||
}
|
||||
|
||||
public interface OnItemSelectListener {
|
||||
void onItemSelect(int position, TextView view);
|
||||
}
|
||||
}
|
@@ -1,89 +0,0 @@
|
||||
package com.chwl.app.home.adapter
|
||||
|
||||
import android.graphics.Color
|
||||
import android.graphics.LinearGradient
|
||||
import android.graphics.Shader
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.view.isGone
|
||||
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.makeramen.roundedimageview.RoundedImageView
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.home.helper.BannerHelper
|
||||
import com.chwl.app.ui.utils.ImageLoadUtilsV2
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.utils.CoreTextUtils
|
||||
import com.chwl.core.utils.extension.ifNullOrEmpty
|
||||
import com.chwl.library.utils.ResUtil
|
||||
|
||||
/**
|
||||
* create by lvzebiao @2019/11/13
|
||||
*/
|
||||
class HomePlayAdapter : BaseMultiItemQuickAdapter<HomeRoomInfo, BaseViewHolder>(null) {
|
||||
|
||||
init {
|
||||
addItemType(HomeRoomInfo.TYPE_ROOM, R.layout.item_home_play)
|
||||
addItemType(HomeRoomInfo.TYPE_BANNER, R.layout.item_room_banner)
|
||||
addItemType(HomeRoomInfo.TYPE_BROADCAST, R.layout.item_home_play_broadcast)
|
||||
}
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
|
||||
if (item.itemType == HomeRoomInfo.TYPE_ROOM ||
|
||||
item.itemType == HomeRoomInfo.TYPE_BROADCAST
|
||||
) {
|
||||
helper.setText(R.id.tv_room_title, item.title)
|
||||
helper.setVisible(R.id.iv_room_tag, !CoreTextUtils.isEmptyText(item.tagPict))
|
||||
ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_room_tag), item.tagPict)
|
||||
helper.setText(R.id.tv_online_number, "${item.onlineNum}")
|
||||
val tvMgName = helper.getView<TextView>(R.id.tv_mg_name)
|
||||
tvMgName.text = item.mgName.ifNullOrEmpty { ResUtil.getString(R.string.home_adapter_homeplayadapter_01) }
|
||||
if (item.mgName.isNullOrEmpty()) {
|
||||
setGradient(tvMgName, "#FF8C5FFF", "#FFFF969B")
|
||||
} else {
|
||||
setGradient(tvMgName, "#FF61C4FE", "#FFA979FF")
|
||||
}
|
||||
val avatars: Array<ImageView> = arrayOf(
|
||||
helper.getView(R.id.iv_avatar_0),
|
||||
helper.getView(R.id.iv_avatar_1),
|
||||
helper.getView(R.id.iv_avatar_2),
|
||||
helper.getView(R.id.iv_avatar_3),
|
||||
helper.getView(R.id.iv_avatar_4)
|
||||
)
|
||||
for (i in avatars.indices) {
|
||||
val avatarUrl = item.micUsers?.getOrNull(i)?.avatar
|
||||
avatars[i].isGone = avatarUrl.isNullOrBlank()
|
||||
avatars[i].load(avatarUrl)
|
||||
}
|
||||
val ivRoomImage = helper.getView<RoundedImageView>(R.id.iv_room_image)
|
||||
ImageLoadUtilsV2.loadAvatar(ivRoomImage, item.avatar)
|
||||
ivRoomImage.borderColor =
|
||||
Color.parseColor(if (item.gender == 1) "#CCD7FF" else "#FFD0D0")
|
||||
|
||||
if (item.itemType == HomeRoomInfo.TYPE_BROADCAST) {
|
||||
helper.setText(R.id.tv_broad_msg, item.broadMsg)
|
||||
} else {
|
||||
helper.setBackgroundRes(
|
||||
R.id.view_bg,
|
||||
if (item.gender == 1) R.drawable.bg_home_play_item_man else R.drawable.bg_home_play_item_woman
|
||||
)
|
||||
}
|
||||
} else {
|
||||
BannerHelper.setBanner(helper.getView(R.id.roll_view), item.bannerVoList)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun setGradient(textView: TextView, startColor: String, endColor: String) {
|
||||
val endX = textView.paint.textSize * textView.text.length
|
||||
val linearGradient = LinearGradient(
|
||||
0f, 0f, endX, 0f,
|
||||
Color.parseColor(startColor),
|
||||
Color.parseColor(endColor),
|
||||
Shader.TileMode.CLAMP
|
||||
)
|
||||
textView.paint.shader = linearGradient
|
||||
textView.invalidate()
|
||||
}
|
||||
}
|
@@ -0,0 +1,62 @@
|
||||
package com.chwl.app.home.adapter
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.BaseAdapter
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.isVisible
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.ui.utils.loadAvatar
|
||||
import com.chwl.core.home.bean.HomeRankBean
|
||||
|
||||
class HomeRankViewFlipperAdapter : BaseAdapter() {
|
||||
|
||||
private val list = ArrayList<List<HomeRankBean>>()
|
||||
|
||||
fun setNewData(newList: List<List<HomeRankBean>>) {
|
||||
list.clear()
|
||||
list.addAll(newList)
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
override fun getCount(): Int {
|
||||
return list.size
|
||||
}
|
||||
|
||||
override fun getItem(position: Int): List<HomeRankBean>? {
|
||||
return list.getOrNull(position)
|
||||
}
|
||||
|
||||
override fun getItemId(position: Int): Long {
|
||||
return position.toLong()
|
||||
}
|
||||
|
||||
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
|
||||
val view = convertView ?: LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.home_recommend_item_rank, parent, false)
|
||||
view.layoutDirection = View.LAYOUT_DIRECTION_LTR
|
||||
val rankView1 = view.findViewById<ImageView>(R.id.iv_rank_1)
|
||||
val rankView2 = view.findViewById<ImageView>(R.id.iv_rank_2)
|
||||
val rankView3 = view.findViewById<ImageView>(R.id.iv_rank_3)
|
||||
val rankBorderView1 = view.findViewById<ImageView>(R.id.iv_rank_border_1)
|
||||
val rankBorderView2 = view.findViewById<ImageView>(R.id.iv_rank_border_2)
|
||||
val rankBorderView3 = view.findViewById<ImageView>(R.id.iv_rank_border_3)
|
||||
val list = getItem(position)
|
||||
loadRankData(rankView1, rankBorderView1, list?.getOrNull(0))
|
||||
loadRankData(rankView2, rankBorderView2, list?.getOrNull(1))
|
||||
loadRankData(rankView3, rankBorderView3, list?.getOrNull(2))
|
||||
return view
|
||||
}
|
||||
|
||||
private fun loadRankData(view: ImageView, borderView: View, data: HomeRankBean?) {
|
||||
if (data == null) {
|
||||
view.isVisible = false
|
||||
borderView.isVisible = false
|
||||
} else {
|
||||
view.isVisible = true
|
||||
borderView.isVisible = true
|
||||
view.loadAvatar(data.avatar)
|
||||
}
|
||||
}
|
||||
}
|
109
app/src/main/java/com/chwl/app/home/adapter/HomeRoomAdapter.kt
Normal file
109
app/src/main/java/com/chwl/app/home/adapter/HomeRoomAdapter.kt
Normal file
@@ -0,0 +1,109 @@
|
||||
package com.chwl.app.home.adapter
|
||||
|
||||
import android.graphics.Rect
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.RecyclerView.RecycledViewPool
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.app.ui.utils.loadFromAssets
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.example.lib_utils.AppUtils
|
||||
import com.example.lib_utils.UiUtils
|
||||
import com.opensource.svgaplayer.SVGADrawable
|
||||
import com.opensource.svgaplayer.SVGAImageView
|
||||
|
||||
/**
|
||||
* create by lvzebiao @2019/11/13
|
||||
*/
|
||||
class HomeRoomAdapter : BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.home_item_room) {
|
||||
private var micUserItemViewPool = RecycledViewPool().apply {
|
||||
setMaxRecycledViews(0, 50)
|
||||
}
|
||||
|
||||
private val isRTL = UiUtils.isRtl(AppUtils.getApp())
|
||||
|
||||
override fun onCreateDefViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
|
||||
return super.onCreateDefViewHolder(parent, viewType).apply {
|
||||
val micUserRecyclerView = this.getView<RecyclerView>(R.id.recycler_view_users)
|
||||
micUserRecyclerView.setOnTouchListener { v, event -> true }
|
||||
micUserRecyclerView.setRecycledViewPool(micUserItemViewPool)
|
||||
micUserRecyclerView.setHasFixedSize(true)
|
||||
micUserRecyclerView.layoutManager =
|
||||
LinearLayoutManager(parent.context, RecyclerView.HORIZONTAL, false).apply {
|
||||
this.recycleChildrenOnDetach = true
|
||||
this.isSmoothScrollbarEnabled
|
||||
}
|
||||
micUserRecyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
||||
val offset = AppUtils.getApp().resources.getDimensionPixelOffset(R.dimen.dp_4) * -1
|
||||
override fun getItemOffsets(
|
||||
outRect: Rect,
|
||||
view: View,
|
||||
parent: RecyclerView,
|
||||
state: RecyclerView.State
|
||||
) {
|
||||
super.getItemOffsets(outRect, view, parent, state)
|
||||
val position = parent.getChildAdapterPosition(view)
|
||||
if (position != 0) {
|
||||
if (isRTL) {
|
||||
outRect.right = offset
|
||||
} else {
|
||||
outRect.left = offset
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
micUserRecyclerView.adapter = HomeRoomUserAdapter()
|
||||
}
|
||||
}
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
|
||||
helper.apply {
|
||||
getView<ImageView>(R.id.iv_room_image).load(item.avatar)
|
||||
setText(R.id.tv_online_number, item.onlineNum.toString())
|
||||
setText(R.id.tv_room_title, item.title)
|
||||
setText(R.id.tv_desc, item.roomDesc)
|
||||
}
|
||||
|
||||
val micUserRecyclerView = helper.getView<RecyclerView>(R.id.recycler_view_users)
|
||||
val userAdapter = micUserRecyclerView.adapter as HomeRoomUserAdapter
|
||||
userAdapter.setNewData(item.micUsers)
|
||||
|
||||
val topView = helper.getView<ImageView>(R.id.iv_top)
|
||||
if (item.isHourTop1 == 1) {
|
||||
topView.setImageResource(R.drawable.home_room_bg_hour_top)
|
||||
topView.visibility = View.VISIBLE
|
||||
} else if (item.isWeekTop1 == 1) {
|
||||
topView.setImageResource(R.drawable.home_room_bg_week_top)
|
||||
topView.visibility = View.VISIBLE
|
||||
} else {
|
||||
topView.visibility = View.INVISIBLE
|
||||
}
|
||||
val tagPict = item.tagPict
|
||||
val tagView = helper.getView<ImageView>(R.id.iv_tag)
|
||||
if (tagPict.isNullOrEmpty()) {
|
||||
tagView.isVisible = false
|
||||
} else {
|
||||
ImageLoadUtils.loadImage(tagView, tagPict)
|
||||
tagView.isVisible = true
|
||||
}
|
||||
val pkView = helper.getView<SVGAImageView>(R.id.svga_pk)
|
||||
if (item.isCrossPking) {
|
||||
pkView.isVisible = true
|
||||
if (pkView.drawable !is SVGADrawable) {
|
||||
pkView.loadFromAssets("svga/home_pk.svga")
|
||||
}
|
||||
pkView.startAnimation()
|
||||
} else {
|
||||
pkView.isVisible = false
|
||||
pkView.stopAnimation()
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
package com.chwl.app.home.adapter
|
||||
|
||||
import android.widget.ImageView
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.ui.utils.loadAvatar
|
||||
import com.chwl.core.home.bean.MicUsersBean
|
||||
|
||||
class HomeRoomUserAdapter :
|
||||
BaseQuickAdapter<MicUsersBean, BaseViewHolder>(R.layout.home_item_room_user) {
|
||||
override fun convert(helper: BaseViewHolder, item: MicUsersBean?) {
|
||||
val avatarView = helper.getView<ImageView>(R.id.iv_avatar)
|
||||
avatarView.loadAvatar(item?.avatar)
|
||||
}
|
||||
}
|
@@ -1,56 +0,0 @@
|
||||
package com.chwl.app.home.adapter
|
||||
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.opensource.svgaplayer.SVGAImageView
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.ui.utils.ImageLoadUtilsV2
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.app.ui.utils.loadFromAssets
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.utils.CoreTextUtils
|
||||
|
||||
/**
|
||||
* create by lvzebiao @2019/11/13
|
||||
*/
|
||||
class HomeSingleAnchorAdapter :
|
||||
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_home_single_anchor) {
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
|
||||
helper.setText(R.id.tv_nickname, if (!CoreTextUtils.isEmptyText(item.nick)) item.nick else "")
|
||||
helper.setText(
|
||||
R.id.tv_room_name,
|
||||
if (!CoreTextUtils.isEmptyText(item.title)) item.title else ""
|
||||
)
|
||||
ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_avatar), item.avatar)
|
||||
ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_avatar_big), item.avatar, false, 8)
|
||||
val ivPking = helper.getView<SVGAImageView>(R.id.iv_pking)
|
||||
val ivTag = helper.getView<ImageView>(R.id.iv_tag)
|
||||
ivPking.isVisible = item.isCrossPking
|
||||
ivTag.isGone = item.isCrossPking
|
||||
if (item.isCrossPking) {
|
||||
ivPking.loadFromAssets("svga/single_room_pking.svga")
|
||||
} else {
|
||||
ivTag.load(item.tagPict)
|
||||
}
|
||||
helper.setImageResource(
|
||||
R.id.iv_gender,
|
||||
if (item.gender == 1) R.drawable.ic_gender_male else R.drawable.ic_gender_female
|
||||
)
|
||||
helper.setText(
|
||||
R.id.tv_topic,
|
||||
if (!CoreTextUtils.isEmptyText(item.roomDesc)) item.roomDesc else ""
|
||||
)
|
||||
helper.itemView.setOnClickListener {
|
||||
AVRoomActivity.startForFromType(
|
||||
mContext,
|
||||
item.uid,
|
||||
AVRoomActivity.FROM_TYPE_RECOMMEND
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@@ -3,9 +3,9 @@ package com.chwl.app.home.adapter
|
||||
import android.widget.ImageView
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.chad.library.adapter.base.diff.BaseQuickDiffCallback
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.ui.im.RouterHandler
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.app.ui.utils.loadImage
|
||||
import com.chwl.core.room.bean.MeCenterInfo
|
||||
|
||||
|
||||
@@ -15,8 +15,35 @@ class MeCenterAdapter :
|
||||
override fun convert(helper: BaseViewHolder, item: MeCenterInfo) {
|
||||
item.icon?.let {
|
||||
helper.getView<ImageView>(R.id.iv_pic).setImageResource(it)
|
||||
} ?: let {
|
||||
helper.getView<ImageView>(R.id.iv_pic).loadImage(item.androidCenterPic)
|
||||
}
|
||||
helper.setText(R.id.tv_name, item.centerName)
|
||||
}
|
||||
|
||||
fun updateData(list: List<MeCenterInfo>?) {
|
||||
val newList = ArrayList<MeCenterInfo>()
|
||||
if (list != null) {
|
||||
newList.addAll(list)
|
||||
}
|
||||
setNewDiffData(object : BaseQuickDiffCallback<MeCenterInfo>(newList) {
|
||||
override fun areItemsTheSame(
|
||||
oldItem: MeCenterInfo,
|
||||
newItem: MeCenterInfo
|
||||
): Boolean {
|
||||
return newItem.centerId == oldItem.centerId
|
||||
}
|
||||
|
||||
override fun areContentsTheSame(
|
||||
oldItem: MeCenterInfo,
|
||||
newItem: MeCenterInfo
|
||||
): Boolean {
|
||||
return newItem.skipType == oldItem.skipType
|
||||
&& newItem.centerName == oldItem.centerName
|
||||
&& newItem.centerUrl == oldItem.centerUrl
|
||||
&& newItem.androidCenterPic == oldItem.androidCenterPic
|
||||
}
|
||||
}, true)
|
||||
}
|
||||
|
||||
}
|
@@ -1,47 +0,0 @@
|
||||
package com.chwl.app.home.adapter
|
||||
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.isVisible
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.opensource.svgaplayer.SVGAImageView
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.app.ui.utils.loadFromAssets
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.utils.CoreTextUtils
|
||||
|
||||
/**
|
||||
* create by lvzebiao @2019/11/13
|
||||
* 人气主播更多
|
||||
*/
|
||||
class MoreSingleAnchorAdapter :
|
||||
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_home_single_anchor_more) {
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
|
||||
|
||||
val ivPking = helper.getView<SVGAImageView>(R.id.iv_pking)
|
||||
val ivTag = helper.getView<ImageView>(R.id.iv_tag)
|
||||
ivPking.isVisible = item.isCrossPking
|
||||
ivTag.isVisible = !CoreTextUtils.isEmptyText(item.tagPict) && !item.isCrossPking
|
||||
if (item.isCrossPking) {
|
||||
ivPking.loadFromAssets("svga/single_room_pking.svga")
|
||||
} else {
|
||||
ivTag.load(item.tagPict)
|
||||
}
|
||||
helper.setText(R.id.tv_online_num, item.onlineNum.toString())
|
||||
.setText(R.id.tv_nickname, item.nick)
|
||||
.setText(R.id.tv_room_name, item.title)
|
||||
.setImageResource(
|
||||
R.id.iv_gender,
|
||||
if (item.gender == 1) R.drawable.ic_gender_male else R.drawable.ic_gender_female
|
||||
)
|
||||
helper.getView<ImageView>(R.id.iv_room_avatar)
|
||||
.load(item.avatar, 12f, R.drawable.default_cover)
|
||||
|
||||
helper.itemView.setOnClickListener {
|
||||
AVRoomActivity.start(mContext, item.uid)
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,58 +0,0 @@
|
||||
package com.chwl.app.home.adapter
|
||||
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.isGone
|
||||
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.home.helper.BannerHelper
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.utils.CoreTextUtils
|
||||
|
||||
|
||||
class RoomHotAdapter : BaseMultiItemQuickAdapter<HomeRoomInfo, BaseViewHolder>(null) {
|
||||
|
||||
init {
|
||||
addItemType(HomeRoomInfo.TYPE_ROOM, R.layout.item_room_hot)
|
||||
addItemType(HomeRoomInfo.TYPE_BROADCAST, R.layout.item_room_hot)
|
||||
addItemType(HomeRoomInfo.TYPE_BANNER, R.layout.item_room_banner)
|
||||
}
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
|
||||
if (item.itemType != HomeRoomInfo.TYPE_BANNER) {
|
||||
|
||||
helper.itemView.setOnClickListener {
|
||||
AVRoomActivity.start(mContext, item.uid)
|
||||
}
|
||||
|
||||
helper.getView<ImageView>(R.id.iv_room_image).load(item.avatar)
|
||||
helper.setText(R.id.tv_online_number, "${item.onlineNum}")
|
||||
helper.setText(R.id.tv_room_title, item.title)
|
||||
helper.setText(R.id.tv_id, "ID:${item.erbanNo}")
|
||||
|
||||
helper.setVisible(R.id.tv_in_pk, item.isCrossPking)
|
||||
|
||||
helper.setVisible(R.id.iv_room_tag, !CoreTextUtils.isEmptyText(item.tagPict))
|
||||
helper.getView<ImageView>(R.id.iv_room_tag).load(item.tagPict)
|
||||
|
||||
val avatars: Array<ImageView> = arrayOf(
|
||||
helper.getView(R.id.iv_avatar_0),
|
||||
helper.getView(R.id.iv_avatar_1),
|
||||
helper.getView(R.id.iv_avatar_2),
|
||||
helper.getView(R.id.iv_avatar_3),
|
||||
helper.getView(R.id.iv_avatar_4)
|
||||
)
|
||||
for (i in avatars.indices) {
|
||||
val avatarUrl = item.micUsers?.getOrNull(i)?.avatar
|
||||
avatars[i].isGone = avatarUrl.isNullOrBlank()
|
||||
avatars[i].load(avatarUrl)
|
||||
}
|
||||
} else {
|
||||
BannerHelper.setBanner(helper.getView(R.id.roll_view), item.bannerVoList)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -1,55 +0,0 @@
|
||||
package com.chwl.app.home.adapter
|
||||
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.isGone
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.ui.utils.ImageLoadUtilsV2
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.utils.CoreTextUtils
|
||||
|
||||
|
||||
class RoomLikeAdapter : BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_room_like) {
|
||||
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
|
||||
helper.apply {
|
||||
getView<ImageView>(R.id.iv_room_image).load(item.roomAvatar)
|
||||
setText(R.id.tv_online_number, "${item.roomOnlineNum}")
|
||||
setText(R.id.tv_room_title, item.roomName)
|
||||
setText(R.id.tv_id, "ID:${item.erbanNo}")
|
||||
}
|
||||
helper.setVisible(R.id.tv_in_pk, item.isCrossPking)
|
||||
helper.setVisible(R.id.iv_room_tag, !CoreTextUtils.isEmptyText(item.tagPict))
|
||||
ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_room_tag), item.tagPict)
|
||||
|
||||
val avatars: Array<ImageView> = arrayOf(
|
||||
helper.getView(R.id.iv_avatar_0),
|
||||
helper.getView(R.id.iv_avatar_1),
|
||||
helper.getView(R.id.iv_avatar_2),
|
||||
helper.getView(R.id.iv_avatar_3),
|
||||
helper.getView(R.id.iv_avatar_4)
|
||||
)
|
||||
for (i in avatars.indices) {
|
||||
val avatarUrl = item.micUsers?.getOrNull(i)?.avatar
|
||||
avatars[i].isGone = avatarUrl.isNullOrBlank()
|
||||
avatars[i].load(avatarUrl)
|
||||
}
|
||||
helper.itemView.setOnClickListener {
|
||||
AVRoomActivity.start(mContext, item.roomUid)
|
||||
}
|
||||
if (item.isValid) {
|
||||
helper.setGone(R.id.tv_online_number, true)
|
||||
helper.setBackgroundRes(R.id.view_bg, R.drawable.bg_home_like_item)
|
||||
helper.setBackgroundRes(R.id.view_room_cover, R.drawable.bg_home_common_avatar)
|
||||
} else {
|
||||
helper.setGone(R.id.tv_online_number, false)
|
||||
helper.setBackgroundRes(R.id.view_bg, R.drawable.bg_home_like_item_disable)
|
||||
helper.setBackgroundRes(R.id.view_room_cover, R.drawable.bg_home_common_avatar_disable)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -7,14 +7,14 @@ import android.view.WindowManager
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.isGone
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogHelloMessageBinding
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.app.room_chat.activity.RoomMsgActivity
|
||||
import com.chwl.core.channel_page.bean.HelloMessageInfo
|
||||
import com.chwl.library.utils.ResUtil
|
||||
|
||||
class HelloMessageDialog : BaseDialog<DialogHelloMessageBinding>() {
|
||||
class HelloMessageDialog : BaseDialogFragment<DialogHelloMessageBinding>() {
|
||||
|
||||
companion object {
|
||||
|
||||
|
@@ -4,13 +4,13 @@ import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.WindowManager
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogNewUserHelloBinding
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.core.channel_page.bean.NewUserHelloInfo
|
||||
import com.chwl.core.utils.extension.subAndReplaceDot
|
||||
|
||||
class NewUserHelloDialog : BaseDialog<DialogNewUserHelloBinding>() {
|
||||
class NewUserHelloDialog : BaseDialogFragment<DialogNewUserHelloBinding>() {
|
||||
|
||||
companion object {
|
||||
|
||||
|
@@ -3,12 +3,12 @@ package com.chwl.app.home.dialog
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.base.BaseDialog
|
||||
import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogRecommendRoomBinding
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
|
||||
class RecommendRoomDialog : BaseDialog<DialogRecommendRoomBinding>() {
|
||||
class RecommendRoomDialog : BaseDialogFragment<DialogRecommendRoomBinding>() {
|
||||
|
||||
companion object {
|
||||
|
||||
|
@@ -1,184 +0,0 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chwl.app.application.IReportConstants
|
||||
import com.chwl.app.application.ReportManager
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.avroom.dialog.CreateRoomDialog
|
||||
import com.chwl.app.base.BaseActivity
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.FragmentAccompanyBinding
|
||||
import com.chwl.app.home.HomeViewModel
|
||||
import com.chwl.app.home.adapter.HomeChatAdapter
|
||||
import com.chwl.app.home.adapter.RoomNewFriendsAdapter
|
||||
import com.chwl.app.home.helper.OpenRoomHelper
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.home.event.RefreshHomeDataEvent
|
||||
import com.chwl.core.room.event.RoomShieldEvent
|
||||
import com.chwl.core.user.UserModel
|
||||
import com.chwl.core.user.bean.UserInfo
|
||||
import com.chwl.core.user.event.LoginUserInfoUpdateEvent
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
/**
|
||||
首页
|
||||
*/
|
||||
class AccompanyFragment : BaseViewBindingFragment<FragmentAccompanyBinding>() {
|
||||
private lateinit var charAdapter: HomeChatAdapter
|
||||
private lateinit var roomNewFriendsAdapter: RoomNewFriendsAdapter
|
||||
|
||||
private val homeViewModel: HomeViewModel by activityViewModels()
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<UserInfo>
|
||||
|
||||
//是否需要刷新接口进行屏蔽房间操作
|
||||
private var isShield = false
|
||||
|
||||
override fun init() {
|
||||
initRefreshView()
|
||||
initChatTab()
|
||||
initHotRoomTab()
|
||||
showGameGuide()
|
||||
|
||||
binding.ivGameGuide.setOnClickListener {
|
||||
//首页_扩列聊天-创建游戏房
|
||||
ReportManager.get().reportEvent(
|
||||
IReportConstants.MODULE_HOMEPAGE_CLICK, mapOf(
|
||||
Pair(IReportConstants.HOMEPAGE_TYPE, IReportConstants.NINE),
|
||||
Pair(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE)
|
||||
)
|
||||
)
|
||||
CreateRoomDialog().apply { setGameVisible() }.show(context)
|
||||
}
|
||||
}
|
||||
|
||||
private fun initRefreshView() {
|
||||
binding.refreshLayout.setOnRefreshListener {
|
||||
binding.refreshLayout.finishRefresh()
|
||||
EventBus.getDefault().post(RefreshHomeDataEvent())
|
||||
}
|
||||
binding.refreshLayout.isEnableLoadmore = false
|
||||
binding.refreshLayout.isEnableOverScrollBounce = false
|
||||
}
|
||||
|
||||
private fun initChatTab() {
|
||||
charAdapter = HomeChatAdapter()
|
||||
charAdapter.onItemClickListener =
|
||||
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
|
||||
val homePlayInfo: HomeRoomInfo? = charAdapter.getItem(position)
|
||||
if (homePlayInfo != null) {
|
||||
//首页_扩列聊天-用户房间
|
||||
ReportManager.get().reportEvent(
|
||||
IReportConstants.MODULE_HOMEPAGE_CLICK, mapOf(
|
||||
Pair(IReportConstants.HOMEPAGE_TYPE, IReportConstants.SEVEN),
|
||||
Pair(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE)
|
||||
)
|
||||
)
|
||||
AVRoomActivity.startForFromType(
|
||||
mContext,
|
||||
homePlayInfo.uid,
|
||||
AVRoomActivity.FROM_TYPE_RECOMMEND
|
||||
)
|
||||
}
|
||||
}
|
||||
binding.mRecyclerChat.adapter = charAdapter
|
||||
binding.mLiCreateRoom.setOnClickListener {
|
||||
//首页_扩列聊天-创建普通房
|
||||
ReportManager.get().reportEvent(
|
||||
IReportConstants.MODULE_HOMEPAGE_CLICK, mapOf(
|
||||
Pair(IReportConstants.HOMEPAGE_TYPE, IReportConstants.EIGHT),
|
||||
Pair(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE)
|
||||
)
|
||||
)
|
||||
OpenRoomHelper.openRoom(context as BaseActivity?)
|
||||
}
|
||||
homeViewModel.homePlayInfoData.observe(this) {
|
||||
it?.let {
|
||||
if (it.isNotEmpty()) {
|
||||
binding.mLiCreateRoom.visibility = View.GONE
|
||||
binding.nsHost.visibility = View.VISIBLE
|
||||
charAdapter.setNewData(it)
|
||||
} else {
|
||||
binding.mLiCreateRoom.visibility = View.VISIBLE
|
||||
binding.nsHost.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initHotRoomTab() {
|
||||
roomNewFriendsAdapter = RoomNewFriendsAdapter()
|
||||
rvDelegate = RVDelegate.Builder<UserInfo>()
|
||||
.setAdapter(roomNewFriendsAdapter)
|
||||
.setRecyclerView(binding.recyclerView)
|
||||
.setEmptyView(EmptyViewHelper.createEmptyTextView(context, "暂无新朋友"))
|
||||
.setLayoutManager(LinearLayoutManager(mContext))
|
||||
.build()
|
||||
homeViewModel.newFriendLiveData.observe(this) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLazyLoad() {
|
||||
super.onLazyLoad()
|
||||
loadData()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (isShield) {
|
||||
loadData()
|
||||
isShield = false
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadData() {
|
||||
homeViewModel.getHomePlayV2()
|
||||
homeViewModel.getNewFriendList()
|
||||
}
|
||||
|
||||
private fun showGameGuide(){
|
||||
val userInfo = UserModel.get().cacheLoginUserInfo
|
||||
if (userInfo?.isHasPermitRoom == true) {
|
||||
binding.ivGameGuide.visibility = View.GONE
|
||||
} else {
|
||||
binding.ivGameGuide.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onLoginUserInfoUpdateEvent(event: LoginUserInfoUpdateEvent?) {
|
||||
showGameGuide()
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
|
||||
if (isResumed) {
|
||||
loadData()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
EventBus.getDefault().register(this)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRoomShieldEvent(event: RoomShieldEvent?) {
|
||||
isShield = true
|
||||
}
|
||||
|
||||
}
|
@@ -26,6 +26,7 @@ import com.chwl.app.support.FragmentVisibleStateHelper
|
||||
import com.chwl.app.ui.im.friend.FriendListFragment
|
||||
import com.chwl.app.ui.im.recent.RecentListFragment
|
||||
import com.chwl.app.ui.relation.FansListFragment
|
||||
import com.chwl.app.ui.user.adapter.ContactsIndicatorAdapter
|
||||
import com.chwl.app.ui.user.adapter.UserInfoIndicatorAdapter
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
|
||||
import com.chwl.core.Constants
|
||||
@@ -43,7 +44,7 @@ class ContactsListFragment : BaseViewBindingFragment<FragmentContactListBinding>
|
||||
private val viewModel: HomeMessageViewModel by activityViewModels()
|
||||
private val publicChatAdapter = PublicChatLaneAdapter(ArrayList())
|
||||
|
||||
private val stateHelper = FragmentVisibleStateHelper(this) {
|
||||
private val stateHelper = FragmentVisibleStateHelper(this).start {
|
||||
onVisibleChanged(it)
|
||||
}
|
||||
companion object {
|
||||
@@ -85,7 +86,7 @@ class ContactsListFragment : BaseViewBindingFragment<FragmentContactListBinding>
|
||||
tagList.add(getString(R.string.layout_fragment_contact_list_04))
|
||||
val commonNavigator = CommonNavigator(context)
|
||||
commonNavigator.setTitleWrapContent(false)
|
||||
val magicIndicatorAdapter = UserInfoIndicatorAdapter(context, tagList)
|
||||
val magicIndicatorAdapter = ContactsIndicatorAdapter(context, tagList)
|
||||
magicIndicatorAdapter.setOnItemSelectListener { position: Int, view: TextView? ->
|
||||
binding.viewPager.currentItem = position
|
||||
}
|
||||
@@ -138,7 +139,7 @@ class ContactsListFragment : BaseViewBindingFragment<FragmentContactListBinding>
|
||||
}
|
||||
|
||||
override fun onScroll(
|
||||
e1: MotionEvent,
|
||||
e1: MotionEvent?,
|
||||
e2: MotionEvent,
|
||||
distanceX: Float,
|
||||
distanceY: Float
|
||||
@@ -150,7 +151,7 @@ class ContactsListFragment : BaseViewBindingFragment<FragmentContactListBinding>
|
||||
}
|
||||
|
||||
override fun onFling(
|
||||
e1: MotionEvent,
|
||||
e1: MotionEvent?,
|
||||
e2: MotionEvent,
|
||||
velocityX: Float,
|
||||
velocityY: Float
|
||||
|
@@ -1,148 +1,32 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import androidx.core.view.isVisible
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.application.IReportConstants
|
||||
import com.chwl.app.application.ReportManager
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.avroom.adapter.CommonVPAdapter
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.databinding.FragmentHomeBinding
|
||||
import com.chwl.app.home.HomeViewModel
|
||||
import com.chwl.app.home.adapter.HomeBannerAdapter
|
||||
import com.chwl.app.home.dialog.RecommendRoomDialog
|
||||
import com.chwl.app.home.helper.OpenRoomHelper
|
||||
import com.chwl.app.home.adapter.HomeIndicatorAdapter
|
||||
import com.chwl.app.ui.search.SearchActivity
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.app.ui.user.adapter.MainIndicatorAdapter
|
||||
import com.chwl.app.ui.webview.CommonWebViewActivity
|
||||
import com.chwl.app.ui.widget.magicindicator.ViewPagerHelper
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
|
||||
import com.chwl.app.utils.CommonJumpHelper
|
||||
import com.chwl.core.DemoCache
|
||||
import com.chwl.core.UriProvider
|
||||
import com.chwl.core.home.bean.BannerInfo
|
||||
import com.chwl.core.home.bean.HomeTagInfo
|
||||
import com.chwl.core.home.event.RefreshHomeDataEvent
|
||||
import com.chwl.library.utils.ListUtils
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.zhpan.bannerview.BannerViewPager
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
/**
|
||||
首页
|
||||
*/
|
||||
class HomeFragment : BaseViewBindingFragment<FragmentHomeBinding>(), View.OnClickListener,
|
||||
MainIndicatorAdapter.OnItemSelectListener {
|
||||
|
||||
private val TAB_ID_RECOMMEND = Int.MAX_VALUE - 1
|
||||
|
||||
private val TAB_ID_ACCOMPANY = Int.MAX_VALUE - 2
|
||||
|
||||
private val tabList = mutableListOf<HomeTagInfo>()
|
||||
private val tabTitleList = mutableListOf<String>()
|
||||
private val homeViewModel: HomeViewModel by activityViewModels()
|
||||
class HomeFragment : BaseViewBindingFragment<FragmentHomeBinding>(), View.OnClickListener {
|
||||
|
||||
override fun init() {
|
||||
initListener()
|
||||
initTab()
|
||||
initBanner()
|
||||
initResource()
|
||||
homeViewModel.homeTagLiveData.observe(this) {
|
||||
loadTabList(transformTabList(it))
|
||||
}
|
||||
homeViewModel.getHomeTagInfo()
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
binding.tvSearch.setOnClickListener(this)
|
||||
binding.ivRanking.setOnClickListener(this)
|
||||
binding.ivMyRoom.setOnClickListener(this)
|
||||
binding.refreshLayout.setOnRefreshListener {
|
||||
it.finishRefresh()
|
||||
EventBus.getDefault().post(RefreshHomeDataEvent())
|
||||
homeViewModel.getBannerInfo()
|
||||
if (binding.viewPager.adapter?.itemCount == 0) {
|
||||
homeViewModel.getHomeTagInfo()
|
||||
}
|
||||
}
|
||||
binding.refreshLayout.isEnableLoadmore = false
|
||||
binding.refreshLayout.isEnableOverScrollBounce = false
|
||||
}
|
||||
|
||||
private fun initResource(){
|
||||
homeViewModel.currentResourceLiveData.observe(this) {
|
||||
it?.let {
|
||||
val resourceViews = arrayOf(
|
||||
binding.ivResource0,
|
||||
binding.ivResource1
|
||||
)
|
||||
if (it.size != 2) {
|
||||
resourceViews.forEach {
|
||||
it.isVisible = false
|
||||
}
|
||||
return@observe
|
||||
}
|
||||
resourceViews.forEach {
|
||||
it.isVisible = true
|
||||
}
|
||||
for (i in resourceViews.indices) {
|
||||
resourceViews[i].load(it[i].icon)
|
||||
resourceViews[i].setOnClickListener { _ ->
|
||||
when {
|
||||
it[i].resourceType == 5 -> {
|
||||
CommonWebViewActivity.start(context, it[i].resourceContent)
|
||||
}
|
||||
else -> {
|
||||
dialogManager.showProgressDialog(mContext)
|
||||
homeViewModel.getResourceJumpInfo(it[i].id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
homeViewModel.resourceJumpLiveData.observe(this) {
|
||||
dialogManager.dismissDialog()
|
||||
it?.let {
|
||||
if (it.isPick) {
|
||||
AVRoomActivity.start(context, it.uid)
|
||||
} else {
|
||||
RecommendRoomDialog.newInstance(it).show(context)
|
||||
}
|
||||
}
|
||||
}
|
||||
homeViewModel.getCurrentResourceInfo()
|
||||
}
|
||||
|
||||
private fun initBanner() {
|
||||
val bannerView: BannerViewPager<BannerInfo?> =
|
||||
binding.bannerView as BannerViewPager<BannerInfo?>
|
||||
homeViewModel.bannerLiveData.observe(this) {
|
||||
it?.let {
|
||||
if (ListUtils.isListEmpty(it)) {
|
||||
bannerView.visibility = View.GONE
|
||||
return@let
|
||||
}
|
||||
bannerView.visibility = View.VISIBLE
|
||||
bannerView.adapter = HomeBannerAdapter()
|
||||
bannerView.post {
|
||||
binding.bannerView.setPageMargin(UIUtil.dip2px(mContext, 8.0))
|
||||
.setScrollDuration(800)
|
||||
.setOnPageClickListener { _: View?, position: Int ->
|
||||
CommonJumpHelper.bannerJump(context, it[position])
|
||||
}
|
||||
.create(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
homeViewModel.getBannerInfo()
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
@@ -161,107 +45,31 @@ class HomeFragment : BaseViewBindingFragment<FragmentHomeBinding>(), View.OnClic
|
||||
DemoCache.saveAnchorCardView(1)
|
||||
}
|
||||
}
|
||||
|
||||
R.id.iv_ranking -> {
|
||||
//首页_排行榜
|
||||
CommonWebViewActivity.start(mContext, UriProvider.getRanking())
|
||||
}
|
||||
|
||||
R.id.iv_my_room -> {
|
||||
OpenRoomHelper.openRoom(baseActivity)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initTab() {
|
||||
val fragmentList = ArrayList<Fragment>()
|
||||
fragmentList.add(HomeRecommendFragment())
|
||||
fragmentList.add(HomeWithMeFragment())
|
||||
val titleList = ArrayList<String>()
|
||||
titleList.add(getString(R.string.main_tab_recommend))
|
||||
titleList.add(getString(R.string.main_me))
|
||||
val commonNavigator = CommonNavigator(context)
|
||||
commonNavigator.setTitleWrapContent(false)
|
||||
commonNavigator.titleMargin = ScreenUtil.dip2px(2.0F)
|
||||
commonNavigator.setTitleGravity(Gravity.CENTER_VERTICAL)
|
||||
val magicIndicatorAdapter = MainIndicatorAdapter(context, tabTitleList)
|
||||
magicIndicatorAdapter.setOnItemSelectListener(this)
|
||||
val magicIndicatorAdapter = HomeIndicatorAdapter(context, titleList)
|
||||
magicIndicatorAdapter.setOnItemSelectListener { position: Int, view: TextView? ->
|
||||
binding.viewPager.currentItem = position
|
||||
}
|
||||
commonNavigator.adapter = magicIndicatorAdapter
|
||||
binding.magicIndicator.navigator = commonNavigator
|
||||
binding.viewPager.adapter =
|
||||
object : FragmentStateAdapter(childFragmentManager, lifecycle) {
|
||||
override fun getItemId(position: Int): Long {
|
||||
return tabList[position].id.toLong()
|
||||
}
|
||||
|
||||
override fun containsItem(itemId: Long): Boolean {
|
||||
return tabList.firstOrNull { it.id.toLong() == itemId } != null
|
||||
}
|
||||
|
||||
override fun createFragment(position: Int): Fragment {
|
||||
val itemId = getItemId(position)
|
||||
return when (itemId) {
|
||||
TAB_ID_RECOMMEND.toLong() -> {
|
||||
RecommendFragment()
|
||||
}
|
||||
|
||||
TAB_ID_ACCOMPANY.toLong() -> {
|
||||
AccompanyFragment()
|
||||
}
|
||||
|
||||
else -> {
|
||||
return HomeTabFragment.newInstance(itemId.toInt())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return tabList.size
|
||||
}
|
||||
}
|
||||
binding.viewPager.offscreenPageLimit = 2
|
||||
binding.viewPager.adapter = CommonVPAdapter(
|
||||
childFragmentManager,
|
||||
lifecycle,
|
||||
fragmentList
|
||||
)
|
||||
ViewPagerHelper.bind(binding.magicIndicator, binding.viewPager)
|
||||
loadTabList(transformTabList(emptyList()))
|
||||
}
|
||||
|
||||
private fun transformTabList(list: List<HomeTagInfo>): List<HomeTagInfo> {
|
||||
// val finalList = ArrayList<HomeTagInfo>()
|
||||
// finalList.add(
|
||||
// HomeTagInfo(
|
||||
// TAB_ID_RECOMMEND,
|
||||
// ResUtil.getString(R.string.home_fragment_homefragment_04),
|
||||
// 0
|
||||
// )
|
||||
// )
|
||||
// finalList.addAll(list)
|
||||
// finalList.add(
|
||||
// HomeTagInfo(
|
||||
// TAB_ID_ACCOMPANY,
|
||||
// ResUtil.getString(R.string.home_fragment_homefragment_07),
|
||||
// 0
|
||||
// )
|
||||
// )
|
||||
return list
|
||||
}
|
||||
|
||||
private fun loadTabList(list: List<HomeTagInfo>) {
|
||||
// 预防脏数据导致fragment复用问题
|
||||
val newList = list.distinctBy {
|
||||
it.id
|
||||
}
|
||||
val currentListId = tabList.joinToString { it.id.toString() }
|
||||
val newListId = newList.joinToString { it.id.toString() }
|
||||
if (currentListId == newListId) {
|
||||
return
|
||||
}
|
||||
tabList.clear()
|
||||
tabList.addAll(newList)
|
||||
tabTitleList.clear()
|
||||
tabTitleList.addAll(tabList.map { it.name })
|
||||
binding.magicIndicator.navigator.notifyDataSetChanged()
|
||||
binding.viewPager.adapter?.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
tabList.clear()
|
||||
tabTitleList.clear()
|
||||
}
|
||||
|
||||
override fun onItemSelect(position: Int, view: TextView?) {
|
||||
binding.viewPager.currentItem = position
|
||||
binding.viewPager.isUserInputEnabled = false
|
||||
}
|
||||
}
|
@@ -0,0 +1,274 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.application.IReportConstants
|
||||
import com.chwl.app.application.ReportManager
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.databinding.FragmentHomeRecommendBinding
|
||||
import com.chwl.app.home.HomeViewModel
|
||||
import com.chwl.app.home.adapter.HomeBannerAdapter
|
||||
import com.chwl.app.home.adapter.HomeRankViewFlipperAdapter
|
||||
import com.chwl.app.home.dialog.RecommendRoomDialog
|
||||
import com.chwl.app.support.FragmentVisibleStateHelper
|
||||
import com.chwl.app.ui.search.SearchActivity
|
||||
import com.chwl.app.ui.user.adapter.HomeRecommendIndicatorAdapter
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.app.ui.webview.CommonWebViewActivity
|
||||
import com.chwl.app.ui.widget.magicindicator.ViewPagerHelper
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
|
||||
import com.chwl.app.utils.CommonJumpHelper
|
||||
import com.chwl.core.DemoCache
|
||||
import com.chwl.core.home.bean.BannerInfo
|
||||
import com.chwl.core.home.bean.HomeTagInfo
|
||||
import com.chwl.library.utils.ListUtils
|
||||
import com.example.lib_utils.ktx.getDrawableById
|
||||
import com.zhpan.bannerview.BannerViewPager
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
首页
|
||||
*/
|
||||
class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBinding>(),
|
||||
View.OnClickListener {
|
||||
|
||||
private val tabList = mutableListOf<HomeTagInfo>()
|
||||
private val homeViewModel: HomeViewModel by activityViewModels()
|
||||
|
||||
override fun init() {
|
||||
initListener()
|
||||
initTab()
|
||||
initBanner()
|
||||
initResource()
|
||||
initRank()
|
||||
FragmentVisibleStateHelper(this).apply {
|
||||
start {
|
||||
onVisibleChanged(it, isFirstVisible)
|
||||
}
|
||||
}
|
||||
homeViewModel.getHomeTabInfo()
|
||||
homeViewModel.getBannerInfo()
|
||||
homeViewModel.getHomeResourceInfo()
|
||||
homeViewModel.getHomeRankList()
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
binding.refreshLayout.setOnRefreshListener {
|
||||
it.finishRefresh()
|
||||
childFragmentManager.fragments.forEach {
|
||||
(it as? OnRefreshListener)?.onRefresh()
|
||||
}
|
||||
homeViewModel.getHomeRankList()
|
||||
homeViewModel.getBannerInfo()
|
||||
if (binding.viewPager.adapter?.itemCount == 0) {
|
||||
homeViewModel.getHomeTabInfo()
|
||||
}
|
||||
}
|
||||
binding.refreshLayout.isEnableLoadmore = false
|
||||
binding.refreshLayout.isEnableOverScrollBounce = false
|
||||
}
|
||||
|
||||
private fun initResource() {
|
||||
homeViewModel.homeResourceLiveData.observe(this) {
|
||||
it?.let {
|
||||
val resourceViews = arrayOf(
|
||||
binding.ivResource0,
|
||||
binding.ivResource1
|
||||
)
|
||||
if (it.size != 2) {
|
||||
resourceViews.forEach {
|
||||
it.isVisible = false
|
||||
}
|
||||
binding.viewFlipper.isVisible = false
|
||||
return@observe
|
||||
}
|
||||
binding.viewFlipper.isVisible = true
|
||||
resourceViews.forEachIndexed { index, imageView ->
|
||||
imageView.isVisible = true
|
||||
if (index != 0) {
|
||||
imageView.load(it[index].icon)
|
||||
}
|
||||
imageView.setOnClickListener { _ ->
|
||||
when {
|
||||
it[index].resourceType == 5 -> {
|
||||
CommonWebViewActivity.start(context, it[index].resourceContent)
|
||||
}
|
||||
|
||||
else -> {
|
||||
dialogManager.showProgressDialog(mContext)
|
||||
homeViewModel.getResourceJumpInfo(it[index].id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lifecycleScope.launch {
|
||||
lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
homeViewModel.resourceJumpFlow.collectLatest {
|
||||
dialogManager.dismissDialog()
|
||||
it?.let {
|
||||
if (it.isPick) {
|
||||
AVRoomActivity.start(context, it.uid)
|
||||
} else {
|
||||
RecommendRoomDialog.newInstance(it).show(context)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initBanner() {
|
||||
val bannerView: BannerViewPager<BannerInfo?> =
|
||||
binding.bannerView as BannerViewPager<BannerInfo?>
|
||||
homeViewModel.bannerLiveData.observe(this) {
|
||||
it?.let {
|
||||
if (ListUtils.isListEmpty(it)) {
|
||||
bannerView.visibility = View.GONE
|
||||
return@let
|
||||
}
|
||||
bannerView.visibility = View.VISIBLE
|
||||
bannerView.adapter = HomeBannerAdapter()
|
||||
bannerView.post {
|
||||
binding.bannerView.setPageMargin(UIUtil.dip2px(mContext, 8.0))
|
||||
.setScrollDuration(800)
|
||||
.setOnPageClickListener { _: View?, position: Int ->
|
||||
CommonJumpHelper.bannerJump(context, it[position])
|
||||
}
|
||||
.create(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initRank() {
|
||||
val rankAdapter = HomeRankViewFlipperAdapter()
|
||||
binding.viewFlipper.adapter = rankAdapter
|
||||
binding.viewFlipper.setInAnimation(context, R.animator.home_rank_anim_in)
|
||||
binding.viewFlipper.setOutAnimation(context, R.animator.home_rank_anim_out)
|
||||
homeViewModel.homeRankListLiveData.observe(this) {
|
||||
rankAdapter.setNewData(it ?: emptyList())
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
when (v.id) {
|
||||
R.id.tv_search -> {
|
||||
//首页_搜索
|
||||
ReportManager.get().reportEvent(
|
||||
IReportConstants.MODULE_HOMEPAGE_CLICK, mapOf(
|
||||
Pair(IReportConstants.HOMEPAGE_TYPE, IReportConstants.ONE),
|
||||
Pair(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE)
|
||||
)
|
||||
)
|
||||
SearchActivity.start(activity)
|
||||
//为啥触发条件这么恶心
|
||||
if (DemoCache.readAnchorCardView() == 0) {
|
||||
DemoCache.saveAnchorCardView(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initTab() {
|
||||
binding.viewPager.adapter =
|
||||
object : FragmentStateAdapter(childFragmentManager, lifecycle) {
|
||||
override fun getItemId(position: Int): Long {
|
||||
return tabList[position].id.toLong()
|
||||
}
|
||||
|
||||
override fun containsItem(itemId: Long): Boolean {
|
||||
return tabList.firstOrNull { it.id.toLong() == itemId } != null
|
||||
}
|
||||
|
||||
override fun createFragment(position: Int): Fragment {
|
||||
val itemId = getItemId(position)
|
||||
return HomeTabRoomFragment.newInstance(itemId.toInt()).apply {
|
||||
this.autoRefreshOnVisible = true
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return tabList.size
|
||||
}
|
||||
}
|
||||
ViewPagerHelper.bind(binding.magicIndicator, binding.viewPager)
|
||||
homeViewModel.homeTabLiveData.observe(this) {
|
||||
loadTabList(transformTabList(it))
|
||||
}
|
||||
}
|
||||
|
||||
private fun resetTabIndicator(list: List<String>) {
|
||||
val commonNavigator = CommonNavigator(context)
|
||||
if (list.size <= 4) {
|
||||
commonNavigator.isAdjustMode = true
|
||||
}
|
||||
val magicIndicatorAdapter = HomeRecommendIndicatorAdapter(
|
||||
context,
|
||||
list
|
||||
)
|
||||
magicIndicatorAdapter.setOnItemSelectListener { position, _ ->
|
||||
binding.viewPager.currentItem = position
|
||||
}
|
||||
commonNavigator.adapter = magicIndicatorAdapter
|
||||
binding.magicIndicator.navigator = commonNavigator
|
||||
val titleContainer: LinearLayout = commonNavigator.titleContainer // must after setNavigator
|
||||
titleContainer.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE
|
||||
titleContainer.dividerPadding = resources.getDimensionPixelOffset(R.dimen.dp_15)
|
||||
titleContainer.dividerDrawable = getDrawableById(R.drawable.home_recommend_tab_splitter)
|
||||
binding.magicIndicator.onPageSelected(binding.viewPager.currentItem)
|
||||
}
|
||||
|
||||
private fun transformTabList(list: List<HomeTagInfo>): List<HomeTagInfo> {
|
||||
return list
|
||||
}
|
||||
|
||||
private fun loadTabList(list: List<HomeTagInfo>) {
|
||||
// 预防脏数据导致fragment复用问题
|
||||
val newList = list.distinctBy {
|
||||
it.id
|
||||
}
|
||||
val currentListId = tabList.joinToString { it.id.toString() }
|
||||
val newListId = newList.joinToString { it.id.toString() }
|
||||
if (currentListId == newListId) {
|
||||
return
|
||||
}
|
||||
tabList.clear()
|
||||
tabList.addAll(newList)
|
||||
binding.viewPager.adapter?.notifyDataSetChanged()
|
||||
resetTabIndicator(tabList.map { it.name })
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
tabList.clear()
|
||||
}
|
||||
|
||||
private fun onVisibleChanged(isVisible: Boolean, isFirstVisible: Boolean) {
|
||||
if (isVisible) {
|
||||
if (!isFirstVisible) {
|
||||
if (homeViewModel.homeResourceLiveData.value == null) {
|
||||
homeViewModel.getHomeResourceInfo()
|
||||
}
|
||||
homeViewModel.getHomeRankList()
|
||||
}
|
||||
binding.viewFlipper.startFlipping()
|
||||
} else {
|
||||
binding.viewFlipper.stopFlipping()
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,102 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.view.View
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.home.adapter.HomeRoomAdapter
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.HomeTabRoomFragmentBinding
|
||||
import com.chwl.app.home.HomeMeViewModel
|
||||
import com.chwl.app.support.FragmentVisibleStateHelper
|
||||
|
||||
/**
|
||||
* 收藏
|
||||
*/
|
||||
class HomeRoomCollectListFragment : BaseViewBindingFragment<HomeTabRoomFragmentBinding>(),
|
||||
SwipeRefreshLayout.OnRefreshListener {
|
||||
|
||||
private lateinit var adapter: HomeRoomAdapter
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
|
||||
|
||||
private val viewModel: HomeMeViewModel by viewModels()
|
||||
|
||||
private var pageNum = 1
|
||||
private val pageSize = 50
|
||||
|
||||
companion object {
|
||||
fun newInstance(): HomeRoomCollectListFragment {
|
||||
return HomeRoomCollectListFragment()
|
||||
}
|
||||
}
|
||||
|
||||
override fun init() {
|
||||
initListView()
|
||||
FragmentVisibleStateHelper(this).apply {
|
||||
start {
|
||||
if (it && !isFirstVisible) {
|
||||
loadData(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initListView() {
|
||||
adapter = HomeRoomAdapter()
|
||||
adapter.onItemClickListener =
|
||||
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
|
||||
val homePlayInfo: HomeRoomInfo? = adapter.getItem(position)
|
||||
if (homePlayInfo != null) {
|
||||
//首页_房间派对
|
||||
AVRoomActivity.start(mContext, homePlayInfo.uid)
|
||||
}
|
||||
}
|
||||
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setPageSize(pageSize)
|
||||
.setAdapter(adapter)
|
||||
.setRecyclerView(binding.mRecyclerRoom)
|
||||
.setEmptyView(
|
||||
EmptyViewHelper.createEmptyTextViewHeight(
|
||||
context,
|
||||
getString(R.string.data_empty)
|
||||
)
|
||||
)
|
||||
.setLayoutManager(LinearLayoutManager(mContext))
|
||||
.build()
|
||||
|
||||
adapter.setOnLoadMoreListener({
|
||||
loadData(false)
|
||||
}, binding.mRecyclerRoom)
|
||||
|
||||
viewModel.collectRoomListLiveData.observe(this) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLazyLoad() {
|
||||
super.onLazyLoad()
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
private fun loadData(isRefresh: Boolean) {
|
||||
if (isRefresh) {
|
||||
pageNum = 1
|
||||
} else {
|
||||
pageNum++
|
||||
}
|
||||
viewModel.getHomeCollectList(pageNum, pageSize)
|
||||
}
|
||||
|
||||
override fun onRefresh() {
|
||||
if (isResumed) {
|
||||
loadData(true)
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,102 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.view.View
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.home.adapter.HomeRoomAdapter
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.HomeTabRoomFragmentBinding
|
||||
import com.chwl.app.home.HomeMeViewModel
|
||||
import com.chwl.app.support.FragmentVisibleStateHelper
|
||||
|
||||
/**
|
||||
* 最近访问记录
|
||||
*/
|
||||
class HomeRoomHistoryListFragment : BaseViewBindingFragment<HomeTabRoomFragmentBinding>(),
|
||||
SwipeRefreshLayout.OnRefreshListener {
|
||||
|
||||
private lateinit var adapter: HomeRoomAdapter
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
|
||||
|
||||
private val viewModel: HomeMeViewModel by viewModels()
|
||||
|
||||
private var pageNum = 1
|
||||
private val pageSize = 50
|
||||
|
||||
companion object {
|
||||
fun newInstance(): HomeRoomHistoryListFragment {
|
||||
return HomeRoomHistoryListFragment()
|
||||
}
|
||||
}
|
||||
|
||||
override fun init() {
|
||||
initListView()
|
||||
FragmentVisibleStateHelper(this).apply {
|
||||
start {
|
||||
if (it && !isFirstVisible) {
|
||||
loadData(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initListView() {
|
||||
adapter = HomeRoomAdapter()
|
||||
adapter.onItemClickListener =
|
||||
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
|
||||
val homePlayInfo: HomeRoomInfo? = adapter.getItem(position)
|
||||
if (homePlayInfo != null) {
|
||||
//首页_房间派对
|
||||
AVRoomActivity.start(mContext, homePlayInfo.uid)
|
||||
}
|
||||
}
|
||||
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setPageSize(pageSize)
|
||||
.setAdapter(adapter)
|
||||
.setRecyclerView(binding.mRecyclerRoom)
|
||||
.setEmptyView(
|
||||
EmptyViewHelper.createEmptyTextViewHeight(
|
||||
context,
|
||||
getString(R.string.data_empty)
|
||||
)
|
||||
)
|
||||
.setLayoutManager(LinearLayoutManager(mContext))
|
||||
.build()
|
||||
|
||||
adapter.setOnLoadMoreListener({
|
||||
loadData(false)
|
||||
}, binding.mRecyclerRoom)
|
||||
|
||||
viewModel.historyRoomListLiveData.observe(this) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLazyLoad() {
|
||||
super.onLazyLoad()
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
private fun loadData(isRefresh: Boolean) {
|
||||
if (isRefresh) {
|
||||
pageNum = 1
|
||||
} else {
|
||||
pageNum++
|
||||
}
|
||||
viewModel.getHomeHistoryList(pageNum, pageSize)
|
||||
}
|
||||
|
||||
override fun onRefresh() {
|
||||
if (isResumed) {
|
||||
loadData(true)
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,128 +0,0 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.home.HomeViewModel
|
||||
import com.chwl.app.home.adapter.HomeHotAdapter
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.app.application.IReportConstants
|
||||
import com.chwl.app.application.ReportManager
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.HomeTabFragmentBinding
|
||||
import com.chwl.core.home.event.RefreshHomeDataEvent
|
||||
import com.chwl.core.room.event.RoomShieldEvent
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
/**
|
||||
* Peko首页
|
||||
*/
|
||||
class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>() {
|
||||
|
||||
private lateinit var roomHotAdapter: HomeHotAdapter
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
|
||||
|
||||
private val homeViewModel: HomeViewModel by viewModels()
|
||||
|
||||
//是否需要刷新接口进行屏蔽房间操作
|
||||
private var isShield = false
|
||||
|
||||
private var pageNum = 1
|
||||
private var tabId: Int? = null
|
||||
companion object {
|
||||
fun newInstance(tabId: Int): HomeTabFragment {
|
||||
return HomeTabFragment().apply {
|
||||
arguments = Bundle().apply {
|
||||
putInt("tabId", tabId)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
override fun init() {
|
||||
tabId = arguments?.getInt("tabId")
|
||||
initHotRoomTab()
|
||||
}
|
||||
|
||||
private fun initHotRoomTab() {
|
||||
roomHotAdapter = HomeHotAdapter()
|
||||
roomHotAdapter.onItemClickListener =
|
||||
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
|
||||
val homePlayInfo: HomeRoomInfo? = roomHotAdapter.getItem(position)
|
||||
if (homePlayInfo != null) {
|
||||
//首页_房间派对
|
||||
AVRoomActivity.start(mContext, homePlayInfo.uid)
|
||||
}
|
||||
}
|
||||
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setPageSize(20)
|
||||
.setAdapter(roomHotAdapter)
|
||||
.setRecyclerView(binding.mRecyclerRoom)
|
||||
.setEmptyView(EmptyViewHelper.createEmptyTextViewHeight(context, getString(R.string.data_empty)))
|
||||
.setLayoutManager(LinearLayoutManager(mContext))
|
||||
.build()
|
||||
|
||||
roomHotAdapter.setOnLoadMoreListener({
|
||||
loadData(false)
|
||||
}, binding.mRecyclerRoom)
|
||||
|
||||
homeViewModel.tabHomeLiveData.observe(this) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLazyLoad() {
|
||||
super.onLazyLoad()
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (isShield) {
|
||||
loadData(true)
|
||||
isShield = false
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadData(isRefresh: Boolean) {
|
||||
if (isRefresh) {
|
||||
pageNum = 1
|
||||
} else {
|
||||
pageNum++
|
||||
}
|
||||
homeViewModel.getHomeTabName(tabId ?: 0, pageNum)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
|
||||
if (isResumed) {
|
||||
loadData(true)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
EventBus.getDefault().register(this)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRoomShieldEvent(event: RoomShieldEvent?) {
|
||||
isShield = true
|
||||
}
|
||||
|
||||
}
|
@@ -1,220 +0,0 @@
|
||||
package com.chwl.app.home.fragment;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.os.Bundle;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.trello.rxlifecycle3.android.FragmentEvent;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.application.IReportConstants;
|
||||
import com.chwl.app.application.ReportManager;
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity;
|
||||
import com.chwl.app.base.BaseFragment;
|
||||
import com.chwl.app.home.adapter.HomeTopAdapter;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.chwl.core.home.bean.HomeTabMapInfo;
|
||||
import com.chwl.core.home.event.RefreshHomeDataEvent;
|
||||
import com.chwl.core.home.model.GameHomeModel;
|
||||
import com.chwl.core.room.event.RoomShieldEvent;
|
||||
import com.chwl.core.utils.net.RxHelper;
|
||||
import com.chwl.library.utils.ListUtils;
|
||||
import com.zhpan.bannerview.BannerViewPager;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class HomeTabHomeFragment extends BaseFragment {
|
||||
private static final Comparator<HomeTabMapInfo> comp = (o1, o2) -> {
|
||||
int seq = o1.getSeq() - o2.getSeq();
|
||||
return Integer.compare(seq, 0);
|
||||
};
|
||||
|
||||
private BannerViewPager<HomeTabMapInfo> mBanner;
|
||||
|
||||
//是否需要刷新接口进行屏蔽房间操作
|
||||
private boolean isShield = false;
|
||||
|
||||
public static HomeTabHomeFragment newInstance() {
|
||||
HomeTabHomeFragment fragment = new HomeTabHomeFragment();
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRootLayoutId() {
|
||||
return R.layout.fragment_home_room_tab;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFindViews() {
|
||||
super.onFindViews();
|
||||
mBanner = mView.findViewById(R.id.mBanner);
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求数据
|
||||
*/
|
||||
@SuppressLint("CheckResult")
|
||||
private void getData() {
|
||||
GameHomeModel.get()
|
||||
.getHomeTabHome()
|
||||
.compose(RxHelper.handleSchedulers())
|
||||
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
|
||||
.subscribe((serviceResult, throwable) -> {
|
||||
if (throwable == null) {
|
||||
if (ListUtils.isListEmpty(serviceResult)) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<HomeTabMapInfo> roomsList = new ArrayList<>(serviceResult);//未处理的数
|
||||
List<HomeTabMapInfo> randomList = new ArrayList<>();//不是置顶的
|
||||
List<HomeTabMapInfo> finalList = new ArrayList<>();//最终的6条数据
|
||||
|
||||
for (int i = 0; i < roomsList.size(); i++) {
|
||||
roomsList.get(i).setItemType(HomeTabMapInfo.TYPE_NORMAL);//对原始数据设置type
|
||||
}
|
||||
for (int i = 0; i < roomsList.size(); i++) {
|
||||
if (roomsList.get(i).isIsTop()) {
|
||||
finalList.add(roomsList.get(i));
|
||||
} else {
|
||||
randomList.add(roomsList.get(i));
|
||||
}
|
||||
}
|
||||
sortSeqRoom(finalList);
|
||||
refreshRoomData(finalList, randomList);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新数据
|
||||
*/
|
||||
private void refreshRoomData(List<HomeTabMapInfo> finalList, List<HomeTabMapInfo> randomList) {
|
||||
List<HomeTabMapInfo> finalList1 = new ArrayList<>(finalList);//最终的6条数据
|
||||
List<HomeTabMapInfo> randomList1 = new ArrayList<>(randomList);//不是置顶的
|
||||
mBanner.setAdapter(new HomeTopAdapter());
|
||||
mBanner.post(() -> {
|
||||
int width = UIUtil.getScreenWidth(mContext) - (UIUtil.dip2px(mContext, 10) * 3);
|
||||
int revealWidth = width / 3;
|
||||
ViewGroup.LayoutParams bannerLayoutParams = mBanner.getLayoutParams();
|
||||
bannerLayoutParams.height = revealWidth + UIUtil.dip2px(mContext, 32);
|
||||
mBanner.setLayoutParams(bannerLayoutParams);
|
||||
setupBanner(
|
||||
revealWidth,
|
||||
revealWidth,
|
||||
getConvertData(finalList1, randomList1)
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
private void setupBanner(
|
||||
int leftRevealWidth,
|
||||
int rightRevealWidth,
|
||||
List<HomeTabMapInfo> list
|
||||
) {
|
||||
mBanner.setPageMargin(UIUtil.dip2px(mContext, 10))
|
||||
.setScrollDuration(800)
|
||||
.setRevealWidth(leftRevealWidth, rightRevealWidth)
|
||||
.setOnPageClickListener((clickedView, position) -> {
|
||||
//首页_热门房间
|
||||
HashMap<String, Object> map = new HashMap<>(3);
|
||||
map.put(IReportConstants.HOMEPAGE_TYPE, IReportConstants.FIVE);
|
||||
map.put(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE);
|
||||
ReportManager.get().reportEvent(IReportConstants.MODULE_HOMEPAGE_CLICK, map);
|
||||
AVRoomActivity.startForFromType(mContext, list.get(position).getRoomUid(), AVRoomActivity.FROM_TYPE_RECOMMEND);
|
||||
})
|
||||
.create(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转化房间数组,不足6的加上虚位以待
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
private List<HomeTabMapInfo> getConvertData(List<HomeTabMapInfo> finalList, List<HomeTabMapInfo> randomList) {
|
||||
List<HomeTabMapInfo> finalList1 = new ArrayList<>(finalList);//最终的6条数据
|
||||
List<HomeTabMapInfo> randomList1 = new ArrayList<>(randomList);//不是置顶的
|
||||
int ROOM_COUNT = 6;//首页显示6条数据
|
||||
randomList1 = randomList(randomList1);
|
||||
finalList1.addAll(randomList1);
|
||||
|
||||
if (finalList1.size() >= ROOM_COUNT) {
|
||||
finalList1 = finalList1.subList(0, ROOM_COUNT);
|
||||
}
|
||||
return finalList1;
|
||||
}
|
||||
|
||||
/**
|
||||
* **************************** 排序 ***********************************
|
||||
*/
|
||||
private void sortSeqRoom(List<HomeTabMapInfo> list) {
|
||||
if (list.size() == 0) {
|
||||
return;
|
||||
}
|
||||
Collections.sort(list, comp);
|
||||
}
|
||||
|
||||
private List<HomeTabMapInfo> randomList(List<HomeTabMapInfo> sourceList) {
|
||||
if (sourceList == null || sourceList.size() == 0) {
|
||||
return sourceList;
|
||||
}
|
||||
ArrayList randomList = new ArrayList(sourceList.size());
|
||||
do {
|
||||
int randomIndex = Math.abs(new Random().nextInt(sourceList.size()));
|
||||
randomList.add(sourceList.remove(randomIndex));
|
||||
} while (sourceList.size() > 0);
|
||||
return randomList;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void initiate() {
|
||||
getData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if(isShield){
|
||||
getData();
|
||||
isShield = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onRefreshHomeDataEvent(RefreshHomeDataEvent event) {
|
||||
if (isResumed()) getData();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onRoomShieldEvent(RoomShieldEvent event){
|
||||
isShield = true;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,113 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.home.HomeViewModel
|
||||
import com.chwl.app.home.adapter.HomeRoomAdapter
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.HomeTabRoomFragmentBinding
|
||||
import com.chwl.app.support.FragmentVisibleStateHelper
|
||||
|
||||
/**
|
||||
* 首页-房间列表
|
||||
*/
|
||||
class HomeTabRoomFragment : BaseViewBindingFragment<HomeTabRoomFragmentBinding>(),
|
||||
SwipeRefreshLayout.OnRefreshListener {
|
||||
|
||||
private lateinit var adapter: HomeRoomAdapter
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
|
||||
|
||||
private val homeViewModel: HomeViewModel by viewModels()
|
||||
|
||||
var autoRefreshOnVisible = false
|
||||
|
||||
private var pageNum = 1
|
||||
private val pageSize = 50
|
||||
private var tabId: Int? = null
|
||||
|
||||
companion object {
|
||||
fun newInstance(tabId: Int): HomeTabRoomFragment {
|
||||
return HomeTabRoomFragment().apply {
|
||||
arguments = Bundle().apply {
|
||||
putInt("tabId", tabId)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun init() {
|
||||
tabId = arguments?.getInt("tabId")
|
||||
initListView()
|
||||
if (autoRefreshOnVisible) {
|
||||
FragmentVisibleStateHelper(this).apply {
|
||||
start {
|
||||
if (it && !isFirstVisible) {
|
||||
loadData(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initListView() {
|
||||
adapter = HomeRoomAdapter()
|
||||
adapter.onItemClickListener =
|
||||
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
|
||||
val homePlayInfo: HomeRoomInfo? = adapter.getItem(position)
|
||||
if (homePlayInfo != null) {
|
||||
//首页_房间派对
|
||||
AVRoomActivity.start(mContext, homePlayInfo.uid)
|
||||
}
|
||||
}
|
||||
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setPageSize(pageSize)
|
||||
.setAdapter(adapter)
|
||||
.setRecyclerView(binding.mRecyclerRoom)
|
||||
.setEmptyView(
|
||||
EmptyViewHelper.createEmptyTextViewHeight(
|
||||
context,
|
||||
getString(R.string.data_empty)
|
||||
)
|
||||
)
|
||||
.setLayoutManager(LinearLayoutManager(mContext))
|
||||
.build()
|
||||
|
||||
adapter.setOnLoadMoreListener({
|
||||
loadData(false)
|
||||
}, binding.mRecyclerRoom)
|
||||
|
||||
homeViewModel.tabRoomListLiveData.observe(this) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLazyLoad() {
|
||||
super.onLazyLoad()
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
private fun loadData(isRefresh: Boolean) {
|
||||
if (isRefresh) {
|
||||
pageNum = 1
|
||||
} else {
|
||||
pageNum++
|
||||
}
|
||||
homeViewModel.getTabRoomList(tabId ?: 0, pageNum, pageSize)
|
||||
}
|
||||
|
||||
override fun onRefresh() {
|
||||
if (isResumed) {
|
||||
loadData(true)
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,114 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.adapter.CommonVPAdapter
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.databinding.HomeMeFragmentBinding
|
||||
import com.chwl.app.home.HomeMeViewModel
|
||||
import com.chwl.app.home.helper.OpenRoomHelper
|
||||
import com.chwl.app.support.FragmentVisibleStateHelper
|
||||
import com.chwl.app.ui.user.adapter.HomeRecommendIndicatorAdapter
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.app.ui.utils.loadAvatar
|
||||
import com.chwl.app.ui.utils.loadImage
|
||||
import com.chwl.app.ui.widget.magicindicator.ViewPagerHelper
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
|
||||
import com.chwl.core.home.bean.HomeRoomCardInfo
|
||||
import com.chwl.core.home.bean.MicUsersBean
|
||||
import com.example.lib_utils.ktx.singleClick
|
||||
|
||||
/**
|
||||
首页-我的
|
||||
*/
|
||||
class HomeWithMeFragment : BaseViewBindingFragment<HomeMeFragmentBinding>() {
|
||||
|
||||
private val viewModel: HomeMeViewModel by activityViewModels()
|
||||
|
||||
override fun init() {
|
||||
initListener()
|
||||
initTab()
|
||||
initObserve()
|
||||
FragmentVisibleStateHelper(this).start {
|
||||
if (it) {
|
||||
viewModel.getMyRoomInfo()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
binding.refreshLayout.setOnRefreshListener {
|
||||
it.finishRefresh()
|
||||
viewModel.getMyRoomInfo()
|
||||
childFragmentManager.fragments.forEach {
|
||||
(it as? SwipeRefreshLayout.OnRefreshListener)?.onRefresh()
|
||||
}
|
||||
}
|
||||
binding.refreshLayout.isEnableLoadmore = false
|
||||
binding.refreshLayout.isEnableOverScrollBounce = false
|
||||
binding.layoutRoomCard.singleClick {
|
||||
OpenRoomHelper.openRoom(baseActivity)
|
||||
}
|
||||
}
|
||||
|
||||
private fun initTab() {
|
||||
val tabList = listOf(getString(R.string.lately), getString(R.string.collect))
|
||||
val fragmentList = listOf(HomeRoomHistoryListFragment(), HomeRoomCollectListFragment())
|
||||
val commonNavigator = CommonNavigator(context)
|
||||
val magicIndicatorAdapter = HomeRecommendIndicatorAdapter(
|
||||
context,
|
||||
tabList
|
||||
)
|
||||
magicIndicatorAdapter.setOnItemSelectListener { position, _ ->
|
||||
binding.viewPager.currentItem = position
|
||||
}
|
||||
commonNavigator.adapter = magicIndicatorAdapter
|
||||
binding.magicIndicator.navigator = commonNavigator
|
||||
binding.magicIndicator.onPageSelected(binding.viewPager.currentItem)
|
||||
binding.viewPager.offscreenPageLimit = fragmentList.size
|
||||
binding.viewPager.adapter = CommonVPAdapter(
|
||||
childFragmentManager,
|
||||
lifecycle,
|
||||
fragmentList
|
||||
)
|
||||
ViewPagerHelper.bind(binding.magicIndicator, binding.viewPager)
|
||||
}
|
||||
|
||||
private fun initObserve() {
|
||||
viewModel.roomInfoLiveData.observe(this) {
|
||||
updateRoomInfo(it)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateRoomInfo(roomInfo: HomeRoomCardInfo?) {
|
||||
binding.tvRoomName.text = roomInfo?.title
|
||||
binding.tvRoomTopic.text = roomInfo?.roomDesc
|
||||
binding.ivRoomCover.load(roomInfo?.avatar ?: "")
|
||||
binding.tvOnlineNumber.text = roomInfo?.onlineNum?.toString() ?: "0"
|
||||
loadRoomUsers(roomInfo?.micUsers)
|
||||
}
|
||||
|
||||
private fun loadRoomUsers(list: List<MicUsersBean>?) {
|
||||
val avatarViewList = arrayOf(
|
||||
binding.ivRoomUser0,
|
||||
binding.ivRoomUser1,
|
||||
binding.ivRoomUser2,
|
||||
binding.ivRoomUser3,
|
||||
binding.ivRoomUser4
|
||||
)
|
||||
avatarViewList.forEachIndexed { index, imageView ->
|
||||
val item = list?.getOrNull(index)
|
||||
if (item == null) {
|
||||
imageView.setImageDrawable(null)
|
||||
imageView.isGone = true
|
||||
} else {
|
||||
imageView.loadAvatar(item.avatar)
|
||||
imageView.isVisible = true
|
||||
}
|
||||
}
|
||||
binding.layoutRoomUserList.isGone = list.isNullOrEmpty()
|
||||
}
|
||||
}
|
@@ -29,7 +29,6 @@ import com.chwl.app.module_hall.hall.activity.ModuleClanActivity
|
||||
import com.chwl.app.module_hall.hall.activity.ModuleHallActivity
|
||||
import com.chwl.app.support.FragmentVisibleStateHelper
|
||||
import com.chwl.app.ui.im.RouterHandler
|
||||
import com.chwl.app.ui.pay.ChargeActivity
|
||||
import com.chwl.app.ui.relation.AttentionListActivity
|
||||
import com.chwl.app.ui.relation.FansListActivity
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
@@ -39,7 +38,6 @@ import com.chwl.app.view.GenderAgeTextView
|
||||
import com.chwl.app.vip.VipMainActivity
|
||||
import com.chwl.app.vip.VipViewModel
|
||||
import com.chwl.core.auth.AuthModel
|
||||
import com.chwl.core.im.custom.bean.RouterType
|
||||
import com.chwl.core.initial.InitialModel
|
||||
import com.chwl.core.level.UserLevelVo
|
||||
import com.chwl.core.manager.IMNetEaseManager
|
||||
@@ -100,9 +98,11 @@ class MeFragment : BaseFragment(), View.OnClickListener {
|
||||
override fun initiate() {
|
||||
EventBus.getDefault().register(this)
|
||||
|
||||
mBinding.rvMenu.adapter = mCenterAdapter
|
||||
|
||||
mCenterAdapter.setOnItemClickListener { adapter, view, position ->
|
||||
mCenterAdapter.getItem(position)?.let {
|
||||
RouterHandler.handle(mContext, it.skipType, it.centerUrl)
|
||||
RouterHandler.handle(mContext, it.skipType?:-1, it.centerUrl)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ class MeFragment : BaseFragment(), View.OnClickListener {
|
||||
}
|
||||
)
|
||||
|
||||
meViewModel.meCenterInfoLiveData.observe(viewLifecycleOwner) {
|
||||
meViewModel.menuListLiveData.observe(viewLifecycleOwner) {
|
||||
setCenterData(it)
|
||||
}
|
||||
|
||||
@@ -136,20 +136,20 @@ class MeFragment : BaseFragment(), View.OnClickListener {
|
||||
loadVipInfo(it)
|
||||
}
|
||||
|
||||
FragmentVisibleStateHelper(this) {
|
||||
onVisibleChanged(it)
|
||||
FragmentVisibleStateHelper(this).apply {
|
||||
start {
|
||||
onVisibleChanged(it, isFirstVisible)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun setCenterData(list: List<MeCenterInfo>?) {
|
||||
if (list.isNullOrEmpty()) {
|
||||
mBinding.rvMenu.visibility = View.GONE
|
||||
mBinding.layoutMenu.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
mBinding.rvMenu.visibility = View.VISIBLE
|
||||
mBinding.rvMenu.adapter = mCenterAdapter
|
||||
mCenterAdapter.setNewData(list)
|
||||
mBinding.layoutMenu.visibility = View.VISIBLE
|
||||
mCenterAdapter.updateData(list)
|
||||
}
|
||||
|
||||
private fun onGetRelationShipEvent(event: RelationShipEvent) {
|
||||
@@ -201,33 +201,9 @@ class MeFragment : BaseFragment(), View.OnClickListener {
|
||||
|| levelSep >= (initInfo?.giveDiamondExperLevel
|
||||
?: 0) || levelSep >= (initInfo?.giveGiftExperLevel ?: 0)
|
||||
) {
|
||||
reloadMenuForDonation(true)
|
||||
meViewModel.updateDonationMenuVisible(true)
|
||||
} else {
|
||||
reloadMenuForDonation(false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun reloadMenuForDonation(isVisible: Boolean) {
|
||||
meViewModel.donationMenuVisible = isVisible
|
||||
val list = mCenterAdapter.data
|
||||
val itemIndex = list.indexOfFirst {
|
||||
it.skipType == RouterType.USER_DONATION
|
||||
}
|
||||
if (isVisible) {
|
||||
if (itemIndex == -1) {
|
||||
val index = list.indexOfFirst {
|
||||
it.skipType == RouterType.MY_REVENUE
|
||||
}
|
||||
if (index == -1) {
|
||||
mCenterAdapter.addData(meViewModel.donationMenu)
|
||||
} else {
|
||||
mCenterAdapter.addData(index, meViewModel.donationMenu)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (itemIndex != -1) {
|
||||
mCenterAdapter.remove(itemIndex)
|
||||
}
|
||||
meViewModel.updateDonationMenuVisible(false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -267,12 +243,12 @@ class MeFragment : BaseFragment(), View.OnClickListener {
|
||||
fun onLoginUserInfoUpdateEvent(event: LoginUserInfoUpdateEvent?) {
|
||||
setUserData()
|
||||
vipViewModel.getVipPageInfo()
|
||||
meViewModel.refreshData()
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
private fun reloadClanInfo(){
|
||||
HallDataManager.get().requestUserClanInfo(AuthModel.get().currentUid).compose(bindToLifecycle())
|
||||
private fun reloadClanInfo() {
|
||||
HallDataManager.get().requestUserClanInfo(AuthModel.get().currentUid)
|
||||
.compose(bindToLifecycle())
|
||||
.subscribe { info: UserClanInfo? ->
|
||||
val clanHallInfo = info?.asClanHall()
|
||||
if (clanHallInfo != null) {
|
||||
@@ -321,7 +297,7 @@ class MeFragment : BaseFragment(), View.OnClickListener {
|
||||
} else {
|
||||
mBinding.tvGuild.setText(R.string.me_join_guild)
|
||||
mBinding.ivGuild.singleClick {
|
||||
CommonWebViewActivity.start(context, familyInfo.getFullFamilyListUrl())
|
||||
CommonWebViewActivity.start(context, familyInfo.getFullFamilyListUrl())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -396,9 +372,10 @@ class MeFragment : BaseFragment(), View.OnClickListener {
|
||||
private fun loadVipInfo(data: VipInfo?) {
|
||||
}
|
||||
|
||||
private fun onVisibleChanged(isVisible: Boolean) {
|
||||
private fun onVisibleChanged(isVisible: Boolean, isFirstVisible: Boolean) {
|
||||
if (isVisible) {
|
||||
reloadClanInfo()
|
||||
meViewModel.requestMenuList()
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,144 +0,0 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.widget.TextView
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import com.coorchice.library.utils.LogUtils
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.adapter.CommonVPAdapter
|
||||
import com.chwl.app.avroom.adapter.RoomVPAdapter
|
||||
import com.chwl.app.base.BaseFragment
|
||||
import com.chwl.app.databinding.FragmentPartyBinding
|
||||
import com.chwl.app.home.HomeViewModel
|
||||
import com.chwl.app.home.adapter.PartyMagicIndicatorAdapter
|
||||
import com.chwl.app.ui.widget.magicindicator.ViewPagerHelper
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
|
||||
import com.chwl.core.home.bean.HomeTagInfo
|
||||
import com.chwl.core.home.event.RefreshHomeDataEvent
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
/**
|
||||
首页
|
||||
*/
|
||||
class PartyFragment : BaseFragment(), PartyMagicIndicatorAdapter.OnItemSelectListener {
|
||||
private lateinit var mBinding: FragmentPartyBinding
|
||||
private val mFragments: ArrayList<Fragment> = ArrayList()
|
||||
private val mTabInfoList: ArrayList<CharSequence> = ArrayList()
|
||||
private val homeViewModel: HomeViewModel by activityViewModels()
|
||||
private var currentIndex = 1
|
||||
|
||||
companion object {
|
||||
fun newInstance(): PartyFragment {
|
||||
val args = Bundle()
|
||||
val fragment = PartyFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
override fun getRootLayoutId(): Int {
|
||||
return R.layout.fragment_party
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
EventBus.getDefault().register(this)
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
override fun onFindViews() {
|
||||
mBinding = DataBindingUtil.bind(mView)!!
|
||||
}
|
||||
|
||||
override fun initiate() {
|
||||
homeViewModel.tagLiveData.observe(this) {
|
||||
it?.let {
|
||||
onGetHomeTagSuccess(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
homeViewModel.getTagInfo()
|
||||
}
|
||||
|
||||
private fun onGetHomeTagSuccess(info: List<HomeTagInfo>) {
|
||||
var changed = false
|
||||
val oldTabInfoList: List<CharSequence> = ArrayList<CharSequence>(mTabInfoList)
|
||||
for (tagInfo in info) {
|
||||
if (!oldTabInfoList.contains(tagInfo.name)) {
|
||||
changed = true
|
||||
break
|
||||
}
|
||||
}
|
||||
//只有HomeTagInfo发生改变才刷新数据
|
||||
if (changed) {
|
||||
LogUtils.e("$changed:oldTabInfoList")
|
||||
mTabInfoList.clear()
|
||||
mFragments.clear()
|
||||
for (i in info.indices) {
|
||||
//过滤对象是空和没有标签名同时也没有子标签的情况
|
||||
var title: CharSequence?
|
||||
var fragment: Fragment?
|
||||
var name = info[i].name
|
||||
if (name != null) {
|
||||
name = name.trim { it <= ' ' }
|
||||
}
|
||||
title = name
|
||||
mTabInfoList.add(title)
|
||||
val tabId: Int = info[i].id
|
||||
fragment = when (title) {
|
||||
ResUtil.getString(R.string.home_fragment_partyfragment_01) -> {
|
||||
RoomLikeFragment.newInstance()
|
||||
}
|
||||
ResUtil.getString(R.string.home_fragment_partyfragment_02) -> {
|
||||
RoomGameFragment.newInstance()
|
||||
}
|
||||
else -> {
|
||||
RoomCommonFragment.newInstance(tabId)
|
||||
}
|
||||
}
|
||||
mFragments.add(fragment)
|
||||
}
|
||||
val commonNavigator = CommonNavigator(context)
|
||||
commonNavigator.setTitleWrapContent(false)
|
||||
commonNavigator.titleMargin = ScreenUtil.dip2px(2.0F)
|
||||
commonNavigator.setTitleGravity(Gravity.CENTER_VERTICAL)
|
||||
val magicIndicatorAdapter = PartyMagicIndicatorAdapter(mTabInfoList)
|
||||
magicIndicatorAdapter.textSize = 14
|
||||
magicIndicatorAdapter.setOnItemSelectListener(this)
|
||||
commonNavigator.adapter = magicIndicatorAdapter
|
||||
mBinding.magicIndicator.navigator = commonNavigator
|
||||
mBinding.viewPager.offscreenPageLimit = 2
|
||||
mBinding.viewPager.adapter = CommonVPAdapter(
|
||||
childFragmentManager, lifecycle,
|
||||
mFragments
|
||||
)
|
||||
ViewPagerHelper.bind(mBinding.magicIndicator, mBinding.viewPager)
|
||||
onItemSelect(currentIndex, null)
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
|
||||
if (isResumed) homeViewModel.getTagInfo()
|
||||
}
|
||||
|
||||
override fun onItemSelect(position: Int, view: TextView?) {
|
||||
currentIndex = position
|
||||
mBinding.viewPager.currentItem = currentIndex
|
||||
}
|
||||
|
||||
}
|
@@ -1,111 +0,0 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.application.IReportConstants
|
||||
import com.chwl.app.application.ReportManager
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.FragmentRecommendBinding
|
||||
import com.chwl.app.home.HomeViewModel
|
||||
import com.chwl.app.home.adapter.HomeHotAdapter
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.home.event.RefreshHomeDataEvent
|
||||
import com.chwl.core.room.event.RoomShieldEvent
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
/**
|
||||
首页
|
||||
*/
|
||||
class RecommendFragment : BaseViewBindingFragment<FragmentRecommendBinding>() {
|
||||
|
||||
private lateinit var roomHotAdapter: HomeHotAdapter
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
|
||||
|
||||
private val homeViewModel: HomeViewModel by activityViewModels()
|
||||
|
||||
//是否需要刷新接口进行屏蔽房间操作
|
||||
private var isShield = false
|
||||
|
||||
override fun init() {
|
||||
initHotRoomTab()
|
||||
}
|
||||
|
||||
private fun initHotRoomTab() {
|
||||
roomHotAdapter = HomeHotAdapter()
|
||||
roomHotAdapter.onItemClickListener =
|
||||
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
|
||||
val homePlayInfo: HomeRoomInfo? = roomHotAdapter.getItem(position)
|
||||
if (homePlayInfo != null) {
|
||||
//首页_房间派对
|
||||
ReportManager.get().reportEvent(
|
||||
IReportConstants.MODULE_HOMEPAGE_CLICK, mapOf(
|
||||
Pair(IReportConstants.HOMEPAGE_TYPE, IReportConstants.TEN),
|
||||
Pair(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE)
|
||||
)
|
||||
)
|
||||
AVRoomActivity.start(mContext, homePlayInfo.uid)
|
||||
}
|
||||
}
|
||||
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setAdapter(roomHotAdapter)
|
||||
.setRecyclerView(binding.mRecyclerRoom)
|
||||
.setEmptyView(EmptyViewHelper.createEmptyTextViewHeight(context, ResUtil.getString(R.string.hot_recommend_empty)))
|
||||
.setLayoutManager(LinearLayoutManager(mContext, RecyclerView.VERTICAL, false))
|
||||
.build()
|
||||
homeViewModel.homeHotRoomLiveData.observe(this) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLazyLoad() {
|
||||
super.onLazyLoad()
|
||||
loadData()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (isShield) {
|
||||
loadData()
|
||||
isShield = false
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadData() {
|
||||
homeViewModel.getHotRoom()
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
|
||||
if (isResumed) {
|
||||
loadData()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
EventBus.getDefault().register(this)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRoomShieldEvent(event: RoomShieldEvent?) {
|
||||
isShield = true
|
||||
}
|
||||
|
||||
}
|
@@ -1,116 +0,0 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.FragmentRoomCommonBinding
|
||||
import com.chwl.app.home.RoomCommonViewModel
|
||||
import com.chwl.app.home.adapter.RoomCommonAdapter
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.home.event.RefreshHomeDataEvent
|
||||
import com.chwl.core.room.event.RoomShieldEvent
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
class RoomCommonFragment : BaseViewBindingFragment<FragmentRoomCommonBinding>() {
|
||||
|
||||
companion object {
|
||||
fun newInstance(tabID: Int): RoomCommonFragment {
|
||||
val args = Bundle()
|
||||
args.putInt("tab_id", tabID)
|
||||
val fragment = RoomCommonFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
private val tabID: Int by lazy { arguments?.getInt("tab_id") ?: -1 }
|
||||
private var pageNum: Int = 1
|
||||
private val pageSize = 20
|
||||
|
||||
private lateinit var mAdapter: RoomCommonAdapter
|
||||
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
|
||||
|
||||
private var roomCommonViewModel: RoomCommonViewModel? = null
|
||||
|
||||
//是否需要刷新接口进行屏蔽房间操作
|
||||
private var isShield = false
|
||||
|
||||
override fun init() {
|
||||
val roomCommonViewModel: RoomCommonViewModel by viewModels()
|
||||
this.roomCommonViewModel = roomCommonViewModel
|
||||
mAdapter = RoomCommonAdapter()
|
||||
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setAdapter(mAdapter)
|
||||
.setLayoutManager(LinearLayoutManager(mContext))
|
||||
.setPageSize(20)
|
||||
.setEmptyView(EmptyViewHelper.createEmptyTextView(mContext, ResUtil.getString(R.string.home_fragment_roomcommonfragment_01)))
|
||||
.setRefreshLayout(binding.refreshLayout)
|
||||
.setRecyclerView(binding.recyclerView)
|
||||
.build()
|
||||
mAdapter.setOnItemClickListener { _, _, position ->
|
||||
mAdapter.getItem(position)?.let {
|
||||
AVRoomActivity.start(context, it.roomUid)
|
||||
}
|
||||
}
|
||||
mAdapter.setOnLoadMoreListener({
|
||||
loadData(false)
|
||||
}, binding.recyclerView)
|
||||
binding.refreshLayout.setOnRefreshListener {
|
||||
loadData(true)
|
||||
}
|
||||
roomCommonViewModel.commonRoomLiveData.observe(this) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onLazyLoad() {
|
||||
super.onLazyLoad()
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if(isShield){
|
||||
loadData(true)
|
||||
isShield = false
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
fun loadData(isRefresh: Boolean) {
|
||||
binding.refreshLayout.isRefreshing = isRefresh
|
||||
pageNum = if (isRefresh) 1 else (pageNum + 1)
|
||||
roomCommonViewModel?.getCommonRoom(tabID, pageNum, pageSize)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
EventBus.getDefault().register(this)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
|
||||
if (isResumed) loadData(true)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRoomShieldEvent(event: RoomShieldEvent?){
|
||||
isShield = true
|
||||
}
|
||||
|
||||
}
|
@@ -1,126 +0,0 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.FragmentRoomGameBinding
|
||||
import com.chwl.app.home.HomeViewModel
|
||||
import com.chwl.app.home.adapter.RoomGameAdapter
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.home.event.RefreshHomeDataEvent
|
||||
import com.chwl.core.room.event.RoomShieldEvent
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
class RoomGameFragment : BaseViewBindingFragment<FragmentRoomGameBinding>() {
|
||||
|
||||
companion object {
|
||||
fun newInstance(): RoomGameFragment {
|
||||
val args = Bundle()
|
||||
val fragment = RoomGameFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
private lateinit var roomHotAdapter: RoomGameAdapter
|
||||
private var page = 1
|
||||
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
|
||||
private val pageSize = 20
|
||||
private var homeViewModel: HomeViewModel? = null
|
||||
|
||||
//是否需要刷新接口进行屏蔽房间操作
|
||||
private var isShield = false
|
||||
|
||||
override fun init() {
|
||||
val homeViewModel: HomeViewModel by viewModels()
|
||||
this.homeViewModel = homeViewModel
|
||||
|
||||
roomHotAdapter = RoomGameAdapter()
|
||||
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setAdapter(roomHotAdapter)
|
||||
.setRecyclerView(binding.recyclerView)
|
||||
.setEmptyView(
|
||||
EmptyViewHelper.createEmptyTextView(
|
||||
context,
|
||||
ResUtil.getString(R.string.home_fragment_roomgamefragment_01)
|
||||
)
|
||||
)
|
||||
.setLayoutManager(LinearLayoutManager(mContext))
|
||||
.setRefreshLayout(binding.refreshLayout)
|
||||
.setPageSize(pageSize)
|
||||
.build()
|
||||
|
||||
roomHotAdapter.setOnLoadMoreListener({ loadData(false) }, binding.recyclerView)
|
||||
|
||||
binding.refreshLayout.setOnRefreshListener {
|
||||
loadData(true)
|
||||
}
|
||||
homeViewModel.gameRoomLiveData.observe(this) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
|
||||
binding.tvMatch.setOnClickListener {
|
||||
homeViewModel.fastPickGameRoom()
|
||||
}
|
||||
|
||||
homeViewModel.pickRoomLiveData.observe(this) {
|
||||
it?.let {
|
||||
AVRoomActivity.start(mContext, it.uid)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLazyLoad() {
|
||||
super.onLazyLoad()
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if(isShield){
|
||||
loadData(true)
|
||||
isShield = false
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadData(isRefresh: Boolean) {
|
||||
|
||||
binding.refreshLayout.isRefreshing = isRefresh
|
||||
|
||||
if (isRefresh) {
|
||||
page = 1
|
||||
} else {
|
||||
page++
|
||||
}
|
||||
homeViewModel?.getGameRoom(page, pageSize)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
EventBus.getDefault().register(this)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
|
||||
if (isResumed) loadData(true)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRoomShieldEvent(event: RoomShieldEvent?){
|
||||
isShield = true
|
||||
}
|
||||
|
||||
}
|
@@ -1,154 +0,0 @@
|
||||
package com.chwl.app.home.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseViewBindingFragment
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.FragmentRoomLikeBinding
|
||||
import com.chwl.app.home.HomeViewModel
|
||||
import com.chwl.app.home.adapter.HomeConcernsAdapter
|
||||
import com.chwl.app.home.adapter.RoomLikeAdapter
|
||||
import com.chwl.app.ui.relation.AttentionListActivity
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.core.home.bean.HomeRoomInfo
|
||||
import com.chwl.core.home.event.RefreshHomeDataEvent
|
||||
import com.chwl.core.room.event.RoomShieldEvent
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
|
||||
class RoomLikeFragment : BaseViewBindingFragment<FragmentRoomLikeBinding>() {
|
||||
|
||||
companion object {
|
||||
fun newInstance(): RoomLikeFragment {
|
||||
val args = Bundle()
|
||||
val fragment = RoomLikeFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
private lateinit var concernsAdapter : HomeConcernsAdapter
|
||||
private lateinit var likeRvDelegate: RVDelegate<HomeRoomInfo>
|
||||
|
||||
private lateinit var mAdapter : RoomLikeAdapter
|
||||
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
|
||||
private var pageNum = 1
|
||||
private val pageSize = 20
|
||||
private val homeViewModel: HomeViewModel by activityViewModels()
|
||||
|
||||
//是否需要刷新接口进行屏蔽房间操作
|
||||
private var isShield = false
|
||||
|
||||
override fun init() {
|
||||
|
||||
binding.appBarLayout.addOnOffsetChangedListener(
|
||||
AppBarLayout.OnOffsetChangedListener { _, verticalOffset ->
|
||||
binding.refreshLayout.isEnabled = verticalOffset == 0
|
||||
})
|
||||
concernsAdapter = HomeConcernsAdapter()
|
||||
likeRvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setAdapter(concernsAdapter)
|
||||
.setRecyclerView(binding.rvLike)
|
||||
.setLayoutManager(GridLayoutManager(mContext,5, GridLayoutManager.VERTICAL, false))
|
||||
.build()
|
||||
|
||||
homeViewModel.concernsLiveData.observe(this) {
|
||||
likeRvDelegate.setNewData(it)
|
||||
val isGone = concernsAdapter.data.isNullOrEmpty()
|
||||
binding.tvMore.isGone = isGone
|
||||
binding.tvLike.isGone = isGone
|
||||
binding.rvLike.isGone = isGone
|
||||
}
|
||||
mAdapter = RoomLikeAdapter()
|
||||
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setAdapter(mAdapter)
|
||||
.setLayoutManager(LinearLayoutManager(mContext))
|
||||
.setPageSize(pageSize)
|
||||
.setRefreshLayout(binding.refreshLayout)
|
||||
.setEmptyView(EmptyViewHelper.createEmptyTextView(mContext, ResUtil.getString(R.string.home_fragment_roomlikefragment_01)))
|
||||
.setRecyclerView(binding.rvCollect)
|
||||
.build()
|
||||
|
||||
homeViewModel.collectLiveData.observe(this) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
|
||||
mAdapter.setOnLoadMoreListener({
|
||||
loadData(false)
|
||||
}, binding.rvCollect)
|
||||
|
||||
binding.refreshLayout.setOnRefreshListener {
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
homeViewModel.emptyLiveData.observe(this) {
|
||||
it?.let {
|
||||
binding.refreshLayout.isRefreshing = false
|
||||
binding.clEmpty.isVisible = it
|
||||
binding.coordinatorLayout.isVisible = !it
|
||||
}
|
||||
}
|
||||
|
||||
binding.tvGoPlay.setOnClickListener {
|
||||
(parentFragment as PartyFragment).onItemSelect(1, null)
|
||||
}
|
||||
|
||||
binding.tvMore.setOnClickListener {
|
||||
AttentionListActivity.start(context)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onLazyLoad() {
|
||||
super.onLazyLoad()
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if(isShield){
|
||||
loadData(true)
|
||||
isShield = false
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadData(isRefresh: Boolean) {
|
||||
if (isRefresh) {
|
||||
pageNum = 1
|
||||
binding.refreshLayout.isRefreshing = true
|
||||
} else {
|
||||
pageNum++
|
||||
}
|
||||
homeViewModel.getCollectRoom(pageNum, pageSize)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
EventBus.getDefault().register(this)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
|
||||
if (isResumed) loadData(true)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRoomShieldEvent(event: RoomShieldEvent?){
|
||||
isShield = true
|
||||
}
|
||||
|
||||
}
|
@@ -35,6 +35,8 @@ import com.chwl.core.utils.net.RxHelper;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.SingleToastUtil;
|
||||
|
||||
import io.reactivex.Single;
|
||||
|
||||
public class OpenRoomHelper {
|
||||
|
||||
public static void openRoom(BaseActivity activity) {
|
||||
@@ -135,6 +137,25 @@ public class OpenRoomHelper {
|
||||
|
||||
}
|
||||
|
||||
public static Single<RoomInfo> updateRoomInfoRx(RoomInfo roomInfo, int type, long gameId) {
|
||||
RoomSettingModel roomSettingModel = new RoomSettingModel();
|
||||
return roomSettingModel.updateRoomInfo(
|
||||
roomInfo.getTitle(),
|
||||
roomInfo.getRoomDesc(),
|
||||
roomInfo.getIntroduction(),
|
||||
roomInfo.roomPwd,
|
||||
roomInfo.getRoomTypeLable(),
|
||||
roomInfo.tagId,
|
||||
roomInfo.getUid(),
|
||||
AuthModel.get().getTicket(),
|
||||
roomInfo.isHasAnimationEffect(),
|
||||
roomInfo.getAudioQuality(),
|
||||
roomInfo.getLimitType(),
|
||||
roomInfo.isPureMode(),
|
||||
type,
|
||||
gameId);
|
||||
}
|
||||
|
||||
public static void updateRoomInfo(BaseActivity activity, RoomInfo roomInfo, int type, long gameId, boolean needOpen) {
|
||||
RoomSettingModel roomSettingModel = new RoomSettingModel();
|
||||
roomSettingModel.updateRoomInfo(
|
||||
|
@@ -15,7 +15,12 @@ import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import com.chwl.app.ui.login.LoginPasswordActivity;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.bean.response.result.TicketResult;
|
||||
import com.chwl.core.gift.GiftModel;
|
||||
import com.chwl.library.language.LanguageHelper;
|
||||
import com.chwl.library.utils.SingleToastUtil;
|
||||
import com.example.lib_utils.log.LogUtil;
|
||||
import com.netease.nim.uikit.StatusBarUtil;
|
||||
import com.netease.nim.uikit.support.glide.GlideApp;
|
||||
import com.chwl.app.MainActivity;
|
||||
@@ -32,6 +37,10 @@ import com.chwl.core.utils.OaidUtil;
|
||||
import com.chwl.core.utils.SharedPreferenceUtils;
|
||||
import com.chwl.library.common.util.DeviceUtil;
|
||||
|
||||
import io.reactivex.SingleObserver;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
/**
|
||||
* @author xiaoyu
|
||||
* @date 2017/12/30
|
||||
@@ -43,8 +52,15 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis
|
||||
private ActivitySplashBinding mBinding;
|
||||
private SplashComponent mLocalSplashVo;
|
||||
|
||||
private CompositeDisposable disposable = new CompositeDisposable();
|
||||
|
||||
// ticket状态 -1:加载失败、0:加载中、1:加载成功
|
||||
private int ticketState = 0;
|
||||
|
||||
private volatile boolean needJump = false;
|
||||
|
||||
private Runnable jumpRunnable;
|
||||
|
||||
public static void start(Context context) {
|
||||
Intent starter = new Intent(context, SplashActivity.class);
|
||||
context.startActivity(starter);
|
||||
@@ -72,9 +88,10 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis
|
||||
// 从堆栈恢复,不再重复解析之前的intent
|
||||
setIntent(new Intent());
|
||||
}
|
||||
initiate();
|
||||
StatusBarUtil.transparencyBar(this);
|
||||
StatusBarUtil.StatusBarLightMode(this);
|
||||
initTicket();
|
||||
initiate();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -145,8 +162,12 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis
|
||||
}
|
||||
|
||||
public void jumpActivity(Intent intent) {
|
||||
AccountInfo currentAccountInfo = DemoCache.readCurrentAccountInfo();
|
||||
if (currentAccountInfo == null || TextUtils.isEmpty(currentAccountInfo.getAccess_token())) {
|
||||
jumpRunnable = () -> jumpActivityImpl(intent);
|
||||
next();
|
||||
}
|
||||
|
||||
public void jumpActivityImpl(Intent intent) {
|
||||
if (!AuthModel.get().isLogin()) {
|
||||
NimMiddleActivity.openCommunity = false;
|
||||
LoginPasswordActivity.start(this);
|
||||
finish();
|
||||
@@ -190,4 +211,53 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis
|
||||
|
||||
}
|
||||
|
||||
private void initTicket() {
|
||||
ticketState = 0;
|
||||
if (!AuthModel.get().isLogin()) {
|
||||
ticketState = -1;
|
||||
next();
|
||||
return;
|
||||
}
|
||||
AuthModel.get().refreshTicket().subscribe(new SingleObserver<TicketResult>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
disposable.add(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(TicketResult ticketResult) {
|
||||
LogUtil.d("SplashActivity", "initTicket onSuccess", false);
|
||||
onTicketSuccess();
|
||||
ticketState = 1;
|
||||
next();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable throwable) {
|
||||
LogUtil.d("SplashActivity", "initTicket throwable:" + throwable.getMessage(), false);
|
||||
SingleToastUtil.showToast(throwable.getMessage());
|
||||
AuthModel.get().reset();
|
||||
ticketState = -1;
|
||||
next();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void onTicketSuccess() {
|
||||
GiftModel.get().tryLoadGiftList();
|
||||
}
|
||||
|
||||
private void next() {
|
||||
if (ticketState != 0 && jumpRunnable != null) {
|
||||
jumpRunnable.run();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (disposable != null && !disposable.isDisposed()) {
|
||||
disposable.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -15,6 +15,7 @@ import com.chwl.library.common.util.AlbumUtils;
|
||||
import com.chwl.library.common.util.ExecutorCenter;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.example.matisse.internal.entity.CustomItem;
|
||||
import com.netease.nim.uikit.StatusBarUtil;
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -192,4 +193,16 @@ public class BigPhotoActivity extends BaseViewBindingActivity<ActivityBigPhotoBi
|
||||
super.finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean needSteepStateBar() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setStatusBar() {
|
||||
super.setStatusBar();
|
||||
StatusBarUtil.transparencyBar(this);
|
||||
StatusBarUtil.StatusBarLightMode(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,76 @@
|
||||
package com.chwl.app.photo;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtilsV2;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.chwl.core.community.bean.DynamicMedia;
|
||||
import com.chwl.library.utils.ScreenUtils;
|
||||
import com.chwl.library.utils.config.BasicConfig;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Setter;
|
||||
|
||||
public class DynamicImageAdapter extends BaseQuickAdapter<DynamicMedia, BaseViewHolder> {
|
||||
|
||||
private Context context;
|
||||
@Setter
|
||||
private int mTwoImageHeight;
|
||||
@Setter
|
||||
private int mThreeImageHeight;
|
||||
|
||||
private int imageWidth;
|
||||
|
||||
private int bigImageWidth;
|
||||
|
||||
@Setter
|
||||
private int singleImageHeight;
|
||||
|
||||
public DynamicImageAdapter(int layoutResId, @Nullable List<DynamicMedia> data) {
|
||||
super(layoutResId, data);
|
||||
context = BasicConfig.INSTANCE.getAppContext();
|
||||
imageWidth = UIUtil.getScreenWidth(context) * 2 / 5;
|
||||
bigImageWidth = UIUtil.getScreenWidth(context);
|
||||
|
||||
mTwoImageHeight = (ScreenUtils.getScreenWidth(context) - UIUtil.dip2px(context, 50F)) / 2;
|
||||
mThreeImageHeight = (ScreenUtils.getScreenWidth(context) - UIUtil.dip2px(context, 60F)) / 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, DynamicMedia item) {
|
||||
ImageView ivPhoto = helper.getView(R.id.riv_photo);
|
||||
helper.setGone(R.id.iv_gif_tag, item.isGif());
|
||||
ViewGroup.LayoutParams layoutParams = ivPhoto.getLayoutParams();
|
||||
if (helper.itemView instanceof ConstraintLayout && getData().size() > 1) {
|
||||
ImageLoadUtilsV2.loadImage(ivPhoto, item.getResUrl(), imageWidth);
|
||||
} else {
|
||||
switch (getData().size()) {
|
||||
case 1:
|
||||
layoutParams.height = singleImageHeight;
|
||||
ivPhoto.setLayoutParams(layoutParams);
|
||||
ImageLoadUtilsV2.loadImage(ivPhoto, item.getResUrl(), bigImageWidth);
|
||||
break;
|
||||
case 2:
|
||||
layoutParams.height = mTwoImageHeight;
|
||||
ivPhoto.setLayoutParams(layoutParams);
|
||||
ImageLoadUtilsV2.loadImage(ivPhoto, item.getResUrl(), imageWidth);
|
||||
break;
|
||||
case 3:
|
||||
default:
|
||||
layoutParams.height = mThreeImageHeight;
|
||||
ivPhoto.setLayoutParams(layoutParams);
|
||||
ImageLoadUtilsV2.loadImage(ivPhoto, item.getResUrl(), imageWidth);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -42,7 +42,7 @@ class StarFragment : BaseViewBindingFragment<StarFragmentBinding>(), MainTabCont
|
||||
private var currentUser: StarUser? = null
|
||||
|
||||
override fun init() {
|
||||
FragmentVisibleStateHelper(this) {
|
||||
FragmentVisibleStateHelper(this).start {
|
||||
onVisibleChanged(it)
|
||||
}
|
||||
initView()
|
||||
|
@@ -8,21 +8,23 @@ import androidx.lifecycle.LifecycleOwner
|
||||
import com.chwl.app.base.BaseFragment
|
||||
|
||||
class FragmentVisibleStateHelper(
|
||||
private val fragment: Fragment,
|
||||
private val onVisibleChanged: (Boolean) -> Unit
|
||||
private val fragment: Fragment
|
||||
) : LifecycleEventObserver {
|
||||
|
||||
private var onVisibleChanged: ((Boolean) -> Unit)? = null
|
||||
private var isRealVisible = false
|
||||
|
||||
private var visibleCount = 0
|
||||
val isVisible get() = isRealVisible
|
||||
val isFirstVisible get() = isVisible && visibleCount == 1
|
||||
|
||||
init {
|
||||
fun start(onVisibleChanged: (Boolean) -> Unit): FragmentVisibleStateHelper {
|
||||
this.onVisibleChanged = onVisibleChanged
|
||||
fragment.lifecycle.addObserver(this)
|
||||
(fragment as? BaseFragment)?.let {
|
||||
it.onHiddenChangedListener = Consumer<Boolean> {
|
||||
checkVisibleState()
|
||||
}
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
fun checkVisibleState() {
|
||||
@@ -32,12 +34,15 @@ class FragmentVisibleStateHelper(
|
||||
)
|
||||
if (isRealVisible != newRealVisible) {
|
||||
isRealVisible = newRealVisible
|
||||
if (newRealVisible) {
|
||||
visibleCount++
|
||||
}
|
||||
onVisibleChanged(newRealVisible)
|
||||
}
|
||||
}
|
||||
|
||||
private fun onVisibleChanged(isVisible: Boolean) {
|
||||
onVisibleChanged.invoke(isVisible)
|
||||
onVisibleChanged?.invoke(isVisible)
|
||||
}
|
||||
|
||||
override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
|
||||
|
@@ -3,7 +3,7 @@ package com.chwl.app.support
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.chwl.app.BuildConfig
|
||||
import com.chwl.app.base.BaseViewModel
|
||||
import com.chwl.core.helper.PathHelper
|
||||
import com.chwl.library.utils.PathHelper
|
||||
import com.chwl.core.home.model.HomeModel
|
||||
import com.chwl.library.common.util.SPUtils
|
||||
import com.chwl.library.download.DownloadException
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user