0% encontró este documento útil (0 votos)
7 vistas112 páginas

Presentacion Android Java

El documento es un curso sobre desarrollo de aplicaciones Android, que abarca desde la instalación del software necesario hasta conceptos avanzados como Intents y el ciclo de vida de Activities. Se detalla la estructura de una aplicación Android, incluyendo componentes como Activities, Services, y Content Providers, así como la gestión de recursos y estilos. Además, se incluyen ejemplos prácticos para la creación de una aplicación de notas, mostrando cómo implementar funcionalidades básicas y el uso de Intents.

Cargado por

Oscar Nizero
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas112 páginas

Presentacion Android Java

El documento es un curso sobre desarrollo de aplicaciones Android, que abarca desde la instalación del software necesario hasta conceptos avanzados como Intents y el ciclo de vida de Activities. Se detalla la estructura de una aplicación Android, incluyendo componentes como Activities, Services, y Content Providers, así como la gestión de recursos y estilos. Además, se incluyen ejemplos prácticos para la creación de una aplicación de notas, mostrando cómo implementar funcionalidades básicas y el uso de Intents.

Cargado por

Oscar Nizero
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1

CURSO

ANDROID
ANDROID 2

TEMARIO
1. Comenzar a Trabajar con Android

2. Lenguaje Java para Android

3. Activities

4. Layouts

5. Vistas, Widgets y Estilos

6. Menus

7. Persistencia en Android y QLite

8. Intents

9. Services

[Link] Localización y Mapas

[Link] Media - fotos y videos


3

MÓDULO 1

COMENZAR A TRABAJAR CON


ANDROID
TEMA 1. 4

SOFTWARE DE INSTALACIÓN

▸ Kit de desarrollo de Java (JDK) versión 8 o superior

[Link]
[Link]

▸ Android Studio

[Link]
TEMA 1 5

¿QUÉ ES ANDROID?

▸ Sistema operativo para móviles

▸ Basado en el Kernel de Linux

▸ Utiliza una JVM propia: DALVIK

▸ Se puede desarrollar en dos lenguajes:

▸ Java

▸ Kotlin
MÓDULO 1 6

TIPOS DE APLICACIONES ANDROID


▸ Aplicación de Primer Plano
Aplicación que requiere la interacción con el usuario. Ej. Explorador
web.

▸ Aplicación de Segundo Plano


Pasa la mayor parte del tiempo en segundo plano. Ej. Aplicación de
llamadas.

▸ Aplicación Intermitente
Útil tanto en primer como en segundo plano. Ej. Aplicación de correo.

▸ Widget
Pequeñas aplicaciones en el escritorio
MÓDULO 1 7

COMPONENTES DE UNA APLICACIÓN ANDROID

▸ Bloques de construcción de una app Android


▸ Tipos:
Activities
Services
Content Providers
Intents
Broadcast Receivers
Widgets
Notifications
▸ El fichero [Link] define y describe como interactúan
ANDROID 8

ACTIVITIES

▸ Punto de entrada de una interacción con el usuario

▸ Representa una pantalla individual con un UI

▸ Cada Activity es independiente de las demás pero puede


ser iniciada por otra.

▸ Formada por Views que son el equivalente a los controles


de las aplicaciones de escritorio (Button, TextView, etc...)
ANDROID 9

SERVICES
▸ Es un punto de entrada general

▸ Permite mantener la ejecución de la aplicación en segundo plano


(reproducir música, captura de datos…)

▸ No proporciona una interfaz de usuario

▸ Se ejecuta cuando una aplicación indica que quiere usarlos

▸ Utilidades:

▸ Actualizan las Activities visibles


▸ Lanzan Notifications
MÓDULO 1 10

INTENTS

▸ Framework de paso de mensajes entre aplicaciones

▸ Se utiliza para pedir acciones a otras aplicaciones


MÓDULO 1 11

BROADCAST RECEIVER. (RECEPTORES DE EMISORES)


▸ Permite al sistema entregar a la aplicación eventos que no están en el
flujo del usuario.

▸ Permite a la aplicación responder a los emisores de anuncios de todo


el sistema (por ejemplo que se apagó la pantalla, nivel de carga de la batería…)

▸ No tiene una interfaz de usuario pero si crea una notificación en la


barra de estado

▸ Son los que reciben los Intents

▸ Ejecutan automáticamente la aplicación al recibir el mensaje que ha


sido programador para escuchar
MÓDULO 1 12

PROVEEDOR DE CONTENIDO

▸ Administra un conjunto de datos compartidos que pueden


ser almacenados:

▸ en un sistema de archivos,

▸ en una base de datos SQLite

▸ en la Web

▸ en otros sistemas de almacenamiento


MÓDULO 1 13

WIDGETS

▸ Son componentes que se añaden al escritorio del usuario


MÓDULO 1 14

NOTIFICATIONS

▸ Permiten avisar al usuario sin interrumpir las Activities que


hay en primer plano.
MÓDULO 1 15

CONTENT PROVIDERS

▸ Almacenes de datos compartidos

▸ Se utilizan para intercambiar información entre procesos


ANDROID 16

EL ARCHIVO MANIFIESTO
▸ [Link]

▸ La aplicación declara todos sus componentes en este archivo

▸ Identifica los permisos de usuarios requeridos por la app

▸ Declara el nivel de API mínimo que requiere la app

▸ Declara las características de HW y SW que la app usa o


necesita

▸ Declara bibliotecas de la API que necesita (además de las API


del marco de trabajo de Android)
ANDROID 17

EL ARCHIVO MANIFIESTO
ANDROID 18

RECURSOS DE LA APLICACIÓN

▸ En Android, una aplicación no solo está compuesta de


código, además requiere recursos como: imágenes,
archivos de audio, menús, estilos, colores, diseños de
interfaces de activities.

▸ Son archivos XML

▸ Para cada recurso, el compilador SDK define un ID único


puede ser usado para hacer referencia al mismo desde el
código o desde otros recursos definidos en el XML
ANDROID 19

RECURSOS DE APLICACIÓN (2)

▸ Ejemplo: Si la app tiene un archivo de imagen llamado


[Link] en el directorio res/drawable/ SDK genera un ID
de recurso llamado [Link]

▸ Nos permite los valores de los recursos a otros idiomas

res/values-fr/
res/values-eu/
ANDROID 20

DECLARAR UNA ACTIVITY

▸ Es la forma en que le informamos al SO Android sobre


nuestra clase de actividad y cómo se puede solicitar.

▸ Por ejemplo, una aplicación normalmente muestra un


icono de escritorio y sirve como punto de entrada
principal a la aplicación.
ANDROID 21

DECLARAR UNA ACTIVITY

▸ Para que una app use activities, deben ser declaradas en


el manifiesto

▸ En manifests/[Link]

<manifest ... >


<application ... >
<activity android:name=".ExampleActivity" />
...
</application ... >
...
</manifest >
ANDROID 22

NUESTRO ACTIVITY

▸ [Link]
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name=“[Link]"/>
<category android:name="[Link]"/>
</intent-filter>
</activity>
ANDROID 23

ABRIR UN SEGUNDO ACTIVITY DESDE UN PRIMER ACTIVITY

▸ Para abrir un activity usando intent:

Intent intent = new Intent(this,


[Link]);
startActivity(intent);
ANDROID 24

ABRIR UN NUEVO ACTIVITY PASANDO DATOS

▸ Abrir un segundo intent pasado datos:


Intent intent = new Intent(this,
[Link]);
String texto = “Hola”
[Link]("dato",texto);
startActivity(intent);
ANDROID 25

LEER DATOS PASADOS EN UN INTENTO

▸ Leer datos pasados a un segundo Activity:

if(getIntent()!= null && getIntent().hasExtra("dato"))


{

String texto = getIntent().getStringExtra("dato");


}
ANDROID 26

CERRAR UN ACTIVITY

▸ Cerrar
finish();
ANDROID 27

GUARDAR EL ESTADO DE UN ACTIVITY

▸ vamos a manejar las devoluciones de llamada


onSaveInstanceState () y onRestoreInstanceState () para
guardar el estado de su aplicación
ANDROID 28

CICLO DE VIDA DE UN ACTIVITY


ANDROID 29

CICLO DE VIDA DE UN ACTIVITY

▸ onCreate()

▸ Se le puede llamar en tres situaciones


• Cuando se ejecuta por primera vez
• Cuando se ejecuta después de haber sido matada porAndroid. En este caso
tendrá un objeto Bundle como parámetro para restaurar la interfaz.
• Cuando hay un cambio de vertical a horizontal en la pantalla

▸ En el se crea el interfaz, variables, servicios, hilos,…


ANDROID 30

CICLO DE VIDA DE UN ACTIVITY

▸ onDestroy()

▸ Libera los recursos creado en onCreate

▸ Tener en cuenta que un Activity puede terminar sin


llamar a este método

▸ onStart()

▸ El activity va a pasar a primer plano, porque se acaba de


crear o porque estaba en segundo plano
ANDROID 31

CICLO DE VIDA DE UN ACTIVITY


▸ onResume()

▸ Se llama justo antes de que el Activity pase a segundo plano

▸ Reanuda animaciones, hilos, servicios y en general procesos que se utilizan


para actualizar la UI

▸ Registrar BroadCast Receibers

▸ onPause()

▸ Se ejecuta cuando el activity a pasar a segundo plano

▸ Pausa animaciones, hilos, servicios y en general procesos que se utilizan para


actualizar la UI

▸ Dar de baja BroadCast Receibers


ANDROID 32

CICLO DE VIDA DE UN ACTIVITY

▸ onStop()

▸ Se llama cuando un activity va a ser pasado porque va a


pasar a segundo plano

▸ Android no asegura la llamada a este método

▸ onRestart()

▸ Se ejecuta cuando el activity pasa de segundo plano a


primer plano por acción del usuario
ANDROID 33

CREAR Y APLICAR UN ESTILO

▸ Abrir el fichero res/values/[Link]

▸ Añadir un elemento <style> con un nombre que


identifique de forma exclusiva el estilo.

▸ Añadir un elemento <item> para cada atributo de estilo


que desee definir.

▸ El nombre en cada elemento se usa como atributo XML en


el diseño.
ANDROID 34

LAYOUT

▸ LinearLayout
Los componentes se ponen en línea de izda a derecha
ANDROID 35

LINEARLAYOUT - ORIENTACIÓN

▸ Vertical

android:orientation="vertical">

▸ Horizontal
android:orientation=“horizontal">
ANDROID 36

LINEARLAYOUT - DISPOSICIÓN

▸ Vertical

android:orientation="vertical">

▸ Horizontal
android:orientation=“horizontal">
ANDROID 37

IMAGEN

▸ ImageView
ANDROID 38

CREAR Y APLICAR UN ESTILO

▸ res/values/[Link]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name=“TextoVerde" parent="[Link]">
<item name="android:textColor">#00FF00</item>
</style>
</resources>

▸ En el layout
<TextView
style="@style/GreenText"
... />
ANDROID 39

APP NOTAS
ANDROID 40

APP NOTAS
ANDROID 41

APP NOTAS - CREAR PROYECTO

▸ File - > New Adrodproyect

▸ Nombre : NotasApp

▸ Plantilla : Basic Activity


ANDROID 42

APP NOTAS. - TEXTOS APLICACIÓN


▸ Preparar los textos de la aplicación

▸ Abrir [Link] del directorio /res/values


<resources>
<string name="app_name">Notas</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>

<string name="action_add">add</string>
<string name="title_hint">Titulo</string>
<string name="description_hint">Descripción</string>
<string name="idea_text">Idea</string>
<string name="important_text">Importante</string>
<string name="todo_text">Tarea</string>
<string name="cancel_button">Cancelar</string>
<string name="ok_button">OK</string>

<string name="settings_title">Settings</string>
<string name="theme_title">Theme</string>
<string name="theme_light">Light</string>
<string name="theme_dark">Dark</string>
</resources>
ANDROID 43

APP NOTAS. - CLASE NOTA

▸ Crear una nueva clase Java llamada Nota


plass class Nota {
String titulo;
String descripcion;
Bolean idea;
Bolean tarea;
Bolean importante;
}
ANDROID 44

APP NOTAS. - DISEÑAR LA VENTANA DE DIALOGO NUEVA NOTA

▸ Crear un nuevo layout

▸ Ir a la carpeta /layout y crear un nuevo Layout


resourceFile.

▸ Nombre dialog_nueva_nota

▸ Root:
[Link].
ANDROID 45

APP NOTAS. - DISEÑAR LA VENTANA DE DIALOGO NUEVA NOTA


ANDROID 46

APP NOTAS. - DISEÑAR LA VENTANA DE DIALOGO VER NOTA


ANDROID 47

INTENT
▸ Es una declaración de necesidades.
▸ Un objeto Intent está formado fragmentos de información que describen la
acción o servicio deseado.

▸ Desde la aplicación creamos un Intent y lo enviamos .


▸ El sistema evalúa los elementos Activity y Service disponibles y los
BroadcastReceiver registrados y redirige el Intent al receptor más adecuado.

▸ Usos principales
Iniciar un Activity
Iniciar un Service
Transmitir una emisión
ANDROID 48

INICIAR UN ACTIVITY CON UN INTENT

▸ vamos a utilizar un objeto Intent para iniciar una de las


aplicaciones integradas de Android en lugar de crear una
nueva

▸ En [Link] crear la siguiente función:

public void launchIntent(View view) {


Intent intent = new Intent(Intent.ACTION_VIEW);
[Link]([Link]("[Link]
startActivity(intent);
}
ANDROID 49

INVOCACIÓN IMPLÍCITA Y EXPLICITA

▸ Invocación implícita:

▸ Es la plataforma la que determina qué componente es


el más indicado para procesar el Intent a través de un
proceso de resolución con la acción, datos y categoría.

▸ Invocación explícita:

▸ El código especifica qué componentes debe procesar el


Intent, especificando la clase, o el nombre del
componente.
ANDROID 50

EJEMPLO INTENT EXPLÍCITO

▸ Ejemplo: Iniciar una Activity


// Declarar e inicializar un objeto Intent llamado miIntent
Intent myIntent = new Intent(this, [Link])

// Cambiar a SettingsActivity
startActivity(myIntent)
ANDROID 51

EJEMPLO INTENT IMPLÍCITO

▸ Ejemplo: Buscar un contacto concreto para iniciar una


llamada, enviar un SMS, etc ...
• La acción será ACTION_VIEW
• la URI será content://contacts/people/1234
Intent myIntent = new Intent(Intent.ACTION_VIEW,
[Link](“content://contacts/peope/1234”);

startActivity(myIntent);
ANDROID 52

CÓMO DEFINIR UN INTENT IMPLÍCITO


▸ Los elementos principales de un Intent son:
• el atributo de acción
• es un verbo que describe lo que deseamos hacer
• ejemplo: VIEW, PICK, EDIT ...
• la clase Intent define diferentes acciones, por ej.
[Link].ACTION_VIEW
• el programador puede crear nuevas acciones
• el componente de datos
• describe el objeto que solicitamos
• se expresa como una URL
• puede contener cualquier fragmento de información
• Ej. Búsqueda de contactos content://contacts/people
ANDROID 53

INTENT FILTER

▸ Permite indicar a Android que componentes va a procesar


la petición de un Intent concreto.

▸ Un Intent Filter determina qué Activity, Service o


BroadCast Reciber puede responder a un Intent.

▸ Cada componente debe registras su propio Intent Filter


para cada Intent que atiende.

▸ Para ello añade una etiqueta <intent-filter> en el fichero


[Link]
ANDROID 54

INTENT FILTER

▸ [Link]
<application ... >
<activity
android:name=“[Link]”
android:label="@string/app_name" >
<intent-filter>
<action android:name="[Link]" />
<category
android:name="[Link]" />
</intent-filter>
ANDROID 55

INTENT FILTER - EJEMPLO

▸ [Link]. Definir Intent filter


<intent-filter . . . >
<action android:name="[Link]" />
<data android:scheme="weather" android:host="[Link]"/>
. . .
</intent-filter>

▸ En el activity. Crear Intent


Intent intent = new Intent( Intent.ACTION_VIEW,
[Link](“weather://[Link]/loc?zip=48009”);
ANDROID 56

DATOS DE EJEMPLO

weather://[Link]/loc?zip=1234

SCHEMA AUTHORITY/ PATH


HOST
ANDROID 57

ABRIR OTRO ACTIVITY

▸ Ejemplo:
// Declarar e inicializar un objeto Intent llamado miIntent
Intent myIntent = new Intent(this, [Link])

// Cambiar a SettingsActivity
startActivity(myIntent)
ANDROID 58

INTENT - PASAR DATOS ENTRE ACTIVITIES

▸ Ejemplo
String username = “Carlos”

Intent myIntent = new Intent(this, [Link])

[Link]("USER_NAME", username)

startActivity(myIntent)
ANDROID 59

RECUPERAR EL RESULTADO DE UN ACTIVITY


▸ Cuando queremos recoger un resultado tras llamar a un
Activity, debemos:

▸ En la Activity que hace la llamada:

▸ iniciarla usando el método startActivityForResult(...)

▸ implementar el método onActivityResult()

▸ En la Activity que responde:

▸ puede llamar al método setResult(int) para devolver un


resultado
ANDROID 60

RECUPERAR RESULTADOS - CÓDIGO

▸ Paso 1. El Activity 1 que llama al Activity 2


startActivityForResult(MI_ID_PETICION);

▸ Paso 2. El Activity 2 que devuelve datos el resultado


Intent resultData = new Intent();
[Link]("valueName", "valueData");
setResult(Activity.RESULT_OK, resultData);
finish();
ANDROID 61

RECUPERAR RESULTADOS - CÓDIGO (2)

▸ Paso 3. El Activity 1 que procesa los datos de la respuesta


Activity 1 sobreescribe el método que procesará la
respuesta de vuelta
protected void onActivityResult(int requestCode,
int resultCode, Intent data) {

if (requestCode == MI_ID_PETICION){
if (resultCode == RESULT_OK) {
String myValue = [Link]("valueName");
}
}
}
ANDROID 62

SHAREDPREFERENCES

▸ Permite guardar información para usarla en otro momento

▸ Los datos se almacenan en pares de clave y valor en


ficheros

▸ Pueden ser :

▸ privados Context.MODE_PRIVATE

▸ Públicos Context.MODE_WORLD_READABLE o
Context.MODE_WORLD_WRITEABLE
ANDROID 63

PERSISTIR DATOS CON SHAREDPREFERENCES

▸ Obtener el fichero de preferencia por defecto:


Preferences prefs = getSharedPreferences(Context.MODE_PRIVATE)

▸ Obtener el fichero de preferencia por su nombre:


//obtener el contexto de la aplicación
Context context = [Link]();
//obtenemos un SharedPreferences y creamos un fichero Privado bajo el
//nombre definido con la clave preference_file_key en [Link]
Preferences prefs = [Link](
getString([Link].preference_file_key),
Context.MODE_PRIVATE);
ANDROID 64

PERSISTIR DATOS CON SHAREDPREFERENCES

▸ Grabar datos

// una instancia de [Link] para escribir datos


val editor = [Link]()

[Link]("usuario", “luis”)
[Link]("cantidad", 2)
[Link]("activo", true)

// Grabar todos los datos


[Link]()
ANDROID CON KOTLIN 65

PERSISTIR DATOS CON SHAREDPREFERENCES

▸ Leer datos

val usuario = [Link]("usuario", “nuevo usuario")

val cantidad = [Link]("cantidad", 1)

val activo = [Link]("activo", false)


ANDROID CON KOTLIN 66

JSON

▸ JavaScript Object Notation

▸ Ejemplo
[{
"nombre":"John",
"edad":30,
"direccion": {
“calle":"Los chopos, 1”,
"CP":"48000",
"Localidad":"Bilbao"
}
}]
ANDROID CON KOTLIN 67

LOCALIZACIÓN

▸ Android permite soportar varios idiomas

▸ Se crea una carpeta values-codigoIdioma por cada idioma


soportado

<resource type>-b+<language code>[+<country code>]


/MyProject/
res/
values/
[Link]
values-en/
[Link]
ANDROID CON KOTLIN 68

AÑADIR SOPORTE TEXTOS VARIOS IDIOMAS


▸ Seleccionar el fichero
[Link]

▸ menú contextual
“Open traslator
Editor”

▸ Añadir un nuevo
idioma
ANDROID CON KOTLIN 69

TRADUCIR TEXTOS
▸ Traducir los textos
ANDROID CON KOTLIN 70

CAMBIO IDIOMA DISPOSITIVO ANDROID

▸ En el emulador ir a la app Settings

▸ Añadir nuevo idioma

▸ Seleccionar el idioma a mostrar


ANDROID CON KOTLIN 71

MOSTAR UN TEXTO DESDE CÓDIGO

▸ Añadir el texto
<string name=“añadir_nueva_nota">Añadir una nueva nota</string>
ANDROID CON KOTLIN 72

ANIMACIONES

▸ Permite añadir elementos visuales que les informen a los


usuarios sobre lo que sucede en tu app

▸ Android incluye diferentes API de animación


ANDROID CON KOTLIN 73

ANIMACIÓN DE PROPIEDADES

▸ Permite definir una animación para cambiar cualquier


propiedad de un objeto a lo largo del tiempo

▸ Cambia el valor de una propiedad (un campo en un


objeto) durante un período especificado

▸ Parámetros
Duración
Interpolación de tiempo
Repetición
ANDROID CON KOTLIN 74

ANIMACIÓN DE PROPIEDADES
▸ Parámetros
Duración
Retardo
Repetición
Interpolación

android:duration = "666"
android:startOffset = “333”
android:repeatMode = "reverse"
android:repeatCount = “10”
android:interpolator=“@android:anim/accelerate_interpolator"
ANDROID CON KOTLIN 75

ANIMACIÓN CON XML

▸ Transparencia

Alpha es una medida de transparencia y su valor va de 0.0


invisible a1.0 visible
<alpha
android:fromAlpha = "0.0"
android:toAlpha = "1.0" />
ANDROID CON KOTLIN 76

ANIMACIÓN CON XML

▸ Movimiento

Podemos mover un objeto dentro de nuestra IU


fromXDelta y toXDelta pueden tener sus valores establecidos
como un porcentaje del tamaño del objeto que se está animando.

<translate
android:fromXDelta = "-100%"
android:toXDelta = "0%"/>
ANDROID CON KOTLIN 77

ANIMACIÓN CON XML

▸ Escalar

Aumentar o disminuir la escala de un objeto.

<scale
android:fromXScale = "1.0"
android:fromYScale = "0.0"/>
ANDROID CON KOTLIN 78

ANIMACIÓN CON XML

▸ Rotación

Girar respecto a un eje

<rotate
android:fromDegrees = "360"
android:toDegrees = “0”/>
ANDROID CON KOTLIN 79

CONJUNTO DE ANIMACIONES

▸ Podemos agrupar varias animaciones


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="[Link]
…Todas las animaciones van aquí
</set>
ANDROID CON KOTLIN 80

APLICAR UNA ANIMACIÓN

▸ Podemos agrupar varias animaciones


// Declaro uno obj Animation
var animFadeIn: Animation? = null

// Initializarla
animFadeIn = [Link](
this, [Link].fade_in)

// Iniciar la animación en ImageView


[Link](animFadeIn)
ANDROID CON KOTLIN 81

LISTENERS

▸ Declara un oyente AnimationListener e implementar sus


métodos
override fun onAnimationEnd(animation: Animation) {
// Take some action here
}

override fun onAnimationStart(animation: Animation) {


// Take some action here
}

override fun onAnimationRepeat(animation: Animation){


// Take some action here
}
ANDROID CON KOTLIN 82

LISTENERS

▸ Declara un oyente AnimationListener e implementar sus


métodos
override fun onAnimationEnd(animation: Animation) {
// Take some action here
}

override fun onAnimationStart(animation: Animation) {


// Take some action here
}

override fun onAnimationRepeat(animation: Animation){


// Take some action here
}
83

ESTILOS
ANDROID CON KOTLIN 84

DEFINIR LOS ESTILOS


<resources>

<!-- Base application theme. -->


<style name="AppTheme" parent="[Link]">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

<style name="MiEstiloTexto">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">#000000</item>
<item name="android:textColor">#AF0000</item>
<item name="android:textSize">20sp</item>
<item name="android:padding">8dp</item>
<item name="android:gravity">center</item>
</style>

</resources>
ANDROID CON KOTLIN 85

APLICAR ESTILO A UN COMPONENTE UI

<TextView
style="@style/MiEstiloTexto"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
ANDROID CON KOTLIN 86

APLICAR ESTILO A TODOS LOS TEXTVIEW


<resources>

<!-- Base application theme. -->


<style name="AppTheme" parent="[Link]">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textViewStyle">@style/MiEstiloTexto</item>
</style>

<style name="MiEstiloTexto">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">#000000</item>
<item name="android:textColor">#AF0000</item>
<item name="android:textSize">20sp</item>
<item name="android:padding">8dp</item>
<item name="android:gravity">center</item>
</style>

</resources>
ANDROID CON KOTLIN 87

DEFINIR UN NUEVO TEMA

▸ En [Link]

<resources>
<style name="MiTema" parent="[Link]">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name=“colorAccent">@color/colorAccent</item>

<item name="android:textColor">@color/colorAccent</item>
<item name="android:textSize">25sp</item>
</style>

</resources>
ANDROID CON KOTLIN 88

TEMA
▸ Se puede aplicar a toda la app o a un Activity
▸ [Link]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="[Link]
package="[Link]">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity" android:theme=“@style/MiTema”>
<intent-filter>
<action android:name="[Link]" />

<category android:name="[Link]" />


</intent-filter>
</activity>
</application>
</manifest>
ANDROID CON KOTLIN 89

APLICAR EL NUEVO TEMA

▸ En [Link]

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="[Link]
package="[Link]">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity" android:theme="@style/MiTema">
<intent-filter>
<action android:name="[Link]" />

<category android:name="[Link]" />


</intent-filter>
</activity>
</application>

</manifest>
90

SERVICIOS
ANDROID 91

SERVICIOS EN ANDROID

▸ Componente android que ejecuta instrucciones en


segundo plano.

▸ Este se representa en la clase Service

▸ Si el usuario cambia a otra app el servicio seguirá activo


hasta que se complete o el sistema lo finalice, por falta de
recursos.
ANDROID 92

INICIAR/PARAR UN SERVICIO DESDE OTRO COMPONENTE

▸ Iniciar
startService(new Intent(this, [Link]));

▸ Parar

stopService(new Intent(this, [Link]));


ANDROID 93

TIPOS DE SERVICIOS

▸ 2 Tipos:
Started Service

Bound Service
ANDROID 94

STARTED SERVICE

▸ Se inicia explícitamente a través del método startService()

▸ Realiza una operación determinada y se cierra al momento


de finalizarla
ANDROID 95

BOUND SERVICE. (SERVICIO LIGADO)

▸ Se liga a un componente con el método bindService()

▸ La vida de un bound service depende de la vida del


elemento que lo ató.

▸ Puede comunicarse directamente con el componente al


que está ligado para compartir datos estructurados,
realizar operaciones en conjunto y gran variedad de
interacciones posibles
ANDROID 96

CICLO DE VIDA
ANDROID 97

MÉTODOS DE SERVICE
▸ onCreate(): Se ejecuta cuando el servicio está creado en memoria. Si el
servicio ya está activo, entonces se evita de nuevo su llamada.

▸ onStartCommand(): Se ejecuta las instrucciones del servicio. Se llama solo


si el servicio se inició con startService().

▸ onBind(): Solo se ejecuta si el servicio fue ligado con bindService() por un


componente. Retorna una interfaz Java de comunicación del tipo IBinder.
Este método siempre debe llamarse, incluso dentro de los started services,
los cuales retornan null.

▸ onDestroy(): Se llama cuando el servicio está siendo


destruido. Importantísimo que dentro de este método detengas los hilos
iniciados.
ANDROID 98

INTENTSERVICE
99

MÓDULO 5

VISTAS, WIDGETS Y ESTILOS


MÓDULO 5 100

WIDGET
▸ Son Vistas especializadas colocadas
en los archivos de diseño, como
Button, TextView, CheckBox, etc

▸ El SDK de Android proporciona una


lista de widgets

▸ Podemos

▸ ampliar un widget existente para


personalizar su funcionalidad

▸ crear nuestro propio widget


desde cero
101

MÓDULO 7

INTENTS
MÓDULO 7 - INTENTS 102

ANDROID INTENTS

▸ Es algo que queremos hacer … una acción


MÓDULO 7 - INTENTS 103

INTENTS EXPLÍCITO

▸ Especificamos el nombre de la clase que queremos que


inicie Android.

▸ Por ejemplo: Abrir un Activity


Intent intent = new Intent([Link],
[Link]);
startActivity(intent);
MÓDULO 7 - INTENTS 104

INTENTS IMPLÍCITOS
▸ Indicamos al SO Android que es lo que queremos hacer

▸ El SO encuentra el activity que puede realizarlo.

▸ Por ejemplo: ¿Puedes enviar este mensaje?


Intent intent = new Intent(Intent.ACTION_VIEW,
[Link](“http:/[Link]/“)));
startActivity(intent);

Lo que estamos haciendo es decirle al sistema que queremos ver la pagina


“[Link] El sistema tomará la decisión de cual es la aplicación
más adecuada, que puede ser, el Browser del dispositivo o quizás otra aplicación
que el usuario tenga instalado.
MÓDULO 7 - INTENTS 105

INTENT IMPLÍCITO. ENVIAR UN MENSAJE POR MAIL


106

MÓDULO 8

APIS Y LIBRARIES
MÓDULO 8 - APIS Y LIBRERIAS 107

API

▸ API - Application Programming J

SERVICIOS DE
APLICACIÓN API BACKEND

JSON / XML
MÓDULO 8 - APIS Y LIBRERIAS 108

LIBRERÍAS

▸ Para usar las APIs remotas, es necesario entender muchas


cosas

▸ Si nosotros tuviéramos que desarrollar todo lo necesario


para hacer la tarea de llamar al servicio remoto, enviar
datos, etc, nos llevaría mucho tiempo

▸ Android nos da una serie de librerías para facilitar la tarea


MÓDULO 8 - APIS Y LIBRERIAS 109

LA LIBRERIA VOLLEY

▸ Librería de Android para hacer peticiones HTTP

▸ Creada por ingenieros de Google


MÓDULO 8 - APIS Y LIBRERIAS 110

LA LIBRERIA VOLLEY
▸ Configurar la librería Volley
[Link]

▸ Añadir dependencia en [Link]


dependencies {
...
implementation '[Link]:volley:1.1.1'
}

▸ Ya disponemos de la
clase Volley
MÓDULO 8 - APIS Y LIBRERIAS 111

JSON

▸ JSON: JavaScript Object Notation.

▸ JSON es una sintaxis para almacenar e intercambiar datos

▸ syntax for storing and exchanging data.

▸ JSON es texto , se escribe con notación JavaScript object


MÓDULO 8 - APIS Y LIBRERIAS 112

JSON - INTERCAMBIO DE DATOS


▸ JSON (JavaScript Object Notation)

▸ Formato para el intercambios de datos, básicamente JSON


describe los datos con una sintaxis dedicada que se usa para
identificar y gestionar los datos. Nació como una alternativa a
XML y, una de las mayores ventajas que tiene su uso es que puede
ser leído por cualquier lenguaje de programación. Por lo tanto,
puede ser usado para el intercambio de información entre distintas
tecnologías. Además debido a su naturaleza y al ser más compacto
suele ser mucho más rápido trabajar con JSON antes que con XML.

También podría gustarte