package info.papdt.pano.ui.activities; import android.app.Activity; import android.os.Build; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.animation.DecelerateInterpolator; import android.support.design.widget.AppBarLayout; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import info.papdt.pano.R; import static info.papdt.pano.ui.util.UiUtility.*; public abstract class ToolbarActivity extends AppCompatActivity { abstract protected int getLayoutResource(); protected AppBarLayout mAppBar; protected Toolbar mToolbar; protected TabLayout mTabLayout; protected boolean isHidden = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutResource()); mAppBar = $(this, R.id.appbar); mToolbar = $(this, R.id.toolbar); if (mToolbar == null || mAppBar == null) { throw new IllegalStateException("no toolbar"); } setSupportActionBar(mToolbar); if (Build.VERSION.SDK_INT >= 21) { mAppBar.setElevation(10.6f); } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } else { return super.onOptionsItemSelected(item); } } protected void setAppBarAlpha(float alpha) { mAppBar.setAlpha(alpha); } protected void hideOrShowToolbar() { mAppBar.animate() .translationY(isHidden ? 0 : -mAppBar.getHeight()) .setInterpolator(new DecelerateInterpolator(2)) .start(); isHidden = !isHidden; } protected void setupTabs(ViewPager pager) { mTabLayout = $(this, R.id.tab); if (mTabLayout == null) { throw new IllegalStateException("no tabs"); } mTabLayout.setupWithViewPager(pager); mTabLayout.setVisibility(View.VISIBLE); } }