Skip to content
Christian Gastrell edited this page Jul 23, 2015 · 5 revisions

Para poder configurar los splash screens necesitamos varios pasos:

  • copiar los archivos
  • configurar correctamente la seccion de splashes en config.xml
  • instalar el plugin org.apache.cordova.splashscreen
  • [tal vez] agregar unos tags preference en config.xml
  • [tal vez] agregar un paso de inicializacion en nuestro index.js

Splash screens

Para los splash hice un set minimo, todos portrait, estas son imagenes mas grandes, asi que solo inserto una aca y el resto les doy las URL. Descarguenlas y guardenlas en www/res/screen/android

port-ldpi 200x320

port-ldpi

port-mdpi 320x480

https://raw.githubusercontent.com/codenautas/interview-recorder/cgastrell/irec/www/res/screen/android/screen-mdpi-portrait.png

port-hdpi 480x800

https://raw.githubusercontent.com/codenautas/interview-recorder/cgastrell/irec/www/res/screen/android/screen-hdpi-portrait.png

port-xhdpi 720x1280

https://raw.githubusercontent.com/codenautas/interview-recorder/cgastrell/irec/www/res/screen/android/screen-xhdpi-portrait.png

config.xml

La seccion de splashes de nuestro config.xml es mas desastrosa que la de iconos:

    <gap:splash gap:platform="android" gap:qualifier="port-ldpi" src="www/res/screen/android/screen-ldpi-portrait.png" />
    <gap:splash gap:platform="android" gap:qualifier="port-mdpi" src="www/res/screen/android/screen-mdpi-portrait.png" />
    <gap:splash gap:platform="android" gap:qualifier="port-hdpi" src="www/res/screen/android/screen-hdpi-portrait.png" />
    <gap:splash gap:platform="android" gap:qualifier="port-xhdpi" src="www/res/screen/android/screen-xhdpi-portrait.png" />
    <gap:splash gap:platform="blackberry" src="www/res/screen/blackberry/screen-225.png" />
    <gap:splash gap:platform="ios" height="480" src="www/res/screen/ios/screen-iphone-portrait.png" width="320" />
    <gap:splash gap:platform="ios" height="960" src="www/res/screen/ios/screen-iphone-portrait-2x.png" width="640" />
    <gap:splash gap:platform="ios" height="1136" src="www/res/screen/ios/screen-iphone-portrait-568h-2x.png" width="640" />
    <gap:splash gap:platform="ios" height="1024" src="www/res/screen/ios/screen-ipad-portrait.png" width="768" />
    <gap:splash gap:platform="ios" height="768" src="www/res/screen/ios/screen-ipad-landscape.png" width="1024" />
    <gap:splash gap:platform="winphone" src="www/res/screen/windows-phone/screen-portrait.jpg" />

De esta seccion no sirve nada, esta todo configurado para PhonegapBuild y no es compatible con el compilador propio que usamos. Borrenla.

En su lugar vamos a definir un tag platform con la propiedad name="android":

<platform name="android">
</platform>

Y dentro vamos a incluir tags splash a cada uno de las imagenes que descargaron:

<platform name="android">
  <splash src="www/res/screen/android/screen-ldpi-portrait.png" density="port-ldpi"/>
  <splash src="www/res/screen/android/screen-mdpi-portrait.png" density="port-mdpi"/>
  <splash src="www/res/screen/android/screen-hdpi-portrait.png" density="port-hdpi"/>
  <splash src="www/res/screen/android/screen-xhdpi-portrait.png" density="port-xhdpi"/>

  <splash src="www/res/screen/android/screen-hdpi-landscape.png" density="land-hdpi"/>
  <splash src="www/res/screen/android/screen-ldpi-landscape.png" density="land-ldpi"/>
  <splash src="www/res/screen/android/screen-mdpi-landscape.png" density="land-mdpi"/>
  <splash src="www/res/screen/android/screen-xhdpi-landscape.png" density="land-xhdpi"/>

</platform>

Si bien nosotros no copiamos nuevas imagenes para landscape, a partir de que usamos el plugin vamos a necesitar indicar donde estan esas imagenes. El proyecto ya las tiene, son las imagenes de Cordova que ven cuando arranca la aplicacion, aca solo estamos siendo explicitos para que no genere errores.

org.apache.cordova.splashscreen

Documentacion

Ahora debemos instalar el plugin, se acuerdan? Esperemos que la internet nos acompañe:

phonegap plugin add org.apache.cordova.splashscreen

config.xml 2

Vamos a verificar que tengamos configurado como queremos el plugin. En la seccion donde estan los tag preference deberiamos tener estas, sino, las agregamos

    <preference name="SplashScreen" value="screen" />
    <preference name="AutoHideSplashScreen" value="false" />
    <preference name="SplashScreenDelay" value="10000" />

index.js

Finalmente vamos a editar el archivo index.js. Segun documentacion, una vez instalado el plugin, tendremos disponible esta variable:

navigator.splashscreen

La cual tiene 2 metodos: show() y hide() con obvios efectos.

Por defecto se muestra el splash, lo que necesitamos hacer es decirle a nuestra aplicacion cuando queremos ocultarlo. Si no lo hacemos, se ocultara segun configuramos la preferencia SplashScreenDelay, que expresa cuantos milisegundos esperar antes de ocultarla. Es verdad que tambien configuramos AutoHideSplashScreen en false, pero a mi no me funciono, se esconde igual (lo cual no me molesto, pero si me molesto que no funcionara como dice que deberia).

Cuando vamos a ocultar el splash? Cuando terminemos de inicializar todo. Nuestro ultimo paso de inicializacion es llamando a fileApi.initialize(), el cual ejecuta un callback. Vamos poner la llamada justo antes de cerrar el callback de fileApi.initialize():

  fileApi.initialize(function(err, apiRef){
    if(err) {
      console.log('file api error');
      console.log(err);
      return;
    }

    guias.initialize();
    entrevistas.initialize();

    recordApi.initialize();

    document.addEventListener('pause', function(){
      recordApi.stop();
      revisionApi.stop();
    });


    navigator && navigator.splashscreen && navigator.splashscreen.hide();
  });

A probar:

phonegap prepare android
phonegap run android

Ref: Splashes

  1. Repaso y conceptos basicos
  2. Ejercicios para repasar
  3. Problematica de desarrollo mobile
  4. Phonegap
  5. Requerimientos e instalacion
  6. Phonegap CLI
  7. [Primeros ejercicios con Phonegap](Ejercicio Phonegap)
  8. Plugins
  9. Hello world
  10. Estructura de un proyecto Phonegap
  11. Plugin Device
  12. Debugging
  13. Incorporando un framework CSS
  14. Plugin Vibration
  15. Sumando partes
  16. Plugin Battery Status
  17. Un poco de jQuery
  18. jQuery Mobile
  19. Navegacion
  20. Plugin Dashboard
  21. Revision de Plugin Dashboard
  22. Paginas extra
  23. ToDo
  24. Persistencia
  25. ToDo Persistente
  26. Plugin Camera
  27. Opciones de camara
  28. App Mi Galeria
  29. Revision de Galeria
  30. Plugin File
  31. Escribir y leer texto
  32. Escribir archivos binarios
  33. Guardando fotos
  34. Debugger: weinre
  35. Inspeccionar con weinre
  36. Phonegap Developer App
  37. Refactor de apps
  38. Plugin Media
  39. Pruebas con audio
  40. Control y monitoreo de audio
  41. Encapsular play/pausa
  42. Hacks
  43. Formato de tiempos
  44. Grabar y reproducir
  45. Proyecto Integrador
  46. Revision de interfaz
  47. Interfaz basica
  48. Entrevista: modelo
  49. Funcionalidad: revision
  50. Seleccion de framework
  51. iRec: navegacion
  52. iRec: fileApi
  53. iRec: guias
  54. iRec: entrevistas
  55. iRec: recordApi
  56. iRec: helpers
  57. iRec: mediaApi
  58. iRec: inicializar paginas
  59. iRec: refactor
  60. iRec: mediaApi refactor
  61. iRec: recordApi refactor
  62. iRec: helpers
  63. iRec: guias.js
  64. iRec: entrevistas.js
  65. iRec: crear guias
  66. iRec: re-inicializando
  67. iRec: re-ordenando
  68. iRec: pendientes
  69. iRec: reporte ux
  70. iRec:revision: volver
  71. iRec:entrevista: volver
  72. iRec:revision: cambios
  73. iRec:revision: stop
  74. iRec:revision: Rew 10"
  75. iRec:revision: tag Go
  76. iRec: limpieza
  77. Firma de apps
  78. Android
  79. Generacion de key
  80. Firma de apk
  81. Alineacion de zip
  82. Firmar con Phonegap
  83. iOS
  84. Detalles finales
  85. Config.xml
  86. Iconos
  87. Splash
Clone this wiki locally