ʹÓà HTML ºÍ JavaScript ´úÂ뿪·¢ Android Ó¦ÓóÌÐò
ÒÆ¶¯Ó¦ÓóÌÐò¿ª·¢ÕýÔÚ·ÉËÙ·¢Õ¹£»Ò»²¿·ÖÔÒòÊdzöÏÖÁË¿ÉÒÔ¼ò»¯¿ª·¢µÄпò¼Ü£¬ÕâÖÖпò¼ÜҲʹ´«Í³
web ¿ª·¢ÈËÔ±¿ÉÒÔ¸ü¿ìÉÏÊÖ¡£±¾ÎĽ«½éÉÜÈçºÎÀûÓÃÄúÒÑ¾ÕÆÎÕµÄ HTML¡¢CSS ºÍ JavaScript
¼¼ÄܺÍÁ½ÖÖпò¼ÜÀ´¿ª·¢±¾µØÒƶ¯Ó¦ÓóÌÐò£¬ÕâÁ½ÖÖ¿ò¼Ü·Ö±ðÊÇ Jo ºÍ¿ªÔ´µÄ PhoneGap£¬ºóÕßʹÄúÄܹ»ÀûÓÃ×îÁ÷ÐеÄÒÆ¶¯Æ½Ì¨ÉϵÄһЩ±¾µØÌØÐÔ¡£
ÒÆ¶¯ web »òÒÆ¶¯Ó¦ÓóÌÐò£¿
ÒÆ¶¯Ó¦ÓóÌÐò¿ª·¢»ù±¾ÉÏ¿ÉÒÔ·ÖΪÁ½Àࣺweb »ò±¾µØ¡£Òƶ¯ web Ó¦ÓóÌÐò¿ª·¢Ó봫ͳ
web ¿ª·¢²î²»¶à£¬Çø±ðÔÚÓÚǰÕßÕë¶ÔÒÆ¶¯Æ½Ì¨¡£ÄúµÄÓ¦ÓóÌÐò´æ´¢ÔÚ web ·þÎñÆ÷Éϲ¢ÓÉÆäÌṩ·þÎñ£¬È»ºóÓÉÒÆ¶¯
web ä¯ÀÀÆ÷Ïû·Ñ¡£¿ÉÒÔÔ¤Áϵ½£¬ä¯ÀÀÆ÷ÉϿɹ©Ê¹ÓõÄ×ÊÔ´ºÍ¹¦Äܷdz£ÓÐÏÞ¡£½«ÕâÒ»µãÓë±¾µØ¿ª·¢Ïà±È£¬ºóÕßʹÄúÄܹ»ÀûÓÃÒÆ¶¯²Ù×÷ϵͳµÄºËÐÄÌØÐÔ¡£Òò´Ë£¬Òƶ¯
web Ó¦ÓóÌÐò¿ª·¢¹ÄÀøÄúʹÓÃä¯ÀÀÆ÷£¬¶ø±¾µØÒƶ¯Ó¦ÓóÌÐò¿ª·¢¹ÄÀøÄúʹÓÃÒÆ¶¯²Ù×÷ϵͳ¡£
¹¹½¨±¾µØÒƶ¯Ó¦ÓóÌÐòΪ¿ª·¢ÈËÔ±´øÀ´Á˸ü¶àµÄ¿ÉÄÜÐÔ¡£¹ýÈ¥£¬ÄúÐèÒªÕÆÎÕ¶àÖÖÓïÑÔºÍÓ¦ÓóÌÐò±à³Ì½Ó¿Ú£¨API£©£¬ÔÚ¶à¸öƽ̨ÉϹ¹½¨Òƶ¯Ó¦ÓóÌÐò¡£ÏÖÔÚ£¬ÄúÔÙÒ²²»ÐèÒªÕâÑù×öÁË¡£
±¾ÎĽ«½éÉÜ Jo ºÍ PhoneGap µÄ»ù±¾Ó÷¨¡£Jo ÊÇÒ»¸öÇáÁ¿¼¶¿ò¼Ü£¬Ìṩ¹ã·ºµÄ¿çƽ̨֧³Ö£¬²¢ÓëÆäËû¿ò¼ÜʵÏÖÁËÁ¼ºÃµÄ¼¯³É¡£PhoneGap
¶ÔÓÚ¹¹½¨±¾µØÓ¦ÓóÌÐò·Ç³£¹Ø¼ü£¬ÒòΪËüµÄ×÷ÓÃÀàËÆÓÚÒ»¸öÇÅÁº£¬Äܹ»ÀûÓÃÒÆ¶¯Æ½Ì¨µÄËùÓкËÐÄÌØÐÔ£¬Í¬Ê±±£ÁôÃæÏò
HTML¡¢CSS ºÍ JavaScript ´úÂëµÄ¿ª·¢»·¾³¡£
Jo ÊÇʲô£¿
Jo ÊÇÒ»ÖÖпò¼Ü£¬ÓÉ Dave Balmer ´Ó Palm ¿ª·¢¶øÀ´¡£ËüÊÇÒ»ÖÖ¼«ÎªÇáÁ¿¼¶µÄ
HTML5 ÒÆ¶¯ web Ó¦ÓóÌÐò¿ò¼Ü£¬Ìṩ·á¸»µÄƽ̨֧³Ö£¬°üÀ¨ HP webOS¡¢Apple iOS¡¢Android¡¢Symbian£¬ÉõÖÁÊÇ
Mac OS?X Dashboard С²¿¼þ¡£¾¡¹Ü Jo ĿǰÈÔÈ»ÔÚ»ý¼«µÄ¿ª·¢µ±ÖУ¬µ«ÊÇËüÊ®·ÖÊʺϽøÐÐÒÆ¶¯
web Ó¦ÓóÌÐò¿ª·¢¡£ËüµÄ´óСºÍÌØÐÔ¼¯·Ç³£ÓѺã¬Ê¹ÄúÄܹ»½«×¢ÒâÁ¦·ÅÔÚºËÐĸÅÄîÉÏ¡£
Jo ÓÐÄÄЩ¹¦ÄÜ£¿
ÏÂÃæµÄÀý×Ó½«¹¹½¨Ò»¸ö¼òµ¥µÄ»ùÓÚ¿¨µÄ²¼¾Ö£¬Õ¹Ê¾ Jo µÄÒ»Ð©ÖØÒªÌØÐÔ£¬°ïÖúÄú¿ìËÙ¿ªÊ¼¿ª·¢Ó¦ÓóÌÐò¡£
¿ªÊ¼
Ê×ÏÈ£¬È·±£ÓµÓÐÒ»¸öºÏÊʵÄÖ§³Ö HTML5 µÄä¯ÀÀÆ÷£¬½«Æä×÷Ϊ¿ª·¢»·¾³¡£Safari
ºÍ Chrome ÊÇÁ½¸ö×îÊÊºÏ Jo ¿ª·¢µÄä¯ÀÀÆ÷¡£Ê¹ÓÃÕâЩä¯ÀÀÆ÷ÌṩµÄ¿ØÖÆÌ¨µ÷ÊԽű¾£¬ÉèÖöϵ㲢ת´¢Êý¾ÝÒÔ¹©¼ì²é¡£Æä´Î£¬´Ó
GitHub£¨²Î¼û ²Î¿¼×ÊÁÏ£©ÏÂÔØ Jo Ô´´úÂë²¢ÌáÈ¡µ½ÄúµÄ±¾µØ web ·þÎñÆ÷µÄ¸ùĿ¼¡£½«ÌáÈ¡ºóµÄÄ¿Â¼ÖØÃüÃûΪ¸ü¾ßÌåµÄÃû×Ö£¬ÀýÈç
Jo¡£ÏÖÔÚ£¬ä¯ÀÀ Jo µÄʾÀýÒ³Ãæ http://localhost/jo/samples/test.html£¬½«¿´µ½ÀàËÆ
ͼ 1 ËùʾµÄÆÁÄ»¡£

ͼ 1. Jo Kitchen Sink
Demo
ÏÖÔÚ£¬ÄúÒѾÏÂÔØ²¢½âѹËõÁË Jo£¬ÏÂÒ»²½Êǹ¹½¨×Ô¼ºµÄ Jo Ó¦ÓóÌÐò¡£Ê×ÏÈÔÚÄúµÄ
web ¸ùĿ¼Öд´½¨Á½¸öÎļþ£ºindex.html ºÍ application.js¡£index.html
Îļþ°üº¬ Çåµ¥ 1 ËùʾµÄ´úÂë¡£
Çåµ¥ 1. ÑùÀýÓ¦ÓóÌÐòµÄË÷ÒýÒ³
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>My First Jo App</title> <!-- jo styles --> <link rel="stylesheet" type="text/css" href="jo/css/jo.css" /> </head> <body> <!-- jo framework script --> <script src="jo/js/jo.js"></script>
<!-- our application script -->
<script src="App.js"></script>
<script>
// initializes jo
jo.load();
// our app initialization code
App.init();
</script>
</body>
</html> |
Çåµ¥ 1 ÏÔʾÁËÒ»¸öË÷ÒýÒ³Ãæ£¬¿ÉÓÃÓÚ×éÖ¯ºÍµ÷ÓÃÄúµÄ½Å±¾ºÍÑùʽ¡£Èç¹ûÒÔǰ¿ª·¢¹ý
JavaScript Ó¦ÓóÌÐòµÄ»°£¬ÄÇôӦ¸Ã¶Ô¸ÃÒ³ÃæºÜÊìϤ¡£ÎĵµÍ·²¿°üº¬Ö§³Ö Jo µÄĬÈÏÑùʽ£»ÎĵµÖ÷ÌåÖаüº¬½Å±¾¡£×¢Ò⣬jo.js
ÎļþÒ²°üº¬ÔÚÆäÖС£¸Ã°æ±¾µÄ¿ò¼ÜÉÐδ½øÐÐËõ¼õ£¬ÊʺϽøÐпª·¢¡£µ±×¼±¸ºÃ²¿Êðµ½Éú²ú»·¾³Ê±£¬½« jo_min.js
Îļþ°üº¬½øÀ´¼´¿É¡£ÎļþµÄĩβÊÇ jo.load() Óï¾ä£¬¸ÃÓï¾äµÄ×÷ÓÃÊdzõʼ»¯ Jo ¿ò¼Ü£¬È»ºó³õʼ»¯
App.init() ±íʾµÄ´úÂë¡£Çåµ¥ 2 ÏÔʾÁ˳õʼ»¯´úÂë¡£
Çåµ¥ 2. ÑùÀýÓ¦ÓóÌÐòµÄ³õʼ»¯´úÂë
// demonstrates the javascript module pattern var App = function() {
// private members
var init = function() {
alert("the app is initialized");
};
// returns an object literal of members to be
made public
return {
init: init
};
}(); |
¹¹½¨ Jo ²¼¾Ö
ÏÖÔÚÄúÒѾ¾ß±¸ÁËÒ»¸öÍâ¿Ç£¬Ö»ÐèÒªÉÔ¼ÓÐÞ¸ÄÀ´Éú³ÉÒ»¸ö»ù±¾µÄ Jo ²¼¾Ö£¬Èç
Çåµ¥ 3 Ëùʾ¡£¸Ã²¼¾ÖÊÇÒ»¸ö¼òµ¥µÄÖ÷-ϸ£¨master-detail£©Ä£Ê½µÄ¿ªÍ·²¿·Ö¡£
Çåµ¥ 3. ʹÓà Jo ¹¹½¨²¼¾Ö
var App = function() { var deviceScreen; var mainContainer; var mainNavBar; var mainMenu; var cardStack; var menuCard; // initialization function var init = function() { // create the main container mainContainer = new joContainer([ mainNavBar = new joNavbar("My First Jo App"), cardStack = new joStackScroller() ]).setStyle({position: "absolute", top: "0", left: "0", bottom: "0", right: "0"}); // create the device screen deviceScreen = new joScreen(mainContainer); // hook up the nav bar with the card stack mainNavBar.setStack(cardStack); // create a menu card menuCard = new joCard([ mainMenu = new joMenu([ { title: "Go to form", id: "form-card" } ]) ]); // add the menu card to the card stack cardStack.push(menuCard); }; // public members return { init: init }; }(); |
o Ö±µ½Õâʱºò²ÅÕæÕý·¢»ÓÍþÁ¦¡£Ê×ÏÈ£¬¶¨ÒåÈô¸É±äÁ¿À´±íʾӦÓóÌÐòÖеÄһЩ¹Ø¼ü×ÊÔ´£¬±ÈÈçÉ豸ÆÁÄ»¡¢¿¨²¼¾Ö¹ÜÀíºÍµ¼º½¡£Ö÷Òª²¼¾Öͨ¹ý´´½¨
joContainer ¹ÜÀí£¬ËüÓÐÒ»¸öµ¼º½À¸£¨±íʾΪһ¸ö joNavbar ¶ÔÏ󣩺ÍÒ»¸ö¿¨¹ÜÀí»úÖÆ£¨±íʾΪһ¸ö
joStackScroller ¶ÔÏ󣩡£¸ÃÈÝÆ÷±»Ìí¼Óµ½É豸ÆÁÄ»²¢Ìî³äËùÓпÉÓõĿռ䡣mainNavBar.setStack(cardStack)
Óï¾äÓÃÓÚ½«¿¨²Û°ó¶¨µ½µ¼º½²¿¼þ£¬´Ó¶ø×Ô¶¯¹ÜÀí¿¨Ö®¼äµÄµ¼º½¡£×îºó£¬´´½¨Ò»¸ö joCard ʵÀý²¢Ìí¼Óµ½¿¨²Û£¬¸ÃʵÀý°üº¬Ò»¸ö²Ëµ¥
¡ª Ò»¸öƯÁÁµÄÁÐ±í¡£³É¹¦Ö´ÐÐÕâ¶Î´úÂëºó£¬½«Éú³ÉÒ»¸öÀàËÆ ͼ 2 µÄÆÁÄ»¡£

ͼ 2. ³ÊÏÖµÄ Jo ²¼¾Ö
¸ß¼¶²¼¾Ö¼¼ÇÉ
¶ÔÁÐ±í²¼¾Ö½øÐÐÅäÖú󣬼ÌÐø´´½¨Ï¸Ä¿¿¨²¢½«ËüÃÇÁ¬½ÓÆðÀ´£¬Èç Çåµ¥ 4 Ëùʾ¡£
Çåµ¥ 4. ʹÓà joCache µÄ¸ß¼¶²¼¾Ö
var App = function() { var deviceScreen; var mainContainer; var mainNavBar; var mainMenu; var cardStack; var menuCard; // initialization function var init = function() { // ... same code here as listing 3 // register click handler for menu mainMenu.selectEvent.subscribe(function(id) { cardStack.push(joCache.get(id)); }); // initialize the card cache initCardCache(); }; // initializes the cache used to store cards // this helps us only use what we need when we need it var initCardCache = function() { // create the form card joCache.set("form-card", function() { return new joCard([ new joLabel("Name:"), new joInput(), new joLabel("Password:"), new joPasswordInput(), new joLabel("Description:"), new joTextarea(), new joLabel("Options:"), new joOption([ "Option 1", "Option 2", "Option 3" ]), new joLabel("Toggle:"), new joToggle(true), new joLabel("Selection:"), new joSelect([ "Item 1", "Item 2", "Item 3" ]), new joButton("Submit") ]); }); }; // public members return { init: init }; }(); |
Çåµ¥ 4 Öиø³öÁËÁ½¸öÖØÒªµÄ¸ÅÄî¡£µÚÒ»¸öÊÇ´´½¨Ò»¸öÃûΪ initCardCache
µÄк¯Êý£¬¸Ãº¯ÊýÀûÓÃÁË Jo µÄ»º´æÌØÐÔ¡£»º´æÌõÄ¿Ìí¼ÓÁËÒ»¸ö×Ö·û´® ID£¨Î¨Ò»±êʶ·û£©ºÍÒ»¸öº¯Êý£¨ÌõĿֵ£©¡£¸Ãº¯Êý·µ»ØÒ»¸öй¹½¨µÄ
joCard£¬Ê¹Óà Jo ¿ò¼ÜµÄ±íµ¥¿Ø¼þÅäÖá£Í¨¹ýÕâÖÖ·½Ê½Ó¦Óà joCache£¬¿ÉÒÔÔÚÄúµÄÓ¦ÓóÌÐòÖÐÍÆ³Ùϸ½ÚÊÓͼµÄ¶ÔÏó´´½¨£¬´Ó¶øÊµÏÖ¸üºÃµÄÐÔÄÜ¡£µÚ¶þ¸ö¸ÅÄîÊÇʹÓÃÒ»¸öʼþ´¦Àí³ÌÐò½«ÁгöµÄ¿¨Óëϸ½ÚÊÓͼÁ¬½ÓÆðÀ´¡£µ±Ñ¡Öв˵¥ÖеÄij¸öÏîÄ¿ºó£¬½«Ê¹Óò˵¥ÏîµÄ
ID ´Ó»º´æÖмìË÷ÊÓͼ¡£ËäÈ»ÄúÔÚÕâÀïÖ»Äܶ¨ÒåÒ»¸öÊÓͼ£¬µ«ÊÇÕâÖÖģʽ¿ÉÒÔºÜÇáÒ×½øÐÐÀ©Õ¹¡£
µ¥»÷ Go to form ÁбíÏ½«¿´µ½ÀàËÆ ͼ 3 ËùʾµÄÆÁÄ»¡£

ͼ 3. Jo ±íµ¥¿Ø¼þʾÀý
×¢ÒâÆÁÄ»×óÉÏ·½µÄ Back °´Å¥¡£ÕâÊÇͨ¹ý°ó¶¨Ç°ÃæÌáµ½µÄ¿¨²ÛºÍµ¼º½²¿¼þʵÏֵġ£ÏÖÔÚ£¬½«¿Õ±íµ¥Á¬½Óµ½Êý¾ÝÔ´¡£
Jo ÖеÄÊý¾ÝÔ´
Jo ÌṩÁËÐí¶à·½·¨À´¹ÜÀíÐÅÏ¢´æ´¢¿â£¬Èç WebKit SQLite ºÍ
HTML5 Êý¾Ý¿â¡£È»¶ø£¬×î¼òµ¥¡¢×îÓÐÓõÄÊý¾Ý¹ÜÀíÀàÊÇ joRecord£¬¿ÉÒÔʹÓøÃÀà×÷Ϊ±íµ¥µÄ½Ó¿Ú£¬Èç
Çåµ¥ 5 Ëùʾ¡£
Çåµ¥ 5. °ó¶¨±íµ¥Êý¾ÝÓë joRecord
var App = function() { // ...same as listing 4 var formRecord; // initialization function var init = function() { // ... same as listing 4 }; // initializes the cache used to store cards // this helps us only use what we need when we need it var initCardCache = function() { // create the form card joCache.set("form-card", function() { // initialize the persistent form record formRecord = new joRecord({ name: "Nigel Bitters", password: "somepassword", description: "Some long winded description here.\nWith a line break!", option: 1, isActive: true, selection: 2 }); return new joCard([ new joLabel("Name:"), new joInput(formRecord.link("name")), new joLabel("Password:"), new joPasswordInput(formRecord.link("password")), new joLabel("Description:"), new joTextarea(formRecord.link("description")), new joLabel("Options:"), new joOption([ "Option 1", "Option 2", "Option 3" ], formRecord.link("option")), new joLabel("Toggle:"), new joToggle(formRecord.link("isActive")), new joLabel("Selection:"), new joSelect([ "Item 1", "Item 2", "Item 3" ], formRecord.link("selection")), new joButton("Submit").selectEvent.subscribe(function() { // dump out the modified data console.dir(formRecord); }) ]); }); }; // public members return { init: init }; }(); |
ÔÚ initCardCache º¯ÊýÖУ¬´´½¨ÁËÒ»¸ö joRecord ʵÀý£¬ËüµÄ×÷ÓÃÊdzõʼ»¯±íµ¥ÖµºÍ¹ÜÀí¶Ô±íµ¥×÷³öµÄÐ޸ġ£Í¼
4 չʾÁËÖµµÄ³õʼ»¯¹ý³Ì¡£

ͼ 4. ±íµ¥Öеijõʼ»¯Öµ
ÔËÐÐ Çåµ¥ 5 ÖеÄʾÀý£¬ÐÞ¸Ä±íµ¥Êý¾Ý£¬È»ºóµ¥»÷ Submit °´Å¥¡£¼ì²éä¯ÀÀÆ÷µÄ¿ØÖÆÌ¨£¬Ó¦µ±¿ÉÒÔ¿´µ½Ð޸ĺóµÄ±íµ¥¼Ç¼¡£
ÄúÒѾʹÓÃÁË´´½¨ÓÐЧµÄÒÆ¶¯ web Ó¦ÓóÌÐòËùÐèµÄÖ÷ÒªÌØÐÔ¡£ÏÂÒ»²½ÊÇͨ¹ýÌí¼Ó
PhoneGap ¹¹½¨Ò»¸ö±¾µØÒƶ¯Ó¦ÓóÌÐò¡£
PhoneGap ÊÇʲô£¿
PhoneGap ÊÇÒ»¸ö¿ªÔ´¿ò¼Ü£¬ÓÃÓÚʹÓà HTML ºÍ JavaScript
´úÂë¹¹½¨±¾µØÒƶ¯Ó¦ÓóÌÐò¡£Ëü¿ÉÒÔ½«ÄúµÄÓû§½çÃæÓëÄ¿±êÒÆ¶¯Æ½Ì¨µÄ²Ù×÷ϵͳ°ó¶¨ÔÚÒ»Æð¡£PhoneGap Ö§³Ö
iPhone¡¢Android¡¢Blackberry¡¢Symbian ºÍ Palm µÈƽ̨¡£PhoneGap
ÌṩµÄ±¾µØÌØÐÔ ¡ª Èç¼ÓËÙÆ÷·ÃÎÊ¡¢Ïà»úºÍýÌåÖ§³Ö¡¢ÁªÏµÈË¡¢µØÀí¶¨Î»¡¢Îļþ¡¢ÍøÂçºÍ´æ´¢ ¡ª Ҳʮ·ÖÊʺÏÒÆ¶¯Ó¦ÓóÌÐòµÄ¿ª·¢¡£
½ÓÏÂÀ´¹¹½¨Ò»¸öÕë¶Ô Android ƽ̨µÄÁªÏµÈËÓ¦ÓóÌÐòʾÀý¡£Ê×ÏÈ£¬ÅäÖÿª·¢»·¾³¡£
ÔËÐÐ PhoneGap£¬Èç¹ûÒÔǰֻ´Óʹý´¿ web ¿ª·¢£¬ÄÇôÔËÐÐÆðÀ´»áÓÐÒ»µã¸´ÔÓ¡£±í
1 ÁгöÁËÔËÐÐ PhoneGap Ëù±ØÐèµÄÈí¼þÐèÇó¡£
±í 1. PhoneGap Èí¼þÐèÇó

±¾ÎÄûÓк¸ÇÅäÖÿª·¢»·¾³µÄÈ«²¿¹ý³Ì¡£È»¶ø£¬²Î¿¼×ÊÁÏ ÌṩÁËһЩÅäÖù¤¾ß¡£Ê×ÏÈ£¬×ñÑ
Android ¿ª·¢ÈËÔ±ÍøÕ¾Öеݲװ SDK Îĵµ½øÐвÙ×÷£¬Õâ½«Éæ¼°±í 1 ÖÐÁгöµÄǰËĸöÐèÇó¡£½ÓÏÂÀ´£¬ÏÂÔØ²¢°²×°
Apache Ant ºÍ Ruby¡£
´Ëʱ£¬ËùÓÐÖ÷Òª×é¼þÒѾ¾ÍÐ÷¡£ÄúÓµÓÐÒ»¸ö¿ÉÒÔ¼ÓÔØ¡¢¹¹½¨ºÍÔËÐÐ PhoneGap
ÏîÄ¿£¨Eclipse£©µÄ IDE ÒÔ¼°ËùÓÐÖ§³Ö¹¤¾ß¡£×îºó£¬ÐèÒª×öһЩÅäÖù¤×÷¡£
ÔÚ¹¹½¨ÆÚ¼ä£¬ÐèÒªÔÚϵͳÖж¨Òå´óÁ¿»·¾³±äÁ¿£¬Èç ±í 2 Ëùʾ¡£
±í 2. »·¾³±äÁ¿

×îºó£¬ÔÚ Eclipse Öж¨ÒåÒ»¸ö Android Virtual Device
(AVD)¡£AVD ÊÇÒ»×éÅäÖÃÑ¡Ï¿ÉÒÔ¶ÔÓÉ Android Çý¶¯µÄÉ豸½¨Ä££¬¶ÔÓÚÔÚ Android Ä£Äâ³ÌÐòÉÏÔËÐÐ
PhoneGap Ó¦ÓóÌÐò·Ç³£¹Ø¼ü¡£Òª´´½¨ AVD£¬´ò¿ª Eclipse ²¢µ¼º½µ½ Window >
Android SDK and AVD Manager¡£½«¿´µ½ÀàËÆ ͼ 5 ËùʾµÄÆÁÄ»¡£

ͼ 5. Android SDK ºÍ AVD
Manager
Ñ¡Ôñ×ó²à²Ëµ¥ÖÐµÄ Virtual Devices Ïî²¢µ¥»÷ New¡ °´Å¥¡£ÊäÈëÐÅÏ¢£¬Èç
ͼ 6 Ëùʾ£¬È»ºóµ¥»÷ Create AVD¡£¹Ø±Õ Android SDK ºÍ AVD Manager
ºó£¬Äú¾Í¿ÉÒÔ¼ÓÔØ¡¢¹¹½¨ºÍÔËÐÐ PhoneGap ÏîÄ¿ÁË¡£

ͼ 6. ´´½¨Ð嵀 Android Virtual
Device (AVD)
ÔËÐÐ PhoneGap ʾÀýÏîÄ¿
Ϊ PhoneGap ÅäÖÿª·¢»·¾³ÓÐÒ»µã¸´ÔÓ£¬µ«ÊǼÓÔØÏîÄ¿Ôò¼òµ¥Ðí¶à¡£ÒªÔËÐÐÄúµÄµÚÒ»¸ö
PhoneGap Ó¦ÓóÌÐò£¬´Ó GitHub Öн«×îÐ嵀 phonegap-android ÏîÄ¿°üÏÂÔØ²¢ÌáÈ¡µ½ÄúµÄ¼ÆËã»ú£¨²Î¼û
²Î¿¼×ÊÁÏ£©¡£½ÓÏÂÀ´£¬´ò¿ªÃüÁîÌáʾÐв¢½«Ä¿Â¼ÐÞ¸ÄΪ PhoneGap °²×°µÄ¸ùĿ¼¡£ÔËÐÐÃüÁÈç Çåµ¥ 6
Ëùʾ¡£
Çåµ¥ 6. ´´½¨ PhoneGap ÏîÄ¿µÄÃüÁî
./bin/droidgap create example |
¸ÃÃüÁîÔÚʾÀýÎļþ¼ÐÖÐ´Ó web Ô´Îļþ´´½¨ÁËÒ»¸ö Android ÏîÄ¿¡£ÒªÔÚ
Eclipse ÖмÓÔØÏîÄ¿£¬µ¼º½µ½ File > New > Project¡¡£½øÈëµ½ Android
Îļþ¼Ð²¢Ñ¡Ôñ Android Project£¬È»ºóµ¥»÷ Next >¡£ÅäÖÃÏîÄ¿£¬Èç ͼ 7 Ëùʾ£¬È»ºóµ¥»÷
Finish¡£

ͼ 7. ÏîÄ¿ÉèÖÃµÄÆÁÄ»½ØÍ¼
ԴλÖÃΪ PhoneGap °²×°Ä¿Â¼ÖÐµÄ example_android
Îļþ¼Ð¡£Õâ¾ÍÊÇÓà droidgap ÃüÁî´´½¨ÏîÄ¿ÎļþµÄλÖá£ÏÖÔÚÏîÄ¿Òѱ»¼ÓÔØµ½ Eclipse ÏîÄ¿ä¯ÀÀÆ÷ÖУ¬½øÈëµ½
libs Îļþ¼Ð£¬ÓÒ¼üµ¥»÷ phonegap.jar Îļþ²¢Ñ¡Ôñ Build Path > Add
to Build Path£¬Èç ͼ 8 Ëùʾ¡£

ͼ 8. ½« phonegap.jar ¼ÓÈëµ½¹¹½¨Â·¾¶
ÔÚ Eclipse ÖÐÒÔ Android Ó¦ÓóÌÐòµÄ·½Ê½ÔËÐÐÓ¦ÓóÌÐòʱ£¬Ó¦µ±¿´µ½ÀàËÆ
ͼ 9 ËùʾµÄÆÁÄ»¡£

ͼ 9. ÔÚ Android Ä£Äâ³ÌÐòÖÐÔËÐеÄ
PhoneGap ʾÀýÓ¦ÓóÌÐò
½« Jo Ìí¼Óµ½ PhoneGap
ÄúÒ²ÐíÒѾעÒâµ½£¬¾¡¹Ü±ØÐëÍê³ÉÐí¶à²½Öè²ÅÄÜÆô¶¯ºÍÔËÐÐ PhoneGap£¬µ«ÊǸÿò¼ÜµÄÓ÷¨ÓëÈÎºÎÆäËûÏÖ´ú
JavaScript ¿ò¼ÜûÓÐʲô²»Í¬¡£ÏÖÔÚ£¬Äú¿ÉÒÔÕë¶ÔʹÓà Eclipse µÄ Android ´´½¨¡¢¹¹½¨ºÍÔËÐÐ
PhoneGap Ó¦ÓóÌÐò¡£Äú¿ÉÒÔÇáËɵØÌí¼ÓһЩ Jo À´¹ÜÀíÄúµÄÓû§½çÃæ¡£ÊÂʵÉÏ£¬Jo wiki Õ¾µãÌṩÁËÒ»¸ö¼òµ¥µÄË÷ÒýÎļþ£¬ÆäÖаüº¬ÍƼöµÄÅäÖã¬Èç
Çåµ¥ 7 Ëùʾ¡£
Çåµ¥ 7. ʹÓà PhoneGap µÄʾÀýË÷ÒýÒ³Ãæ
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8">
<title>My App</title>
<!-- stylesheets -->
<link rel="stylesheet" href="css/aluminum.css"
type="text/css">
<link rel="stylesheet" href="css/chrome.css"
type="text/css">
<link rel="stylesheet" href="css/myapp.css"
type="text/css">
</head>
<body>
<!-- lib -->
<script src="phonegap.js"></script>
<script src="js/jo_min.js"></script>
<!-- app -->
<script src="js/myapp.js"></script>
<script>
jo.load();
joEvent.touchy = true;
MyApp.load();
</script>
</body>
</html> |
Çåµ¥ 7 ÌṩÁËÒ»¸öÀàËÆµÄ¸ñʽ£¬ÒòΪÎĵµÍ·²¿°üº¬ÁËÑùʽ±í¡£ÎĵµÖ÷ÌåÊ×ÏȰüº¬Á´½ÓµÄ¿ò¼Ü½Å±¾£¬Æä´ÎÊÇÓ¦ÓóÌÐò½Å±¾Îļþ¡£ÄúÉÐδʹÓõ½
joEvent.touchy = true¡£Õâ¸öÊôÐÔÈ·±£ËùÓÐÏà¹ØµÄ»ùÓÚÊó±êµÄʼþ¶¼±»×ª»»Îª¿ÉÒÔÔÚÒÆ¶¯É豸ÉÏʹÓõĽӴ¥Ê½Ê¼þ¡£
½áÊøÓï
¾¡¹Ü½áºÏʹÓà Jo ºÍ PhoneGap ¿ÉÒÔÍê³ÉÐí¶à¹¤×÷£¬µ«Òª¼Çס£¬Jo
ºÍ PhoneGap Á½ÕßÖ®¼ä²»ÊÇ»¥ÏàÒÀÀµµÄ¡£ËüÃÇ¿ÉÒÔ¶ÀÁ¢Ê¹ÓûòÓëÆäËû¿ò¼Ü½áºÏ¡£È»¶ø£¬Jo µÄ¼òµ¥ÐÔºÍÇáÁ¿¼¶Óë
PhoneGap µÄÇ¿´ó¹¦ÄÜÏà½áºÏ£¬×îÖÕ½«Éú³ÉÒ»¸öÓÐЧµÄ¹¤¾ß£¬¿ÉÒÔÕë¶Ô¹ã·ºµÄƽ̨¿ª·¢·á¸»µÄÒÆ¶¯±¾µØÓ¦ÓóÌÐò¡£
|