package hillfly.wifichat.activity; import hillfly.wifichat.R; import hillfly.wifichat.adapter.TabPagerAdapter; import hillfly.wifichat.common.ActivitiesManager; import hillfly.wifichat.common.BaseActivity; import hillfly.wifichat.common.BaseFragment; import hillfly.wifichat.common.socket.udp.UDPMessageListener; import hillfly.wifichat.common.socket.udp.UDPMessageListener.OnNewMsgListener; import hillfly.wifichat.consts.IPMSGConst; import hillfly.wifichat.fragment.FriendsFragment; import hillfly.wifichat.fragment.MessageFragment; import hillfly.wifichat.fragment.SettingFragment; import java.util.ArrayList; import java.util.List; import android.app.ActionBar; import android.app.FragmentTransaction; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.view.KeyEvent; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.readystatesoftware.viewbadger.BadgeView; public class MainTabActivity extends BaseActivity implements ActionBar.TabListener, OnNewMsgListener { private List<BaseFragment> fragments; private TabPagerAdapter mPagerAdapter; private ViewPager mViewPager; public BadgeView mBadgeView; private View mTabView; private long ExitTime; // 延时退出时间变量 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maintabs); mUDPListener = UDPMessageListener.getInstance(getApplicationContext()); mUDPListener.addMsgListener(this); initEvents(); } @Override protected void initViews() { } @Override protected void onDestroy() { super.onDestroy(); mUDPListener.removeMsgListener(this); } @Override protected void initEvents() { mActionBar = getActionBar(); mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // 加入Fragment fragments = new ArrayList<BaseFragment>(); fragments.add(new FriendsFragment(mContext)); fragments.add(new MessageFragment(mContext)); fragments.add(new SettingFragment(mContext)); mPagerAdapter = new TabPagerAdapter(getFragmentManager(), fragments); mViewPager = (ViewPager) findViewById(R.id.viewpager); mViewPager.setAdapter(mPagerAdapter); mViewPager.setOffscreenPageLimit(3); // 缓存三个fragment mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { mActionBar.setSelectedNavigationItem(position); } }); // 添加tab for (int i = 0; i < 3; i++) { mTabView = getLayoutInflater().inflate(R.layout.actionbar_tab_layout, null); TextView tvTabText = (TextView) mTabView.findViewById(R.id.tab_text); mBadgeView = (BadgeView) mTabView.findViewById(R.id.tab_badge); mBadgeView.hide(); // 默认隐藏 switch (i) { case 0: tvTabText.setText(getString(R.string.maintab_text_nearby)); break; case 1: tvTabText.setText(getString(R.string.maintab_text_message)); break; case 2: tvTabText.setText(getString(R.string.maintab_text_setting)); break; } mActionBar.addTab(mActionBar.newTab().setCustomView(mTabView).setTabListener(this)); } mBadgeView = (BadgeView) mActionBar.getTabAt(1).getCustomView() .findViewById(R.id.tab_badge); mUDPListener.connectUDPSocket(); mUDPListener.notifyOnline(); } @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { int i = tab.getPosition(); mViewPager.setCurrentItem(i); switch (i) { case 1: MessageFragment v2 = (MessageFragment) mPagerAdapter.getItem(1); v2.refreshAdapter(); break; default: break; } } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if ((System.currentTimeMillis() - ExitTime) > 2000) { Toast.makeText(this, getString(R.string.maintab_toast_logout), Toast.LENGTH_SHORT) .show(); ExitTime = System.currentTimeMillis(); } else { ActivitiesManager.finishAllActivities(getApplicationContext()); } return true; } return super.onKeyDown(keyCode, event); } public Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case IPMSGConst.IPMSG_BR_ENTRY: // 用户上线 case IPMSGConst.IPMSG_BR_EXIT: // 用户下线 FriendsFragment v1 = (FriendsFragment) (mPagerAdapter).getItem(0); v1.initMaptoList(); v1.refreshAdapter(); break; case IPMSGConst.IPMSG_RECVMSG: // 收到新消息 case IPMSGConst.IPMSG_READMSG: // 打开新消息 if (mBadgeView == null) { mBadgeView = (BadgeView) mActionBar.getTabAt(1).getCustomView() .findViewById(R.id.tab_badge); } int num = mUDPListener.getUnReadPeopleSize(); MessageFragment v2 = (MessageFragment) (mPagerAdapter).getItem(1); v2.refreshAdapter(); switch (num) { case 0: mBadgeView.setText("0"); mBadgeView.setVisibility(View.GONE); break; default: mBadgeView.setText(num + ""); mBadgeView.setVisibility(View.VISIBLE); break; } break; default: break; } } }; @Override public void processMessage(Message pMsg) { handler.sendEmptyMessage(pMsg.what); } }