package com.ui.home; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; import android.support.v7.app.ActionBarDrawerToggle; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.C; import com.app.annotation.apt.Router; import com.app.annotation.aspect.CheckLogin; import com.app.annotation.aspect.SingleClick; import com.apt.TRouter; import com.base.BaseActivity; import com.base.entity.DataExtra; import com.base.util.BindingUtils; import com.base.util.SpUtil; import com.base.util.helper.FragmentAdapter; import com.base.util.helper.PagerChangeListener; import com.model._User; import com.ui.main.R; import com.ui.main.TMVPFragment; import com.ui.main.databinding.ActivityMainBinding; import rx.Observable; @Router(C.HOME) public class HomeActivity extends BaseActivity<HomePresenter, ActivityMainBinding> implements HomeContract.View, NavigationView.OnNavigationItemSelectedListener, View.OnClickListener { @Override public int getLayoutId() { return R.layout.activity_main; } @Override public int getMenuId() { return R.menu.menu_overaction; } @Override public void onBackPressed() { if (mViewBinding.dlMainDrawer.isDrawerOpen(Gravity.LEFT)) mViewBinding.dlMainDrawer.closeDrawers(); else super.onBackPressed(); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_settings) TRouter.go(C.ABOUT); else if (item.getItemId() == R.id.action_feedback) TRouter.go(C.ADVISE); else if (item.getItemId() == R.id.action_about) TMVPFragment.getInstance().start(getSupportFragmentManager()); else if (item.getItemId() == android.R.id.home) mViewBinding.dlMainDrawer.openDrawer(GravityCompat.START); return true; } @Override public void initView() { ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, mViewBinding.dlMainDrawer, R.string.drawer_open, R.string.drawer_close); mDrawerToggle.syncState(); mViewBinding.dlMainDrawer.addDrawerListener(mDrawerToggle); mViewBinding.nvMainNavigation.setNavigationItemSelectedListener(this); } @Override public void showTabList(String[] mTabs) { Observable.from(mTabs).map(ArticleFragment::newInstance).toList() .map(fragments -> FragmentAdapter.newInstance(getSupportFragmentManager(), fragments, mTabs)) .subscribe(mFragmentAdapter -> mViewBinding.viewpager.setAdapter(mFragmentAdapter)); PagerChangeListener mPagerChangeListener = PagerChangeListener.newInstance(mViewBinding.collapsingToolbar, mViewBinding.toolbarIvTarget, mViewBinding.toolbarIvOutgoing); mViewBinding.viewpager.addOnPageChangeListener(mPagerChangeListener); mViewBinding.tabs.setupWithViewPager(mViewBinding.viewpager); } @Override public void initUserInfo(_User user) { View mHeaderView = mViewBinding.nvMainNavigation.getHeaderView(0); ImageView im_face = (ImageView) mHeaderView.findViewById(R.id.im_face); TextView tv_name = (TextView) mHeaderView.findViewById(R.id.tv_name); BindingUtils.loadRoundImg(im_face, user.face); tv_name.setText(user.username); } @Override public void onOpenRelease() { mViewBinding.viewpager.setCurrentItem(0); } @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { if (item.getItemId() == R.id.nav_manage) TRouter.go(C.SETTING); else if (item.getItemId() == R.id.nav_share) TRouter.go(C.LOGIN); else if (item.getItemId() == R.id.nav_theme) SpUtil.setNight(mContext, !SpUtil.isNight()); return true; } @SingleClick @CheckLogin public void onClick(View v) { switch (v.getId()) { case R.id.im_face: TRouter.go(C.USER_INFO, new DataExtra(C.HEAD_DATA, SpUtil.getUser()).build(), v); break; case R.id.fab: TRouter.go(C.USER_RELEASE, new DataExtra(C.HEAD_DATA, SpUtil.getUser()).build(), v); break; } } }