package com.konifar.materialcat; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.NavigationView; import android.support.design.widget.TabLayout; import android.support.v4.view.GravityCompat; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AbsListView; import com.facebook.CallbackManager; import com.facebook.FacebookSdk; import com.konifar.fab_transformation.FabTransformation; import com.konifar.materialcat.utils.AppUtils; import com.konifar.materialcat.utils.ShareUtils; import com.konifar.materialcat.views.ShareBarView; import com.konifar.materialcat.views.adapters.CatsGridPagerAdappter; import butterknife.Bind; import butterknife.ButterKnife; import butterknife.OnClick; public class MainActivity extends AppCompatActivity implements AbsListView.OnScrollListener { @Bind(R.id.navigation_view) NavigationView navigationView; @Bind(R.id.drawer_layout) DrawerLayout drawerLayout; @Bind(R.id.toolbar) Toolbar toolbar; @Bind(R.id.tab_layout) TabLayout tabLayout; @Bind(R.id.view_pager) ViewPager viewPager; @Bind(R.id.fab) FloatingActionButton fab; @Bind(R.id.share_bar) ShareBarView shareBar; private ActionBarDrawerToggle drawerToggle; private boolean isTransforming; private CallbackManager callbackManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); setSupportActionBar(toolbar); final ActionBar actionBar = getSupportActionBar(); if (actionBar != null) actionBar.setDisplayHomeAsUpEnabled(true); initNavigationView(); initTabLayout(); } private void initTabLayout() { CatsGridPagerAdappter adapter = new CatsGridPagerAdappter(getSupportFragmentManager(), this); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); } private void initNavigationView() { navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { menuItem.setChecked(true); drawerLayout.closeDrawers(); int itemId = menuItem.getItemId(); switch (itemId) { case R.id.nav_home: return true; case R.id.nav_favorite: AppUtils.showToast(R.string.coming_soon, MainActivity.this); return true; case R.id.nav_settings: AppUtils.showToast(R.string.coming_soon, MainActivity.this); return true; } return false; } }); drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close); drawerToggle.setDrawerIndicatorEnabled(true); drawerLayout.setDrawerListener(drawerToggle); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: drawerLayout.openDrawer(GravityCompat.START); return true; case R.id.action_link: AppUtils.showWebPage(ShareUtils.REPOGITORY_URL, this); return true; } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); drawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); drawerToggle.onConfigurationChanged(newConfig); } @OnClick(R.id.fab) void onClickFab() { if (fab.getVisibility() == View.VISIBLE && !isTransforming) { FabTransformation.with(fab) .setListener(new FabTransformation.OnTransformListener() { @Override public void onStartTransform() { isTransforming = true; } @Override public void onEndTransform() { isTransforming = false; } }) .transformTo(shareBar); } } @Override public void onBackPressed() { if (fab.getVisibility() != View.VISIBLE && !isTransforming) { FabTransformation.with(fab) .setListener(new FabTransformation.OnTransformListener() { @Override public void onStartTransform() { isTransforming = true; } @Override public void onEndTransform() { isTransforming = false; } }) .transformFrom(shareBar); return; } super.onBackPressed(); } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (fab.getVisibility() != View.VISIBLE && !isTransforming) { FabTransformation.with(fab) .setListener(new FabTransformation.OnTransformListener() { @Override public void onStartTransform() { isTransforming = true; } @Override public void onEndTransform() { isTransforming = false; } }) .transformFrom(shareBar); } } @Override protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } }