Menú "hamburger" lateral

=Funcionalidad del Menú "Hamburger" Lateral= Es una de las funciones necesarias para poder desplegar en un menú, de forma ordenada y cómoda para el usuario, otras funcionalidades permitidas para el usuario actual, y que logre también ser dinámico de acuerdo al mismo.

Implementación del Menú
La implementación del ejemplo del Menú Hamburger, se lleva a cabo mediante el NavigationDrawer en NavigationDrawerFragment.java, en nuestro caso un fragmento, encargado de cargar los iconos en una Lista de Menú, que se tiene como fragment_navigation_drawer.xml, que es una ExpandableListView y una cabecera, side_menu_header.xml, con elementos que pueden ser considerados padres, que tengan agrupados hijos, es decir los padres serian mas generales que los hijos.

Todo con ayuda de otras clases como el adaptador CustomExpandableListAdapter.java se logra ubicar los iconos, cabecera y agruparlos de manera ordenada. Esto permite que sea dinámica la construcción del menú y poder agregar la cantidad necesaria en el Menú.

Algunos ejemplos de las implementaciones
Podemos mostrar aquí unos ejemplos de como están implementados Esta función es la que va configurando los iconos, cargándoles sus clases a ser llamadas una ves seleccionados, descripción e iconos. En el caso de tener un solo elemento se realiza ahí nomas, si no se llama a otra función que realiza la agrupación, para tener las cosas mas ordenadas.

public void initializeEvents {

if (mEvents == null || !mEvents.isEmpty) { //Constructur del grupo de imagenes

buildImageGroup; // 2. Salir Event exitEvent = new Event(MENU_ID_LOGOUT); exitEvent.setDescription(getString(R.string.action_logout)); exitEvent.setActivity(LoginActivity.class); exitEvent.setIconMenu(R.drawable.picture); mEventParents.add(new EventParent(exitEvent)); }   }

Esta función del NavigationDrawerFragment.java es la que va agregando los elementos padres e hijos asociados en la lista expandible con la ayuda del adaptador CustomExpandableListAdapter.java

private void addDrawerItems { CustomExpandableListAdapter adapter = new CustomExpandableListAdapter(this.getActivity, mEventParents);

ExpandableListView mExpandableListView = mDrawerListView.findViewById(R.id.menuList); mExpandableListView.setAdapter(adapter);

// Expandir todos los grupos por default...

for (int i = 0; i < adapter.getGroupCount; i++) { mExpandableListView.expandGroup(i); }       mExpandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener {            @Override            public boolean onChildClick(ExpandableListView parent, View v,                                        int groupPosition, int childPosition, long id) {                // Se maneja el evento por hijo...

selectGroupItem(groupPosition, childPosition); return false; }       });        mExpandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener { @Override public boolean onGroupClick(ExpandableListView expandableListView, View view, int groupPosition, long id) { int childrenCount = expandableListView.getExpandableListAdapter.getChildrenCount(groupPosition); // Solo es es un grupo sin hijos // va a tener una accion asociada

if (childrenCount == 0) { selectGroupItem(groupPosition, null); }               return false; }       });    }

Action Bar
Cuando hablamos de un menú en este tipo de ambientes en general tenemos que tratar de manejar un Action Bar que permite de una forma más agradable la navegación por la aplicación.

Ademas permite facilidad a la hora de agregar ciertas acciones rara veces usadas, y le da a nuestra aplicación cierta identidad.

Ejemplos de códigos sencillos
Aquí podemos mostrar ciertos códigos sencillos que han sido implementados en el trabajo.

ActionBar actionBar = getActionBar; if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); } El código mostrado arriba, llama al Action Bar asociado a la activity, que tiene que ser incorporado en el AndroidManifest.xml.

Luego tenemos que asociar las acciones para los iconos/elementos de la barra, que tiene una función para dicha funcionalidad, presentada más abajo.

@Override public boolean onOptionsItemSelected(MenuItem item) { /**        * Se obtiene el id del item del action bar seleccionado * y se realiza la acción de acuerdo a éste */       if (item.getItemId == android.R.id.home) { backToHome; }       return super.onOptionsItemSelected(item); }

private void backToHome { Intent intent = new Intent(this, HomeActivity.class); startActivity(intent); finish; }

Consideraciones Previas
Algún error se pude tener al hora de configurar el Action Bar, como por ejemplo no indicar en el AndroidManifest.xml que la actividad donde quiero desplegar el Action Bar tiene un theme que permite el uso de este.

Por ejemplo, tenemos aquí algunos de los temas que no permite un Action Bar, lo cual la función getActionBar;



Algunos permiten, o tienen sus action bar, con sus styles particulares.

 .

..

true

Opcional: Alguna que otra ayuda del Android Development
Siguente: ProgressBar