package me.storm.ninegag.ui; import android.content.res.Configuration; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.view.GravityCompat; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import butterknife.ButterKnife; import butterknife.InjectView; import me.storm.ninegag.R; import me.storm.ninegag.model.Category; import me.storm.ninegag.ui.fragment.BaseFragment; import me.storm.ninegag.ui.fragment.DrawerFragment; import me.storm.ninegag.ui.fragment.FeedsFragment; import me.storm.ninegag.view.BlurFoldingActionBarToggle; import me.storm.ninegag.view.FoldingDrawerLayout; /** * Created by storm on 14-3-24. */ public class MainActivity extends BaseActivity { @InjectView(R.id.drawer_layout) FoldingDrawerLayout mDrawerLayout; @InjectView(R.id.content_frame) FrameLayout contentLayout; @InjectView(R.id.blur_image) ImageView blurImage; private BlurFoldingActionBarToggle mDrawerToggle; private FeedsFragment mContentFragment; private Category mCategory; private Menu mMenu; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.inject(this); actionBar.setIcon(R.drawable.ic_actionbar); mDrawerLayout.setScrimColor(Color.argb(100, 255, 255, 255)); mDrawerToggle = new BlurFoldingActionBarToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { @Override public void onDrawerOpened(View view) { super.onDrawerOpened(view); setTitle(R.string.app_name); mMenu.findItem(R.id.action_refresh).setVisible(false); } @Override public void onDrawerClosed(View view) { super.onDrawerClosed(view); setTitle(mCategory.getDisplayName()); mMenu.findItem(R.id.action_refresh).setVisible(true); blurImage.setVisibility(View.GONE); blurImage.setImageBitmap(null); } }; mDrawerToggle.setBlurImageAndView(blurImage, contentLayout); mDrawerLayout.setDrawerListener(mDrawerToggle); setCategory(Category.hot); replaceFragment(R.id.left_drawer, new DrawerFragment()); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } protected void replaceFragment(int viewId, BaseFragment fragment) { FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(viewId, fragment).commit(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); mMenu = menu; return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case R.id.action_refresh: mContentFragment.loadFirstAndScrollToTop(); return true; default: return super.onOptionsItemSelected(item); } } public void setCategory(Category category) { mDrawerLayout.closeDrawer(GravityCompat.START); if (mCategory == category) { return; } mCategory = category; setTitle(mCategory.getDisplayName()); mContentFragment = FeedsFragment.newInstance(category); replaceFragment(R.id.content_frame, mContentFragment); } }