apicloud开发文档中,前端开发框架指的就是,类似jq\js的语法: https://docs.apicloud.com/Front-end-Framework/framework-dev-guide。

api对象就只的是:app的方法。

1.安卓滑动关闭窗口

在IOS设备上可以通过滑动来关闭win,在安卓默认是不可以。细看下文档其实也很的简单,监听事件里面的swiperight:
如果一个窗口是先打开win再嵌套frame的打开的方法如下

apiready = function(){
api.addEventListener({
name:'swiperight'
},function(ret,err){
api.closeWin({
name: 'win窗口name'
});
})
}; 如果是直接用win打开的窗口
apiready = function(){
api.addEventListener({
name:'swiperight'
},function(ret,err){
api.closeWin({});
})
};

2.安卓点击两次退出应用

//两次退出
var first = null;
function back(){
api.addEventListener({
name: 'keyback'
}, function(ret, err){
if (!first) {
first = new Date().getTime();
api.toast({
msg: '再按一次退出',
duration:,
location: 'bottom'
});
setTimeout(function() {
first = null;
}, );
} else {
if (new Date().getTime() - first < ) {
api.closeWidget({
silent:true
});
}
}
});
} 把back方法放在apiready里面就OK了

3.安全保存你的各种key
在app中,有时我们会使用到一些第三方的key,如果让这些KEY更安全呢,其实官方也有提高,很多朋友却没有留意
在res文件夹中新建一个key.xml

<?xml version="1.0" encoding="UTF-8"?>
<security>
<item name="key0" value="value0"/>
<item name="key1" value="value1"/>
<item name="key2" value="value2"/>
<item name="key3" value="value3"/>
</security> 然后通过
api.loadSecureValue({
key:'key名'
}, function(ret, err) {
var value = ret.value;
}); 来调用。云编译的时候会自动加密的,不过在真机测试的时候是没有用的,需要云编译才可以。在打包的时候可以统一配置下

4。利用本地文件存储实现秒开和离线浏览
在api对象里面有两个方法readFile和writeFile,我们可以利用这两个来搞一下,而且还会对图片自动缓存的
通常我们的列表页数据是json的,我们可以对这个json数据循环下

function writeFile(json){
var cacheDir = api.cacheDir;
for(var i=;i<json.length;i++) {
var id = json.id;//你的内容id
var data = json;//内存数据
api.writeFile({
path: cacheDir+'/'+id+'.json',
data: JSON.stringify(data)
}, function(ret, err){ })
}
}
注意要通过JSON.stringify转换下格式,否在在IOS上写入不成功
然后在打开内容页的时候先看下有没有对应id文件存在
function readFile(){
var cacheDir = api.cacheDir;
api.readFile({
path: cacheDir+'/'+id+'.json'
}, function(ret, err){
if(ret.status){
var jsonData = JSON.parse(ret.data);
} else{
//从服务器读取
}
});
} 还要注意,再次转换下数据格式

5.打开页面有闪动?那让他闪的个性点
很多开发者在开发的时候会遇到页面打开闪动的问题,不管是从服务器读取还是从本地缓存读取都有可能会闪动。既然解决比较麻烦,我们就利用CSS3动画,让他闪的个性点。很简单,给元素ID加个fade效果
比如你的页面内容全部在<div id="wrap"></div>里面。那么我们就给wrap弄个CSS动画,渐入效果,下面是css代码

#wrap {-webkit-animation: fadeIn .5s ease both;animation: fadeIn .5s ease both;}
@-webkit-keyframes fadeIn {
from { opacity: 0.3; }
to { }
}
@keyframes fadeIn {
from { opacity: 0.3; }
to { }
}

6.安卓最小化你的APP
在安卓开发的时候我们会使用最小化应用,不让其退出,其实官方已经提供了这个api方法,只是可能隐蔽点不容易发现

api.toLauncher();

7.安卓上巧实现日期加时间的选择
在使用openPicker时我们知道安卓设备是不支持同时选择日期加时间的,也就是date_time属性。又不想使用插件,也不想选择完日期后在点击按钮选择时间,那么我们将openPicker稍微改一下实现时间+日期的选择
思路:判断如果是安卓设备,则先openPicker打开时间选择,时间选择完成后在openPicker一下选择日期。

if(api.systemType=='android'){
api.openPicker({
type: 'date',
title:'选择时间'
},function(ret,err){
var year = ret.year;
var month = ret.month;
var day = ret.day;
//这是选择的是日期
var value1 = year+'-'+month+'-'+day;
//选择时间
api.openPicker({
type: 'time',
title:'选择时间'
},function(ret,err){
var hour = ret.hour;
var minute = ret.minute;
//选择的时间
var value2 = hour+':'+minute; //组装一下
alert(''+value1+' '+value2+'');
});
});
}

8\video标签在IOS和安卓上的非全屏自动播放

使用此代码,可自动循环播放视频了哦,不需要全屏

<video id="player" src="widget://res/video.mp4" loop autoplay webkit-playsinline></video>

在IOS上可以自动播放,在安卓下还需要加一句 $api.byId('player').play(); (这代码需要视频加载完后才能调用,不过我都是包内的视频源,没有测需要缓冲的视频)

如果要缓冲,在安卓下可以 <video id="player" src="widget://res/video.mp4" loop controls webkit-playsinline></video> 让用户自己通过点击再播放

9、fastclick 的使用方法

$(function(){
FastClick.attach(document.body);
});

10、页面跳转,并传递参数

function openWin(id) {
api.openWin({
name : 'list_window',
url : 'list_window.html',
bounces : false,
animation : {
type : "push",
duration :
},
//出境国内周边 游轮 分别对应一个 id
pageParam : {
key : id
}
});
};

下个页面接受参数

var typeName = api.pageParam.key;

11、多个li点击某一个,那个元素高亮显示(toggle)

<ul class="choose_det">
<li tapmode="" onclick="chooseType(this);">2天</li>
<li tapmode="" onclick="chooseType(this);">3天</li>
<li tapmode="" onclick="chooseType(this);">4天</li>
<li tapmode="" onclick="chooseType(this);">10天</li>
<li tapmode="" onclick="chooseType(this);">10天以上</li>
</ul>
function chooseType(obj){
$api.toggleCls(obj, 'active');
};

上面的方法是 toggle 的方法,点击某一个,某个高亮,其余恢复默认代码如下

function cPhoneType(obj){

        var ele = $api.byId('phoneTypeHtml');
var selectList = $api.domAll(ele, '.tabThree');
for(var i = ; i < selectList.length; i++){
$api.removeCls(selectList[i], 'activeC');
}
$api.addCls(obj, 'activeC');
}

12、某些页面数据变化,例如规格选择,选的比较多,改变之后在列表页要监听到选择的规格,这个时候传递参数会比较多,就用一个监听事件

在选择规格的页面,点击确定的时候,发送一个全局的监听事件

api.sendEvent({
name: 'myChoose',
extra: {
days: '',
data: '2013-2-3'
}
});

在列表页获取这个监听事件,当传递的值发生变化的时候,做出一些相应的改变或者动作

  api.addEventListener({
name: 'chooseData'
}, function(ret, err) {
//alert(JSON.stringify(ret.value));
});

13、获取点击的对象的自定义属性。

<li class="'+ classLiName +'" dateId="'+ dateId +'" onclick="chooseDay(this)" tapmod="">
tapmod是为了点击更顺利。
function chooseDay(obj){
var dateId = $api.attr(obj,'dateId');
console.log(dateId)
}

还有一种直接传递的方式

<li class='list-item' onclick='openDetailWin(\"" + item.id + "\",\"" + item.title + "\");'>
function openDetailWin(zxId, title) {
var delay = ;
if ("ios" != api.systemType) delay = ;
api.openWin({
name : 'news_detail_module',
url : 'zx/news_detail_module.html',
delay : delay,
bounces: false,
pageParam: { id: zxId, title: title }
});
}

14、apicloud中,例如头部有一个返回的这种,一般来说都是两个页面,头部是一个页面,然后中间在加载一个frame。

打开关闭window

api.openWin({
name : 'line_detail',
url : 'line_detail.html',
bounces: false,
animation:{
type: "push",
duration:
},
pageParam : {
key : id
}
});
    api.closeWin({
bounces: false,
animation:{
type: "push",
duration:,
subType:"from_left"
}
});

15、常用弹出

/*** 提示信息 ***/
api.toast({
msg: '手机号格式有误',
duration: ,
location: 'middle'
});
/*** 加载动画 ***/
api.showProgress({
title : ' ',
text : '玩命加载中...',
modal : true
}); api.hideProgress();

APICloud开发小技巧(一)的更多相关文章

  1. APICloud开发小技巧(二)

    1.apicloud中 json.字符串之间的互转 $api.jsonToStr(ret); $api.strToJson(ret)  2.页面的来回跳转 例如已经打开了一个页面,跳转走,改变数据在跳 ...

  2. Windows统一平台: 开发小技巧

    Windows统一平台: 开发小技巧 技巧一: 在手机端拓展你应用的显示区域.(WP8.1中也适用) 对于Windows Phone系统的手机, 手机屏幕最上方为系统状态栏(System Tray), ...

  3. flex开发小技巧集锦

    关于flex开发网上有非常多的相关信息介绍,因此我们要想学习关于flex开发的知识信息技能是一件非常简单和方便的事情.而针对于flex开发小编要告诉大家的是一些flex开发小技巧.利用这些小技巧能够有 ...

  4. TP开发小技巧

    TP开发小技巧原文地址http://wp.chenyuanzhao.com/wp/2016/07/23/tp%E5%BC%80%E5%8F%91%E5%B0%8F%E6%8A%80%E5%B7%A7/ ...

  5. 移动Web开发小技巧

    移动Web开发小技巧 添加到主屏后的标题(IOS) name="apple-mobile-web-app-title" content="标题"> 启用  ...

  6. BizTalk开发小技巧

    BizTalk开发小技巧 随笔分类 - Biztalk Biztalk 使用BizTalk实现RosettaNet B2B So Easy 摘要: 使用BizTalk实现RosettaNet B2B ...

  7. Java开发小技巧(三):Maven多工程依赖项目

    前言 本篇文章基于Java开发小技巧(二):自定义Maven依赖中创建的父工程project-monitor实现,运用我们自定义的依赖包进行多工程依赖项目的开发. 下面以多可执行Jar包项目的开发为例 ...

  8. iOS开发小技巧 - UILabel添加中划线

    iOS开发小技巧 遇到的问题: 给Label添加中划线,然后并没有效果 NSString *str = [NSString stringWithFormat:@"合计金额 ¥%.2f&quo ...

  9. PHP开发小技巧②—实现二维数组根据key进行排序

    在PHP中内置了很多对数组进行处理的函数,有很多时候我们直接使用其内置函数就能达到我们的需求,得到我们所想要的结果:但是,有的时候我们却不能通过使用内置函数实现我们的要求,这就需要我们自己去编写算法来 ...

随机推荐

  1. Windows Server 2008 R2x64 IIS7+PHP5.6 错误 500.0

    这两天准备升级一个网站项目,新项目基于PHP并进行了ZendGuard加密,需要在PHP5.6版本中运行 而客户之前的运行环境是php5.2~5.4,那好,再新建一个PHP版本不就完事了吗!!! 于是 ...

  2. NET 爬虫

    最近经常听说或者接触关于网络爬虫的问题,只是一直看到被人写的代码.而没有真正的做过实践, 昨天做了一下尝试,其中采用网络流行的扩展类库 http://html-agility-pack.net/?z= ...

  3. MySQL 复制 - 性能与扩展性的基石:概述及其原理

    原文:MySQL 复制 - 性能与扩展性的基石:概述及其原理 1. 复制概述 MySQL 内置的复制功能是构建基于 MySQL 的大规模.高性能应用的基础,复制解决的基本问题是让一台服务器的数据与其他 ...

  4. Ali-Tomcat在eclipse多开的解决方法

    关于如何在eclipse配置Ali-Tomcat https://help.aliyun.com/document_detail/99410.html?spm=a2c4g.11186623.6.609 ...

  5. lucene_06_solr域

    solr域在家目录下面\solr_home\collection1\conf中的schema.xml里面定义. 域必须要先在schema.xml下定义后才能使用. solr在操作Field域时需要在s ...

  6. 【软件project】之第五、六章总结

    软件project的前几章各自是软件计划.需求分析.软件设计.整体的都规划好了以后,就该着手去实践了. 所谓的理论体系足够强大了以后,实践就显得尤为轻松.我们设计软件,实践当然就是用我已经计划好的语言 ...

  7. JavaFX本地应用自己主动更新功能的实现FXLauncher

    JavaFX本地应用自己主动更新功能的实现--FXLauncher 作者:chszs,未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一. ...

  8. 数据结构(三)——栈Stack

    栈是一种特殊的线性表,插入和删除操作均在栈顶进行,插入操作称为入栈,删除操作称为出栈. 一.顺序栈 利用顺序存储方式实现的栈称为顺序栈,下面是它的一些基本操作实现算法,需要理解和记忆. 1.顺序栈的类 ...

  9. 每天五个java相关面试题(8)--spring篇

    首先呢,假设有从事前端开发的大神或者准备从事前端开发的小伙伴无意看到我这篇博客看到这段文字欢迎加我的QQ:[ 845415745 ].即将走入社会的菜鸟大学生有关于前端开发的职业问题想请教或者一起探讨 ...

  10. luogu1775 古代人的难题 打表找规律

    题目大意:给出一正整数k,求满足(x^2-x*y-y^2)^2=1且x,y∈[1,k]且x^2+y^2最大的正整数x,y. 既然x,y的范围给出来了,我们便有了暴力解法.因此,本题最适合打表找规律了! ...