package com.ashokvarma.bottomnavigation.sample;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import com.ashokvarma.bottomnavigation.ShapeBadgeItem;
import com.ashokvarma.bottomnavigation.BadgeItem;
import com.ashokvarma.bottomnavigation.BottomNavigationBar;
import com.ashokvarma.bottomnavigation.BottomNavigationItem;
import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;
public class HomeActivity extends AppCompatActivity implements View.OnClickListener, CompoundButton.OnCheckedChangeListener, BottomNavigationBar.OnTabSelectedListener {
BottomNavigationBar bottomNavigationBar;
FloatingActionButton fabHome;
CheckBox modeFixed;
CheckBox modeShifting;
CheckBox bgStatic;
CheckBox bgRipple;
CheckBox showText;
CheckBox items3;
CheckBox items4;
CheckBox items5;
CheckBox autoHide;
Button toggleHide;
Button toggleBadge;
TextView message;
TextView scrollableText;
int lastSelectedPosition = 0;
boolean showTextFlag = true;
BadgeItem badgeItem;
ShapeBadgeItem circularBadgeItem, sqaureBadgeItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Fabric.with(this, new Crashlytics());
setContentView(R.layout.activity_home);
bottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);
fabHome = (FloatingActionButton) findViewById(R.id.fab_home);
modeFixed = (CheckBox) findViewById(R.id.mode_fixed);
modeShifting = (CheckBox) findViewById(R.id.mode_shifting);
bgStatic = (CheckBox) findViewById(R.id.bg_static);
bgRipple = (CheckBox) findViewById(R.id.bg_ripple);
showText = (CheckBox) findViewById(R.id.show_text);
items3 = (CheckBox) findViewById(R.id.items_3);
items4 = (CheckBox) findViewById(R.id.items_4);
items5 = (CheckBox) findViewById(R.id.items_5);
autoHide = (CheckBox) findViewById(R.id.auto_hide);
toggleHide = (Button) findViewById(R.id.toggle_hide);
toggleBadge = (Button) findViewById(R.id.toggle_badge);
message = (TextView) findViewById(R.id.message);
scrollableText = (TextView) findViewById(R.id.scrollable_text);
modeFixed.setOnCheckedChangeListener(this);
modeShifting.setOnCheckedChangeListener(this);
bgRipple.setOnCheckedChangeListener(this);
bgStatic.setOnCheckedChangeListener(this);
showText.setOnCheckedChangeListener(this);
items3.setOnCheckedChangeListener(this);
items4.setOnCheckedChangeListener(this);
items5.setOnCheckedChangeListener(this);
autoHide.setOnCheckedChangeListener(this);
toggleHide.setOnClickListener(this);
toggleBadge.setOnClickListener(this);
fabHome.setOnClickListener(this);
bottomNavigationBar.setTabSelectedListener(this);
refresh();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.home_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_github:
String url = "https://github.com/Ashok-Varma/BottomNavigation";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.toggle_hide) {
if (bottomNavigationBar != null) {
bottomNavigationBar.toggle();
}
} else if (v.getId() == R.id.toggle_badge) {
if (badgeItem != null) {
badgeItem.toggle();
}
if(circularBadgeItem != null){
circularBadgeItem.toggle();
}
} else if (v.getId() == R.id.fab_home) {
final Snackbar snackbar = Snackbar.make(message, "Fab Clicked", Snackbar.LENGTH_LONG);
snackbar.setAction("dismiss", new View.OnClickListener() {
@Override
public void onClick(View v) {
snackbar.dismiss();
}
});
snackbar.show();
}
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId()) {
case R.id.bg_ripple:
bgStatic.setChecked(!isChecked);
break;
case R.id.bg_static:
bgRipple.setChecked(!isChecked);
break;
case R.id.mode_fixed:
modeShifting.setChecked(!isChecked);
break;
case R.id.mode_shifting:
modeFixed.setChecked(!isChecked);
break;
case R.id.show_text:
showTextFlag = isChecked;
break;
case R.id.items_3:
if (isChecked) {
items4.setChecked(false);
items5.setChecked(false);
}
break;
case R.id.items_4:
if (isChecked) {
items3.setChecked(false);
items5.setChecked(false);
}
break;
case R.id.items_5:
if (isChecked) {
items4.setChecked(false);
items3.setChecked(false);
}
break;
}
if (!items5.isChecked() && !items3.isChecked() && !items4.isChecked()) {
buttonView.setChecked(true);
}
refresh();
}
private void refresh() {
bottomNavigationBar.clearAll();
// bottomNavigationBar.setFab(fabHome, BottomNavigationBar.FAB_BEHAVIOUR_TRANSLATE_AND_STICK);
bottomNavigationBar.setFab(fabHome);
setScrollableText(lastSelectedPosition);
badgeItem = new BadgeItem()
.setBorderWidth(4)
.setBackgroundColorResource(R.color.blue)
.setText("2")
.setHideOnSelect(true)
.setHideOnSelect(autoHide.isChecked());
/*
* Sample to show how to add a dot like badge issue #109
* */
circularBadgeItem = new ShapeBadgeItem()
//.setBorderWidth(8)
.setBackgroundColorResource(R.color.red)
.setDimen(8) // the size to badge in dp
.setShape(ShapeBadgeItem.CIRCLE) // Choose between ShapeBadgeItem.CIRCLE or ShapeBadgeItem.SQUARE
.setMargins(0, 2, 4, 0) // left, top, right, bottom
.setHideOnSelect(autoHide.isChecked());
sqaureBadgeItem = new ShapeBadgeItem()
//.setBorderWidth(8)
.setBackgroundColorResource(R.color.teal)
.setDimen(8) // the size to badge in dp
.setShape(ShapeBadgeItem.SQUARE) // Choose between ShapeBadgeItem.CIRCLE or ShapeBadgeItem.SQUARE
.setMargins(0, 2, 4, 0) // left, top, right, bottom
.setHideOnSelect(autoHide.isChecked());
if (modeFixed.isChecked()) {
bottomNavigationBar
.setMode(BottomNavigationBar.MODE_FIXED);
} else if (modeShifting.isChecked()) {
bottomNavigationBar
.setMode(BottomNavigationBar.MODE_SHIFTING);
}
if (bgStatic.isChecked()) {
bottomNavigationBar
.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);
} else if (bgRipple.isChecked()) {
bottomNavigationBar
.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_RIPPLE);
}
if (items3.isChecked()) {
if (showTextFlag) {
bottomNavigationBar
.addItem(new BottomNavigationItem(R.drawable.ic_location_on_white_24dp, "Nearby").setActiveColorResource(R.color.orange).setTextBadgeItem(badgeItem))
.addItem(new BottomNavigationItem(R.drawable.ic_find_replace_white_24dp, "Find").setActiveColorResource(R.color.teal))
.addItem(new BottomNavigationItem(R.drawable.ic_favorite_white_24dp, "Categories").setActiveColorResource(R.color.blue))
.setFirstSelectedPosition(lastSelectedPosition > 2 ? 2 : lastSelectedPosition)
.initialise();
} else {
bottomNavigationBar
.addItem(new BottomNavigationItem(R.drawable.ic_location_on_white_24dp).setActiveColorResource(R.color.orange).setTextBadgeItem(badgeItem))
.addItem(new BottomNavigationItem(R.drawable.ic_find_replace_white_24dp).setActiveColorResource(R.color.teal))
.addItem(new BottomNavigationItem(R.drawable.ic_favorite_white_24dp).setActiveColorResource(R.color.blue))
.setFirstSelectedPosition(lastSelectedPosition > 2 ? 2 : lastSelectedPosition)
.initialise();
}
} else if (items4.isChecked()) {
if (showTextFlag) {
bottomNavigationBar
.addItem(new BottomNavigationItem(R.drawable.ic_home_white_24dp, "Home").setActiveColorResource(R.color.orange).setTextBadgeItem(badgeItem))
.addItem(new BottomNavigationItem(R.drawable.ic_book_white_24dp, "Books").setActiveColorResource(R.color.teal))
.addItem(new BottomNavigationItem(R.drawable.ic_music_note_white_24dp, "Music").setActiveColorResource(R.color.blue))
.addItem(new BottomNavigationItem(R.drawable.ic_tv_white_24dp, "Movies & TV").setActiveColorResource(R.color.brown))
.setFirstSelectedPosition(lastSelectedPosition > 3 ? 3 : lastSelectedPosition)
.initialise();
} else {
bottomNavigationBar
.addItem(new BottomNavigationItem(R.drawable.ic_home_white_24dp).setActiveColorResource(R.color.orange).setTextBadgeItem(badgeItem))
.addItem(new BottomNavigationItem(R.drawable.ic_book_white_24dp).setActiveColorResource(R.color.teal))
.addItem(new BottomNavigationItem(R.drawable.ic_music_note_white_24dp).setActiveColorResource(R.color.blue))
.addItem(new BottomNavigationItem(R.drawable.ic_tv_white_24dp).setActiveColorResource(R.color.brown))
.setFirstSelectedPosition(lastSelectedPosition > 3 ? 3 : lastSelectedPosition)
.initialise();
}
} else if (items5.isChecked()) {
if (showTextFlag) {
bottomNavigationBar
.addItem(new BottomNavigationItem(R.drawable.ic_home_white_24dp, "Home").setActiveColorResource(R.color.orange).setTextBadgeItem(badgeItem))
.addItem(new BottomNavigationItem(R.drawable.ic_book_white_24dp, "Books").setActiveColorResource(R.color.teal).setShapeBadgeItem(circularBadgeItem))
.addItem(new BottomNavigationItem(R.drawable.ic_music_note_white_24dp, "Music").setActiveColorResource(R.color.blue).setShapeBadgeItem(sqaureBadgeItem))
.addItem(new BottomNavigationItem(R.drawable.ic_tv_white_24dp, "Movies & TV").setActiveColorResource(R.color.brown))
.addItem(new BottomNavigationItem(R.drawable.ic_videogame_asset_white_24dp, "Games").setActiveColorResource(R.color.grey))
.setFirstSelectedPosition(lastSelectedPosition)
.initialise();
} else {
bottomNavigationBar
.addItem(new BottomNavigationItem(R.drawable.ic_home_white_24dp).setActiveColorResource(R.color.orange).setTextBadgeItem(badgeItem))
.addItem(new BottomNavigationItem(R.drawable.ic_book_white_24dp).setActiveColorResource(R.color.teal))
.addItem(new BottomNavigationItem(R.drawable.ic_music_note_white_24dp).setActiveColorResource(R.color.blue))
.addItem(new BottomNavigationItem(R.drawable.ic_tv_white_24dp).setActiveColorResource(R.color.brown))
.addItem(new BottomNavigationItem(R.drawable.ic_videogame_asset_white_24dp).setActiveColorResource(R.color.grey))
.setFirstSelectedPosition(lastSelectedPosition)
.initialise();
}
}
}
@Override
public void onTabSelected(int position) {
lastSelectedPosition = position;
setMessageText(position + " Tab Selected");
if (badgeItem != null) {
badgeItem.setText(Integer.toString(position));
}
setScrollableText(position);
}
@Override
public void onTabUnselected(int position) {
}
@Override
public void onTabReselected(int position) {
setMessageText(position + " Tab Reselected");
}
private void setMessageText(String messageText) {
message.setText(messageText);
}
private void setScrollableText(int position) {
switch (position) {
case 0:
scrollableText.setText(R.string.para1);
break;
case 1:
scrollableText.setText(R.string.para2);
break;
case 2:
scrollableText.setText(R.string.para3);
break;
case 3:
scrollableText.setText(R.string.para4);
break;
case 4:
scrollableText.setText(R.string.para5);
break;
default:
scrollableText.setText(R.string.para6);
break;
}
}
}