package com.wisedu.scc.love.activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewConfiguration; import android.view.Window; import com.wisedu.scc.love.R; import com.wisedu.scc.love.activity.base.BaseFragmentActivity; import com.wisedu.scc.love.activity.fragment.ContactTabFragment; import com.wisedu.scc.love.activity.fragment.FindTabFragment; import com.wisedu.scc.love.activity.fragment.MainTabFragment; import com.wisedu.scc.love.activity.fragment.MeTabFragment; import com.wisedu.scc.love.widget.icon.ChangeColorIcon; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.OptionsItem; import org.androidannotations.annotations.OptionsMenu; import org.androidannotations.annotations.ViewById; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; @EActivity(R.layout.activity_main) @OptionsMenu(R.menu.menu_main) public class MainActivity extends BaseFragmentActivity implements ViewPager.OnPageChangeListener, View.OnClickListener { @ViewById(R.id.id_viewpager) protected ViewPager mViewPager; @ViewById(R.id.id_indicator_main) protected ChangeColorIcon main; @ViewById(R.id.id_indicator_contact) protected ChangeColorIcon contact; @ViewById(R.id.id_indicator_find) protected ChangeColorIcon find; @ViewById(R.id.id_indicator_me) protected ChangeColorIcon me; private List<Fragment> mTabs = new ArrayList<>(); private FragmentPagerAdapter mAdapter; private List<ChangeColorIcon> mTabIndicator = new ArrayList<>(); @AfterViews public void doAfterViews() { setOverflowShowingAlways(); // 设置ActionBar getActionBar().setDisplayShowHomeEnabled(false); // 左上角图标不显示 initData(); // 初始化数据 } /** * 设置ActionBar的overflow一直显示 */ private void setOverflowShowingAlways() { try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } catch (Exception e) { e.printStackTrace(); } } /** * 初始化ViewPager相关数据 */ private void initData() { // 设置ViewPager的Fragment MainTabFragment mainTabFragment = new MainTabFragment(); Bundle args = new Bundle(); args.putString("param", "参数"); mainTabFragment.setArguments(args); mTabs.add(mainTabFragment); ContactTabFragment contactTabFragment = new ContactTabFragment(); mTabs.add(contactTabFragment); FindTabFragment findTabFragment = new FindTabFragment(); mTabs.add(findTabFragment); MeTabFragment meTabFragment = new MeTabFragment(); mTabs.add(meTabFragment); // 初始化ViewPager适配器 mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public int getCount() { return mTabs.size(); } @Override public Fragment getItem(int arg0) { return mTabs.get(arg0); } }; // 设置ViewPager的适配器及页面切换事件 mViewPager.setAdapter(mAdapter); mViewPager.setOnPageChangeListener(this); // 初始化TAB指示器 initTabIndicator(); } /** * 初始化TAB指示器 */ private void initTabIndicator() { // 在TAB指示中添加四个Fragment mTabIndicator.add(main); mTabIndicator.add(contact); mTabIndicator.add(find); mTabIndicator.add(me); // 设置监听器 main.setOnClickListener(this); contact.setOnClickListener(this); find.setOnClickListener(this); me.setOnClickListener(this); // 将main设置为活跃状态 main.setIconAlpha(1.0f); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { if (positionOffset > 0) { ChangeColorIcon left = mTabIndicator.get(position); ChangeColorIcon right = mTabIndicator.get(position + 1); left.setIconAlpha(1 - positionOffset); right.setIconAlpha(positionOffset); } } @Override public void onPageScrollStateChanged(int state) {} @Override public void onPageSelected(int arg0) {} @Override public void onClick(View v) { resetOtherTabs(); switch (v.getId()) { case R.id.id_indicator_main: mTabIndicator.get(0).setIconAlpha(1.0f); mViewPager.setCurrentItem(0, false); break; case R.id.id_indicator_contact: mTabIndicator.get(1).setIconAlpha(1.0f); mViewPager.setCurrentItem(1, false); break; case R.id.id_indicator_find: mTabIndicator.get(2).setIconAlpha(1.0f); mViewPager.setCurrentItem(2, false); break; case R.id.id_indicator_me: mTabIndicator.get(3).setIconAlpha(1.0f); mViewPager.setCurrentItem(3, false); break; } } /** * 重置其他的Tab */ private void resetOtherTabs() { for (int i = 0; i < mTabIndicator.size(); i++) { mTabIndicator.get(i).setIconAlpha(0); } } @Override public boolean onMenuOpened(int featureId, Menu menu) { if (featureId == Window.FEATURE_ACTION_BAR && menu != null) { if (menu.getClass().getSimpleName().equals("MenuBuilder")) { try { Method m = menu.getClass().getDeclaredMethod( "setOptionalIconsVisible", Boolean.TYPE); m.setAccessible(true); m.invoke(menu, true); } catch (Exception e) { e.printStackTrace(); } } } return super.onMenuOpened(featureId, menu); } /** * 点击菜单执行事件 */ @OptionsItem({ R.id.action_search,R.id.action_add_friend ,R.id.action_scan ,R.id.action_feed }) protected void doSearch(MenuItem item) { Intent intent = null; switch (item.getItemId()){ case R.id.action_search: intent = new Intent(this, SearchActivity_.class); break; case R.id.action_add_friend: intent = new Intent(this, AddFriendActivity_.class); break; case R.id.action_scan: intent = new Intent(this, ScanActivity_.class); break; case R.id.action_feed: intent = new Intent(this, FeedActivity_.class); break; } if(null != intent) startActivity(intent); } }