CLASE 04

Menu de Opciones

Menu de Acciones

Fragmentos

Menu Contextual

MENU DE OPCIONES

Acciones de Impacto Goblal

Menu de Opciones

Al menu de opciones se accede con el boton de hardware del equipo; o si es uno de los más nuevos donde ya no contamos con este botón, en la barra de accion (ActionBar) encontraremos un icon de tres puntos en linea vertical (se lo conoce como action-overflow). Incluso el mismo podría encontrarse en la barra de navegacion (NavigationBar)

Menu de Opciones

- Definicion de Menu en los recursos

- Implementacion del metodo onCreateOptionsMenu

- Implementacion del metodo onOptionsItemSelected

MENU DE ACCIONES

Reemplazo del Menu de Opciones

Menu de Acciones

La barra de acción viene a reemplazar a lo que era el menú de opciones. Y los ítems que vemos en la action bar son los mismo que tenemos en nuestro menú de opciones.

1 – Home Icon

2 – Titulo (y subtitulo)

3 – Action Ítems

4 – Action Overflow

Menu de Acciones

Propiedades del XML:

 

- ifRoom: Si hay lugar

- withText: Icono + Texto (siempre que haya espacio)

- never: Nunca, o sea en el overflow-menu

- always: Siempre visible en la accion. No recomendado

 

Orden en Categoria: De menor a mayor, de izquierda a derecha. Si usan ifRoom, los de menor orden se muestran, los otros quedan ocultos

Menu de Acciones

Recientemente, [Abril 2015] se deprecó la clase ActiionBarActivity que era la clase de la cual debía extender una Activity para incorporar la ActionBar. Y a partir de ese momento, se introdujo AppCompatActivity en su reemplazo.

ActionBar ab = getSupportActionBar();
// Aca arriba llamamos a get[SUPPORT]Actionbar porque usamos la libreria
// de compatibilidad. Si no la usaramos, el llamado solo seria getActionBar
ab.setTitle("TITULO");				// Seteamos el titulo
ab.setSubtitle("Subtitulo");		        // Seteamos Subtitulo

// Si usamos la AppCompatActivity, por defecto no muestra el icono
ab.setIcon(R.mipmap.ic_launcher);
ab.setDisplayShowHomeEnabled(true);

FRAGMENTOS

Reutilización de Código y Pantallas

Transaccion de Fragmentos

FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
PlaceholderFragment miFragmento = new PlaceholderFragment();


ft.add(R.id.container, miFragmento);
ft.replace(R.id.container, miFragmento);


ft.addToBackStack(null);


ft.commit();													

MENU

CONTEXTUAL

Acciones para un cierto elemento

Menu Contextual

registerForContextMenu(btn);

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_contextual, menu);
}

public boolean onContextItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.borrar) {
        Toast.makeText(getApplicationContext(), "Seleccionaste Borrar", 
            Toast.LENGTH_SHORT).show();
        return true;
    }

    if (id == R.id.copiar) {
        Toast.makeText(getApplicationContext(), "Seleccionaste Copiar", 
            Toast.LENGTH_SHORT).show();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

Menu Contextual de Acción

protected ActionMode mActionMode;

Button btnAM = (Button) findViewById(R.id.btnActionMode);
btnAM.setOnLongClickListener(new View.OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {
        if (mActionMode == null){
            // Solo ingreamos al modo si aun no estamos en él.
            mActionMode = startSupportActionMode(myActionMode);
        }
        return false;
    }
});

Menu Contextual de Acción

private ActionMode.Callback myActionMode = new ActionMode.Callback() {
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.menu_contextual, menu);
        return true;
    }
    
    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false; // Return false if nothing is done
    }

Menu Contextual de Acción

@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.borrar) {
        TOAST
        mode.finish();
        return true;
    }

    if (id == R.id.copiar) {
        TOAST
        mode.finish();
        return true;
    }

    return false;
}

@Override
public void onDestroyActionMode(ActionMode mode) {
    mActionMode = null;
}

Gracias!

No dejen de consultar cualquier duda que surja

sebasira@gmail.com

Made with Slides.com