首页底部Tab获取服务端配置
This commit is contained in:
@@ -6,7 +6,6 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
@@ -112,7 +111,6 @@ import com.yizhuan.erban.ui.widget.MainTabLayout;
|
||||
import com.yizhuan.erban.ui.widget.RecallDialog;
|
||||
import com.yizhuan.erban.utils.CleanLeakUtils;
|
||||
import com.yizhuan.erban.utils.PushMessageHandler;
|
||||
import com.yizhuan.erban.utils.UserUtils;
|
||||
import com.yizhuan.xchat_android_core.Constants;
|
||||
import com.yizhuan.xchat_android_core.UriProvider;
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
||||
@@ -123,8 +121,8 @@ import com.yizhuan.xchat_android_core.channel_page.model.ChannelPageModel;
|
||||
import com.yizhuan.xchat_android_core.community.attachment.DynamicSysAttachment;
|
||||
import com.yizhuan.xchat_android_core.community.event.SquareTaskEvent;
|
||||
import com.yizhuan.xchat_android_core.community.event.UnReadCountEvent;
|
||||
import com.yizhuan.xchat_android_core.home.bean.MainTabType;
|
||||
import com.yizhuan.xchat_android_core.home.event.VisitorUnreadCountEvent;
|
||||
import com.yizhuan.xchat_android_core.user.bean.ProtocolInfo;
|
||||
import com.yizhuan.xchat_android_core.community.im.WorldDynamicAttachment;
|
||||
import com.yizhuan.xchat_android_core.home.model.GameHomeModel;
|
||||
import com.yizhuan.xchat_android_core.home.model.HomeModel;
|
||||
@@ -151,6 +149,7 @@ import com.yizhuan.xchat_android_core.im.custom.bean.RedPackageAttachment;
|
||||
import com.yizhuan.xchat_android_core.im.custom.bean.RedPacketAttachment;
|
||||
import com.yizhuan.xchat_android_core.im.custom.bean.SysMsgAttachment;
|
||||
import com.yizhuan.xchat_android_core.im.custom.bean.SysMsgV2Attachment;
|
||||
import com.yizhuan.xchat_android_core.initial.InitialModel;
|
||||
import com.yizhuan.xchat_android_core.level.event.CharmLevelUpEvent;
|
||||
import com.yizhuan.xchat_android_core.level.event.LevelUpEvent;
|
||||
import com.yizhuan.xchat_android_core.linked.LinkedModel;
|
||||
@@ -160,8 +159,6 @@ import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
|
||||
import com.yizhuan.xchat_android_core.manager.IMBroadcastManager;
|
||||
import com.yizhuan.xchat_android_core.manager.IMMessageManager;
|
||||
import com.yizhuan.xchat_android_core.manager.RoomEvent;
|
||||
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
|
||||
import com.yizhuan.xchat_android_core.market_verify.event.MarketVerifyUpdateEvent;
|
||||
import com.yizhuan.xchat_android_core.miniworld.bean.OpenAudioPartyAttachment;
|
||||
import com.yizhuan.xchat_android_core.patriarch.event.CloseMinRoomEvent;
|
||||
import com.yizhuan.xchat_android_core.patriarch.event.ImPushMsgPmLimitTimeEvent;
|
||||
@@ -170,7 +167,6 @@ import com.yizhuan.xchat_android_core.pay.bean.ShowCommonWebEvent;
|
||||
import com.yizhuan.xchat_android_core.public_chat_hall.attachment.AitMeAttachment;
|
||||
import com.yizhuan.xchat_android_core.recall.bean.CheckLostUserInfo;
|
||||
import com.yizhuan.xchat_android_core.recall.event.CheckLostUserEvent;
|
||||
import com.yizhuan.xchat_android_core.redPacket.bean.RedPacketInfoV2;
|
||||
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
|
||||
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
|
||||
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
|
||||
@@ -180,15 +176,12 @@ import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
|
||||
import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent;
|
||||
import com.yizhuan.xchat_android_core.user.event.NeedBindPhoneEvent;
|
||||
import com.yizhuan.xchat_android_core.user.event.NeedCompleteInfoEvent;
|
||||
import com.yizhuan.xchat_android_core.utils.LogUtils;
|
||||
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
|
||||
import com.yizhuan.xchat_android_core.utils.StringUtils;
|
||||
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
|
||||
import com.yizhuan.xchat_android_library.threadmgr.ThreadPoolManager;
|
||||
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.JavaUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.codec.DESUtils;
|
||||
import com.yizhuan.xchat_android_library.utils.pref.CommonPref;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
@@ -200,9 +193,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.flutter.embedding.android.FlutterFragment;
|
||||
import io.reactivex.SingleObserver;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.functions.Consumer;
|
||||
|
||||
import static com.yizhuan.xchat_android_core.channel_page.model.ChannelPageModel.KEY_FLAG_VALID_CHANNEL_PAGE;
|
||||
|
||||
@@ -226,7 +216,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
private LivingIconView userLivingView;
|
||||
private View viewClose;
|
||||
private MainTabLayout mMainTabLayout;
|
||||
private int mCurrentMainPosition = MainTabLayout.MAIN_TAB_POS_HOME;
|
||||
private int mCurrentTabType = MainTabType.TAB_TYPE_HOME;
|
||||
/**
|
||||
* 房间最小化动画,换成属性动画,原先的补间动画影响了activity的生命周期
|
||||
*/
|
||||
@@ -268,11 +258,11 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
};
|
||||
|
||||
{
|
||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_HOME, new HomeFragment());
|
||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_MSG, new ContactsListFragment());
|
||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_SQUARE, new SquareFragment());
|
||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_ME, new MeFragment());
|
||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_GAME, new GameFragment
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_HOME, new HomeFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_MSG, new ContactsListFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_SQUARE, new SquareFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_ME, new MeFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_GAME, new GameFragment
|
||||
.CachedEngineFragmentBuilder(GameFragment.class, FlutterBoost.ENGINE_ID)
|
||||
.url(BuildConfig.DEBUG ? RouterConstants.FLUTTER_PAGE_MAIN_DEBUG : RouterConstants.FLUTTER_PAGE_MAIN)
|
||||
.build());
|
||||
@@ -295,14 +285,13 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putInt(Constants.KEY_MAIN_POSITION, mCurrentMainPosition);
|
||||
outState.putInt(Constants.KEY_MAIN_POSITION, mCurrentTabType);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRestoreInstanceState(@NotNull Bundle savedInstanceState) {
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
mCurrentMainPosition = savedInstanceState.getInt(Constants.KEY_MAIN_POSITION);
|
||||
|
||||
mCurrentTabType = savedInstanceState.getInt(Constants.KEY_MAIN_POSITION);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -311,31 +300,14 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
homeViewModel = new ViewModelProvider(this).get(HomeViewModel.class);
|
||||
NimMiddleActivity.firstEnter = false;
|
||||
if (savedInstanceState != null) {
|
||||
mCurrentMainPosition = savedInstanceState.getInt(Constants.KEY_MAIN_POSITION);
|
||||
mCurrentTabType = savedInstanceState.getInt(Constants.KEY_MAIN_POSITION);
|
||||
}
|
||||
Log.e(TAG, "onCreate: " + DESUtils.DESAndBase64("112030"));
|
||||
setContentView(R.layout.activity_main);
|
||||
//自动登录
|
||||
AuthModel.get().autoLogin().subscribe(new SingleObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String s) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
onNeedLogin();
|
||||
//toast(e.getMessage());
|
||||
}
|
||||
});
|
||||
|
||||
initTitleBar(getString(R.string.app_name));
|
||||
AuthModel.get().autoLogin()
|
||||
.doOnError(throwable -> onNeedLogin())
|
||||
.subscribe();
|
||||
initView();
|
||||
//引导页
|
||||
// startGuild();
|
||||
initMaterialView();
|
||||
onParseIntent();
|
||||
updateDatas();
|
||||
@@ -344,6 +316,9 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
initTeamSessionCustomization();
|
||||
EventBus.getDefault().register(this);
|
||||
otherModelInit();
|
||||
InitialModel.get().getMainTabInfosLiveData().observe(this, mainTabInfos -> {
|
||||
mMainTabLayout.setMainTabInfoList(mainTabInfos);
|
||||
});
|
||||
}
|
||||
|
||||
private void otherModelInit() {
|
||||
@@ -497,11 +472,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
|
||||
|
||||
private void updateDatas() {
|
||||
if ("baidutg".equals(AppMetaDataUtil.getChannelID())) {
|
||||
mMainTabLayout.select(MainTabLayout.MAIN_TAB_POS_HOME);
|
||||
} else {
|
||||
mMainTabLayout.select(mCurrentMainPosition);
|
||||
}
|
||||
mMainTabLayout.setDefaultTabType(mCurrentTabType);
|
||||
handleNimIntent();
|
||||
}
|
||||
|
||||
@@ -535,11 +506,11 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
}
|
||||
} else if (intent.hasExtra(GAME_TAB) && intent.getBooleanExtra(GAME_TAB, false)) {
|
||||
if (mMainTabLayout != null) {
|
||||
mMainTabLayout.select(MainTabLayout.MAIN_TAB_POS_GAME);
|
||||
mMainTabLayout.setDefaultTabType(MainTabType.TAB_TYPE_GAME);
|
||||
}
|
||||
} else if (intent.hasExtra(MSG_TAB) && intent.getBooleanExtra(MSG_TAB, false)) {
|
||||
if (mMainTabLayout != null) {
|
||||
mMainTabLayout.select(MainTabLayout.MAIN_TAB_POS_MSG);
|
||||
mMainTabLayout.setDefaultTabType(MainTabType.TAB_TYPE_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -636,7 +607,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
Log.i("checkLostUser", "onLogin");
|
||||
|
||||
//登录成功查询未读信息数量
|
||||
mMainTabLayout.setmUnReadDynamicCount(0);
|
||||
mMainTabLayout.setUnReadDynamicCount(0);
|
||||
int unreadCount = IMMessageManager.get().queryUnreadMsg();
|
||||
mMainTabLayout.setMsgNum(unreadCount);
|
||||
openCommunityNotice();
|
||||
@@ -788,9 +759,9 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
|
||||
@SuppressLint("RestrictedApi")
|
||||
@Override
|
||||
public void onTabClick(int position) {
|
||||
public void onTabClick(int tabType) {
|
||||
|
||||
Fragment showFragment = fragmentArray.get(position);
|
||||
Fragment showFragment = fragmentArray.get(tabType);
|
||||
if (showFragment == tempFragment) return;
|
||||
|
||||
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
|
||||
@@ -801,7 +772,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
if (tempFragment != null) transaction.hide(tempFragment);
|
||||
tempFragment = showFragment;
|
||||
if (!isDestroyed()) transaction.commitNowAllowingStateLoss();
|
||||
mCurrentMainPosition = position;
|
||||
mCurrentTabType = tabType;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -815,14 +786,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
DaemonService.stop(MainActivity.this);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onMarketVerifyUpdateEvent(MarketVerifyUpdateEvent event) {
|
||||
//审核包隐藏tab
|
||||
if (MarketVerifyModel.get().isMarketChecking()) {
|
||||
mMainTabLayout.showOrHideTab(MainTabLayout.MAIN_TAB_POS_SQUARE, View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onReceiveRecallStatus(CheckLostUserEvent event) {
|
||||
@@ -840,7 +803,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
}
|
||||
|
||||
public boolean isShowMeTab() {
|
||||
return mCurrentMainPosition == MainTabLayout.MAIN_TAB_POS_ME;
|
||||
return mCurrentTabType == MainTabType.TAB_TYPE_ME;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1020,7 +983,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onUnReadCount(UnReadCountEvent event) {
|
||||
mMainTabLayout.setmUnReadDynamicCount(event.getTotal());
|
||||
mMainTabLayout.setUnReadDynamicCount(event.getTotal());
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@@ -1064,7 +1027,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
}
|
||||
boolean isNimPush = intent.getBooleanExtra(NimMiddleActivity.EXTRA_IS_NIM_PUSH, false);
|
||||
if (isNimPush && mMainTabLayout != null) {
|
||||
mMainTabLayout.select(MainTabLayout.MAIN_TAB_POS_MSG);
|
||||
mMainTabLayout.setDefaultTabType(MainTabType.TAB_TYPE_MSG);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -4,9 +4,11 @@ import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.yizhuan.erban.base.BaseViewModel
|
||||
import com.yizhuan.xchat_android_core.bean.response.ListResult
|
||||
import com.yizhuan.xchat_android_core.home.bean.*
|
||||
import com.yizhuan.xchat_android_core.home.bean.BannerInfo
|
||||
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
|
||||
import com.yizhuan.xchat_android_core.home.bean.HomeTagInfo
|
||||
import com.yizhuan.xchat_android_core.home.bean.ResourceInfo
|
||||
import com.yizhuan.xchat_android_core.home.model.HomeModel
|
||||
import com.yizhuan.xchat_android_core.utils.net.ServerException
|
||||
import com.yizhuan.xchat_android_core.utils.toast
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.async
|
||||
|
@@ -2,34 +2,32 @@ package com.yizhuan.erban.ui.widget;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.netease.nim.uikit.common.ui.draggablebubbles.BubbleMessageTouchListener;
|
||||
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
|
||||
import com.netease.nim.uikit.common.ui.draggablebubbles.BubbleView;
|
||||
import com.netease.nim.uikit.common.ui.draggablebubbles.MessageBubbleView;
|
||||
import com.netease.nim.uikit.support.glide.GlideApp;
|
||||
import com.yizhuan.erban.R;
|
||||
import com.yizhuan.xchat_android_core.home.bean.MainTabInfo;
|
||||
import com.yizhuan.xchat_android_core.home.bean.MainTabType;
|
||||
import com.yizhuan.xchat_android_core.utils.CheckUtils;
|
||||
|
||||
/**
|
||||
* <p> main tab 有消息个数 控件 (todo:还可以优化,将字体写在字体上面)
|
||||
* <p> main tab 有消息个数 控件
|
||||
* </p>
|
||||
* Created by Administrator on 2017/11/14.
|
||||
*/
|
||||
public class MainRedPointTab extends RelativeLayout {
|
||||
private int mTabIcon, mTabIconSelect;
|
||||
private MainTab mMainTab;
|
||||
private TextView mTvNum;
|
||||
private String mTabText;
|
||||
|
||||
private RedPointDismissListener mListener;
|
||||
private final ImageView ivTabIcon;
|
||||
private final TextView tvTabName;
|
||||
private final TextView mTvNum;
|
||||
private MainTabInfo tabInfo;
|
||||
|
||||
public MainRedPointTab(@NonNull Context context) {
|
||||
this(context, null);
|
||||
@@ -42,49 +40,37 @@ public class MainRedPointTab extends RelativeLayout {
|
||||
public MainRedPointTab(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
inflate(context, R.layout.maint_tab_red_poin_layout, this);
|
||||
|
||||
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MainTab);
|
||||
mTabIcon = typedArray.getResourceId(R.styleable.MainTab_tab_icon, R.mipmap.ic_main_tab_game_home);
|
||||
mTabIconSelect = typedArray.getResourceId(R.styleable.MainTab_tab_icon_select, R.mipmap.ic_main_tab_game_pressed);
|
||||
mTabText = typedArray.getString(R.styleable.MainTab_tab_text);
|
||||
boolean draggable = typedArray.getBoolean(R.styleable.MainTab_tab_draggable, false);
|
||||
mMainTab = findViewById(R.id.main_tab_msg);
|
||||
mMainTab.setmTabIcon(mTabIcon);
|
||||
mMainTab.setmTabIconSelect(mTabIconSelect);
|
||||
mMainTab.setText(mTabText);
|
||||
ivTabIcon = findViewById(R.id.iv_tab_icon);
|
||||
tvTabName = findViewById(R.id.tv_tab_name);
|
||||
mTvNum = findViewById(R.id.msg_number);
|
||||
if (draggable) {
|
||||
MessageBubbleView.attach(mTvNum, false, new BubbleMessageTouchListener.BubbleDisappearListener() {
|
||||
@Override
|
||||
public void dragStart(View view) {
|
||||
}
|
||||
|
||||
}
|
||||
public void setMainTabInfo(@NonNull MainTabInfo tabInfo) {
|
||||
this.tabInfo = tabInfo;
|
||||
tvTabName.setText(tabInfo.getTabName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dismiss(View view) {
|
||||
if (mListener != null) {
|
||||
mListener.dismiss();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dragFinish(View view) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
public MainTabInfo getTabInfo() {
|
||||
return tabInfo;
|
||||
}
|
||||
|
||||
public void select(boolean select) {
|
||||
mMainTab.select(select);
|
||||
if (tabInfo == null) return;
|
||||
tvTabName.setSelected(select);
|
||||
int defaultRes = getDefaultRes(tabInfo.getTabType(), select);
|
||||
GlideApp.with(ivTabIcon).load(select ? tabInfo.getTabSelectedIcon() : tabInfo.getTabIcon())
|
||||
.dontAnimate()
|
||||
.placeholder(defaultRes)
|
||||
.error(defaultRes)
|
||||
.transform(new CenterCrop())
|
||||
.into(ivTabIcon);
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
public void setNumber(int number) {
|
||||
if (mTvNum instanceof BubbleView) {
|
||||
((BubbleView) mTvNum).setNumText(number);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (number > 99) {
|
||||
mTvNum.setText("99+");
|
||||
} else
|
||||
@@ -94,12 +80,25 @@ public class MainRedPointTab extends RelativeLayout {
|
||||
mTvNum.setVisibility((CheckUtils.isCheckUser() || number <= 0) ? GONE : VISIBLE);
|
||||
}
|
||||
|
||||
public void setmListener(RedPointDismissListener mListener) {
|
||||
this.mListener = mListener;
|
||||
}
|
||||
|
||||
public interface RedPointDismissListener {
|
||||
void dismiss();
|
||||
private int getDefaultRes(int tabType, boolean select) {
|
||||
int resId = select ? R.mipmap.ic_main_tab_game_pressed : R.mipmap.ic_main_tab_game_home;
|
||||
switch (tabType) {
|
||||
case MainTabType.TAB_TYPE_SQUARE:
|
||||
resId = select ? R.mipmap.ic_main_tab_find_pressed : R.mipmap.ic_main_tab_find;
|
||||
break;
|
||||
case MainTabType.TAB_TYPE_GAME:
|
||||
resId = select ? R.mipmap.ic_main_tab_peace_pressed : R.mipmap.ic_main_tab_peace;
|
||||
break;
|
||||
case MainTabType.TAB_TYPE_MSG:
|
||||
resId = select ? R.mipmap.ic_main_tab_msg_pressed : R.mipmap.ic_main_tab_msg;
|
||||
break;
|
||||
case MainTabType.TAB_TYPE_ME:
|
||||
resId = select ? R.mipmap.ic_main_tab_me_pressed : R.mipmap.ic_main_tab_me;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return resId;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -5,48 +5,39 @@ import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.Size;
|
||||
|
||||
import com.netease.nimlib.sdk.NIMClient;
|
||||
import com.netease.nimlib.sdk.msg.MsgService;
|
||||
import com.yizhuan.erban.R;
|
||||
import com.yizhuan.xchat_android_core.home.bean.MainTabInfo;
|
||||
import com.yizhuan.xchat_android_core.home.bean.MainTabType;
|
||||
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
|
||||
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p> 底部tab导航 </p>
|
||||
* Created by Administrator on 2017/11/14.
|
||||
*/
|
||||
public class MainTabLayout extends LinearLayout implements View.OnClickListener {
|
||||
|
||||
public static final int MAIN_TAB_POS_MSG = 1;
|
||||
public static final int MAIN_TAB_POS_SQUARE = 2;
|
||||
public static final int MAIN_TAB_POS_ME = 3;
|
||||
public static final int MAIN_TAB_POS_HOME = 4;
|
||||
public static final int MAIN_TAB_POS_GAME = 5;
|
||||
|
||||
private MainTab gameTab, homeTab;
|
||||
private final List<MainRedPointTab> tabViewList = new ArrayList<>(5);
|
||||
private MainRedPointTab homeTab;
|
||||
private MainRedPointTab squareTab;
|
||||
private MainRedPointTab gameTab;
|
||||
private MainRedPointTab msgTab;
|
||||
private MainRedPointTab meTab;
|
||||
private MainRedPointTab mMsgTab;
|
||||
private MainRedPointTab mAttentionTab;
|
||||
private int mLastPosition = -1;
|
||||
private OnTabClickListener mOnTabClickListener;
|
||||
private List<MainTabInfo> mainTabInfoList;
|
||||
private int defaultTabType;
|
||||
|
||||
// 切换账号需要重置;接收未读互动消息自定义消息、互动消息未读接口调用需要设置;
|
||||
private int mUnReadDynamicCount = 0;
|
||||
|
||||
private MainRedPointTab.RedPointDismissListener msgListener = new MainRedPointTab.RedPointDismissListener() {
|
||||
@Override
|
||||
public void dismiss() {
|
||||
NIMClient.getService(MsgService.class).clearAllUnreadCount();
|
||||
}
|
||||
};
|
||||
|
||||
private MainRedPointTab.RedPointDismissListener attentionListener = new MainRedPointTab.RedPointDismissListener() {
|
||||
@Override
|
||||
public void dismiss() {
|
||||
// TODO 互动消息清空未读
|
||||
}
|
||||
};
|
||||
private int msgNumber;
|
||||
private int meNumber;
|
||||
private int squareNumber;
|
||||
|
||||
public MainTabLayout(Context context) {
|
||||
this(context, null);
|
||||
@@ -65,8 +56,8 @@ public class MainTabLayout extends LinearLayout implements View.OnClickListener
|
||||
setOrientation(HORIZONTAL);
|
||||
inflate(context, R.layout.main_tab_layout, this);
|
||||
|
||||
mAttentionTab = findViewById(R.id.main_attention_tab);
|
||||
mMsgTab = findViewById(R.id.main_msg_tab);
|
||||
squareTab = findViewById(R.id.main_square_tab);
|
||||
msgTab = findViewById(R.id.main_msg_tab);
|
||||
gameTab = findViewById(R.id.main_game_tab);
|
||||
homeTab = findViewById(R.id.main_home_tab);
|
||||
meTab = findViewById(R.id.main_me_tab);
|
||||
@@ -74,90 +65,122 @@ public class MainTabLayout extends LinearLayout implements View.OnClickListener
|
||||
homeTab.setOnClickListener(this);
|
||||
meTab.setOnClickListener(this);
|
||||
gameTab.setOnClickListener(this);
|
||||
mAttentionTab.setOnClickListener(this);
|
||||
mMsgTab.setOnClickListener(this);
|
||||
squareTab.setOnClickListener(this);
|
||||
msgTab.setOnClickListener(this);
|
||||
|
||||
mAttentionTab.setmListener(attentionListener);
|
||||
mMsgTab.setmListener(msgListener);
|
||||
tabViewList.add(homeTab);
|
||||
tabViewList.add(squareTab);
|
||||
tabViewList.add(gameTab);
|
||||
tabViewList.add(msgTab);
|
||||
tabViewList.add(meTab);
|
||||
}
|
||||
|
||||
public void setMainTabInfoList(@NonNull @Size(5) List<MainTabInfo> mainTabInfoList) {
|
||||
this.mainTabInfoList = mainTabInfoList;
|
||||
for (int i = 0; i < mainTabInfoList.size(); i++) {
|
||||
MainTabInfo mainTabInfo = mainTabInfoList.get(i);
|
||||
MainRedPointTab redPointTab = tabViewList.get(i);
|
||||
redPointTab.setMainTabInfo(mainTabInfo);
|
||||
switch (mainTabInfo.getTabType()) {
|
||||
case MainTabType.TAB_TYPE_MSG:
|
||||
redPointTab.setNumber(msgNumber);
|
||||
break;
|
||||
case MainTabType.TAB_TYPE_SQUARE:
|
||||
redPointTab.setNumber(squareNumber);
|
||||
break;
|
||||
case MainTabType.TAB_TYPE_ME:
|
||||
redPointTab.setNumber(meNumber);
|
||||
break;
|
||||
}
|
||||
}
|
||||
select(defaultTabType);
|
||||
}
|
||||
|
||||
public void setDefaultTabType(int defaultTabType) {
|
||||
this.defaultTabType = defaultTabType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.main_home_tab:
|
||||
select(MAIN_TAB_POS_HOME);
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_FIRST_TAB,
|
||||
"首页tab");
|
||||
select(mainTabInfoList.get(0).getTabType());
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_FIRST_TAB, "首页tab");
|
||||
break;
|
||||
case R.id.main_game_tab:
|
||||
select(MAIN_TAB_POS_GAME);
|
||||
break;
|
||||
case R.id.main_attention_tab:
|
||||
select(MAIN_TAB_POS_SQUARE);
|
||||
case R.id.main_square_tab:
|
||||
select(mainTabInfoList.get(1).getTabType());
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_SQUARE_DONG_TAI_CLICK, "点击广场动态页");
|
||||
break;
|
||||
case R.id.main_game_tab:
|
||||
select(mainTabInfoList.get(2).getTabType());
|
||||
break;
|
||||
case R.id.main_msg_tab:
|
||||
select(MAIN_TAB_POS_MSG);
|
||||
select(mainTabInfoList.get(3).getTabType());
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_MESSAGE, "消息页");
|
||||
break;
|
||||
case R.id.main_me_tab:
|
||||
select(MAIN_TAB_POS_ME);
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_MINE_TAB,
|
||||
"我的tab");
|
||||
select(mainTabInfoList.get(4).getTabType());
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_MINE_TAB, "我的tab");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void select(int tabType) {
|
||||
if (tabType == 0) tabType = MainTabType.TAB_TYPE_HOME;
|
||||
if (mLastPosition == tabType) return;
|
||||
squareTab.select(tabType == MainTabType.TAB_TYPE_SQUARE);
|
||||
msgTab.select(tabType == MainTabType.TAB_TYPE_MSG);
|
||||
gameTab.select(tabType == MainTabType.TAB_TYPE_GAME);
|
||||
homeTab.select(tabType == MainTabType.TAB_TYPE_HOME);
|
||||
meTab.select(tabType == MainTabType.TAB_TYPE_ME);
|
||||
if (mOnTabClickListener != null) {
|
||||
mOnTabClickListener.onTabClick(tabType);
|
||||
}
|
||||
mLastPosition = tabType;
|
||||
}
|
||||
|
||||
public void setMsgNum(int number) {
|
||||
mMsgTab.setNumber(number);
|
||||
msgNumber = number;
|
||||
MainRedPointTab pointTab = findTabInfoByType(MainTabType.TAB_TYPE_MSG);
|
||||
if (pointTab != null) {
|
||||
pointTab.setNumber(number);
|
||||
}
|
||||
}
|
||||
|
||||
public void setUnreadVisitorCount(int count) {
|
||||
if (meTab != null)
|
||||
meTab.setNumber(count);
|
||||
}
|
||||
|
||||
|
||||
public void select(int position) {
|
||||
if (mLastPosition == position) return;
|
||||
mAttentionTab.select(position == MAIN_TAB_POS_SQUARE);
|
||||
mMsgTab.select(position == MAIN_TAB_POS_MSG);
|
||||
gameTab.select(position == MAIN_TAB_POS_GAME);
|
||||
homeTab.select(position == MAIN_TAB_POS_HOME);
|
||||
meTab.select(position == MAIN_TAB_POS_ME);
|
||||
if (mOnTabClickListener != null) {
|
||||
mOnTabClickListener.onTabClick(position);
|
||||
meNumber = count;
|
||||
MainRedPointTab pointTab = findTabInfoByType(MainTabType.TAB_TYPE_ME);
|
||||
if (pointTab != null) {
|
||||
pointTab.setNumber(count);
|
||||
}
|
||||
mLastPosition = position;
|
||||
}
|
||||
|
||||
private OnTabClickListener mOnTabClickListener;
|
||||
public void setUnReadDynamicCount(int mUnReadDynamicCount) {
|
||||
squareNumber = mUnReadDynamicCount;
|
||||
MainRedPointTab pointTab = findTabInfoByType(MainTabType.TAB_TYPE_SQUARE);
|
||||
if (pointTab != null) {
|
||||
pointTab.setNumber(mUnReadDynamicCount);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private MainRedPointTab findTabInfoByType(int tabType) {
|
||||
if (mainTabInfoList == null) return null;
|
||||
for (MainRedPointTab tabViewList : tabViewList) {
|
||||
if (tabViewList.getTabInfo() != null && tabViewList.getTabInfo().getTabType() == tabType) {
|
||||
return tabViewList;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setOnTabClickListener(OnTabClickListener onTabClickListener) {
|
||||
mOnTabClickListener = onTabClickListener;
|
||||
}
|
||||
|
||||
public void setmUnReadDynamicCount(int mUnReadDynamicCount) {
|
||||
this.mUnReadDynamicCount = mUnReadDynamicCount;
|
||||
mAttentionTab.setNumber(mUnReadDynamicCount);
|
||||
}
|
||||
|
||||
public interface OnTabClickListener {
|
||||
void onTabClick(int position);
|
||||
}
|
||||
|
||||
/**
|
||||
* 隐藏或显示某些tab
|
||||
*/
|
||||
public void showOrHideTab(int position, int visible) {
|
||||
switch (position) {
|
||||
case MAIN_TAB_POS_SQUARE:
|
||||
mAttentionTab.setVisibility(visible);
|
||||
break;
|
||||
case MAIN_TAB_POS_MSG:
|
||||
mMsgTab.setVisibility(visible);
|
||||
break;
|
||||
}
|
||||
void onTabClick(int tabType);
|
||||
}
|
||||
|
||||
}
|
||||
|
8
app/src/main/res/color/color_selector_main_tab.xml
Normal file
8
app/src/main/res/color/color_selector_main_tab.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:color="@color/color_333333" android:state_selected="true" />
|
||||
|
||||
<item android:color="@color/main_tab_normal" />
|
||||
|
||||
</selector>
|
@@ -16,10 +16,11 @@
|
||||
|
||||
<com.yizhuan.erban.ui.widget.MainTabLayout
|
||||
android:id="@+id/main_tab_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="3dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<FrameLayout
|
||||
|
@@ -7,69 +7,39 @@
|
||||
android:orientation="horizontal"
|
||||
tools:parentTag="LinearLayout">
|
||||
|
||||
<com.yizhuan.erban.ui.widget.MainTab
|
||||
<com.yizhuan.erban.ui.widget.MainRedPointTab
|
||||
android:id="@+id/main_home_tab"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_weight="1"
|
||||
android:textSize="10sp"
|
||||
app:tab_icon="@mipmap/ic_main_tab_game_home"
|
||||
app:tab_icon_select="@mipmap/ic_main_tab_game_pressed"
|
||||
app:tab_text="派对"
|
||||
app:tab_text_color="@color/main_tab_normal"
|
||||
app:tab_text_color_select="@color/color_333333" />
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.yizhuan.erban.ui.widget.MainRedPointTab
|
||||
android:id="@+id/main_attention_tab"
|
||||
android:id="@+id/main_square_tab"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_weight="1"
|
||||
android:textSize="@dimen/sp_10"
|
||||
app:tab_icon="@mipmap/ic_main_tab_find"
|
||||
app:tab_icon_select="@mipmap/ic_main_tab_find_pressed"
|
||||
app:tab_text="广场"
|
||||
app:tab_text_color="@color/main_tab_normal"
|
||||
app:tab_text_color_select="@color/color_333333" />
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.yizhuan.erban.ui.widget.MainTab
|
||||
<com.yizhuan.erban.ui.widget.MainRedPointTab
|
||||
android:id="@+id/main_game_tab"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_weight="1"
|
||||
android:textSize="10sp"
|
||||
app:tab_icon="@mipmap/ic_main_tab_peace"
|
||||
app:tab_icon_select="@mipmap/ic_main_tab_peace_pressed"
|
||||
app:tab_text="赛事"
|
||||
app:tab_text_color="@color/main_tab_normal"
|
||||
app:tab_text_color_select="@color/color_333333" />
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.yizhuan.erban.ui.widget.MainRedPointTab
|
||||
android:id="@+id/main_msg_tab"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_weight="1"
|
||||
android:textSize="@dimen/sp_10"
|
||||
app:tab_icon="@mipmap/ic_main_tab_msg"
|
||||
app:tab_icon_select="@mipmap/ic_main_tab_msg_pressed"
|
||||
app:tab_text="消息"
|
||||
app:tab_text_color="@color/main_tab_normal"
|
||||
app:tab_text_color_select="@color/color_333333" />
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.yizhuan.erban.ui.widget.MainRedPointTab
|
||||
android:id="@+id/main_me_tab"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_weight="1"
|
||||
android:textSize="@dimen/sp_10"
|
||||
app:tab_icon="@mipmap/ic_main_tab_me"
|
||||
app:tab_icon_select="@mipmap/ic_main_tab_me_pressed"
|
||||
app:tab_text="我的"
|
||||
app:tab_text_color="@color/main_tab_normal"
|
||||
app:tab_text_color_select="@color/color_333333" />
|
||||
android:layout_weight="1" />
|
||||
|
||||
</merge>
|
@@ -3,29 +3,41 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:parentTag="android.widget.RelativeLayout" >
|
||||
android:layout_height="wrap_content"
|
||||
tools:parentTag="android.widget.RelativeLayout">
|
||||
|
||||
<com.yizhuan.erban.ui.widget.MainTab
|
||||
android:id="@+id/main_tab_msg"
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_tab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:textSize="10sp"
|
||||
app:tab_icon="@mipmap/ic_main_tab_game_home"
|
||||
app:tab_icon_select="@mipmap/ic_main_tab_game_pressed"
|
||||
app:tab_text="首页"
|
||||
app:tab_text_color_select="@color/color_333333"
|
||||
app:tab_text_color="@color/main_tab_normal" />
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_tab_icon"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:src="@drawable/default_cover" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_tab_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/color_selector_main_tab"
|
||||
android:textSize="10sp"
|
||||
tools:text="首页" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.netease.nim.uikit.common.ui.draggablebubbles.BubbleView
|
||||
android:id="@+id/msg_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignTop="@+id/main_tab_msg"
|
||||
android:layout_alignTop="@+id/ll_tab"
|
||||
android:layout_marginStart="-12dp"
|
||||
android:layout_marginTop="1dp"
|
||||
android:layout_toEndOf="@+id/main_tab_msg"
|
||||
android:layout_toEndOf="@+id/ll_tab"
|
||||
android:background="@drawable/bg_msg_number"
|
||||
android:gravity="center"
|
||||
android:visibility="invisible"
|
||||
|
@@ -0,0 +1,8 @@
|
||||
package com.yizhuan.xchat_android_core.home.bean
|
||||
|
||||
data class MainTabInfo(
|
||||
val tabIcon: String = "",
|
||||
val tabSelectedIcon: String = "",
|
||||
val tabName: String = "",
|
||||
val tabType: Int = 0
|
||||
)
|
@@ -0,0 +1,10 @@
|
||||
package com.yizhuan.xchat_android_core.home.bean;
|
||||
|
||||
public interface MainTabType {
|
||||
//tabType(1-派对,2-广场,3-赛事,4-消息,5-我的)
|
||||
int TAB_TYPE_HOME = 1;
|
||||
int TAB_TYPE_SQUARE = 2;
|
||||
int TAB_TYPE_GAME = 3;
|
||||
int TAB_TYPE_MSG = 4;
|
||||
int TAB_TYPE_ME = 5;
|
||||
}
|
@@ -189,18 +189,6 @@ object HomeModel : BaseModel() {
|
||||
@POST("interactive/unreadCount")
|
||||
fun getUnreadCount(@Query("uid") uid: Long): Single<ServiceResult<UnReadCountInfo>>
|
||||
|
||||
/**
|
||||
* 获取互动消息未读数量
|
||||
*
|
||||
* @param uid
|
||||
* @return
|
||||
*/
|
||||
@POST
|
||||
fun getCode(
|
||||
@Url url: String,
|
||||
@Query("user_id") uid: Long
|
||||
): Single<ServiceResult<UnReadCountInfo>>
|
||||
|
||||
/**
|
||||
* 首页Banner
|
||||
*
|
||||
@@ -317,6 +305,14 @@ object HomeModel : BaseModel() {
|
||||
@GET("/single/broadcast/morePopularityAnchorList")
|
||||
suspend fun getMoreSingleAnchorList(): ServiceResult<List<HomeRoomInfo>>
|
||||
|
||||
/**
|
||||
* 获取首页Tab配置
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GET("/app/bottomBar/getCurrentAppBottomBar")
|
||||
suspend fun getMainTabList(): ServiceResult<List<MainTabInfo>>
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -1,19 +1,30 @@
|
||||
package com.yizhuan.xchat_android_core.initial;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.LiveData;
|
||||
|
||||
import com.yizhuan.xchat_android_core.base.IModel;
|
||||
import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
|
||||
import com.yizhuan.xchat_android_core.home.bean.MainTabInfo;
|
||||
import com.yizhuan.xchat_android_core.initial.bean.BoxInfo;
|
||||
import com.yizhuan.xchat_android_core.initial.bean.InitInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.Single;
|
||||
|
||||
/**
|
||||
* @author: hewenhao
|
||||
* @date: 2018/9/10 11:32
|
||||
* @author: hewenhao
|
||||
* @date: 2018/9/10 11:32
|
||||
*/
|
||||
public interface IInitialModel extends IModel {
|
||||
|
||||
@NonNull
|
||||
LiveData<List<MainTabInfo>> getMainTabInfosLiveData();
|
||||
|
||||
Single<InitInfo> init(boolean force);
|
||||
|
||||
boolean isReportSwitch();
|
||||
@@ -34,6 +45,9 @@ public interface IInitialModel extends IModel {
|
||||
|
||||
String getPublicChatHallUid();
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
void loadMainTabInfoList();
|
||||
|
||||
Single<BoxInfo> getBoxInfo();
|
||||
|
||||
boolean isCaptchaSwitch();
|
||||
@@ -48,7 +62,7 @@ public interface IInitialModel extends IModel {
|
||||
* @return
|
||||
*/
|
||||
|
||||
Single<ServiceResult> reportAdv(String oaid,String imeiMD5);
|
||||
Single<ServiceResult> reportAdv(String oaid, String imeiMD5);
|
||||
|
||||
int getTeenagerMode();
|
||||
|
||||
|
@@ -1,12 +1,16 @@
|
||||
package com.yizhuan.xchat_android_core.initial;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.bumptech.glide.request.FutureTarget;
|
||||
import com.bumptech.glide.request.target.Target;
|
||||
@@ -15,6 +19,8 @@ import com.yizhuan.xchat_android_core.DemoCache;
|
||||
import com.yizhuan.xchat_android_core.base.BaseModel;
|
||||
import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
|
||||
import com.yizhuan.xchat_android_core.certification.CertificationModel;
|
||||
import com.yizhuan.xchat_android_core.home.bean.MainTabInfo;
|
||||
import com.yizhuan.xchat_android_core.home.bean.MainTabType;
|
||||
import com.yizhuan.xchat_android_core.initial.bean.BoxInfo;
|
||||
import com.yizhuan.xchat_android_core.initial.bean.InitInfo;
|
||||
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
|
||||
@@ -23,6 +29,7 @@ import com.yizhuan.xchat_android_core.public_chat_hall.manager.PublicChatHallDat
|
||||
import com.yizhuan.xchat_android_core.room.face.DynamicFaceModel;
|
||||
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils;
|
||||
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
|
||||
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
|
||||
import com.yizhuan.xchat_android_core.withdraw.WithdrawModel;
|
||||
import com.yizhuan.xchat_android_library.net.rxnet.RxNet;
|
||||
import com.yizhuan.xchat_android_library.utils.JavaUtil;
|
||||
@@ -31,6 +38,9 @@ import com.yizhuan.xchat_android_library.utils.NetworkUtils;
|
||||
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.Single;
|
||||
import io.reactivex.SingleOnSubscribe;
|
||||
@@ -60,6 +70,7 @@ public class InitialModel extends BaseModel implements IInitialModel {
|
||||
private static final long TIME_EXPIRED = 24 * 60 * 60 * 1000;
|
||||
private volatile static IInitialModel model;
|
||||
private final Api api;
|
||||
private final MutableLiveData<List<MainTabInfo>> mainTabInfosLiveData = new MutableLiveData<>();
|
||||
private boolean requesting;
|
||||
private boolean success;
|
||||
private BroadcastReceiver receiver;
|
||||
@@ -71,22 +82,18 @@ public class InitialModel extends BaseModel implements IInitialModel {
|
||||
* 宝箱开关,等级限制
|
||||
*/
|
||||
private BoxInfo boxInfo;
|
||||
|
||||
/**
|
||||
* 注册图片验证码开关
|
||||
*/
|
||||
private boolean captchaSwitch;
|
||||
|
||||
/**
|
||||
* 记录服务器与本地的时间差
|
||||
*/
|
||||
private long timeDiff;
|
||||
|
||||
/**
|
||||
* 是否需要上报消息的开关
|
||||
*/
|
||||
private boolean reportSwitch;
|
||||
|
||||
/**
|
||||
* 家长模式引导 1-强 2- 弱
|
||||
*/
|
||||
@@ -110,6 +117,7 @@ public class InitialModel extends BaseModel implements IInitialModel {
|
||||
|
||||
private InitialModel() {
|
||||
api = RxNet.create(Api.class);
|
||||
loadMainTabInfoList();
|
||||
IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
|
||||
receiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
@@ -137,6 +145,12 @@ public class InitialModel extends BaseModel implements IInitialModel {
|
||||
return model;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public LiveData<List<MainTabInfo>> getMainTabInfosLiveData() {
|
||||
return mainTabInfosLiveData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Single<InitInfo> init(boolean force) {
|
||||
if (requesting && initResultSingle != null) return initResultSingle;
|
||||
@@ -396,6 +410,58 @@ public class InitialModel extends BaseModel implements IInitialModel {
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
@Override
|
||||
public void loadMainTabInfoList() {
|
||||
api.getMainTabList()
|
||||
.compose(RxHelper.handleBeanData())
|
||||
.doOnError(throwable -> mainTabInfosLiveData.setValue(getDefaultMainTab()))
|
||||
.subscribe(mainTabInfos -> {
|
||||
if (mainTabInfos.size() != 5) {
|
||||
mainTabInfosLiveData.setValue(getDefaultMainTab());
|
||||
} else {
|
||||
mainTabInfosLiveData.setValue(mainTabInfos);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private List<MainTabInfo> getDefaultMainTab() {
|
||||
return new ArrayList<>(Arrays.asList(
|
||||
new MainTabInfo(
|
||||
"",
|
||||
"",
|
||||
"派对",
|
||||
MainTabType.TAB_TYPE_HOME
|
||||
),
|
||||
new MainTabInfo(
|
||||
"",
|
||||
"",
|
||||
"广场",
|
||||
MainTabType.TAB_TYPE_SQUARE
|
||||
),
|
||||
new MainTabInfo(
|
||||
"",
|
||||
"",
|
||||
"赛事",
|
||||
MainTabType.TAB_TYPE_GAME
|
||||
),
|
||||
new MainTabInfo(
|
||||
"",
|
||||
"",
|
||||
"消息",
|
||||
MainTabType.TAB_TYPE_MSG
|
||||
),
|
||||
new MainTabInfo(
|
||||
"",
|
||||
"",
|
||||
"我的",
|
||||
MainTabType.TAB_TYPE_ME
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取宝箱信息,如果没有,则重新加载
|
||||
*/
|
||||
@@ -483,5 +549,13 @@ public class InitialModel extends BaseModel implements IInitialModel {
|
||||
@POST("/observe/callback")
|
||||
@FormUrlEncoded
|
||||
Single<ServiceResult> reportAdv(@Field("imei") String imeiMD5, @Field("oaid") String oaidMD5);
|
||||
|
||||
/**
|
||||
* 获取首页Tab配置
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GET("/app/bottomBar/getCurrentAppBottomBar")
|
||||
Single<ServiceResult<List<MainTabInfo>>> getMainTabList();
|
||||
}
|
||||
}
|
||||
|
@@ -149,7 +149,6 @@ public class DynamicFaceModel extends BaseModel implements IDynamicFaceModel {
|
||||
String offlineEncryptString = DemoCache.readFaceList();
|
||||
try {
|
||||
String faceString = DESUtils.DESAndBase64Decrypt(offlineEncryptString);
|
||||
LogUtils.d(faceString);
|
||||
offlineFaceList = new Gson().fromJson(faceString, FaceListInfo.class);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
Reference in New Issue
Block a user