Upload
jairo-calle
View
220
Download
0
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