En aquest tema, aprendrem com gestionar l'entrada de l'usuari en aplicacions desenvolupades amb Apache Cordova. La interacció amb l'usuari és una part fonamental de qualsevol aplicació mòbil, i és crucial saber com capturar i processar aquesta entrada de manera eficient i segura.
Objectius del tema
- Comprendre els diferents tipus d'entrada de l'usuari.
- Aprendre a capturar i gestionar esdeveniments d'entrada.
- Implementar validacions bàsiques d'entrada.
- Utilitzar plugins de Cordova per millorar la gestió de l'entrada.
Tipus d'entrada de l'usuari
L'entrada de l'usuari pot provenir de diverses fonts, incloent:
- Tacte: Interaccions tàctils com tocs, lliscaments i gestos.
- Teclat: Entrada de text mitjançant el teclat virtual.
- Sensors: Dades de sensors com l'acceleròmetre, giroscopi, etc.
- Voz: Entrada de veu mitjançant reconeixement de veu.
Captura d'esdeveniments d'entrada
Esdeveniments tàctils
Els esdeveniments tàctils són una de les formes més comunes d'entrada en dispositius mòbils. A continuació es mostra com capturar esdeveniments tàctils bàsics:
<!DOCTYPE html> <html> <head> <title>Gestió d'entrada tàctil</title> <script> document.addEventListener('deviceready', function() { var element = document.getElementById('touchArea'); element.addEventListener('touchstart', function(event) { console.log('Toc detectat!'); }); }, false); </script> </head> <body> <div id="touchArea" style="width: 100%; height: 100px; background-color: lightblue;"> Toca aquí </div> </body> </html>
Esdeveniments de teclat
Per capturar l'entrada de teclat, podem utilitzar esdeveniments com input
o keydown
:
<!DOCTYPE html> <html> <head> <title>Gestió d'entrada de teclat</title> <script> document.addEventListener('deviceready', function() { var inputElement = document.getElementById('textInput'); inputElement.addEventListener('input', function(event) { console.log('Text introduït: ' + event.target.value); }); }, false); </script> </head> <body> <input type="text" id="textInput" placeholder="Escriu aquí"> </body> </html>
Validació de l'entrada de l'usuari
La validació de l'entrada és crucial per assegurar que les dades introduïdes per l'usuari siguin correctes i segures. A continuació es mostra un exemple de validació bàsica d'un formulari:
<!DOCTYPE html> <html> <head> <title>Validació d'entrada</title> <script> function validateForm() { var name = document.getElementById('name').value; if (name === '') { alert('El nom no pot estar buit'); return false; } return true; } </script> </head> <body> <form onsubmit="return validateForm()"> <label for="name">Nom:</label> <input type="text" id="name" name="name"> <input type="submit" value="Enviar"> </form> </body> </html>
Utilització de plugins de Cordova
Cordova ofereix diversos plugins que poden ajudar a gestionar l'entrada de l'usuari de manera més eficient. Alguns dels plugins més útils inclouen:
- cordova-plugin-keyboard: Permet gestionar el comportament del teclat virtual.
- cordova-plugin-geolocation: Permet obtenir la ubicació de l'usuari.
- cordova-plugin-camera: Permet capturar imatges i vídeos.
Exemple d'ús del plugin de la càmera
A continuació es mostra com utilitzar el plugin de la càmera per capturar una imatge:
<!DOCTYPE html> <html> <head> <title>Captura d'imatge</title> <script src="cordova.js"></script> <script> document.addEventListener('deviceready', function() { document.getElementById('captureButton').addEventListener('click', function() { navigator.camera.getPicture(onSuccess, onFail, { quality: 50, destinationType: Camera.DestinationType.DATA_URL }); }); function onSuccess(imageData) { var image = document.getElementById('capturedImage'); image.src = "data:image/jpeg;base64," + imageData; } function onFail(message) { alert('Error: ' + message); } }, false); </script> </head> <body> <button id="captureButton">Captura Imatge</button> <img id="capturedImage" style="width: 100%; height: auto;"> </body> </html>
Exercicis pràctics
Exercici 1: Captura d'esdeveniments tàctils
Crea una pàgina web que canviï el color d'un element div
cada vegada que es detecti un toc.
Exercici 2: Validació de formulari
Crea un formulari amb camps per al nom, correu electrònic i número de telèfon. Implementa validacions per assegurar que tots els camps estiguin plens i que el correu electrònic tingui un format vàlid.
Exercici 3: Ús del plugin de la càmera
Utilitza el plugin de la càmera per capturar una imatge i mostrar-la en un element img
a la pàgina.
Solucions
Solució a l'Exercici 1
<!DOCTYPE html> <html> <head> <title>Captura d'esdeveniments tàctils</title> <script> document.addEventListener('deviceready', function() { var element = document.getElementById('colorBox'); element.addEventListener('touchstart', function(event) { element.style.backgroundColor = element.style.backgroundColor === 'lightblue' ? 'lightgreen' : 'lightblue'; }); }, false); </script> </head> <body> <div id="colorBox" style="width: 100%; height: 100px; background-color: lightblue;"> Toca aquí </div> </body> </html>
Solució a l'Exercici 2
<!DOCTYPE html> <html> <head> <title>Validació de formulari</title> <script> function validateForm() { var name = document.getElementById('name').value; var email = document.getElementById('email').value; var phone = document.getElementById('phone').value; var emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (name === '' || email === '' || phone === '') { alert('Tots els camps són obligatoris'); return false; } if (!emailPattern.test(email)) { alert('El correu electrònic no és vàlid'); return false; } return true; } </script> </head> <body> <form onsubmit="return validateForm()"> <label for="name">Nom:</label> <input type="text" id="name" name="name"><br> <label for="email">Correu electrònic:</label> <input type="text" id="email" name="email"><br> <label for="phone">Número de telèfon:</label> <input type="text" id="phone" name="phone"><br> <input type="submit" value="Enviar"> </form> </body> </html>
Solució a l'Exercici 3
<!DOCTYPE html> <html> <head> <title>Captura d'imatge</title> <script src="cordova.js"></script> <script> document.addEventListener('deviceready', function() { document.getElementById('captureButton').addEventListener('click', function() { navigator.camera.getPicture(onSuccess, onFail, { quality: 50, destinationType: Camera.DestinationType.DATA_URL }); }); function onSuccess(imageData) { var image = document.getElementById('capturedImage'); image.src = "data:image/jpeg;base64," + imageData; } function onFail(message) { alert('Error: ' + message); } }, false); </script> </head> <body> <button id="captureButton">Captura Imatge</button> <img id="capturedImage" style="width: 100%; height: auto;"> </body> </html>
Resum
En aquest tema, hem après com gestionar diferents tipus d'entrada de l'usuari en aplicacions Cordova. Hem vist com capturar esdeveniments tàctils i de teclat, com validar l'entrada de l'usuari i com utilitzar plugins de Cordova per millorar la gestió de l'entrada. A més, hem practicat aquests conceptes amb exercicis pràctics. En el proper tema, explorarem com implementar la navegació en aplicacions Cordova.
Curs d'Apache Cordova
Mòdul 1: Introducció a Apache Cordova
- Què és Apache Cordova?
- Configuració del teu entorn de desenvolupament
- Creació del teu primer projecte Cordova
- Comprensió de l'estructura del projecte
Mòdul 2: Conceptes bàsics i APIs
- Plugins de Cordova
- Ús de l'API del dispositiu
- Accés a l'emmagatzematge del dispositiu
- Gestió de la informació de la xarxa
- Interacció amb la càmera
Mòdul 3: Interfície d'usuari i experiència d'usuari
- Construcció d'una interfície d'usuari responsiva
- Ús de Cordova amb frameworks (per exemple, Angular, React)
- Gestió de l'entrada de l'usuari
- Implementació de la navegació
Mòdul 4: Funcions avançades de Cordova
- Desenvolupament de plugins personalitzats
- Ús de codi natiu
- Optimització del rendiment
- Depuració i proves
Mòdul 5: Desplegament i distribució
- Construcció per a diferents plataformes
- Signatura i publicació d'aplicacions
- Directrius i millors pràctiques de l'App Store
- Integració i desplegament continus
Mòdul 6: Estudis de cas i aplicacions del món real
- Estudi de cas: Construcció d'una aplicació de llista de tasques
- Estudi de cas: Construcció d'una aplicació del temps
- Estudi de cas: Construcció d'una aplicació de xarxes socials
- Lliçons apreses i millors pràctiques