SlideShare a Scribd company logo
1 of 21
Download to read offline
HTML5 приложения за Android
Урок 03
Леон Анави
@leonanavi
leon@anavi.org
С подкрепата на:
@leonanavi
Съдържание
 Създаване на Android приложения с Cordova
 Обработка на Cordova събития в JavaScript
 Пускане на приложение на устройство и емулатор
 Отстраняване на грешки
 HTML5 canvas
 Чертане върху HTML5 canvas
@leonanavi
Създаване на Cordova
приложение за Android
 Създаване на приложение, например Hello World:
cordova create hello com.example.hello HelloWorld
 Добавяне на Android като платформа:
cd hello
cordova platform add android
 Пускане на приложението на Android устройство или
eмулатор:
cordova run android
@leonanavi
Създаване на Cordova
приложение
cordova create <PATH> [ID [NAME [CONFIG]]] [options] [PLATFORM...]
Create a Cordova project
PATH ......................... Where to create the project
ID ........................... reverse-domain-style package name - used in <widget id>
NAME ......................... human readable field
CONFIG ....................... json string whose key/values will be included in
[PATH]/.cordova/config.json
Options:
--copy-from|src=<PATH> ... use custom www assets instead of the stock Cordova hello-world.
--link-to=<PATH> ......... symlink to custom www assets without creating a copy.
За всички останали команди в Cordova:
cordova help
и/или
http://cordova.apache.org/docs/en/4.0.0/guide_cli_index.md.html
@leonanavi
Събития в Cordova
 deviceready
 pause
 resume
 backbutton
 menubutton
 searchbutton
 startcallbutton
 endcallbutton
 volumedownbutton
 volumeupbutton
@leonanavi
HTC Hero
backbutton
menubutton
searchbutton
startcallbutton endcallbutton
Юни 2009г.
Android 1.5 Cupcake
@leonanavi
Пример: deviceready
<!DOCTYPE html>
<html>
<head>
<title>Device Ready Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
// Now safe to use device APIs
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>
@leonanavi
Cordova plugins
 Допълнителен код, който осигурява JavaScript API за
достъп до специфична функция
 По подразбиране приложенията създадени с
Cordova 3.0 или по-нова версия първоначално
нямат никакви plugins
 Съществува регистър за Cordova плъгини:
http://plugins.cordova.io/
 Ако не намерите готов плъгин за вашите нужди
може да създадете нов :)
@leonanavi
Cordova plugins
 Добавяне на плъгин към проект:
cordova plugin add org.apache.cordova.contacts
 Показване на всички плъгини в проект:
cordova plugin ls
 Премахване на плъгин от проект:
cordova plugin remove org.apache.cordova.contacts
@leonanavi
Конзола за дебъгване
 Добавяне на плъгин за console.log*:
cordova plugin add org.apache.cordova.console
 Употреба в кода:
console.log("Hello World!");
 Показване чрез системата на Android за логване:
cordova run android
adb logcat CordovaLog:D *:S
* не е необходимо добавянето на този плъгин за Android приложения
@leonanavi
Дистанционно дебъгване
 Възможност за дистанционен достъп за дебъгване
и слагане на точки на прекъсвания за устройства с
Android 4.4 през Google Chrome
@leonanavi
ПОЧИВКА
@leonanavi
HTML5 Canvas
 Елемент, добавен в HTML5 стандарта, върху който
може да се рисуват 2D и 3D обекти
<canvas id="draw" width="200" height="100"></canvas>
 Може да се изобразяват геометрични фигури, както
и да се зарежда изображения (снимки, картинки)
в canvas
 Чрез WebGL може да се чертаят 3D изображения
 Възможно е да се създават анимации в HTML5 canvas
@leonanavi
Черта в canvas
<!DOCTYPE html>
<html>
<head>
<title>Line</title>
<meta charset="utf-8">
</head>
<body>
<canvas id="draw" width="200" height="100"></canvas>
<script>
var c = document.getElementById("draw");
var ctx = c.getContext("2d");
ctx.moveTo(0,50);
ctx.lineTo(200,100);
ctx.strokeStyle = '#ff0000';
ctx.stroke();
</script>
</body>
</html>
Резултат:
@leonanavi
Правоъгълник в canvas
<!DOCTYPE html>
<html>
<head>
<title>Line</title>
<meta charset="utf-8">
</head>
<body>
<canvas id="draw" width="200" height="100"></canvas>
<script>
var c = document.getElementById("draw");
var ctx = c.getContext("2d");
ctx.fillStyle = "#003399";
ctx.fillRect(10,10,100,50);
ctx.rect(10,10,100,50);
ctx.strokeStyle = '#ff0000';
ctx.stroke();
</script>
</body>
</html>
Документация:
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillRect
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.rect
Резултат:
@leonanavi
Кръгче в canvas
<!DOCTYPE html>
<html>
<head>
<title>Line</title>
<meta charset="utf-8">
</head>
<body>
<canvas id="draw" width="200" height="100"></canvas>
<script>
var c = document.getElementById("draw");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.fillStyle = "#003399";
ctx.fill();
ctx.strokeStyle = '#ff0000';
ctx.stroke();
</script>
</body>
</html>
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.arc
Резултат:
@leonanavi
Текст в canvas
<!DOCTYPE html>
<html>
<head>
<title>Line</title>
<meta charset="utf-8">
</head>
<body>
<canvas id="draw" width="200" height="100"></canvas>
<script>
var c = document.getElementById("draw");
var ctx = c.getContext("2d");
ctx.font = "36px Arial";
ctx.fillStyle = "#003399";
ctx.fillText("Hello",10,50);
</script>
</body>
</html>
Документация:
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillText
https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Drawing_text
Резултат:
@leonanavi
Полезни връзки
 MDN Canvas tutorial:
https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial
 W3schools: HTML5 Canvas:
http://www.w3schools.com/html/html5_canvas.asp
 W3schools: HTML5 Canvas Tutorial
http://www.w3schools.com/canvas/default.asp
 W3C HTML5:
http://www.w3.org/TR/html5/scripting-1.html#the-canvas-element
 WebGL
https://www.khronos.org/webgl/wiki/Main_Page
@leonanavi
Демо
 Android приложение с 2D анимация в HTML5 canvas
 Малко геометрия
@leonanavi
Упражнения
 Създайте Hello World с Cordova и го пуснете на
Android устройство. Направете така, че приложението
да се затваря след две последователни натисктания
на backbutton.
 Напишете HTML5 приложение за Android, което
рисува човече в canvas. Създайте проста анимация,
чрез която човечето се движи от ляво на дясно.
@leonanavi
KEEP CALM
AND
SUPPORT
FOSS

More Related Content

Similar to HTML5 приложения за Android, урок 3

Прави пари с WordPress: преглед на многото начини по които може да се изкара...
Прави пари с WordPress: преглед на многото начини по които може да се изкара...Прави пари с WordPress: преглед на многото начини по които може да се изкара...
Прави пари с WordPress: преглед на многото начини по които може да се изкара...Kaloyan Tsvetkov
 
Huseyin Ozbilen 41б_ 356291
Huseyin Ozbilen  41б_ 356291Huseyin Ozbilen  41б_ 356291
Huseyin Ozbilen 41б_ 356291yoska
 
Демо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин НаковДемо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин НаковSvetlin Nakov
 
Presentacia stoyan mechev_android
Presentacia stoyan mechev_androidPresentacia stoyan mechev_android
Presentacia stoyan mechev_androidStoyan Mechev
 
Adobe air
Adobe airAdobe air
Adobe airyusmen
 
Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLeon Anavi
 
JavaScript навсякъде
JavaScript навсякъдеJavaScript навсякъде
JavaScript навсякъдеStoyan Stefanov
 
Въведение в Sailfish OS
Въведение в Sailfish OSВъведение в Sailfish OS
Въведение в Sailfish OSLeon Anavi
 
Adobe air
Adobe airAdobe air
Adobe airyusmen
 

Similar to HTML5 приложения за Android, урок 3 (12)

Прави пари с WordPress: преглед на многото начини по които може да се изкара...
Прави пари с WordPress: преглед на многото начини по които може да се изкара...Прави пари с WordPress: преглед на многото начини по които може да се изкара...
Прави пари с WordPress: преглед на многото начини по които може да се изкара...
 
br4
br4br4
br4
 
Huseyin Ozbilen 41б_ 356291
Huseyin Ozbilen  41б_ 356291Huseyin Ozbilen  41б_ 356291
Huseyin Ozbilen 41б_ 356291
 
Демо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин НаковДемо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин Наков
 
Presentacia stoyan mechev_android
Presentacia stoyan mechev_androidPresentacia stoyan mechev_android
Presentacia stoyan mechev_android
 
Adobe air
Adobe airAdobe air
Adobe air
 
Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и Docker
 
JavaScript навсякъде
JavaScript навсякъдеJavaScript навсякъде
JavaScript навсякъде
 
Въведение в Sailfish OS
Въведение в Sailfish OSВъведение в Sailfish OS
Въведение в Sailfish OS
 
Adobe air
Adobe airAdobe air
Adobe air
 
Real time web - week2
Real time web - week2Real time web - week2
Real time web - week2
 
Android
AndroidAndroid
Android
 

More from Leon Anavi

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Leon Anavi
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Leon Anavi
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedLeon Anavi
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Leon Anavi
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesLeon Anavi
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware MakersLeon Anavi
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareLeon Anavi
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureLeon Anavi
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive KioskLeon Anavi
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Leon Anavi
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiLeon Anavi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Leon Anavi
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsLeon Anavi
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiLeon Anavi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareLeon Anavi
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiLeon Anavi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxLeon Anavi
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux DevicesLeon Anavi
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT BrokersLeon Anavi
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiLeon Anavi
 

More from Leon Anavi (20)

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry Pi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry Pi
 

HTML5 приложения за Android, урок 3

  • 1. HTML5 приложения за Android Урок 03 Леон Анави @leonanavi leon@anavi.org С подкрепата на:
  • 2. @leonanavi Съдържание  Създаване на Android приложения с Cordova  Обработка на Cordova събития в JavaScript  Пускане на приложение на устройство и емулатор  Отстраняване на грешки  HTML5 canvas  Чертане върху HTML5 canvas
  • 3. @leonanavi Създаване на Cordova приложение за Android  Създаване на приложение, например Hello World: cordova create hello com.example.hello HelloWorld  Добавяне на Android като платформа: cd hello cordova platform add android  Пускане на приложението на Android устройство или eмулатор: cordova run android
  • 4. @leonanavi Създаване на Cordova приложение cordova create <PATH> [ID [NAME [CONFIG]]] [options] [PLATFORM...] Create a Cordova project PATH ......................... Where to create the project ID ........................... reverse-domain-style package name - used in <widget id> NAME ......................... human readable field CONFIG ....................... json string whose key/values will be included in [PATH]/.cordova/config.json Options: --copy-from|src=<PATH> ... use custom www assets instead of the stock Cordova hello-world. --link-to=<PATH> ......... symlink to custom www assets without creating a copy. За всички останали команди в Cordova: cordova help и/или http://cordova.apache.org/docs/en/4.0.0/guide_cli_index.md.html
  • 5. @leonanavi Събития в Cordova  deviceready  pause  resume  backbutton  menubutton  searchbutton  startcallbutton  endcallbutton  volumedownbutton  volumeupbutton
  • 7. @leonanavi Пример: deviceready <!DOCTYPE html> <html> <head> <title>Device Ready Example</title> <script type="text/javascript" charset="utf-8" src="cordova.js"></script> <script type="text/javascript" charset="utf-8"> function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady() { // Now safe to use device APIs } </script> </head> <body onload="onLoad()"> </body> </html>
  • 8. @leonanavi Cordova plugins  Допълнителен код, който осигурява JavaScript API за достъп до специфична функция  По подразбиране приложенията създадени с Cordova 3.0 или по-нова версия първоначално нямат никакви plugins  Съществува регистър за Cordova плъгини: http://plugins.cordova.io/  Ако не намерите готов плъгин за вашите нужди може да създадете нов :)
  • 9. @leonanavi Cordova plugins  Добавяне на плъгин към проект: cordova plugin add org.apache.cordova.contacts  Показване на всички плъгини в проект: cordova plugin ls  Премахване на плъгин от проект: cordova plugin remove org.apache.cordova.contacts
  • 10. @leonanavi Конзола за дебъгване  Добавяне на плъгин за console.log*: cordova plugin add org.apache.cordova.console  Употреба в кода: console.log("Hello World!");  Показване чрез системата на Android за логване: cordova run android adb logcat CordovaLog:D *:S * не е необходимо добавянето на този плъгин за Android приложения
  • 11. @leonanavi Дистанционно дебъгване  Възможност за дистанционен достъп за дебъгване и слагане на точки на прекъсвания за устройства с Android 4.4 през Google Chrome
  • 13. @leonanavi HTML5 Canvas  Елемент, добавен в HTML5 стандарта, върху който може да се рисуват 2D и 3D обекти <canvas id="draw" width="200" height="100"></canvas>  Може да се изобразяват геометрични фигури, както и да се зарежда изображения (снимки, картинки) в canvas  Чрез WebGL може да се чертаят 3D изображения  Възможно е да се създават анимации в HTML5 canvas
  • 14. @leonanavi Черта в canvas <!DOCTYPE html> <html> <head> <title>Line</title> <meta charset="utf-8"> </head> <body> <canvas id="draw" width="200" height="100"></canvas> <script> var c = document.getElementById("draw"); var ctx = c.getContext("2d"); ctx.moveTo(0,50); ctx.lineTo(200,100); ctx.strokeStyle = '#ff0000'; ctx.stroke(); </script> </body> </html> Резултат:
  • 15. @leonanavi Правоъгълник в canvas <!DOCTYPE html> <html> <head> <title>Line</title> <meta charset="utf-8"> </head> <body> <canvas id="draw" width="200" height="100"></canvas> <script> var c = document.getElementById("draw"); var ctx = c.getContext("2d"); ctx.fillStyle = "#003399"; ctx.fillRect(10,10,100,50); ctx.rect(10,10,100,50); ctx.strokeStyle = '#ff0000'; ctx.stroke(); </script> </body> </html> Документация: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillRect https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.rect Резултат:
  • 16. @leonanavi Кръгче в canvas <!DOCTYPE html> <html> <head> <title>Line</title> <meta charset="utf-8"> </head> <body> <canvas id="draw" width="200" height="100"></canvas> <script> var c = document.getElementById("draw"); var ctx = c.getContext("2d"); ctx.beginPath(); ctx.arc(95,50,40,0,2*Math.PI); ctx.fillStyle = "#003399"; ctx.fill(); ctx.strokeStyle = '#ff0000'; ctx.stroke(); </script> </body> </html> https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.arc Резултат:
  • 17. @leonanavi Текст в canvas <!DOCTYPE html> <html> <head> <title>Line</title> <meta charset="utf-8"> </head> <body> <canvas id="draw" width="200" height="100"></canvas> <script> var c = document.getElementById("draw"); var ctx = c.getContext("2d"); ctx.font = "36px Arial"; ctx.fillStyle = "#003399"; ctx.fillText("Hello",10,50); </script> </body> </html> Документация: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillText https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Drawing_text Резултат:
  • 18. @leonanavi Полезни връзки  MDN Canvas tutorial: https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial  W3schools: HTML5 Canvas: http://www.w3schools.com/html/html5_canvas.asp  W3schools: HTML5 Canvas Tutorial http://www.w3schools.com/canvas/default.asp  W3C HTML5: http://www.w3.org/TR/html5/scripting-1.html#the-canvas-element  WebGL https://www.khronos.org/webgl/wiki/Main_Page
  • 19. @leonanavi Демо  Android приложение с 2D анимация в HTML5 canvas  Малко геометрия
  • 20. @leonanavi Упражнения  Създайте Hello World с Cordova и го пуснете на Android устройство. Направете така, че приложението да се затваря след две последователни натисктания на backbutton.  Напишете HTML5 приложение за Android, което рисува човече в canvas. Създайте проста анимация, чрез която човечето се движи от ляво на дясно.