Qué Es Android SDK

Embed Size (px)

Citation preview

  • 8/17/2019 Qué Es Android SDK

    1/20

    1. ¿Qué es Android SDK?

    Un kit de desarrollo de software o SDK (siglas en inglés de software development kit)

    es generalmente un conjunto de herramientas de desarrollo de software que permiten al

     programador crear aplicaciones para un sistema concreto, por ejemplo ciertos paquetes

    de software, frameworks, plataformas de hardware, ordenadores, videoconsolas,sistemas operativos, etc

    !l SDK de "ndroid proporciona las #i#liotecas "$% & herramientas de desarrollo

    necesarias para crear, pro#ar & depurar aplicaciones para "ndroid

    !l SDK de "ndroid separa herramientas, plataformas & otros componentes en paquetes

    2. Interfaz de programación de aplicaciones A!I " 

    %nterfa' de programacin de aplicaciones o "$% es el conjunto de funciones &

     procedimientos que ofrece cierta #i#lioteca para ser utili'ado por otro software como

    una capa de a#straccin Son usadas generalmente en las li#rer*as

    !s una fuente de cdigo #asado en la especificacin destinada a ser utili'ada como una

    interfa' de componentes de software para comunicarse entre s*

    Una "$% puede incluir especificaciones para las rutinas & estructuras de datos, las clases

    de o#jetos & varia#les

    Una "$% difiere de una interfa' de aplicacin #inaria ("+%) en la que el primero es de

    cdigo a#ierto #asado mientras que el segundo es una interfa' #inaria

    2.1. #i$eles Android A!I

    omprender el enfoque general de la plataforma para la gestin del cam#io de la

    "$% -am#ién es importante entender el identificador del nivel de la "$% & el papel

    que desempe.a en la consecucin de la compati#ilidad de la aplicacin con los

    dispositivos en los que puedan estar instalados

    2.2. ¿%u&l es el ni$el de la A!I?

     /ivel "$% es un valor entero que identifica de forma e0clusiva la revisin de la "$%

    marco que ofrece una versin de la plataforma "ndroid 1a plataforma "ndroid

    ofrece una "$% de marco en el que las aplicaciones pueden utili'ar para interactuar 

    con el sistema "ndroid su#&acente

    1a "$% de marco consiste en2

    Un conjunto #3sico de paquetes & clases

    Un conjunto de elementos & atri#utos 451 para la declaracin de un archivo

    de manifiesto

    Un conjunto de elementos & atri#utos 451 para la declaracin & el acceso a

    los recursos Un conjunto de %ntenciones

    http://rcmdispmoviles.blogspot.com/2012/04/interfaz-de-programacion-de.htmlhttp://rcmdispmoviles.blogspot.com/2012/04/interfaz-de-programacion-de.html

  • 8/17/2019 Qué Es Android SDK

    2/20

    Un conjunto de permisos que pueden solicitar aplicaciones, as* como

    refuer'os de permiso incluido en el sistema

    ada versin sucesiva de la plataforma "ndroid pueden incluir actuali'aciones de la

    aplicacin de "ndroid "$% de marco de tra#ajo que se ofrece

    1a siguiente ta#la especifica el nivel de "$% con el apo&o de cada versin de la

     plataforma "ndroid2

    'ersión de plataforma #i$el A!I %ódigo de 'ersión #otas

    Android (.) 2* + A!I %,anges

    Android -.1 22 /I!/!0+1!latform ig,lig,ts

    Android -.) 21 /I!/!

    Android 3.34 2) KI5KA504A5%KitKat for 4eara6les

    /nl7

    Android 3.3 18 KI5KA5 !latform ig,lig,ts

    Android 3.* 19 :; 3.2.2 1 :; 3.1.1 1( :; 3.).3 1-I%;0%;A+0SA#D

    4I%0+1!latform ig,lig,ts

    Android 3.)> 3.).1> 3.).2 13I%;0%;A+0SA#D

    4I%

    Android *.2 1* /#;

  • 8/17/2019 Qué Es Android SDK

    3/20

    $ermite que el sistema de negociar la instalacin de aplicaciones en el

    dispositivo del usuario, de modo que las aplicaciones de versiones

    incompati#les no est3n instalados

    ada versin de la plataforma "ndroid almacena su identificador de nivel "$%

    internamente, en el sistema "ndroid en s*

    1as aplicaciones pueden utili'ar un elemento manifiesto proporcionado por la "$%

    de marco 6 7use6sdk8 6 para descri#ir los niveles m30imos de la "$% (en las que son

    capaces de ejecutar) & m*nimo, as* como el nivel de "$% preferido que est3n

    dise.ados para soportarlo !l elemento ofrece tres atri#utos clave2

    android minSdE'ersion 6 !spec*fica el nivel m*nimo de la "$% en el que la

    aplicacin es capa' de ejecutar !l valor por defecto es 9

    android targetSdE'ersion  6!spec*fica el nivel de "$% en la que laaplicacin est3 dise.ada para funcionar !n algunos casos, esto permite a la

    aplicacin utili'ar elementos manifiestos o conductas definidas en el nivel

    "$% de destino, en lugar de limitarse a usar solamente los definidos para el

    nivel "$% m*nimo

    android ma@SdE'ersion 6 !spec*fica el nivel m30imo de la "$% en el que

    la aplicacin es capa' de ejecutar %mportante2 $or favor lea la 7use6sdk8

    documentacin antes de utili'ar este atri#uto

    3. ¿Qué es gradle?

    :radle es una herramienta de automati'acin de la construccin de nuestro cdigo que

     #e#e de las aportaciones que han reali'ado herramientas como ant & maven pero intenta

    llevarlo todo un paso mas all3 $ara empe'ar se apo&a en :roov& & en un DS1

    (Domain Specific 1anguage) para tra#ajar con un lenguaje sencillo & claro a la hora de

    construir el #uild comparado con 5aven $or otro lado dispone de una gran fle0i#ilidad

    que permite tra#ajar con ella utili'ando otros lenguajes & no solo ;ava Dispone por otro

    lado de un sistema de gestin de dependencias slido

  • 8/17/2019 Qué Es Android SDK

    4/20

    Una de las

    caracter*sticas que hacen a :radle tan sencillo de usar, es que los scripts usan un

    lenguaje espec*fico de dominio (Domain6Specific 1anguage, DS1) que e0tiende el

    lenguaje de programacin :roov& !sto le da a :radle a la ve' sencille' & poder, &a que

    en los scripts se pueden utili'ar elementos tanto de programacin orientada a o#jetos

    como de programacin funcional :radle cuenta tam#ién con una arquitectura de

     plugins & de entrada ofrece varios mu& :roov&doc), reali'ar 

     prue#as unitarias & generar reportes con los resultados, etc ? por supuesto, cuenta con

    una "$% para que terceros puedan crear sus propios plugins

    3. ¿Qué son las $istas?

    @istas son elementos gr3ficos que se inclu&en en las actividades & que permiten mostrar 

    informacin al usuario o permitir que éste interact

  • 8/17/2019 Qué Es Android SDK

    5/20

    dentro de la actividad, el principal o#jetivo de los dise.os es controlar dnde se sito permiten la

    interaccin con el usuario se las denomina widgets

    -anto los dise.os como los widgets se representan en "ndroid como clases ;ava que

    heredan de la clase 'ieF (en realidad, los dise.os heredan de la clase

    'ieFroup que, a su ve', hereda de la clase 'ieF) 1as

    clases 'ieF & 'ieFroup se encuentran en el paquete androidview, mientras que

    las vistas (dise.os & widgets) se sit

  • 8/17/2019 Qué Es Android SDK

    6/20

    respectivamente $ara esta#lecer la orientacin podemos utili'ar o #ien el

    atri#uto android2orientation en la definicin del la&out en el archivo 451

    (tomando como valor hori'ontal o vertical, siendo el primero el valor por 

    defecto) o mediante el método setArientation desde el cdigo Un ejemplo de

    la&out de este tipo ser*a2

  • 8/17/2019 Qué Es Android SDK

    7/20

    android:layout$%idt="&ll$!arent"android:layout$eigt="%ra!$content">

    Resultado de ejecutarel código.

     

    5a6lea7out Se trata de un la&out que organi'a sus elementos como una

    rejilla dividida en filas & columnas Se compone de un conjunto de

    elementos de tipo -a#leBow que representan a las diferentes filas de la ta#la

    ada fila a su ve' se compone de un conjunto de vistas !0iste la posi#ilidad

    de tener filas con diferente n

  • 8/17/2019 Qué Es Android SDK

    8/20

    de una columna para hacer que la ta#la pueda ocupar todo el espacio que

    tenga disponi#le Ca& que tener en cuenta que se %ntroduccin al dise.o de

    interfaces gr3ficas en "ndroid 9F op&right G HI9H69J Dept iencia de la

    omputacin e %" "ll rights reserved pueden utili'ar am#os métodos para

    una misma columna en este caso la anchura de la columna siempre se

    incrementar3 hasta que se utilice todo el espacio disponi#le, pero nunca m3s

    Atra opcin disponi#le es ocultar una columna por medio del método

    setolumnollapsed

    !l siguiente ejemplo muestra un -a#le1a&out definido como recurso de la

    aplicacin por medio de un fichero 451 omo se puede o#servar en el

    cdigo se ha introducido un elemento @iew cu&a

  • 8/17/2019 Qué Es Android SDK

    9/20

    esultado de eGecutar elcódigo.

    elati$ea7out !ste la&out es mu& fle0i#le permite indicar la posicin de

    un elemento en funcin de otros & de los #ordes de la pantalla tam#ién

     permite comen'ar a situar los elementos en cualquiera de los cuatro lados del

    contenedor e ir a.adiendo nuevos elementos pegados a estos

    ;Gemplo

  • 8/17/2019 Qué Es Android SDK

    10/20

    android!laout&belo'="5id$eti7ueta"$>

  • 8/17/2019 Qué Es Android SDK

    11/20

    !jemplo de  AbsoluteLayout:

  • 8/17/2019 Qué Es Android SDK

    12/20

      android!laout&eigt="'ra#&content"

    android!text="+n texto cual7uiera"

      android!laout&x="10#x"

      android!laout&="00#x"$>

    Bramea7out  posiciona las vistas usando todo el contenedor, sin

    distri#uirlas espacialmente !ste Layout  suele utili'arse cuando queremos

    que varias vistas ocupen un mismo lugar $odemos hacer que solo una sea

    visi#le, o superponerlas$ara modificar la visi#ilidad de un elemento

    utili'aremos la propiedad visibility

     Ejemplo de FrameLayout :

  • 8/17/2019 Qué Es Android SDK

    13/20

      android!text="+n botn"

      android!visibilit="invisible"$>

     

    3.*. +aneGo de ids android:id)

    Se trata de un n

  • 8/17/2019 Qué Es Android SDK

    14/20

    %ontrolador de

    e$entos

    ;$ento istener 7 Descripción

    al hacer clic() /n%licEistener "

    !sto se llama cuando el usuario &a sea clics o toques o se centra

    en cualquier tipo de artilugio como el #otn, te0to, imagen, etc

    Usted usar3 onlick () controlador de eventos para manejar tal

    evento

    on1onglick () /nong%licEistener "

    !sto se llama cuando el usuario &a sea clics o toques o se centra

    en cualquier tipo de artilugio como el #otn, te0to, imagen, etc,

     para uno o m3s segundos Utili'ar3 on1onglick () controlador 

    de eventos para manejar tal evento

    onNocushange () /nBocus%,angeistener "

    !sto se llama cuando el widget pierde su enfoque es decir, elusuario se aleja del punto de vista Utili'ar3 onNocushange ()

    controlador de eventos para manejar tal evento

    AnKe& () /nBocus%,angeistener "

    !sto se llama cuando el usuario se centra en el elemento &

     presiona o li#era una clave de hardware en el dispositivoUtili'ar3

    AnKe& () controlador de eventos para manejar tal evento

    on-ouch () /n5ouc,istener "

    !sto se llama cuando el usuario pulsa la tecla, li#era la tecla, o

    cualquier gesto de movimiento en la pantalla Utili'ar3 on-ouch

    () controlador de eventos para manejar tal evento

    on5enu%temlick () /n+enuItem%licEistener "

  • 8/17/2019 Qué Es Android SDK

    15/20

    !sto se llama cuando el usuario selecciona un elemento del

    men Ke7;$ent" 6 Se llama cuando ocurre un nuevo evento de

    teclado

    onKe7Cpint> Ke7;$ent" 6 Se llama cuando se suelta una tecla

    on5racE6all;$ent+otion;$ent" 6 Se llama cuando un ocurre un evento

    referente a cualquier movimiento del track#all

    on5ouc,;$ent+otion;$ent" 6 Se llama cuando se toca la pantalla

    onBocus%,anged6oolean> int> ect" 6 Se llama cuando el view gana o pierde

    el focus

    !0isten otros métodos que pueden impactar directamente en el manejo de los

    eventos, que no forman parte de la clase @iew2

    Acti$it7.dispatc,5ouc,;$ent+otion;$ent" 6 $ermite al "ctivit& interceptar 

    todos los eventos referentes a tocar la pantalla antes de que se repartan a la

    ventana

    'ieFroup.onIntercept5ouc,;$ent+otion;$ent" 6 $ermite

    al @iew:roup controlar los eventos mientras se reparten a los @iews hijos

    'ieF!arent.reMuestDisalloFIntercept5ouc,;$ent6oolean" 6 Se llama so#re

    un @iew padre para indicar que no de#er*a interceptar eventos t3ctiles

    con onIntercept5ouc,;$ent+otion;$ent"

    http://es.edu4android.com/reference/android/view/View.html#onKeyDown(int,%20android.view.KeyEvent)http://es.edu4android.com/reference/android/view/View.html#onKeyUp(int,%20android.view.KeyEvent)http://es.edu4android.com/reference/android/view/View.html#onTrackballEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/view/View.html#onTouchEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/view/View.html#onFocusChanged(boolean,%20int,%20android.graphics.Rect)http://es.edu4android.com/reference/android/app/Activity.html#dispatchTouchEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/app/Activity.html#dispatchTouchEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/app/Activity.htmlhttp://es.edu4android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/view/ViewGroup.htmlhttp://es.edu4android.com/reference/android/view/ViewParent.html#requestDisallowInterceptTouchEvent(boolean)http://es.edu4android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/view/View.html#onKeyDown(int,%20android.view.KeyEvent)http://es.edu4android.com/reference/android/view/View.html#onKeyUp(int,%20android.view.KeyEvent)http://es.edu4android.com/reference/android/view/View.html#onTrackballEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/view/View.html#onTouchEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/view/View.html#onFocusChanged(boolean,%20int,%20android.graphics.Rect)http://es.edu4android.com/reference/android/app/Activity.html#dispatchTouchEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/app/Activity.htmlhttp://es.edu4android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent)http://es.edu4android.com/reference/android/view/ViewGroup.htmlhttp://es.edu4android.com/reference/android/view/ViewParent.html#requestDisallowInterceptTouchEvent(boolean)http://es.edu4android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent)

  • 8/17/2019 Qué Es Android SDK

    16/20

    4.4.2.Modo Táctil

    uando el usuario est3 navegando por la interfa' de usuario con teclas direccionaleso con un track#all, es necesario darle el focus a los items acciona#les (como los

     #otones) para que el usuario pueda ver qué va a aceptar el input Si el dispositivo

    tiene capacidades t3ctiles & el usuario empie'a interactuando con la interfa'

    toc3ndola, entonces no es necesario destacar los items, ni darle el focus a un @iew

    en particular !ste ser3 el llamado modo t3ctil

    !n un dispositivo t3ctil, una ve' que el usuario toca la pantalla, el dispositivo entra

    en modo t3ctil Desde ese momento, slo los @iews

    con isBocusa6leIn5ouc,+ode" true podr3n reci#ir el focus, como por ejemplo los

    widgets editores de te0to Atros @iews t3ctiles, como los #otones, no reci#ir3n elfocus cuando son tocados, lo que har3n ser3 lan'ar sus listeners on6click cuando son

     pulsados

    !n el momento en el que el usuario pulsa una tecla direccional o hace scroll con un

    track#all, el dispositivo a#andona el modo t3ctil & encuentra un view que agarre el

    focus !n este momento el usuario puede recuperar la interaccin con la interfa' de

    usuario sin tocar la pantalla

    !l estado del modo t3ctil se mantiene durante todo el sistema (todas las ventanas &

    actividades) $ara o#tener el estado en curso, se puede llamar almétodo isIn5ouc,+ode"  para ver si el dispositivo est3 en modo t3ctil o no

    4.4.3.Manejar el focus!l framework manejar3 el movimiento rutinario del focus en respuesta al input del

    usuario !sto inclu&e cam#iar el focus cuando se eliminan u ocultan los @iews o

    cuando se encuentra disponi#le un nuevo @iew 1os @iew indican si pueden reci#ir 

    el focus con el método isBocusa6le". $ara cam#iar que el @iew pueda reci#ir o no

    el focus ha& que llamar al método setBocusa6le" uando se est3 en modo t3ctil, se

     puede sa#er si un @iew permite el focus mediante el

    método isBocusa6leIn5ouc,+ode" Se puede cam#iar estocon setBocusa6leIn5ouc,+ode"

    !l movimiento del focus est3 #asado en un algor*tmo que encuentra el vecino m3s

    cercano en una direccin dada !n algunas ocasiones, el algor*tmo por defecto puede

    que no coincida con el esperado por el desarrollador !n estas situaciones, se pueden

    so#reescri#ir determinados atri#utos en el archivo

    la&out2 ne@tBocusDoFn, ne@tBocuseft, ne@tBocusig,t, & ne@tBocusCp Ca&

    que a.adir uno de estos atri#utos al @iew a partir  del cual parte el focus & definir el

    valor del atri#uto para que sea el id del @iew al que ha& que entregar el focus $or 

    ejemplo2

    http://es.edu4android.com/reference/android/view/View.html#isFocusableInTouchMode()http://es.edu4android.com/reference/android/view/View.html#isFocusableInTouchMode()http://es.edu4android.com/reference/android/view/View.html#isInTouchMode()http://es.edu4android.com/reference/android/view/View.html#isInTouchMode()http://es.edu4android.com/reference/android/view/View.html#isFocusable()http://es.edu4android.com/reference/android/view/View.html#isFocusable()http://es.edu4android.com/reference/android/view/View.html#setFocusable(boolean)http://es.edu4android.com/reference/android/view/View.html#setFocusable(boolean)http://es.edu4android.com/reference/android/view/View.html#isFocusableInTouchMode()http://es.edu4android.com/reference/android/view/View.html#setFocusableInTouchMode(boolean)http://es.edu4android.com/reference/android/view/View.html#setFocusableInTouchMode(boolean)http://es.edu4android.com/reference/android/view/View.html#isFocusableInTouchMode()http://es.edu4android.com/reference/android/view/View.html#isInTouchMode()http://es.edu4android.com/reference/android/view/View.html#isFocusable()http://es.edu4android.com/reference/android/view/View.html#setFocusable(boolean)http://es.edu4android.com/reference/android/view/View.html#isFocusableInTouchMode()http://es.edu4android.com/reference/android/view/View.html#setFocusableInTouchMode(boolean)

  • 8/17/2019 Qué Es Android SDK

    17/20

    !n este la&out vertical, si navegamos hacia arri#a a partir del primer #otn no

    iriamos a ning

  • 8/17/2019 Qué Es Android SDK

    18/20

    Dentro del fichero 0ml asociado a la actividad, se definen los elementos tales como

    u#icacin de los elementos en la pantalla (la&outs), #otones, te0tos, check#o0, etc

    1as actividades tienen un ciclo de vida, es decir, pasan por diferentes estados desde

    que se inician hasta que se destru&en Sus J posi#les estados son2

    Acti$o2 ocurre cuando la actividad est3 en ejecucin, es decir, es la tarea

     principal

    !ausado2 la actividad se encuentra semi6suspendida, es decir, aun se est3

    ejecutando & es visi#le, pero no es la tarea principal Se de#e guardar la

    informacin en este estado para prevenir una posi#le pérdida de datos en

    caso de que el sistema decida prescindir de ella para li#erar memoria

    !arado2 la actividad est3 detenida, no es visi#le al usuario & el sistema

     puede li#erar memoria !n caso de necesitarla de nuevo, ser3 reiniciada

    desde el principio

    Una ve' definido el ciclo de vida, ha& que tener en cuenta qué métodos son

    importantes en cada uno de ellos "qu* est3n los métodos m3s importantes de una

    actividad2

    /n%reate (+undle saved%nstanceState)2 es el método que crea la actividad

    Beci#e un par3metro de tipo +undle, que contiene el estado anterior de la

    actividad, para preservar la informacin que hu#iera, en caso de que hu#iera

    sido suspendida, aunque tam#ién puede iniciarse con un null si la

    informacin anterior no es necesaria o no e0iste

    /nestart" reinicia una actividad tras ha#er sido parada (si contin

  • 8/17/2019 Qué Es Android SDK

    19/20

    cuando vuelva a estar activa en el método onSave%nstanceState() Si la

    actividad vuelve a primer plano, el siguiente método ser3 onBesume() !n

    caso contrario, ser3 onStop()

    /nStop" la actividad pasa a un segundo plano por un largo per*odo omo

    &a se ha dicho, el sistema puede li#erar el espacio que ocupa, en caso de

    necesidad, o si la actividad lleva parada mucho tiempo

    /nDestro7"  es el método final de la vida de una actividad Se llama

    cuando ésta &a no es necesaria, o cuando se ha llamado al método finish()

     "dem3s de estos métodos, ca#e destacar dos m3s, que son de vital importancia2

    /nSa$edInstanceState()2 guarda el estado de una actividad !s mu&

  • 8/17/2019 Qué Es Android SDK

    20/20

    haciendo a nuestras aplicaciones escala#les !n esta parte del modelo tam#ién

     juega la decisin de qué modelo para almacenar informacin se utili'ara O+ase

    de datosP OQe# servicesP !l modelo que se elija depende o#viamente de las

    necesidades de informacin de la aplicacin

    -. %/#%CSI/#;S

    1as actividades (activities) representan el componente principal de la interfa'

    gr3fica de una aplicacin "ndroid

    Una aplicacin en "ndroid va a estar formada por un conjunto de elementos

     #3sicos de interaccin con el usuario, conocidos como actividades "dem3s de

    varias actividades una aplicacin tam#ién puede contener servicios

    !l "ndroid studio nos #rinda un marco de tra#ajo en donde podemos ejecutar el

    cdigo & visuali'ar tam#ien el resultado de este

      Layout es un contenedor de una o m3s vistas & controla su comportamiento &

     posicin adem3s puede contener a otro Layout  & que es un descendiente de la

    clase View

    1os manejadores de eventos son llamados cuando se produce un evento de

    cualquier tipo, como puede ser una pulsacin so#re la pantalla

    1os 1a&outs son medios por los que organi'ar vistas en la pantalla del

    dispositivo !0isten diferentes tipos de la&out que nos permitir3n disponer los

    elementos de la pantalla de diversas maneras