Diferencia entre revisiones de «PDM UD1 CoñecendoAndroidStudio»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 1: Línea 1:
 +
==Crear un proxecto Android: OlaMundo==
 +
<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_2_.jpg| 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.
 +
Image:PDM_Interface_3_.jpg| Android Studio permite crear proxectos para todo tipo de dispositivos (reloxos, televisións,..) nos escolleremos a opción '''Phone and Tablets'''
 +
Image:PDM_Interface_4_.jpg| Indicamos o tipo de Activity a crear. Podemos identificar unha activity cunha pantalla do proxecto (aínda que non sempre é así). Cun proxecto sempre se crea unha activity. Imos indicar que non teña nada escollendo a opción '''Empty Activity'''.
 +
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_7_.jpg| O mesmo acontece co ficheiro XML do layout.
 +
Image:PDM_Interface_8_.jpg| Ficheiro XML que define o Layout e os elementos que o compoñen. Por agora ten unha etiqueta.
 +
</gallery>
  
 +
 +
==Ficheiros do proxecto Android==
 +
A continuación imos ver os contidos dos distintos cartafoles que compoñen un proxecto.
 +
===/src===
 +
<gallery caption="/src" widths="350" heights="300px" perrow="2">
 +
Image: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ú.
 +
Image:Android_2013_U2_01_OlaMundo_20.jpg| A clase '''U2_01_OlaMundo''' herda da clase '''Activity''' os seus atributos e métodos.<br> 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: <br>(-Null: porque acabamos de iniciala <br>-ou valores do estado anterior se vén de estar parada. Mirar imaxe superior do ciclo de vida).<br>Chama ao método '''onCreate''' da clase pai.<br>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.<br>http://developer.android.com/reference/android/os/Bundle.html<br>http://developer.android.com/reference/android/app/Activity.html#setContentView%28int%29
 +
</gallery>
 +
 +
===/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. 
 +
 +
<gallery caption="/res" widths="350" heights="300px" perrow="2">
 +
Image: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.
 +
Image: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.
 +
Image: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 ? ...
 +
Image:Android_2013_U2_01_OlaMundo_34.jpg| '''/res/values''': contén constantes que define: cadeas de texto, estilos, cores, dimensións, etc.
 +
Image:Android_2013_U2_01_OlaMundo_35.jpg| No ficheiro '''dimens.xml''' están declaradas as dimensións que se usaban no layout.
 +
Image: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.
 +
Image:Android_2013_U2_01_OlaMundo_37.jpg| Neste ficheiro '''styles.xml''' definiranse os estilos que se usarán para homoxeneizar os elementos gráficos.
 +
Image:Android_2013_U2_01_OlaMundo_49.jpg| '''/res/menu''' contén a definición dos menús da aplicación.
 +
Image:Android_2013_U2_01_OlaMundo_54.jpg| Aquí vemos no dispositivo como se acceden a eses menús.
 +
Image: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. 
 +
</gallery>
 +
 +
===/gen===
 +
O cartafol '''/gen''' contén codigo Java creado automaticamente ao compilar a aplicación. O ficheiro máis importante é '''R.java'''.
 +
<gallery caption="/res" widths="350" heights="300px" perrow="2">
 +
Image: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.
 +
Image: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 ...
 +
Image:Android_2013_U2_01_OlaMundo_20.jpg| ... no código fonte asociado á Actividade que lanza a aplicación.
 +
</gallery>
 +
 +
===/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
 +
[[Image: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.
 +
 +
<gallery caption="/bin" widths="350" heights="300px" perrow="2">
 +
 +
Image:Android_2013_U2_01_OlaMundo_26.jpg| Antes de compilar non hai '''apk'''.
 +
Image:Android_2013_U2_01_OlaMundo_27.jpg| Compilamos, lanzando a aplicación como unha Aplicación Android.
 +
Image:Android_2013_U2_01_OlaMundo_28.jpg| Lanzando a aplicación
 +
Image: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.
 +
</gallery>
 +
 +
===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.
 +
 +
<gallery caption="AndroidManifest.xml" widths="350" heights="300px" perrow="2">
 +
Image:Android_2013_U2_01_OlaMundo_39.jpg| Facemos dobre click nel e vemos a lapela '''Manifest'''
 +
Image:Android_2013_U2_01_OlaMundo_41.jpg| Maximizámola ...
 +
Image: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.
 +
Image: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.
 +
Image:Android_2013_U2_01_OlaMundo_44.jpg| Non hai ningún permiso definido por defecto.
 +
Image:Android_2013_U2_01_OlaMundo_45.jpg| Esta aplicación tampouco ten definida ningunha instrumentación do dispositivo para ser usada por ela.
 +
Image:Android_2013_U2_01_OlaMundo_46.jpg| Todo o anterior, pero en formato xml editable.
 +
Image: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.
 +
</gallery>
 +
 +
*Referencias:
 +
**http://developer.android.com/guide/topics/manifest/manifest-intro.html
  
  

Revisión del 10:55 14 ago 2016

Crear un proxecto Android: OlaMundo


Ficheiros do proxecto Android

A continuación imos ver os contidos dos distintos cartafoles que compoñen un proxecto.

/src

/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.

/gen

O cartafol /gen contén codigo Java creado automaticamente ao compilar a aplicación. O ficheiro máis importante é R.java.

/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.

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.


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:

PDM UD1 CoñecendoAndroidStudio 1.jpg


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:

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:



Modificando a versión compilada de debug a release





-- Ángel D. Fernández González -- (2016).