Curso202223/PMDM/apuntes_android.md

102 lines
3.3 KiB
Markdown

## Apuntes Android Studio (Generales)
### Archivo Manifest (AndroidManifest.xml)
El propósito de éste archivo es aportar información al compilador, al sistema operativo y a la tienda de aplicaciones. Su ubicación es en la raíz del proyecto.
Obligatoriamente debe contener:
- Componentes de la app (activities, services, etc)
- Intent-filter, le especifica al sistema como debe interactuar con esa activity, en función de [atributo](https://genol.es/andintent) que declaremos en el elemento action.
- [Permisos necesarios](https://genol.es/manperm)
- Hardware y software requeridos para su funcionamiento (API)
#### Ejemplo Manifest
> AndroidManifest.xml
```xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- Componentes de la app -->
<application>
<activity>
<intent-filter>
<action/>
<category/>
</intent-filter>
</activity>
<service></service>
<receiver></receiver>
<provider></provider>
</application>
<!-- Permisos necesarios -->
<uses-permission android:name="PERMISSION-TO-GET"/>
<!-- Hardware requerido -->
<uses-feature android:name="HW-TO-USE" android:required="true"/>
<!-- Versiones de API en las que funciona la app -->
<uses-sdk android:[min|target|max]SdkVersion="1"/>
</manifest>
```
[Documentación oficial](https://genol.es/manifest)
### Placeholders
Para usar placeholders en lugar de hacer hardcode en la lógica de java, se usan ficheros de recursos. En ellos se codifican los strings incluyendo los placeholders.
Al llamar al método getString() de la clase abstracta [Context](https://genol.es/andcontext), se le pasa como argumento la referencia al recurso a usar, y el dato que va a sustituir el placeholder del recurso.
#### Ejemplo placeholder
> string.xml
```xml
<resources>
<string name="texto_completo">Ejemplo de %1$s</string>
</resources>
```
> code.java
```java
String sustituto_placeholder = "Programación";
System.out.println(getString(R.string.texto_completo, sustituto_placeholder));
```
> Salida
```
Ejemplo de Programación
```
[Documentacion oficial](https://genol.es/placeholders)
### Ciclos de vida
Con el fin de manejar la transición entre las diferentes etapas, la clase Activity dispone de 6 métodos que se ejecutan bajo ciertas condiciones.
- onCreate()
- Se ejecuta en el momento de la creación de la activity
- onStart()
- Se ejecuta cuando se presenta la activity al usuario
- onResume()
- Se ejecuta cuando se reanuda la activity y vuelve a primer plano
- onPause()
- Se ejecuta cuando se va a pasar la activity a estado de inactividad
- onStop()
- Se ejecuta cuando la activity deja de ser visible para el usuario (cuando se cambia de app)
- onDestroy()
- Se ejecuta justo antes de que se destruya la activity (puede quedar en segundo plano)
### Acceso a los recursos
Para acceder a los recursos (Activities, colores, strings, etc), se utiliza la superclase R.
> code.java
```java
Button xmlButton = findViewById(R.id.xmlActivity);
this.getWindow().setTitle(getString(R.string.titulo));
```
### Listeners
Un Listener es un objeto que se utiliza para detectar eventos.
### Funciones Lambda