Last active
March 12, 2017 16:39
-
-
Save Suleiman19/5b4bcebde5d4315cf02ad63d72405650 to your computer and use it in GitHub Desktop.
Flexible Space with Image pattern UI setup and menu scroll listener
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class AnimateToolbar extends AppCompatActivity { | |
private CollapsingToolbarLayout collapsingToolbar; | |
private AppBarLayout appBarLayout; | |
private RecyclerView recyclerView; | |
private DessertAdapter dessertAdapter; | |
private Menu collapsedMenu; | |
private boolean appBarExpanded = true; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_animate_toolbar); | |
final Toolbar toolbar = (Toolbar) findViewById(R.id.anim_toolbar); | |
setSupportActionBar(toolbar); | |
if (getSupportActionBar() != null) | |
getSupportActionBar().setDisplayHomeAsUpEnabled(true); | |
appBarLayout = (AppBarLayout) findViewById(R.id.appbar); | |
collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); | |
collapsingToolbar.setTitle(getString(R.string.android_desserts)); | |
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), | |
R.drawable.header); | |
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() { | |
@SuppressWarnings("ResourceType") | |
@Override | |
public void onGenerated(Palette palette) { | |
int vibrantColor = palette.getVibrantColor(R.color.primary_500); | |
collapsingToolbar.setContentScrimColor(vibrantColor); | |
collapsingToolbar.setStatusBarScrimColor(R.color.black_trans80); | |
} | |
}); | |
recyclerView = (RecyclerView) findViewById(R.id.scrollableview); | |
// Use when your list size is constant for better performance | |
recyclerView.setHasFixedSize(true); | |
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); | |
recyclerView.setLayoutManager(linearLayoutManager); | |
dessertAdapter = new DessertAdapter(this); | |
recyclerView.setAdapter(dessertAdapter); | |
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { | |
@Override | |
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { | |
Log.d(AnimateToolbar.class.getSimpleName(), "onOffsetChanged: verticalOffset: " + verticalOffset); | |
// Vertical offset == 0 indicates appBar is fully expanded. | |
if (Math.abs(verticalOffset) > 200) { | |
appBarExpanded = false; | |
invalidateOptionsMenu(); | |
} else { | |
appBarExpanded = true; | |
invalidateOptionsMenu(); | |
} | |
} | |
}); | |
} | |
@Override | |
public boolean onPrepareOptionsMenu(Menu menu) { | |
if (collapsedMenu != null | |
&& (!appBarExpanded || collapsedMenu.size() != 1)) { | |
//collapsed | |
collapsedMenu.add("Add") | |
.setIcon(R.drawable.ic_action_add) | |
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); | |
} else { | |
//expanded | |
} | |
return super.onPrepareOptionsMenu(collapsedMenu); | |
} | |
@Override | |
public boolean onCreateOptionsMenu(Menu menu) { | |
getMenuInflater().inflate(R.menu.menu_main, menu); | |
collapsedMenu = menu; | |
return true; | |
} | |
@Override | |
public boolean onOptionsItemSelected(MenuItem item) { | |
switch (item.getItemId()) { | |
case android.R.id.home: | |
finish(); | |
return true; | |
case R.id.action_settings: | |
return true; | |
} | |
if (item.getTitle() == "Add") { | |
Toast.makeText(this, "clicked add", Toast.LENGTH_SHORT).show(); | |
} | |
return super.onOptionsItemSelected(item); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment