INICIACIÓN A LA PROGRAMACIÓN PARA ANDROID
3.1 UI Interfaz de usuario
3
Interfaz de usuario Representación gráfica de nuestra app. Botones, imágenes, campos de texto, Contenida en res/layout. 4
Interfaz de usuario Hay muchos tipos de vistas, y se dividen principalmente en dos grupos: View ViewGroup 5
ViewGroup Una vista que, por lo general, no se dibuja por si misma, sino que organiza a sus vistas hijas. LinearLayout es el ViewGroup más básico: ordena a sus vistas hijas horizontal o verticalmente. 6
View Clase que tiene directamente una representación o uso gráfico: Button ImageView TextView EditText... 7
Atributos XML Los atributos (o parámetros) de tanto View s como ViewGroup s habitualmente llevan el prefijo android:. Hay dos atributos que todas deben tener: android:layout_width y android:layout_height. 8
match_parent/wrap_content A la hora de especificar ancho y alto tenemos tres opciones: match_parent Usar todo el espacio disponible. Antes llamado fill_parent. wrap_content Usar sólo el espacio necesario. Xdp Tamaño específico y fijado a X dp. 9
DP vs PX dp=dip Density Independent Pixel. 1px representa un pixel en la pantalla, pero.. Hay tablets de 10 pulgadas 1280x720 píxeles. Hay móviles de 5 pulgadas 1920x1080 píxeles. El tamaño de 1 pixel es muy relativo. En lugar de px, usamos dp, y Android se encargará de que 1dp tenga el mismo tamaño visual en todos los dispositivos. 10
<LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:textsize="32sp" android:textstyle="italic bold" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginbottom="32dp" android:text="hola"/> Para tamaños de textos, usamos sp en lugar de dp. La idea es la misma, pero además tiene en cuenta las preferencias del usuario para tamaño de texto. <Button android:textsize="24sp" android:layout_width="match_parent" android:layout_height="80dp" android:text="botón"/> </LinearLayout> 11
ViewGroup s básicos LinearLayout Muestra a sus hijos horizontal o verticalmente. ScrollView Muestra scroll vertical si su contenido no cabe en la pantalla. FrameLayout Dibuja a sus hijos uno sobre otro (en el eje Z). Útil para vistas complejas. RelativeLayout Posiciona a sus hijos usando reglas más complejas, como torightof, toleftof, above, below. 12
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/view1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="hello" /> Declaración del id. Usando @+id/ <TextView android:layout_below="@id/view1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="world!" /> </RelativeLayout> Uso del id para referenciar, con @id/ 13
3.2 Fragment Encapsulación de vistas y lógica
Fragment La idea es sencilla: agrupar un conjunto de vistas para poder reusarlas en varias Activities. Además, nos permite mostrar más de un fragment a la vez para, por ejemplo, tablets. 15
Añadir fragment a una vista <fragment android:id="@+id/mi_fragment" android:layout_width="match_parent" Para fragments, es obligatorio poner un id. android:layout_height="match_parent" Ruta completa hacia el fragment a cargar. android:name="com.test.mifragment" /> 16
Definición de fragment public class MiFragment extends Fragment { public MiFragment() { } Constructor sin parámetros obligatorio. } @Nullable @Override public View oncreateview(layoutinflater inflater, } @Nullable ViewGroup container, @Nullable Bundle savedinstancestate) { Usamos oncreateview en lugar de oncreate. return inflater.inflate(r.layout.mifragment, container, false); 17
3.3 I18N Traducción y adaptaciones
Tipos de recursos en Android layout Esquemas de vistas, como hemos visto. drawable Cualquier cosa dibujable. Por ejemplo, imágenes jpg o png. values Valores que necesita la app, como: string Cadenas de texto, para traducciones. color Colores en RGB, para background, textcolor, etc. dimen Dimensiones: dp, sp, etc. 19
Modificadores de recursos A cualquier tipo de recurso de android le podemos añadir una serie de modificadores. Estos modificadores se usan para seleccionar en qué idioma, dispositivo, o configuración, se usará este recurso. 20
Modificadores: ejemplo El fichero values/strings.xml contiene las cadenas de texto por defecto. El fichero values-es/strings.xml contiene las mismas cadenas traducidas al español. En función del idioma del teléfono, Android seleccionará automáticamente uno u otro. 21
Otros modificadores ldpi/mdpi/hdpi/xhdpi/xxhdpi/xxxhdpi Para mostrar diferentes recursos (como iconos) en pantallas de estas densidades de píxeles. port/land Portrait o landscape. sw600dp Pantallas con ancho mayor a 600dp. Muy útil para cambiar la vista en tablets. 22
Style Hay un tipo especial de recurso que es el style. Agrupa varios parámetros (como textsize, textcolor, etc) para reusarlos. Se aplica a una vista con style= @style/nombre. <style name="textorojogrande"> <item name="android:textsize">24sp</item> <item name="android:textcolor">#ff0000</item> </style> 23