Diferencia entre revisiones de «PDM UD1 CoñecendoAndroidStudio»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 22: Línea 22:
 
==Ficheiros do proxecto Android==
 
==Ficheiros do proxecto Android==
 
A continuación imos ver os contidos dos distintos cartafoles que compoñen un proxecto.
 
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">
+
===/app/===
−
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
+
* É 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 [https://developer.android.com/studio/projects/index.html neste enlace].
 +
 
 +
===/app/java===
 +
 
 +
<u>Nota:</u> 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/.
 +
 
 +
<gallery caption="/App/Java" widths="350" heights="300px" perrow="2">
 +
Image:PDM_UD1_Estrutura_1.jpg| 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:PDM_UD1_Estrutura_2.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 [http://wiki.cifprodolfoucha.es/index.php?title=Ficheiros_e_cartafoles_dun_proxecto_Android:_Ola_Mundo._Activities,_Layouts_e_M%C3%BAltiples_pantallas#Activities 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>
 
</gallery>
  
−
===/res===
+
===/app/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.   
+
'''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 [https://developer.android.com/images/screens_support/screens-ranges.png 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.
 +
 
 +
<u>Nota:</u> Todos son arquivos de configuración son XML que poden ser editados. Máis información [https://developer.android.com/guide/topics/resources/providing-resources.html neste enlace].
 +
 
  
−
<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===
 
===/gen===
Línea 84: Línea 103:
 
*Referencias:
 
*Referencias:
 
**http://developer.android.com/guide/topics/manifest/manifest-intro.html
 
**http://developer.android.com/guide/topics/manifest/manifest-intro.html
−
 
  
 
==Importando clases necesarias dentro dunha activity==
 
==Importando clases necesarias dentro dunha activity==

Revisión del 12:43 14 ago 2016

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


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

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