Diferencia entre revisiones de «Prog Android Adaptando el diseño»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(Página creada con «=En función de la orientación= <br /> ==Introdución== * Algúns dispositivos deixan rotar a pantalla, poñéndoa en posición horizontal-vertical (apaisado-retrato) *Se...»)
 
(Página blanqueada)
 
(No se muestran 4 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
−
=En función de la orientación=
 
  
−
<br />
 
−
==Introdución==
 
−
* Algúns dispositivos deixan rotar a pantalla, poñéndoa en posición horizontal-vertical (apaisado-retrato)
 
−
*Se queremos ter un deseño diferente para cada orientación, debemos de crear un cartafol dentro de ‘res’ de nome '''/res/layout-land'''.
 
−
*Aquí dentro poñemos os deseños que queiramos ter cunha orientación apaisada do dispositivo, mentres que deixaremos en '''/res/layout''' os deseños para unha orientación vertical.
 
−
 
−
'''Nota''': no emulador, para cambiar a orientación debemos premer os botóns '''CTRL+F11''' ou '''7''' no teclado numérico, sen estar activado o teclado numérico.
 
−
 
−
*Antes de continuar abre a calculadora nun AVD ou no dispositivo real e cambia a orientación do dispositivo/AVD. Notas algunha diferencia cando o dispositivo está en Vertical a cando o está en Horizontal?.
 
−
 
−
 
−
Veremos máis adiante, na sección [http://informatica.iessanclemente.net/manuais/index.php/Internacionalizaci%C3%B3n Internacionalización], como podemos xerar estes 'sufixos' de forma automática cando creamos o arquivo de recurso.
 
−
 
−
*'''Referencias''':
 
−
**Diferentes pantallas: http://developer.android.com/training/basics/supporting-devices/screens.html
 
−
 
−
==Caso práctico==
 
−
*Crear o proxecto: '''U2_40_Landscape'''
 
−
*Crear en '''/res''' o cartafol '''layout-land'''.
 
−
*Definir o XML vertical
 
−
*Copiar o XML vertical á nova carpeta e modificalo segundo as necesidades.
 
−
 
−
<gallery caption="Cambio de orientación" widths="350" heights="300px" perrow="2">
 
−
Image:Android_2013_U2_40_Landscape_01.jpg| Os ficheiros dos layouts para cada orientación
 
−
Image:Android_2013_U2_40_Landscape_02.jpg| O dispositivo en vertical dispón os elementos de forma distinta
 
−
Image:Android_2013_U2_40_Landscape_03.jpg| ... a se está en apaisado
 
−
</gallery>
 
−
 
−
===XML layout vertical===
 
−
<syntaxhighlight lang="xml" line enclose="div" highlight="1" >
 
−
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
−
    xmlns:tools="http://schemas.android.com/tools"
 
−
    android:layout_width="match_parent"
 
−
    android:layout_height="match_parent"
 
−
    android:orientation="vertical"
 
−
    android:gravity="center" >
 
−
 
−
    <TextView
 
−
        android:layout_width="wrap_content"
 
−
        android:layout_height="wrap_content"
 
−
        android:textColor="#00F"
 
−
        android:textSize="18sp"
 
−
        android:text="O dispositivo está en posición vertical" />
 
−
   
 
−
    <Button
 
−
        android:layout_width="wrap_content"
 
−
        android:layout_height="wrap_content"
 
−
        android:onClick="oMeuMetodo"
 
−
        android:text="Botón 1" />
 
−
   
 
−
      <TextView
 
−
        android:layout_width="wrap_content"
 
−
        android:layout_height="wrap_content"
 
−
        android:gravity="center_horizontal"
 
−
        android:text="Esta etiqueta só se amosa cando o dipositivo está en vertical" />
 
−
   
 
−
</LinearLayout>
 
−
 
−
</syntaxhighlight>
 
−
 
−
 
−
 
−
===XML layout horizontal===
 
−
*Observar que falta unha etiqueta, a disposición e distinta, etc.
 
−
*Neste caso os botóns en Vertical e en Apaisado chaman ao mesmo método.
 
−
 
−
<syntaxhighlight lang="xml" line enclose="div" highlight="1" >
 
−
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
−
    xmlns:tools="http://schemas.android.com/tools"
 
−
    android:layout_width="match_parent"
 
−
    android:layout_height="match_parent"
 
−
    android:orientation="horizontal" >
 
−
 
−
    <Button
 
−
        android:layout_width="wrap_content"
 
−
        android:layout_height="wrap_content"
 
−
        android:onClick="oMeuMetodo"
 
−
        android:text="Botón 1" />
 
−
 
−
    <TextView
 
−
        android:layout_width="wrap_content"
 
−
        android:layout_height="wrap_content"
 
−
        android:text="O dispositivo está en posición horizontal"
 
−
        android:textColor="#F0F"
 
−
        android:textSize="18sp" />
 
−
 
−
</LinearLayout>
 
−
</syntaxhighlight>
 
−
 
−
 
−
 
−
<br />
 
−
=En función del tamaño=
 
−
 
−
* A partir de la versión de Android 3.2 se cambia la forma de indicarle al S.O. que layout tiene que coger en función del tamaño de la pantalla.
 
−
: Anteriormente, en el directorio 'res/' se ponía un sufijo (como res/layout-xlarge/) para indicar que se layout fuese cargado para un tamaño de pantalla grande (ver [http://wiki.cifprodolfoucha.es/index.php?title=Activities,_Layouts_e_M%C3%BAltiples_pantallas#Tama.C3.B1os_de_pantalla_e_densidade_.28puntos_por_pulgada:_dpi.29 este enlace] para consultar los diferentes tamaños de pantalla).
 
−
 
−
: Ahora, el sufijo que se va a añadir va a indicar el espacio necesario en '''pp''' (puntos por pulgada) que se necesita para poder visualizar el layout.
 
−
: Esto se implementó para dar una respuesta de diseño a las tablet's de 7' ya que dichas tablet's entraban dentro de la misma categoría que las de 5' pero el espacio es bastante mayor.
 
−
 
−
: El nombre que debe de tener la carpeta para que cargue el layout que se encuentre definido dentro de ella, debe de ser: '''nombre_carpeta-sw<N>dp''' siendo <N> el número de dp's necesario para que se pueda visualizar. Por ejemplo, 'res/clientes-sw600dp/
 
−
: Este formato es independiente de que la pantalla esté en horizontal o vertical.
 
−
: Por lo tanto, refleja el tamaño mínimo posible en dp's para que la interface de un determinado layout pueda ser visualizada correctamente.
 
−
 
−
 
−
* Existen otros sufijos referidos solamente al ancho-alto de la pantalla:
 
−
:* '''nombre_carpeta-w<N>dp''': Ancho mínimo en dp. Por ejemplo: res/productos-w150dp/
 
−
:* '''nombre_carpeta-h<N>dp''': Alto mínimo en dp. Por ejemplo: res/productos-h300dp/
 
−
 
−
 
−
* Estos son algunos valores que puedes utilizar para tamaños de pantallas comunes:
 
−
 
−
:* 320, para dispositivos con configuraciones de pantalla como las siguientes:
 
−
::* 240 x 320 ldpi (teléfono celular QVGA)
 
−
::* 320 x 480 mdpi (teléfono celular)
 
−
::* 480 x 800 hdpi (teléfono celular de alta densidad)
 
−
::* 480, para pantallas de 480 x 800 mdpi (tablet/teléfono celular).
 
−
::* 600, para pantallas de 600 x 1024 mdpi (tablet de 7 pulgadas).
 
−
::* 720, para pantallas de 720 x 1280 mdpi (tablet de 10 pulgadas).
 
−
 
−
 
−
 
−
 
−
* Más información [https://developer.android.com/guide/practices/screens_support#DeclaringTabletLayouts en este enlace].
 
−
 
−
 
−
 
−
 
−
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2018).
 

Revisión actual del 13:26 30 sep 2018