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 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() { @Override public Unit invoke(DslTabLayoutConfig dslTabLayoutConfig) { dslTabLayoutConfig.setOnSelectItemView(new Function4() { @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>() { int point = 0; @Override public void onSuccess(List data) { for (OfficialNoticeBean datum : data) { point += datum.getNum(); } //大于0则是通过会话未读监听器获取到的数,则不用再调用获取未读数接口了 if (count >= 0) { updateUnreadCount(point + count); return; } RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback() { @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); } } }