本帖最后由 中山赢友网络科技有限公司 于 2015-10-17 15:38 编辑

继《APICloud之小白图解教程系列(一):认识APICloud》之后的第二篇教程。

本篇教程有以下知识点:

1、APICloud Studio的介绍和常用快捷键的使用
2、认识APP中的”流“布局,也就是CSS3的Flex布局

3、优化官方的fixStatusBar方法,实现兼容性状态栏处理!

工欲善其事,必先利其器:APICloud Studio的使用介绍及常用快捷键使用

APICloud Studio是官方推荐IDE编辑器,也就是我们开发APP的软件工具,内置了调试,编译,文档,提示,实时预览等功能,可以帮助我们快速的开发APP。该软件的使用也不用多说,现在给大家介绍一下APICloud Studio一些常用的快捷键,可以帮助大家快速开发。首先我下载的是2015年10月16号最新的包,版本为:APICloud_SDK_v1.1.41。APICloud Studio的版本为:APICloud-Studio_1.2.2。

常用快捷键有:

Ctrl+Z:撤销
Ctrl+N:创建项目或文件
Ctrl+Shift+F:代码格式化(这个经常用,可以美化代码,也可以通过这个检查代码是否出错)
Ctrl+/ :注释和反注释
Alt+/:强制代码提示
Ctrl+D:剪切该行
Ctrl+R:真机运行(常用)
Ctrl+W:编译自定义Loader(常用)
Ctrl+Y:反撤销
Ctrl+L:跳到改行(注意,如果需要在IDE中显示行号,只需要在代码区域的最左边右键显示行号就可以了)
Ctrl+S:保存
Ctrl+F:搜索
Ctrl+H:搜索替换
Ctrl+M:最大化或最小化当前焦点区域,比如像最大化代码区域或者工程目录区域,只需要在该区域空白地方点一下,就可以通过它最大化最小化了。  
Ctrl+C:复制  
Ctrl+V:黏贴  
Ctrl+E:快速切换已经的标签(常用)
Shift+Enter:在当前光标下面新增一行,无需把光标放在最后面Enter,(这个非常常用,极大提高编程速度)
Ctrl+Shift+Enter:在当前光标上面添加新增一行(这个非常常用,极大提高编程速度) 
Ctrl+Shift+E:切换当前文件,(非常常用,可以快速从一个页面切换到另一个页面编辑器)
Ctrl+Shift+R:全局搜索所有文件并快速打开(这个很牛逼,可以全局搜索项目中有哪些文件,然后直接打开,非常实用,这样找文件就非常容易了!)
Ctrl+Shift+W:关闭所有页面
Ctrl+Shift+L:显示所有快捷键的操作,再也不怕忘记快捷键了

流布局:目前非常火的前端开发布局方式

移动开发布局最火的就是Flexbox流布局,也叫伸缩布局。详细教程可以看:http://www.w3cplus.com/css3/css3-flexbox-layout.html
好了,现在我们就用流行的流布局构建我们的APP最基本的页面了

1、新建APICloud项目:目前我们就新建一个APICloud的项目,模板选空白应用(我们要从基本的布局开始学习):如图所示:

<ignore_js_op>

2、更新并提交代码(养成这个习惯),如图所示

<ignore_js_op>

3、删除默认的代码,保留干净的编辑环境,保留css,和js文件!如图所示:
<ignore_js_op>

4、实现简单的APP页面三栏布局,如图所示:
<ignore_js_op>

大家观察上面图片,可以清楚看出三块结构,那我们应该创建一个父容器包裹着三个div(头,中间,底)(推荐使用div+css布局哦,table就不推荐了!)表示,如:

  1. <div id="web-view">
  2. <div id="header">
  3. 我是头部
  4. </div>
  5. <div id="main"></div>
  6. <div id="footer"></div>
  7. </div>

复制代码

2、添加CSS样式,将id为main的区域变为自动伸缩布局,头和尾部固定,样式如下:

  1. <style type="text/css">
  2. /*必须设置这个属性*/
  3. html, body {
  4. height: 100%;
  5. }
  6. #web-view {
  7. display: -webkit-box;
  8. display: -webkit-flex;
  9. display: flex;
  10. /* 下面三个控制子div的显示方式,是垂直显示 */
  11. -webkit-box-orient: vertical;
  12. -webkit-flex-flow: column;
  13. flex-flow: column;
  14. /* 上面三个控制子div的显示方式,是垂直显示 */
  15. height: 100%;
  16. /*===== 如果想让div水平排布,可以使用下面代码 ====*/
  17. /*-webkit-box-orient: horizontal;
  18. -webkit-flex-flow: row;
  19. flex-flow: row;
  20. width: 100%;*/
  21. }
  22. #header {
  23. height: 44px;/*固定头部 */
  24. background: #f00;
  25. text-align: center;
  26. line-height: 44px;
  27. color: #fff;
  28. }
  29. #footer {
  30. height: 50px;/*固定尾部*/
  31. background: #00f;
  32. }
  33. #main {
  34. /*设置main为伸缩布局*/
  35. -webkit-box-flex: 1;
  36. -webkit-flex: 1;
  37. flex: 1;
  38. background: #00f;
  39. }
  40. </style>

复制代码

图片如下: <ignore_js_op>

好了,简单的三栏布局以及完毕。

5、在Index页面创建Frame,也就是在Main区域打开。在打开之前先说明一些注意的东西,我相信很多朋友在学习的时候都碰到过IOS或Android状态栏遮住问题,或者想实现状态栏沉浸式效果,那你需要做下面几件事情:

1)、在根目录下面的config.xml配置文件中添加以下代码:

  1. <preference name="statusBarAppearance" value="true"/>
  2. <preference name="iOS7StatusBarAppearance" value="true"/>
  3. <preference name="softInputMode" value="resize"/>

复制代码

2)优化官方的fixStatusBar代码,通过这个代码就可以兼容以前版本和未来版本状态栏问题!包括IOS和Android版本!

  1. // 解决状态栏重合,并优化fixStatusBar代码,Android4.4版本以上添加25px
  2. function fixStatusBar(headerid, callback) {
  3. var header = $api.byId(headerid);
  4. var systemType = api.systemType;
  5. var systemVersion = parseFloat(api.systemVersion);
  6. if (systemType == "ios" || (systemType == "android" && systemVersion >= 4.4)) {
  7. if (systemType == "android") {
  8. header.style.paddingTop = '25px';
  9. }
  10. $api.fixStatusBar(header);
  11. } else {
  12. $api.fixIos7Bar(header);
  13. }
  14. var headerPos = $api.offset(header);
  15. if ( typeof callback == "function") {
  16. callback(headerPos);
  17. }
  18. }

复制代码

3)创建并打开main框架,也就是页面的主体

  1. apiready = function() {
  2. // 获取底部的高度
  3. var footer = $api.byId("footer");
  4. var footerPos = $api.offset(footer);
  5. fixStatusBar("header", function(headerPos) {
  6. api.openFrame({
  7. name : 'main',
  8. url : './html/main.html',
  9. rect : {
  10. x : 0,
  11. y : headerPos.h,
  12. w : api.winWidth,
  13. h : api.winHeight - headerPos.h - footerPos.h // footerPos.h是底部的高度,也可以直接获取main的高度
  14. },
  15. pageParam : {
  16. },
  17. bounces : true,
  18. bgColor : 'rgba(0,0,0,0)',
  19. vScrollBarEnabled : false,
  20. hScrollBarEnabled : false
  21. });
  22. });
  23. };

复制代码

6、直接使用快捷的Ctrl+R真机运行就可以看到效果了。如果想看沉浸式的效果,可以云编译或者编译自定义Loader使用(快捷键为Ctrl+W),新版本直接真机调试也可以看到了。,如下图:

<ignore_js_op>

好了简单的布局页面完成。
首页index.html所有的代码:

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
  6. <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
  7. <title>小白之路</title>
  8. <link rel="stylesheet" type="text/css" href="./css/api.css" />
  9. <style type="text/css">
  10. /*必须设置这个属性*/
  11. html, body {
  12. height: 100%;
  13. }
  14. #web-view {
  15. display: -webkit-box;
  16. display: -webkit-flex;
  17. display: flex;
  18. /* 下面三个控制子div的显示方式,是垂直显示 */
  19. -webkit-box-orient: vertical;
  20. -webkit-flex-flow: column;
  21. flex-flow: column;
  22. /* 上面三个控制子div的显示方式,是垂直显示 */
  23. height: 100%;
  24. /*===== 如果想让div水平排布,可以使用下面代码 ====*/
  25. /*-webkit-box-orient: horizontal;
  26. -webkit-flex-flow: row;
  27. flex-flow: row;
  28. width: 100%;*/
  29. }
  30. #header {
  31. height: 44px;/*固定头部 */
  32. background: #f00;
  33. text-align: center;
  34. line-height: 44px;
  35. color: #fff;
  36. }
  37. #footer {
  38. height: 50px;/*固定尾部*/
  39. background: #00f;
  40. }
  41. #main {
  42. /*设置main为伸缩布局*/
  43. -webkit-box-flex: 1;
  44. -webkit-flex: 1;
  45. flex: 1;
  46. background: #0f0;
  47. }
  48. </style>
  49. </head>
  50. <body>
  51. <div id="web-view">
  52. <div id="header">
  53. 我是头部
  54. </div>
  55. <div id="main"></div>
  56. <div id="footer"></div>
  57. </div>
  58. </body>
  59. <script type="text/javascript" src="./script/api.js"></script>
  60. <script type="text/javascript">
  61. // 解决状态栏重合,并优化fixStatusBar代码,Android4.4版本以上添加25px
  62. function fixStatusBar(headerid, callback) {
  63. var header = $api.byId(headerid);
  64. var systemType = api.systemType;
  65. var systemVersion = parseFloat(api.systemVersion);
  66. if (systemType == "ios" || (systemType == "android" && systemVersion >= 4.4)) {
  67. if (systemType == "android") {
  68. header.style.paddingTop = '25px';
  69. }
  70. $api.fixStatusBar(header);
  71. } else {
  72. $api.fixIos7Bar(header);
  73. }
  74. var headerPos = $api.offset(header);
  75. if ( typeof callback == "function") {
  76. callback(headerPos);
  77. }
  78. }
  79. apiready = function() {
  80. // 获取底部的高度
  81. var footer = $api.byId("footer");
  82. var footerPos = $api.offset(footer);
  83. fixStatusBar("header", function(headerPos) {
  84. api.openFrame({
  85. name : 'main',
  86. url : './html/main.html',
  87. rect : {
  88. x : 0,
  89. y : headerPos.h,
  90. w : api.winWidth,
  91. h : api.winHeight - headerPos.h - footerPos.h // footerPos.h是底部的高度,也可以直接获取main的高度
  92. },
  93. pageParam : {
  94. },
  95. bounces : true,
  96. bgColor : 'rgba(0,0,0,0)',
  97. vScrollBarEnabled : false,
  98. hScrollBarEnabled : false
  99. });
  100. });
  101. };
  102. </script>
  103. </html>

复制代码

apicloud教程2 (转载)的更多相关文章

  1. HttpClient 4.3教程(转载)

    HttpClient 4.3教程(转载) 转自:http://www.yeetrack.com/?p=779 前言 Http协议应该是互联网中最重要的协议.持续增长的web服务.可联网的家用电器等都在 ...

  2. 深入浅出Git教程【转载】转载

    深入浅出Git教程(转载)   目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1 ...

  3. apicloud教程3 (转载)

    本帖最后由 中山赢友网络科技有限公司 于 2015-10-26 16:44 编辑 继<APICloud之小白图解教程系列(一):认识APICloud><APICloud之小白图解教程 ...

  4. apicloud教程1 (转载)

    非常感谢APICloud官方给我版主职位,每天都看到很多朋友提出很多问题,我就借此机会写了一系列的教程,帮助大家从小白到高手之路.系列名称:<APICloud之小白图解教程系列>,会不定时 ...

  5. jQuery官方基础教程笔记(转载)

    本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计 ...

  6. Node初学者入门,一本全面的NodeJS教程(转载)

    分类 JS学习   发布 ourjs  2013-12-02 注意 转载须保留原文链接,译文链接,作者译者等信息.     作者: Manuel Kiessling  翻译: goddyzhao &a ...

  7. GitHub这么火,程序员你不学学吗? 超简单入门教程 【转载】

    本GitHub教程旨在能够帮助大家快速入门学习使用GitHub. 本文章由做全栈攻城狮-写代码也要读书,爱全栈,更爱生活.原创.如有转载,请注明出处. GitHub是什么? GitHub首先是个分布式 ...

  8. Make 命令教程(转载)

    代码变成可执行文件,叫做编译(compile):先编译这个,还是先编译那个(即编译的安排),叫做构建(build). Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目.但是实际上 , ...

  9. StoryBoard不使用AutoLayout情况下 按比例快速兼容适配iPhone6/6 Plus教程【转载】

    StoryBoard不使用AutoLayout情况下 按比例快速兼容适配iPhone6/6 Plus教程[转] 声明:本文章是为了后期快速兼容6和6Plus的按比例放大方法,对于部分读者来说可能觉得该 ...

随机推荐

  1. ZUFEOJ 2395 天棋哥哥大战AlphGo

    Description3月15日,人机围棋大战巅峰对决在韩国首尔落下帷幕.五番棋的最后一局中,韩国著名棋手李世乭尽管与人工智能“AlphaGo”缠斗至官子阶段,但在双双进入读秒后最终还是投子认输,以总 ...

  2. HDU 1896 Stones (优先队列)

    Problem Description Because of the wrong status of the bicycle, Sempr begin to walk east to west eve ...

  3. c#笔记之启动新线程

    可已通过下面方法来启动一个新线程并执行相应的方法 new Thread(new ThreadStart(new Action(() =>                        {     ...

  4. mysql查超过15分钟未付款的订单,更新为失效状态

    个人打开自己的订单时,才检查超过15分钟未付款的订单, 暂不使用机器人,更新状态, Difference counter 差分计数器订单超过15分钟.mysql的时间戳差分比较 $sql =  TIM ...

  5. OpenCV2.x自学笔记——最大类间方差法OTSU

    推荐用法:(参数勿动) threshold(gray,binary,0,255,CV_THRESH_OTSU+CV_THRESH_BINARY);

  6. 面试中有关C++的若干问题

    面试中有关C++的若干问题 By 晴天, 2014.5.16晚 什么是多态?简要说一下C++中的多态的概念. (1)定义:多态是指相同对象收到不同消息或者不同对象收到相同消息产生不同的行为. (2)C ...

  7. ElasticSearch基础(4)-索引

    一.ES API常用规则 ES支持以Http协议的方式提供REST服务,以JSON格式发送请求返回响应. ES提供了大量的不管的数据操作,运维管理API,大量的api 这海量的api有一些通用的功能特 ...

  8. Nimbus<三>Storm源码分析--Nimbus启动过程

    Nimbus server, 首先从启动命令开始, 同样是使用storm命令"storm nimbus”来启动看下源码, 此处和上面client不同, jvmtype="-serv ...

  9. 【Machine Learning in Action --3】决策树ID3算法

    1.简单概念描述 决策树的类型有很多,有CART.ID3和C4.5等,其中CART是基于基尼不纯度(Gini)的,这里不做详解,而ID3和C4.5都是基于信息熵的,它们两个得到的结果都是一样的,本次定 ...

  10. python--sorted函数和operator.itemgetter函数

    1.operator.itemgetter函数operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. a = [1 ...