Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ʹÓà Jo ºÍ PhoneGap ¹¹½¨±¾µØÒƶ¯Ó¦ÓóÌÐò
 
×÷ÕߣºBrice Mason À´Ô´£ºIBM ·¢²¼ÓÚ 2015-7-8
  2687  次浏览      27
 

ʹÓà 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 µÄÇ¿´ó¹¦ÄÜÏà½áºÏ£¬×îÖÕ½«Éú³ÉÒ»¸öÓÐЧµÄ¹¤¾ß£¬¿ÉÒÔÕë¶Ô¹ã·ºµÄƽ̨¿ª·¢·á¸»µÄÒÆ¶¯±¾µØÓ¦ÓóÌÐò¡£

   
2687 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
 
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
 
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ʹÓÃdecj¼ò»¯Webǰ¶Ë¿ª·¢
Web¿ª·¢¿ò¼ÜÐγÉÖ®ÂÃ
¸üÓÐЧÂʵÄʹÓÃVisual Studio
MVP+WCF+Èý²ã½á¹¹´î½¨¿ò¼Ü
ASP.NETÔËÐлúÖÆÇ³Îö¡¾Í¼½â¡¿
±àд¸üºÃµÄC#´úÂë
10¸öVisual Studio¿ª·¢µ÷ÊÔ¼¼ÇÉ

.NET¿ò¼ÜÓë·Ö²¼Ê½Ó¦Óüܹ¹Éè¼Æ
.NET & WPF & WCFÓ¦Óÿª·¢
UML&.Net¼Ü¹¹Éè¼Æ
COM×é¼þ¿ª·¢
.NetÓ¦Óÿª·¢
InstallShield

ÈÕÕÕ¸Û .NET Framework & WCFÓ¦Óÿª·¢
Éñ»ªÐÅÏ¢ .NETµ¥Ôª²âÊÔ
±±¾© .NetÓ¦ÓÃÈí¼þϵͳ¼Ü¹¹
̨´ïµç×Ó .NET³ÌÐòÉè¼ÆÓ뿪·¢
ÈüÃÅÌú¿Ë C#Óë.NET¼Ü¹¹Éè¼Æ
¹ã¶«ºËµç .NetÓ¦ÓÃϵͳ¼Ü¹¹