Qué es Android (técnico)       Consigue tu camiseta aquí
  • ¿Cómo empezar a programar en Android?
  • ¿Arquitectura de Android?
  • Jerarquía visual de Android
  •  

    - ¿Qué es Android?


    Android es un stack de software para dispositivos móviles que incluye un sistema operativo, middleware y aplicaciones clave. Google está otorgando un vistazo al SDK de Android, que provee de herramientas y APIs necesarios para comenzar a desarrollar aplicaciones en la plataforma Android, utilizando el lenguaje de programación Java.

     

    - ¿Cómo empezar a programar en Android?


    Para empezar a programar en Android es importante tener conocimientos de Java, así como de Programación Orientada a Objetos. Si no conoces Java pero sí sabes programar reconocerás a Java como un lenguaje sencillo y rápido de aprender.

    Además de Java se utiliza XML para la parte visual, otro lenguaje descriptivo muy fácil de utilizar y que aporta sencillez a la hora de programar en Android.

    Se puede programar en cualquier plataforma Windows, MAC o Linux. Para ello hay que descargar el Android SDK, que consta de todas las librerías Java que utiliza Android, el emulador para poder probar las aplicaciones que realizas y multitud de aplicaciones que vienen ya desarrolladas por Google y que seguramente implementen los teléfonos móviles de fábrica que salgan con Android.

    Para instalar el software necesario y configurar todo puedes informarte aquí.

     

    - ¿Arquitectura de Android?


    Los componentes mayores del sistema operativo de Android, cada sección se describe en detalle:

    Aplicaciones: Las aplicaciones base incluirán un cliente de email, programa de SMS, calendario, mapas, navegador, contactos, y otros. Todas las aplicaciones escritas en el lenguaje de programación Java.

    Framework de aplicaciones: Los desarrolladores tienen acceso completo a los mismos APIs del framework usados por las aplicaciones base. La arquitectura está diseñada para simplificar el reuso de componentes; cualquier aplicación puede publicar sus capacidades y cualquier otra aplicación puede luego hacer uso de esas capacidades (sujeto a reglas de seguridad del framework). Éste mismo mecanismo permite que los componentes sean reemplazados por el usuario.

    Librerías: Android incluye un set de librerías C/C++ usadas por varios componentes del sistema Android. Éstas capacidades se exponen a los desarrolladores a través del framework de aplicaciones de Android. Algunas son: System C library (implementación librería C standard), librerías de medios, librerías de gráficos, 3d, SQLite, entre otras.

    Runtime de Android: Android incluye un set de librerías base que proveen la mayor parte de las funcionalidades disponibles en las librerías base del lenguaje de programación Java. Cada aplicación Android corre su propio proceso, con su propia instancia de la máquina virtual Dalvik. Dalkiv ha sido escrito de forma que un dispositivo puede correr múltiples máquinas virtuales de forma eficiente. Dalkiv ejecuta archivos en el formato Dalvik Executable (.dex), el cual está optimizado para memoria mínima. La Máquina Virtual está basada en registros, y corre clases compiladas por el compilador de Java que han sido transformadas al formato.dex por la herramienta incluida "dx".

    Núcleo - Linux: Android depende de un Linux versión 2.6 para los servicios base del sistema como seguridad, gestión de memoria, gestión de procesos, stack de red, y modelo de drivers. El núcleo también actúa como una capa de abstracción entre el hardware y el resto del stack de software.

     

    - Jerarquía visual de Android


    La principal clase de Android es activity, un objeto de la clase android.app.Activity.

    Un actividad hace multitud de cosas, pero por ella misma no se presenta nada en la pantalla. Para conseguir que aparezca algo en la pantalla es necesario diseñar el UI, con views y viewgroups, que son las clases que se usan para crear la interfaz entre el usuario y la plataforma Android.

    Views: Una view es un objeto cuya clase es android.view.View. Es una estructura de datos cuyas propiedades contienen los datos de la capa y la información específica del área rectangular de la pantalla. Una view tiene: layout, drawing, focus change, scrolling, etc..

    La clase view es útil como clase base para los widgets, que son unas subclases ya implementadas que dibujan los elementos en la pantalla. Los widgets contienen sus propias medidas, pero puedes usarlas para construir tu interfaz más rápidamente. La lista de widgets usables incluyen Text, EditText, InputMethod, MovementMethod, Button, RadioButton, CheckBox, y ScrollView.

    Viewgroups: Un viewgroup es un objeto de la clase android.view.Viewgroup, como su propio nombre indica, un viewgroup es un objeto especial de view cuya function es contener y controlar la lista de views y de otros viewgroups. Los viewgroups te permiten añadir estructuras a la interfaz y acumular complejos elementos en la pantalla que son diseccionados por una sola entidad.

    La clase viewgroup es útil como base de la clase layouts, que son subclases implementadas que proveen los tipos más comunes de los layouts de pantalla. Los layouts proporcionan una manera de construir una estructura para una lista de views.

    Árbol estructurado de la interfaz UI: En la plataforma Android tú defines una Activity del UI usando un árbol de nodos view y viewgroups, como vemos en la imagen de abajo. El árbol puede ser tan simple o complejo como necesites hacerlo, y se puede desarrollar usando los widgets y layouts que Android proporciona o creando tus propias views.



    Para añadir el árbol a la pantalla, tu Activity llama al método setContentView() y pasa una referencia al objeto nodo principal. Una vez que el sistema Android ha renferenciado el objeto nodo principal ya puede trabajar directamente con el nodo para anular, medir y dibujar el árbol. Cuando tu Activity está activo y recibe el foco el sistema notifica tu activity y pide al nodo principal medidas y dibuja el árbol. El nodo principal entonces pide que sus nodos hijos se dibujen a sí mismos, a partir de ese momento cada nodo viewgroup del árbol es responsable de pintar sus hijos directos.

    Como se ha dicho anteriormente, cada viewgroup es el responsable de tomar medidas sobre el espacio que tienen, preparando a sus hijos y llamando a Draw() por cada hijo que se muestra a si mismo. El hijo hace una petición sobre el tamaño y la localización del padre, pero el objeto padre toma la última decisión sobre el tamaño que cada hijo puede tener.

    LayoutParams: Cómo un hijo especifica su posición y su tamaño Todos los viewgroup usan como clase anidada una extensión de ViewGRoup.LayoutParams. Esta subclase contiene los tipos de propiedades que definen la posición y el tamaño de un hijo, en propiedades apropiadas para la clase de grupo de clases.



    Hay que reseñar que cada subclase LayoutParams tiene su propia sintaxis para cambiar los valores. Cada elemento hijo debe definir unos LayoutParams que sean apropiados para su padre, aunque se podrían definir diferentes LayoutParams para sus hijos.

    Todos los viewgroups incluyen anchura y altura. Muchos también incluyen márgenes y bordes. Puedes especificar exactamente la altura y la anchura, hay que pensar que probablemente no se querrá definir esto a menudo. Más a menudo habrá que indicar a la view que tenga las dimensiones del tamaño de su contenedor, o que llegue a ser tan grande como el contenedor le permita.