This repository has been archived by the owner on Feb 19, 2021. It is now read-only.
/
ToolbarActivity.java
82 lines (69 loc) · 2.3 KB
/
ToolbarActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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.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);
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(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;
}
}