168 lines
6.0 KiB
Java
168 lines
6.0 KiB
Java
package com.shayu.onetoone.activity;
|
||
|
||
import android.net.Uri;
|
||
import android.os.Bundle;
|
||
import android.view.View;
|
||
|
||
import androidx.annotation.NonNull;
|
||
import androidx.fragment.app.Fragment;
|
||
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||
import androidx.viewpager2.widget.ViewPager2;
|
||
|
||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||
import com.angcyo.tablayout.DslTabLayout;
|
||
import com.angcyo.tablayout.DslTabLayoutConfig;
|
||
import com.angcyo.tablayout.delegate2.ViewPager2Delegate;
|
||
import com.shayu.onetoone.R;
|
||
import com.shayu.onetoone.activity.fragments.BaseFragment;
|
||
import com.shayu.onetoone.activity.fragments.DynamicFragment;
|
||
import com.shayu.onetoone.activity.fragments.FriendsFragment;
|
||
import com.shayu.onetoone.activity.fragments.MessageFragment;
|
||
import com.shayu.onetoone.activity.fragments.MyFragment;
|
||
import com.shayu.onetoone.bean.OfficialNoticeBean;
|
||
import com.shayu.onetoone.event.MessageMsgBusEvent;
|
||
import com.shayu.onetoone.manager.OTONetManager;
|
||
import com.shayu.onetoone.manager.RouteManager;
|
||
import com.yunbao.common.CommonAppConfig;
|
||
import com.yunbao.common.bean.IMLoginModel;
|
||
import com.yunbao.common.http.base.HttpCallback;
|
||
import com.yunbao.common.manager.IMLoginManager;
|
||
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
|
||
import com.yunbao.common.utils.Bus;
|
||
import com.yunbao.common.utils.ToastUtil;
|
||
|
||
import org.greenrobot.eventbus.Subscribe;
|
||
import org.greenrobot.eventbus.ThreadMode;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
|
||
import io.rong.imkit.RongIM;
|
||
import io.rong.imkit.manager.UnReadMessageManager;
|
||
import io.rong.imkit.userinfo.RongUserInfoManager;
|
||
import io.rong.imlib.RongIMClient;
|
||
import io.rong.imlib.model.Conversation;
|
||
import io.rong.imlib.model.UserInfo;
|
||
import kotlin.Unit;
|
||
import kotlin.jvm.functions.Function1;
|
||
import kotlin.jvm.functions.Function4;
|
||
|
||
/**
|
||
* 主页Activity
|
||
*/
|
||
@Route(path = RouteManager.ACTIVITY_MAIN)
|
||
public class MainActivity extends AbsOTOActivity {
|
||
List<BaseFragment> fragments = new ArrayList<>();
|
||
private ViewPager2 viewPager;
|
||
private DslTabLayout dslTabLayout;
|
||
|
||
@Override
|
||
protected void onDestroy() {
|
||
super.onDestroy();
|
||
Bus.getOff(this);
|
||
}
|
||
|
||
@Override
|
||
protected void main(Bundle savedInstanceState) {
|
||
Bus.getOn(this);
|
||
fragments.add(new FriendsFragment());
|
||
fragments.add(new DynamicFragment());
|
||
fragments.add(new MessageFragment());
|
||
fragments.add(new MyFragment());
|
||
|
||
viewPager = findViewById(R.id.viewPager);
|
||
dslTabLayout = findViewById(R.id.dslTabLayout);
|
||
|
||
viewPager.setAdapter(new FragmentStateAdapter(this) {
|
||
@NonNull
|
||
@Override
|
||
public Fragment createFragment(int position) {
|
||
return fragments.get(position);
|
||
}
|
||
|
||
@Override
|
||
public int getItemCount() {
|
||
return fragments.size();
|
||
}
|
||
});
|
||
viewPager.setUserInputEnabled(false);
|
||
ViewPager2Delegate.Companion.install(viewPager, dslTabLayout, false);
|
||
|
||
dslTabLayout.configTabLayoutConfig(new Function1<DslTabLayoutConfig, Unit>() {
|
||
@Override
|
||
public Unit invoke(DslTabLayoutConfig dslTabLayoutConfig) {
|
||
dslTabLayoutConfig.setOnSelectItemView(new Function4<View, Integer, Boolean, Boolean, Boolean>() {
|
||
@Override
|
||
public Boolean invoke(View itemView, Integer index, Boolean select, Boolean fromUse) {
|
||
if (select) {
|
||
viewPager.setCurrentItem(index);
|
||
}
|
||
return false;
|
||
}
|
||
});
|
||
return null;
|
||
}
|
||
});
|
||
RongcloudIMManager.connectIM(mContext);
|
||
showRedPoint(-1);
|
||
UnReadMessageManager.getInstance().addObserver(new Conversation.ConversationType[]{Conversation.ConversationType.SYSTEM, Conversation.ConversationType.PRIVATE}, new UnReadMessageManager.IUnReadMessageObserver() {
|
||
@Override
|
||
public void onCountChanged(int count) {
|
||
showRedPoint(count);
|
||
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_SYSTEM));
|
||
}
|
||
});
|
||
}
|
||
|
||
private void showRedPoint(int count) {
|
||
OTONetManager.getInstance(mContext)
|
||
.getMessageSystemLists(new HttpCallback<List<OfficialNoticeBean>>() {
|
||
int point = 0;
|
||
|
||
@Override
|
||
public void onSuccess(List<OfficialNoticeBean> data) {
|
||
for (OfficialNoticeBean datum : data) {
|
||
point += datum.getNum();
|
||
}
|
||
//大于0则是通过会话未读监听器获取到的数,则不用再调用获取未读数接口了
|
||
if (count >= 0) {
|
||
updateUnreadCount(point + count);
|
||
return;
|
||
}
|
||
RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback<Integer>() {
|
||
@Override
|
||
public void onSuccess(Integer integer) {
|
||
updateUnreadCount(point + integer);
|
||
}
|
||
|
||
@Override
|
||
public void onError(RongIMClient.ErrorCode e) {
|
||
|
||
}
|
||
});
|
||
}
|
||
|
||
@Override
|
||
public void onError(String error) {
|
||
|
||
}
|
||
});
|
||
}
|
||
|
||
private void updateUnreadCount(int count) {
|
||
dslTabLayout.setDrawBadge(count > 0);
|
||
dslTabLayout.updateTabBadge(2, count + "");
|
||
}
|
||
|
||
@Override
|
||
protected int getLayoutId() {
|
||
return R.layout.activity_main;
|
||
}
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void busEvent(MessageMsgBusEvent event) {
|
||
if (event.getType() == MessageMsgBusEvent.TYPE_ALL_READ) {
|
||
updateUnreadCount(0);
|
||
}
|
||
}
|
||
} |