Johnattan Jaramillo
Recursos educativos
Johnattan Jaramillo G.
jjaramillo238@misena.edu.co
1- Introducción
2- Layouts y widgets
3- Actividades y fragmentos
4- Almacenamiento local
5- Almacenamiento remoto
6- Material design
7- Publicación y marketing de apps
Una actividad representa una pantalla simple con la cuál puede interactuar un usuario en la app
Una actividad es una clase .java que extiende a la clase Activity
Las actividades en el sistema son administradas como pilas de actividades
Actividad en primer plano (ejecución actual)
Actividad en segundo plano (ejecución anterior)
Paused State
Foreground State
Background State
Destroyed State
Se ejecuta cuando | Usos | Secuencia | |
---|---|---|---|
onCreate() |
La actividad es creada por primera vez | -Crear vistas -Enlazar datos a listas |
Seguirá con onStart() |
onStart() |
La actividad es visible al usuario |
-Seguirá con onResume() si está en primer plano -Seguirá con onStop() si está oculta |
|
onResume() | La actividad está en primer plano | -Interactuar con el usuario | Seguirá con onPause() |
onRestart() | La actividad será reiniciada tras ser detenida previamente | Seguirá con onStart() |
Se ejecuta cuando | Usos | Secuencia | |
---|---|---|---|
onPause() |
La actividad es se reanudará posteriormente |
-No recibe entradas de usuario -No puede ejecutar códigos |
-Seguirá con onResume() si continúa en primer plano -Seguirá con onStop() si continúa oculta |
onStop() |
La actividad no es visible al usuario |
-Otra actividad ha sido iniciada -Otra actividad se ha puesto en primer plano -Otra actividad se ha destruido |
-Seguirá con onRestart() si volverá al primer plano -Seguirá con onDestroy() si se destruirá |
Se ejecuta cuando | Usos | Secuencia | |
---|---|---|---|
onDestroy() |
Se recibe la llamada antes de que la actividad sea destruida |
-La actividad es finalizada cuando es llamado el método finish() -El sistema está destruyendo temporalmente la instancia de la actividad para ahorrar espacio en memoria |
Ciclo de vida de las actividades
Eventos
Administra
Un servicio es un componente que realiza operaciones en segundo plano sin una interfaz de usuario
Realizar operaciones únicas como
Iniciado
(Started)
Enlazado
(Bound)
Se ejecuta cuando | Usos | Secuencia | |
---|---|---|---|
onStartCommand() |
Un componente solicita que el servicio sea iniciado a través de startService() |
Iniciar un servicio que se ejecuta en segundo plano indefinidamente | Se debe detener a través de una llamada a stopSelf() o stopService() |
onBind() |
Otro componente quiere enlazarse al servicio bindService() |
Se debe suministrar una interface que permita al cliente comunicarse con el servicio | Cuando los todos los componentes de desenlazan del servicio este se destruye |
onCreate() |
El servicio es creado por primera vez |
Desarrollar procedimientos de instalación una sola vez | Se ejecuta antes de onStartCommand() y/o onBind() |
onDestroy() |
El servicio será destruido |
Liberar recursos como threads, registros, receptores | Es la última llamada que el servicio recibe |
Un intent es un objeto de acción que se usa para solicitar acciones a otros componentes (actividades, servicios, content providers, etc) de la app
Actividades
Servicios
Broadcast receivers
Intent
Actividades
Servicios
Broadcast receivers
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://javapoint.com"));
startActivity(intent);
El S.O. Android busca en todas las apps un filtro de intents que coincida con el intent
El nombre del componente que se debe iniciar
Iniciar componente específico definido por el desarrollador
El sistema decide qué componente debe recibir el intent conforme a la información que contiene
Intent explícito
Intent implícito
Especifica la acción genérica que se debe realizar (como ver o elegir)
Información que la actividad puede mostrar al usuario (fotos, mapas, etc)
Información que el usuario puede compartir mediante otra app (correo electrónico, social)
ACTION_VIEW
ACTION_SEND
startActivity()
Especifica la acción genérica que se debe realizar (como ver o elegir)
Referencia a los datos
<scheme>://<host>:<port>/<path>
http://midominio:8080/abc
Tipos de datos
Imágenes, videos, texto plano
URI
MIME
setData()
setData()
Referencia a los datos acompañados con su tipo
URI MIME
setDataAndType()
Pares de valores clave que tienen información adicional necesaria para lograr la acción solicitada
Campos extra
Clave
Valor
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, "jjaramillo238@misena.edu.co");
Funcionan como metadatos para el intent
Ejemplos
Como iniciar una actividad (indica a que thread pertenecerá)
Como tratar la actividad después del inicio (indicar si pertenece a lista de actividades pendientes)
Representan un comportamiento o una parte de la interfaz de usuario en una actividad
Podemos pensar en los fragmentos como componentes de interfaz de usuario reultilizables, usados para:
Construir interfaces de usuario flexibles para diferentes tipos de pantalla
Crear pestañas (tabs)
Podemos pensar en los fragmentos como componentes de interfaz de usuario reultilizables, usados para:
Crear cuadros de diálogo y ventanas emergentes (popups)
Personalizar barras de acción (actionbars)
Administra las transacciones entre fragmentos. Cada actividad tiene su propio administrador de fragmentos
Administrador de fragmentos
Administran cambios en la UI -agregar, reemplazar, eliminar fragmentos
Transacciones de fragmentos
getFragmentManager() ->Referencia a todos los fragmentos de la actividad
findFragmentById() ->Referencia un fragmento en específico de la actividad
Pasos para administrar las transacciones de fragmentos
1- Crear una clase que extienda de fragment
public class MiFragmento extends Fragment
2- Crear un layout separado u objeto java que contenga la vista
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="demo.sena.com.fragmentapp.MiFragmento"
android:id="@+id/fragmento1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/saludo" />
</FrameLayout>
3- Usar el método onCreateView() para enlazar la vista al layout
public class MiFragmento extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance){
return inflater.inflate(R.layout.fragmento1, container, false);
}
}
4- Incluir el fragmento dentro de la actividad usando Java
MiFragmento frag = new MiFragmento();
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.fragmento1,frag,"etiqueta_fragmento");
transaction.commit();
1- Crear una clase que extienda de fragment
public class MiFragmento extends Fragment
2- Crear un layout separado u objeto java que contenga la vista
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="demo.sena.com.fragmentapp.MiFragmento"
android:id="@+id/fragmento1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/saludo" />
</FrameLayout>
3- Usar el método onCreateView() para enlazar la vista al layout
public class MiFragmento extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance){
return inflater.inflate(R.layout.fragmento1, container, false);
}
}
4- Incluir el fragmento dentro de la actividad usando XML
<fragment
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="demo.sena.com.fragmentapp.MiFragmento"
android:id="@+id/fragmento1" />
Es una manera eficiente y amigable para presentar múltiples opciones, de las cuales el usuario puede seleccionar la que quiera
Context
Options
Popup
PASO1: Definir un menú en XML
Crear un archivo XML dentro del directorio del proyecto res/menu y construir el menú con los siguientes elementos
<menu>
<item>
Define un menú
Actúa como un elemento raíz que puede contener uno o más elementos <item> y <group>
Define un ítem de menú
Representa una opción simple del menú y puede contener a su vez un menú para crear un submenú
Menú para un videojuego
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/nueva_partida"
android:icon="@drawable/ic_nueva_partida"
android:title="@string/nueva_partida"
android:showAsAction="ifRoom"/>
<item android:id="@+id/ayuda"
android:icon="@drawable/ic_ayuda"
android:title="@string/ayuda"/>
</menu>
Menú para archivos
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/archivo"
android:title="@string/archivo"
<menu>
<item android:id="@+id/crear_nuevo"
android:title="@string/crear_nuevo"/>
<item android:id="@+id/abrir"
android:title="@string/abrir"/>
</menu>
</item>
</menu>
Para usar el menú en tu actividad, se necesita inflar el menu resource. Inflar el banco de recursos de menú significa convertir el recurso XML en un objeto programable usando MenuInflater.inflate()
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.game_menu, menu);
Definir acción para el click del menú
public boolean onOptionsItemSelected(MenuItem item){
return super.onOptionsItemSelected(item);
}
OptionMenu
ContextMenu
PopupMenu
By Johnattan Jaramillo
Curso Desarrollo de aplicaciones para dispositivos móviles