package com.xiecc.seeWeather.base; import android.os.Build; import android.os.Bundle; import android.support.design.widget.AppBarLayout; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.view.animation.DecelerateInterpolator; import com.xiecc.seeWeather.R; /** * Created by HugoXie on 16/6/24. * * Email: Hugo3641@gamil.com * GitHub: https://github.com/xcc3641 * Info: 适配所有 toolbar 的 activity 灵感来源 MeiZhi */ public abstract class ToolbarActivity extends BaseActivity { abstract protected int provideContentViewId(); public void onToolbarClick() { } protected AppBarLayout mAppBar; protected Toolbar mToolbar; protected boolean mIsHidden = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); beforeSetContent(); setContentView(provideContentViewId()); mAppBar = (AppBarLayout) findViewById(R.id.appbar_layout); mToolbar = (Toolbar) findViewById(R.id.toolbar); if (mToolbar == null || mAppBar == null) { throw new IllegalStateException( "The subclass of ToolbarActivity must contain a toolbar."); } mToolbar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onToolbarClick(); } }); setSupportActionBar(mToolbar); if (canBack()) { ActionBar actionBar = getSupportActionBar(); if (actionBar != null) actionBar.setDisplayHomeAsUpEnabled(true); } if (Build.VERSION.SDK_INT >= 21) { mAppBar.setElevation(10.6f); } } public boolean canBack() { return false; } protected void setAppBarAlpha(float alpha) { mAppBar.setAlpha(alpha); } public Toolbar getToolbar() { return mToolbar; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } else { return super.onOptionsItemSelected(item); } } protected void hideOrShowToolbar() { mAppBar.animate() .translationY(mIsHidden ? 0 : -mAppBar.getHeight()) .setInterpolator(new DecelerateInterpolator(2)) .start(); mIsHidden = !mIsHidden; } protected void beforeSetContent() { } }