You are on page 1of 21

Programación   Android  

Rafael  Morón  Abad   rafaelmoron@gmail.com  

 por  lo  que   actualmente  sólo  podremos  usarlo  en  tabletas.Alterna7vas  para  animaciones   Android  soporta  animaciones  de  dos  formas   dis7ntas:   •  ViewAnima7on   –  Define  transformaciones  o  secuencias  de   imágenes  sobre  cualquier  Vista   •  PropertyAnima7on   –  Es  el  mecanismo  más  potente  ya  que  permite   cambiar  cualquier  propiedad  de  cualquier  objeto  a   lo  largo  del  7empo   –  Sólo  está  disponible  desde  Android  3.   .0.

ViewAnima7on   A  su  vez.  tamaño.   •  TweenAnima)on   Define  transformaciones  sobre  cualquier  Vista.  de  forma   que  cada  una  estará  en  pantalla  el  7empo  que  le   indiquemos.   Podemos  cambiar  su  posición.   Se  asemeja  a  un  GIF  animado.   .  rotación  y   nivel  de  transparencia   •  FrameAnima)on   Se  trata  de  una  secuencia  de  imágenes.  ViewAnima7on  ofrece  dos  es7los  de   animaciones.

    .TweenAnima7on   Se  codifica  mediante  un  fichero  XML  que  con7ene   uno  de  estos  elementos:     <alpha/>     <scale/>     <translate/> <rotate/>   <set/>      Nivel  de  transparencia    Cambio  de  tamaño    Traslación    Rotación    Grupo  de  las  anteriores     Sólo  puede  haber  un  elemento  raíz.

 Hay  varios   predefinidos.   A:ributos:   android:interpolator   Recurso  interpolador  que  se  u7lizará  para  calcular  los   estados  intermedios  que  se  mostrarán.  <scale>.  "true"  si  se  quiere  que  todos  los  nodos  hijo   tengan  el  mismo  interpolador.   android:shareInterpolator   Booleano.  <translate>.   <rotate>)  o  otros  <set/>.TweenAnima7on  -­‐  <set/>   <set/>   Con7ene  elementos  <alpha/>.  Representa  un  Anima7onSet.   .

 Opacidad  final  (0.0  es   opaco)   android:toAlpha   Float.0  es   opaco)   .  Opacidad  inicial  (0.  1.  Representa   una  AlphaAnima7on.0  es  transparente.   A:ributos:   android:fromAlpha   Float.  1.TweenAnima7on  -­‐  <alpha/>   <alpha/>   Cambia  el  valor  de  transparencia.0  es  transparente.

 Escala  final  en  X   Float.  Y  del  punto  central     .   A:ributos:   android:fromXScale   android:toYScale   Float.  X  del  punto  central   android:fromYScale   android:pivotY   Float.  Escala  inicial  en  X   Float.  Escala  final  en  Y   android:toXScale   android:pivotX   Float.TweenAnima7on  -­‐  <scale/>   <scale/>   Cambia  el  tamaño.  Escala  inicial  en  Y   Float.

 Var.   posición  final  en  X   posición  final  en  Y   .   posición  inicial  en  X.  Var.   Float  o  porcentaje.  Var.  Pueden  ir  en  píxeles  (“5”)  o  en  %.  Var.   posición  inicial  en  Y   android:toXDelta   android:toYDelta   Float  o  porcentaje.  bien  respecto   de  su  ancho  (5%)  o  del  del  padre  (5%p).   Float  o  porcentaje.  Representa  a  TranslateAnima7on.TweenAnima7on  -­‐  <translate/>   <translate/>   Efectúa  una  traslación.   A:ributos:   Se  indican  como  una  diferencia  respecto  de  su  posición   normal.   android:fromXDelta   android:fromYDelta   Float  o  porcentaje.

 X  del   Float.   android:pivotX   android:fromDegrees   Float  o  porcentaje.  Representa  un  RotateAnima7on   A:ributos  pivot:   Se  indican  como  una  diferencia  respecto  de  su  posición   normal.   grados.   grados.  Y  del   Float.   .  Pueden  ir  en  píxeles  (“5”)  o  en  %.   android:pivotY   android:toDegrees    Float  o  porcentaje.  Posición  final  en    centro  de  giro.TweenAnima7on  -­‐  <rotate/>   <rotate/>   Efectúa  una  rotación.  bien  respecto   de  su  ancho  (5%)  o  del  del  padre  (5%p).  Posición  inicial  en   centro  de  giro.

android.0"!             android:fromYScale="0.0"!             android:pivotX="50%"!             android:pivotY="50%"!             android:duration="400" />!         <rotate!             android:fromDegrees="0"!             android:toDegrees="-45"!             android:toYScale="0.6"!         android:pivotX="50%"!         android:pivotY="50%"!         android:fillAfter="false"!         android:duration="700" />!     <set!         ! ! ! android:interpolator="@android:anim/ accelerate_interpolator"!         android:startOffset="700">!         <scale!             android:fromXScale="1.0"!         android:toXScale="1.android.html   .com/apk/res/android"!     android:shareInterpolator="false">!     <scale!         android:interpolator="@android:anim/ accelerate_decelerate_interpolator"!         android:fromXScale="1.4"!             android:toXScale="0.0"!             android:pivotX="50%"!             android:pivotY="50%"!             android:duration="400" />!     </set>! </set>! Fuente:  hhp://developer.4"!         android:fromYScale="1.0"!         android:toYScale="0.com/guide/topics/resources/anima7on-­‐resource.Ejemplo  TweenAnima7on   <set xmlns:android="http:// schemas.6"!             android:toYScale="0.

! Animation hyperspaceJump = AnimationUtils.html   .anim.android. loadAnimation(this.com/guide/topics/resources/anima7on-­‐resource.id.! image.! Fuente:  hhp://developer.startAnimation(hyperspaceJump).Ejemplo  TweenAnima7on  (II)   Código  para  u7lizarla:     ImageView image = (ImageView) findViewById(R. R.image).hyperspace_jump).

    <anima)on-­‐list/>  Elemento  raíz   <item/>          Cada  una  de  las                  imágenes  o  marcos     Sólo  puede  haber  un  elemento  raíz.FrameAnima7on   Se  trata  de  una  secuencia  de  imágenes  en  un   orden.     .  como  un  GIF  animado.

 “false”   si  se  mostrará  en  bucle   .   A:ributos:   android:oneshot   Booleano.  “true”  si  se  mostrará  una  vez.FrameAnima7on  -­‐  <anima7on-­‐list/>   <anima)on-­‐list/>   Elemento  raíz  de  una  FrameAnima7on.

 de  ese   marco.FrameAnima7on  -­‐  <item/>   <item/>   Cada  marco  o  imagen  de  la  animación.     .  La  duración.   A:ributos:   android:drawable   Objeto  Drawable.   android:dura)on   Integer.  en  milisegundos.  El  recurso  a  u7lizar.

  Heredan  de  la  clase  Interpolator.Interpoladores   Los  interpoladores  definen  la  forma  en  que  se   calcula  cada  secuencia  intermedia  en  una   animación.   Se  pueden  definir  interpoladores  a  medida.     .   Se  asocian  a  una  animación  a  través  del   elemento  android:interpolator.  pero   Android  7ene  muchos  predefinidos.

Interpoladores  (II)   Clase  del  Interpolador   AccelerateDecelerateInterpolator   AccelerateInterpolator   An7cipateInterpolator   An7cipateOvershootInterpolator   BounceInterpolator   CycleInterpolator   DecelerateInterpolator   LinearInterpolator   OvershootInterpolator   ID  de  recurso   @android:anim/accelerate_decelerate_interpolator   @android:anim/accelerate_interpolator   @android:anim/an7cipate_interpolator   @android:anim/an7cipate_overshoot_interpolator   @android:anim/bounce_interpolator   @android:anim/cycle_interpolator   @android:anim/decelerate_interpolator   @android:anim/linear_interpolator   @android:anim/overshoot_interpolator   .

com/apk/res/ android"!     android:oneshot="false">!     <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />!     <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />!     <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />! </animation-list>! Fuente:  hhp://developer.com/guide/topics/resources/anima7on-­‐resource.android.html   .xml! ! <?xml version="1.0" encoding="utf-8"?>! <animation-list xmlns:android="http://schemas.Ejemplo  FrameAnima7on   res/anim/rocket.android.

! rocketAnimation.rocket_image).! rocketAnimation = (AnimationDrawable) !rocketImage.getBackground().com/guide/topics/resources/anima7on-­‐resource.start().! Fuente:  hhp://developer.drawable.! !setBackgroundResource(R.Ejemplo  FrameAnima7on  (II)   Código  para  u7lizarla:   ! ImageView rocketImage = ! !(ImageView) findViewById(R.android.html   .id.rocket_thrust).! rocketImage.

Ejemplo  Prác7co:   TweenAnima7on   .

2   que   gire   un   texto  al  pulsar  la  pantalla.   .TweenAnima7on   Realizar   una   aplicación   para   Android   2.