123e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas/*
223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * Copyright (C) 2016 The Android Open Source Project
323e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas *
423e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * Licensed under the Apache License, Version 2.0 (the "License");
523e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * you may not use this file except in compliance with the License.
623e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * You may obtain a copy of the License at
723e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas *
823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas *      http://www.apache.org/licenses/LICENSE-2.0
923e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas *
1023e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * Unless required by applicable law or agreed to in writing, software
1123e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * distributed under the License is distributed on an "AS IS" BASIS,
1223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1323e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * See the License for the specific language governing permissions and
1423e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * limitations under the License.
1523e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas */
1623e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas
1723e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikaspackage com.example.android.support.design.widget;
1823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas
19910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikasimport android.content.res.ColorStateList;
2023e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.os.Bundle;
21111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikasimport android.support.annotation.NonNull;
2223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.support.design.widget.BottomNavigationView;
2323e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.support.v7.app.AppCompatActivity;
2423e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.view.MenuItem;
2523e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.view.View;
2623e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.widget.Button;
27111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikasimport android.widget.TextView;
2823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas
29910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikasimport com.example.android.support.design.R;
30910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas
3123e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas/**
3223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * This demonstrates idiomatic usage of the bottom navigation widget.
3323e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas */
3423e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikaspublic class BottomNavigationViewUsage extends AppCompatActivity {
35910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas    private ColorStateList mOriginalTint;
36910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas
3723e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas    @Override
3823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas    protected void onCreate(Bundle savedInstanceState) {
3923e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas        super.onCreate(savedInstanceState);
4023e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas        setContentView(R.layout.design_bottom_navigation_view);
41fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        Button buttonDisable = findViewById(R.id.button_disable);
4223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas        final BottomNavigationView bottom =
43fa2e2acf79d791a90410025daad438968550d18cAlan Viverette                findViewById(R.id.bottom_navigation);
44910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas        mOriginalTint = bottom.getItemIconTintList();
4523e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas        buttonDisable.setOnClickListener(new View.OnClickListener() {
4623e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas            @Override
4723e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas            public void onClick(View view) {
4823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas                bottom.getMenu().getItem(0).setEnabled(!bottom.getMenu().getItem(0).isEnabled());
4923e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas            }
5023e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas        });
51fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        Button buttonAdd = findViewById(R.id.button_add);
5223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas        buttonAdd.setOnClickListener(new View.OnClickListener() {
5323e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas            @Override
5423e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas            public void onClick(View view) {
55e4c7e61dbe94a77c5389eb20952d6b7ed6536cafJonathan Koren                if (bottom.getMenu().size() < bottom.getMaxItemCount()) {
563cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas                    MenuItem item = bottom.getMenu().add("Bananas");
573cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas                    item.setIcon(android.R.drawable.ic_lock_power_off);
583cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas                }
593cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas            }
603cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas        });
61fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        Button buttonRemove = findViewById(R.id.button_remove);
623cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas        buttonRemove.setOnClickListener(new View.OnClickListener() {
633cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas            @Override
643cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas            public void onClick(View view) {
65e4c7e61dbe94a77c5389eb20952d6b7ed6536cafJonathan Koren                if (bottom.getMenu().size() > 0) {
66e4c7e61dbe94a77c5389eb20952d6b7ed6536cafJonathan Koren                    bottom.getMenu().removeItem(bottom.getMenu().getItem(0).getItemId());
67e4c7e61dbe94a77c5389eb20952d6b7ed6536cafJonathan Koren                }
6823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas            }
6923e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas        });
70fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        Button buttonTint = findViewById(R.id.button_tint);
71910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas        buttonTint.setOnClickListener(new View.OnClickListener() {
72910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas            @Override
73910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas            public void onClick(View view) {
74910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas                if (bottom.getItemIconTintList() == null) {
75910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas                    bottom.setItemIconTintList(mOriginalTint);
76910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas                } else {
77910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas                    bottom.setItemIconTintList(null);
78910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas                }
79910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas            }
80910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas        });
81fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        Button buttonNext = findViewById(R.id.button_select_next);
8269557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas        buttonNext.setOnClickListener(new View.OnClickListener() {
8369557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas            @Override
8469557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas            public void onClick(View view) {
8569557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas                final int menuSize = bottom.getMenu().size();
866b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                if (menuSize < 1) {
876b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                    return;
886b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                }
8969557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas                int currentlySelected = 0;
9069557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas                for (int i = 0; i < menuSize; i++) {
9169557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas                    if (bottom.getMenu().getItem(i).isChecked()) {
9269557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas                        currentlySelected = i;
936b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                        break;
9469557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas                    }
9569557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas                }
966b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                int next = (currentlySelected + 1) % menuSize;
976b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                bottom.setSelectedItemId(bottom.getMenu().getItem(next).getItemId());
9869557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas            }
9969557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas        });
100fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        final TextView selectedItem = findViewById(R.id.selected_item);
101111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas        bottom.setOnNavigationItemSelectedListener(
102111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                new BottomNavigationView.OnNavigationItemSelectedListener() {
103111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                    @Override
104111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
105111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                        switch (item.getItemId()) {
106111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                            case R.id.action_search:
107111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                                selectedItem.setText("Entering searching mode");
108111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                                break;
109111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                            case R.id.action_settings:
110111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                                selectedItem.setText("Entering settings!?!");
111111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                                break;
112111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                            case R.id.action_music:
113111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                                selectedItem.setText("Play some music");
114111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                                break;
115111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                            default:
116111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                                selectedItem.setText("Selected " + item.getTitle());
117111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                        }
118578015fc3e5ddc0fdb95db7ad0d00822c54be6dfAurimas Liutikas                        return true;
119111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                    }
120111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas                });
1216b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren        bottom.setOnNavigationItemReselectedListener(
1226b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                new BottomNavigationView.OnNavigationItemReselectedListener() {
1236b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                    @Override
1246b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                    public void onNavigationItemReselected(@NonNull MenuItem item) {
1256b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                        selectedItem.setText("Reselected " + item.getTitle());
1266b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                    }
1276b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren                });
12823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas    }
12923e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas}
130