通过Intel XDK编写跨平台app(二)


通过Intel XDK编写跨平台app(一)

通过Intel XDK编写跨平台app(二)

在这个系列的上一篇文章中,我们大致了解了Interl XDK的概况。在这一部分中,我们会详细地介绍如何通过这个框架来构建app,这里我们会以一个简单的照片分享应用为例。

你可以在Github上找到这个例子的最终代码

对比一下几个框架

Intel XDK支持几种不同的HTML5架构: App Framework, Bootstrap, TopCoat 和JQuery Mobile。APP Designer同时也支持这些不同的框架。介初学者模式App Starter只支持App Framework。  

App Framework 是一个简单的前端框架,它的UI组件都只能用来构建这种类型的应用,而且它能通配各种手机操作系统。在IOS设备上,它看上去和IOS本地组件差不多,在Android设备上,它看上去又和Android本地组件相似,在其它设备中也是这种情况。不仅如此,App framework是一个轻量级的框架,速度也非常快。

JQuery mobile 是一个很经典的手机应用框架了。它已经有很多看的历史,是现如今为数不多的依然存活的框架。你可以在它的库中找到很多的组件,但是这个框架有个很多问题,它很慢,通配做的不好,而且看上去并不像本地应用。

TopCoat 它是个显为人知的框架。它其实并不是一个完整的框架,只是提供了完整的UI组件。 

Bootstrap 它应用是最明星的一个框架了,它用来构建web页面和手机的响应式网站。我第一次使用它的时候真是有点惊讶,因为它毕竟不是一个混合式的应用开发框架。

现在开始编码吧!

让我们从创建一个项目开始,你可以通过点击左上方的”Start New Project“按钮来创建一个应用。然后选择“App Starter”创建方式来创建一个App Framework的工程。

下图是你创建项目的原型:

在css文件夹中创建一个style.css文件,然后创建一个app.js在js文件夹中。imageswhere文件夹用来存放图片资源。这个项目中我们不会使用任何第三方API,如果你在其它项目中需要使用,可以通过编辑项目来添加。

我首先要做的就是清理Inter XDK自动生成的没用的代码,清理之后你可以这样做:

  
  
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <!-- Meta data -->
  5. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
  7. <meta name="apple-mobile-web-app-capable" content="yes">
  8. <meta http-equiv="Pragma" content="no-cache">
  9. <script type="text/javascript" charset="utf-8" src="intelxdk.js"></script>
  10. <script type="text/javascript" language="javascript">
  11. var isIntel=window.intel&amp;&amp;window.intel.xdk
  12. // This event handler is fired once the intel libraries are ready
  13. function onDeviceReady() {
  14. //hide splash screen now that our app is ready to run
  15. intel.xdk.device.hideSplashScreen();
  16. setTimeout(function () {
  17. $.ui.launch();
  18. }, 50);
  19. }
  20. //initial event handler to detect when intel is ready to roll
  21. document.addEventListener("intel.xdk.device.ready", onDeviceReady, false);
  22. </script>
  23. <script src="js/appframework.ui.min.js"></script>
  24. <script>
  25. if(isIntel)
  26. $.ui.autoLaunch = false;
  27. $.ui.useOSThemes = true; //Change this to false to force a device theme
  28. $.ui.blockPageScroll();
  29. $(document).ready(function () {
  30. if ($.ui.useOSThemes &amp;&amp; (!$.os.ios||$.os.ios7))
  31. $("#afui").removeClass("ios");
  32. });
  33. </script>
  34. <!-- Import the css files -->
  35. <link href="css/icons.css" rel="stylesheet" type="text/css">
  36. <link href="css/af.ui.css" rel="stylesheet" type="text/css">
  37. <link href="css/style.css" rel="stylesheet" type="text/css">
  38. </head>
  39. <body>
  40. <div id="afui">
  41. </div>
  42. <script src="js/data.js"></script>
  43. <script src="js/app.js"></script>
  44. </body>
  45. </html>

 在这个例子中,我添加了app,js和style.css。让我们简单的分析一下上面的代码,在开关处添加了一些元数据,这些你不需要修改。

第一个JavaScript代码块隐藏了光标,第二段Javascript代码可以用来配置应用运行的平台,这里我配置了IOS7。

你首先应该知道的是id为afui的div,你需要用这个id来定义一个元素,它就像你应用的根一样,所有的东西都会从这个元素开始。除了这个元素,我们还定义了header,footer和应用所有的页面。

  
  
  1. <div id="afui">
  2. <div id="header" class="header"></div>
  3. </div>

 这个id是header的div,也就是说普通意义上的header元素,App Framework将会把很多自动生成的东西放到这个div中,你同样也可以在其中加入一些你想要的内容,比如你想在页面中添加一个回退按钮或是定义一个标题。我的建议是少在这个div中添加东西,你应该让它保持整洁。

你app的所有内容都会放到id为content的div中:

    
    
  1. <div id="content">
  2. <div class="panel" title="Photos" id="main_pg" selected="selected">
  3. <!-- All the content goes here -->
  4. </div>
  5. <!-- You can add other panels here -->
  6. </div>

 当你添加一个面板,你应该添加一个属性,比如标题的属性是显示在一个页面的头部,而id这个属性则用来定义不同panel的位置,selected属性则可以设置主tab是否显示,主页面只有一个,所以这个属性只能设置一次。

最后你需要做的就是定义一个footer:

   
   
  1. <div id="afui">
  2. <div id="header" class="header"></div>
  3. <div id="content">
  4. .....
  5. </div>
  6. <!-- the footer -->
  7. <div id="navbar" class="footer">
  8. <a href="#main_pg" class="icon home">Home</a>
  9. <a href="#myphotos_pg" class="icon picture">My Photos</a>
  10. </div>
  11. </div>

在footer中,你可以通过text和icon属性来添加tabs,通常来说我们用tags和href属性来定义面板跳转到哪个tab。在这个例子中它是#main_pg。在这个类中,你可以定义这个tab的图标。在例子中,第一个tab有一个home图标,第二个tab的图标则是一个photo。

在style.css中你可以看到这些图标的引用。

我们添加了第二个链接,链接到footer,你可以添加任意的面板做为跳转页面。

  
  
  1. <div id="content">
  2. <div class="panel" title="Photos" id="main_pg" selected="selected">
  3. <!-- All the content goes here -->
  4. </div>
  5. <div class="panel" title="My Photos" id="myphotos_pg">
  6. <span>My Photos</span>
  7. </div>
  8. </div>

 在虚拟机中测试:

Screenshot of the app

我们看到所有的组件都正常工作了。但由于两个tabs都是可见的,所以后退按钮是没有用的。

    
    
  1. <div id="afui">
  2. <div id="header" class="header"></div>
  3. <header id="myphotos_header">
  4. <h1 id="pageTitle">My Photos</h1>
  5. </header>
  6. ......
  7. </div>

 让我们添加一个没有后退按钮的header。在header中通过data-header="myphotos_header"设置一个跳转到头部的链接。最终myphotos-pg应该是这样::

    
    
  1. <div class="panel" data-header="myphotos_header" id="myphotos_pg">
  2. <span>My Photos</span>
  3. </div>

 再次在虚拟机中测试,所有的功能都正常运行了,后退按钮不也不见了。

Two tabs running in our app

总结

在这一部分,我详细地解说了如何通过Intel XDK创建一个新工程,大家应该可以发现方法和HTML很相似,很容易上手。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值