package ren.solid.ganhuoio.common.activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewCompat;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import cn.bmob.v3.update.BmobUpdateAgent;
import ren.solid.ganhuoio.R;
import ren.solid.ganhuoio.module.home.fragment.HomeFragment;
import ren.solid.ganhuoio.module.mine.MineFragment;
import ren.solid.ganhuoio.module.read.ReadingTabFragment;
import ren.solid.ganhuoio.module.search.SearchActivity;
import ren.solid.library.activity.base.BaseMainActivity;
import ren.solid.library.fragment.base.AbsListFragment;
import ren.solid.library.fragment.base.BaseFragment;
import ren.solid.library.utils.ViewUtils;
public class MainActivity extends BaseMainActivity {
private BottomNavigationView mBottomNavigationView;
private FragmentManager mFragmentManager;
private Fragment mCurrentFragment;
private AppBarLayout mAppBarLayout;
@Override
protected int setLayoutResourceID() {
return R.layout.activity_main;
}
@Override
protected void init(Bundle savedInstanceState) {
BmobUpdateAgent.update(this);
mFragmentManager = getSupportFragmentManager();
switchFragment(0);
}
@Override
protected void setUpView() {
mAppBarLayout = $(R.id.appbar_layout);
mBottomNavigationView = $(R.id.bottom_navigation);
mBottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.item_home:
showAppBar();
switchFragment(0);
break;
case R.id.item_reading:
hideAppBar();
switchFragment(1);
break;
case R.id.item_collect:
hideAppBar();
switchFragment(2);
break;
default:
break;
}
return false;
}
});
ViewCompat.setElevation(mAppBarLayout, ViewUtils.dp2px(this, 4));
$(R.id.tv_search).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SearchActivity.start(MainActivity.this);
}
});
}
private void hideAppBar() {
ViewGroup.LayoutParams layoutParams = mAppBarLayout.getLayoutParams();
if (layoutParams.height == 0) return;
layoutParams.height = 0;
mAppBarLayout.setLayoutParams(layoutParams);
}
private void showAppBar() {
ViewGroup.LayoutParams layoutParams = mAppBarLayout.getLayoutParams();
if (layoutParams.height != 0) return;
layoutParams.height = getResources().getDimensionPixelSize(R.dimen.app_bar_height);
mAppBarLayout.setLayoutParams(layoutParams);
}
@Override
protected void setUpData() {
}
private void switchFragment(int index) {
Fragment to = mFragmentManager.findFragmentByTag(index + "");
if (to == null) {
if (index == 0)
to = ViewUtils.createFragment(HomeFragment.class);
else if (index == 1)
to = ViewUtils.createFragment(ReadingTabFragment.class);
else if (index == 2)
to = ViewUtils.createFragment(MineFragment.class);
else
to = ViewUtils.createFragment(HomeFragment.class);
}
if (to == mCurrentFragment && mCurrentFragment instanceof BaseFragment) {
((BaseFragment) mCurrentFragment).refresh();
} else if (to.isAdded()) {
mFragmentManager.beginTransaction().hide(mCurrentFragment).show(to).commit();
} else {
to.setUserVisibleHint(true);
if (mCurrentFragment != null)
mFragmentManager.beginTransaction().hide(mCurrentFragment).add(R.id.frame_content, to, index + "").commit();
else
mFragmentManager.beginTransaction().add(R.id.frame_content, to, index + "").commit();
}
mCurrentFragment = to;
}
@Override
protected boolean beforeOnBackPressed() {
if (mCurrentFragment instanceof AbsListFragment) {
AbsListFragment listFragment = (AbsListFragment) mCurrentFragment;
return listFragment.scrollToTop();
} else if (mCurrentFragment instanceof ReadingTabFragment) {
ReadingTabFragment readingTabFragment = (ReadingTabFragment) mCurrentFragment;
return readingTabFragment.scrollToTop();
}
return true;
}
}