PDM UD1 CoñecendoAndroidStudio
Sumario
Crear un proxecto Android: OlaMundo
- 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.
/src
- /src
- Android 2013 U2 01 OlaMundo 16.jpg
Cartafol src: contén o código fonte da aplicación, do interfaz gráfico, clases auxiliares. O código fonte asociado á actividade (Activity/Pantalla) principal da aplicación está dentro do paquete Java. Este código lanza a Pantalla Principal (Activity) e o Menú.
- Android 2013 U2 01 OlaMundo 20.jpg
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 imaxe superior dos 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
/res
Cartafol 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.
- /res
- Android 2013 U2 01 OlaMundo 31.jpg
/res/drawable-X: almacenan as imaxes da aplicación en función da densidade (dpi) do dispositivo de destino.
- Android 2013 U2 01 OlaMundo 32.jpg
/res/layout: almacena os ficheiros xml onde se definen as distintas pantallas (cos seus elementos) que compoñen a aplicación. Se creamos o cartafol /res/layout-land e para definir pantallas distintas en función da orientación do dispositivo.
- Android 2013 U2 01 OlaMundo 33.jpg
Este é o contido do ficheiro xml do layout. Observar que hai unha serie de referencias a outros recursos (as que comezan por @: @dim/... @string/...) (máis adiante veremos isto). Pero onde están definidas esas referencias ? ...
- Android 2013 U2 01 OlaMundo 34.jpg
/res/values: contén constantes que define: cadeas de texto, estilos, cores, dimensións, etc.
- Android 2013 U2 01 OlaMundo 35.jpg
No ficheiro dimens.xml están declaradas as dimensións que se usaban no layout.
- Android 2013 U2 01 OlaMundo 36.jpg
No ficheiro strings.xml están declaradas cadeas de texto. A última é usada no layout, logo veremos onde se usan as demais.
- Android 2013 U2 01 OlaMundo 37.jpg
Neste ficheiro styles.xml definiranse os estilos que se usarán para homoxeneizar os elementos gráficos.
- Android 2013 U2 01 OlaMundo 49.jpg
/res/menu contén a definición dos menús da aplicación.
- Android 2013 U2 01 OlaMundo 54.jpg
Aquí vemos no dispositivo como se acceden a eses menús.
- Android 2013 U2 01 OlaMundo 38.jpg
Estes catro cartafoles serven para definir valores específicos para dispositivos que teñen versións de Android iguais ou superiores ás asociadas á API11 ou API14. Sobre os outros dous cartafoles seguro que atopas información en internet.
/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).