Diferencia entre revisiones de «PDM UD1 CoñecendoAndroidStudio»
| Línea 8: | Línea 8: | ||
==Crear un proxecto Android: OlaMundo== | ==Crear un proxecto Android: OlaMundo== | ||
| + | |||
| + | * Imos crear un proxecto de Android que nos vai servir de 'base' para facer a unidade 2. | ||
| + | |||
| + | |||
<gallery caption="Ola Mundo" widths="350" heights="300px" perrow="2"> | <gallery caption="Ola Mundo" widths="350" heights="300px" perrow="2"> | ||
Image:PDM_Interface_1_.jpg| Comezamos creando un novo proxecto de Android. | Image:PDM_Interface_1_.jpg| Comezamos creando un novo proxecto de Android. | ||
| Línea 15: | Línea 19: | ||
Image:PDM_Interface_5_.jpg| Como paso final indicamos o nome da activity e do seu layout (un layout ven ser a parte gráfica da activity, imos especificar a posición dos botóns, caixas de texto,...). O layout soamente pode ter letras minúsculas, números e _. Desmarcaremos o check '''Backwards Compatibility'''. Isto fai que ao proxecto non se engada unha librería de compatibilidade. As librerías de compatibilidade son usadas por Android para que as novas funcionalidades que van aparecendo poidan ser utilizadas por versións anteriores. Máis información [https://developer.android.com/topic/libraries/support-library/features.html neste enlace]. Prememos o botón '''Finish'''. | Image:PDM_Interface_5_.jpg| Como paso final indicamos o nome da activity e do seu layout (un layout ven ser a parte gráfica da activity, imos especificar a posición dos botóns, caixas de texto,...). O layout soamente pode ter letras minúsculas, números e _. Desmarcaremos o check '''Backwards Compatibility'''. Isto fai que ao proxecto non se engada unha librería de compatibilidade. As librerías de compatibilidade son usadas por Android para que as novas funcionalidades que van aparecendo poidan ser utilizadas por versións anteriores. Máis información [https://developer.android.com/topic/libraries/support-library/features.html neste enlace]. Prememos o botón '''Finish'''. | ||
Image:PDM_Interface_6_.jpg| Observar como o nome da clase Java garda relación co indicado na imaxe anterior. | Image:PDM_Interface_6_.jpg| Observar como o nome da clase Java garda relación co indicado na imaxe anterior. | ||
| − | Image:PDM_Interface_7_.jpg| O mesmo acontece co ficheiro XML do layout. | + | Image:PDM_Interface_7_.jpg| O mesmo acontece co ficheiro XML do layout. Comentar que no layout se definen o aspecto,posicións e elementos gráficos da cada Activity. |
Image:PDM_Interface_8_.jpg| Ficheiro XML que define o Layout e os elementos que o compoñen. Por agora ten unha etiqueta. | Image:PDM_Interface_8_.jpg| Ficheiro XML que define o Layout e os elementos que o compoñen. Por agora ten unha etiqueta. | ||
</gallery> | </gallery> | ||
| − | |||
==Ficheiros do proxecto Android== | ==Ficheiros do proxecto Android== | ||
Revisión del 18:27 14 ago 2016
Sumario
Introdución
- Neste apartado vanse describir os cartafoles e ficheiros máis esenciais dos que se compón un proxecto Android.
- Comezaremos creando un proxecto: OlaMundo, e estudaremos as partes nas que se divide.
- Os proxectos vanse nomear e numerar da seguinte forma: U2_XX_NomeDaAplicación, para facilitar o seguimento. Sendo U2 a unidade 2 e XX o número de proxecto dentro da Unidade.
- Estes van estar no seguinte cartafol /ProxectosStudio/PlategaAndroid/Unidade2/<proxectos>
Crear un proxecto Android: OlaMundo
- Imos crear un proxecto de Android que nos vai servir de 'base' para facer a unidade 2.
- Ola Mundo
O Nome da aplicación é o nome co que se vai mostrar a aplicación no dispositivo: U2_01_OlaMundo; Nome do paquete debe ser único para todo aplicación. Constrúese co nome do dominio ao revés, e o identificador da aplicación. Por exemplo se aplicación fose da Consellería de Educación o nome sería: es.xunta.edu.nome_aplicación. Neste caso deixouse o nome que xera por defecto; Localización do proxecto e o cartafol onde se vai xerar o proxecto.
Como paso final indicamos o nome da activity e do seu layout (un layout ven ser a parte gráfica da activity, imos especificar a posición dos botóns, caixas de texto,...). O layout soamente pode ter letras minúsculas, números e _. Desmarcaremos o check Backwards Compatibility. Isto fai que ao proxecto non se engada unha librería de compatibilidade. As librerías de compatibilidade son usadas por Android para que as novas funcionalidades que van aparecendo poidan ser utilizadas por versións anteriores. Máis información neste enlace. Prememos o botón Finish.
Ficheiros do proxecto Android
A continuación imos ver os contidos dos distintos cartafoles que compoñen un proxecto.
/app/
- É o nome do módulo da aplicación.
- Un módulo ven ser un conxunto de arquivos dunha aplicación (activities, layouts,...) e arquivos de configuración do Android Studio e da aplicación.
- Un módulo pode depender doutro para a súa execución ou poden ser totalmente independentes.
- Por defecto, cando creamos un proxecto AndroidStudio, crea un módulo de nome 'app'.
Máis información neste enlace.
/app/java
Nota: Ven ser no que en Eclipse era /src/. Veremos mais adiante que podemos cambiar a 'vista' de como se visualiza o proxecto e volver a ter o cartafol /src/.
- /App/Java
A clase U2_01_OlaMundo herda da clase Activity os seus atributos e métodos.
Neste caso sobrescríbese o método onCreate, que é o primeiro que se executa cando se lanza unha Activity (ver estados dunha Activity). Este método recibe un parámetro de tipo Bundle, no que recibe o estado da activity:
(-Null: porque acabamos de iniciala
-ou valores do estado anterior se vén de estar parada. Mirar imaxe superior do ciclo de vida).
Chama ao método onCreate da clase pai.
A continuación mostra en pantalla o contido do layout: activity_u2_01__ola_mundo. Para iso fai uso da clase R, como veremos a continuación.
http://developer.android.com/reference/android/os/Bundle.html
http://developer.android.com/reference/android/app/Activity.html#setContentView%28int%29
/app/res
Cartafol /app/res (Resources/Recursos): almacena todos os ficheiros de recursos necesarios para a aplicación: imaxes, vídeos, ficheiros xml, animacións, ficheiros para a internacionalización, etc.
- /app/res/drawble: Almacena as imaxes da aplicación en función da densidade (dpi) do dispositivo de destino. En Android veremos que podemos ter diferentes resolucións de imaxes para que a aplicación se vexa correctamente en dispositivos de tamaños e resolucións diferentes. Estas imaxes gardaríanse dentro dun cartafol de nome 'drawble-sufixo' no que o sufixo indicará con que código a que tipo de dispositivo debe cargarse as imaxes que estean dentro do cartafol. Por exemplo, o cartafol '/res/drawable-large' tería imaxes que se cargaría con dispositivo de entre 4 e 7 polgadas aproximadamente (observar imaxe).
- /app/res/layout: Almacena os ficheiros xml onde se definen os elementos gráficos e a súa disposisición, das distintas pantallas que compoñen a aplicación. Igual que no caso anterior tamén imos poder ter diferentes sufixos para cargar layouts en función dos dispositivos. Así, por exemplo, se creamos o cartafol /app/res/layout-land cargaríamos os layouts que estean dentro deste cartafol cando teñamos o dispositivo en posición 'apaisada', é dicir, tumbado.
- /app/res/mipmap: Almacena a icona que vai representar a aplicación cando estea instalada nun dispositivo. Ven ser a icona de lanzamento. Pódese ver na imaxe que indica que hai 5 iconas. Isto é así xa que crea unha por cada tipo de densidade. A densidade a veremos máis adiante pero ven ser o número de puntos por pulgada que ten o dispositivo. Fisicamente temos un cartafol por cada unha das densidades e dentro de cada cartafol temos o arquivo a cargar, o que pasa que AndroidStudio oculta os cartafoles. Tam
- /app/res/values: Almacena constantes que definen: cadeas de texto, estilos, cores, dimensións, etc.
- dimens.xml Están declaradas as dimensións que se usaban no layout.
- strings.xml Están declaradas cadeas de texto. A última é usada no layout, logo veremos onde se usan as demais.
- colors.xml Están declaradas constantes que representar unha cor.
- styles.xml Están declaradas constantes que representan estilos (como se van representar os elementos gráficos e as activities, como podan ser a combinación de cores, negrilla, cursiva, se vai ter menú,...)
- Hai máis arquivos e cartafoles para xa o iremos vendo.
Nota: Todos son arquivos de configuración son XML que poden ser editados. Máis información neste enlace.
/gen
O cartafol /gen contén codigo Java creado automaticamente ao compilar a aplicación. O ficheiro máis importante é R.java.
- /res
- Android 2013 U2 01 OlaMundo 21.jpg
O ficheiro R.java define a clase R que serve de enlace entre os recursos creados en /res e o código Java da aplicación. Para iso, a clase R contén constantes cos IDs dos recursos de /res. Este ficheiro é xerado cada vez que se compila co cal se modifica manualmente perderanse os cambios na próxima compilación.
- Android 2013 U2 01 OlaMundo 22.jpg
Por exemplo, podemos ver que para o layout definido en /res, nun ficheiro xml, existe unha constante que nos permite acceder dende Java ao layout a través desa constante como se pode ver ...
- Android 2013 U2 01 OlaMundo 20.jpg
... no código fonte asociado á Actividade que lanza a aplicación.
/assets
- Contén o resto de ficheiros que se precisen para a aplicación: ficheiros de configuración, de datos, etc. Para acceder a estes recursos non se fai a a través da clase R senón que a través da súa ruta no sistema
Archivo:Android 2013 U2 01 OlaMundo 25.jpg
/bin
- Unha vez que se compila a aplicación xerase o apk da aplicación para poder ser instalada nun dispositivo.
- /bin
- Android 2013 U2 01 OlaMundo 26.jpg
Antes de compilar non hai apk.
- Android 2013 U2 01 OlaMundo 27.jpg
Compilamos, lanzando a aplicación como unha Aplicación Android.
- Android 2013 U2 01 OlaMundo 28.jpg
Lanzando a aplicación
- Android 2013 U2 01 OlaMundo 29.jpg
O ficheiro apk que permite instalar a aplicación nun dispositivo e que Eclipse o fai por nós.
Ficheiro AndroidManifest.xml
- Contén a definición das características máis importantes da aplicación: nome, versión, icono, activities, servizos, instrumentación, permisos de acceso aos recursos, etc.
- AndroidManifest.xml
- Android 2013 U2 01 OlaMundo 39.jpg
Facemos dobre click nel e vemos a lapela Manifest
- Android 2013 U2 01 OlaMundo 41.jpg
Maximizámola ...
- Android 2013 U2 01 OlaMundo 42.jpg
Vemos os SDK mínimo e obxectivo. Se o desexamos agora podemos cambiar eses valores. Edición 2015: lembrar que o SDK mínimo é o 16.
- Android 2013 U2 01 OlaMundo 43.jpg
Na lapela Application indicamos o tema, o nome da aplicación e a icona a usar. Observar que son referencias a outros recursos (@.../...). Poderíamos ir aos ficheiros ou cartafoles correspondentes de /res e mirar cal vai ser o seu valor.
- Android 2013 U2 01 OlaMundo 44.jpg
Non hai ningún permiso definido por defecto.
- Android 2013 U2 01 OlaMundo 45.jpg
Esta aplicación tampouco ten definida ningunha instrumentación do dispositivo para ser usada por ela.
- Android 2013 U2 01 OlaMundo 46.jpg
Todo o anterior, pero en formato xml editable.
- Android 2013 U2 01 OlaMundo 47.jpg
Podemos ver os SDKs mínimo e obxectivo (Edición 2015: lembrar SDK mínimo, como mínimo o 16), a icona que se vai usar para a aplicación, (foi o que escollemos cando a creamos, está accesible a través dunha referencia a un recurso), o nome da aplicación e o tema a usar. Revisar o ficheiro strings.xml de /res/values. Finalmente está a lista de activities que ten a aplicación, neste caso unha soa, a principal.
Importando clases necesarias dentro dunha activity
Manualmente
- Cando utilizamos novas clases dentro dunha actiivity, é necesario importalas para poder facer uso delas.
- Por exemplo, se quere usar un TextView (ven ser un label de texto), podería poñer este código na Activity:
1 public class MainActivity extends Activity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 TextView texto = new TextView(this); 9 } 10 }
- Ao facelo, veremos que se pon en vermello a clase TextView e que se nos informa que podemos premer a combinación de teclas Alt + Intro:
- Se prememos dita combinación podemos ver como se engade automaticamente o 'import' correspondente a clase TextView:
1 import android.app.Activity; 2 import android.os.Bundle; 3 import android.widget.TextView; 4 5 public class MainActivity extends Activity { 6 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.activity_main); 11 12 TextView texto = new TextView(this); 13 } 14 }
Automaticamente
- Para facer que o Android Studio importe automaticamente as clases, debemos cambiar a configuración do IDE:
- Importando automaticamente as clases necesarias
Unha vez feito o anterior xa engade automaticamente as clases.
- Pode suceder que ao querer utilizar unha clase, esta poda provir de dous paquetes diferentes. Neste caso teremos que utilizar a combinación de clase Alt+Intro e escoller o paquete correcto:
- Importando automaticamente as clases necesarias
Modificando a versión compilada de debug a release
- Máis información neste enlace.
-- Ángel D. Fernández González -- (2016).