apicloud apicloud

注册
查看: 23364|回复: 89

[APP开发技巧] APICloud开发小技巧分享--持续更新,建议收藏【6-12】

 

主题:
53
帖子:
333
云币:
552

APICloud粉丝APICloud毕业勋章一周年

[APP开发技巧] APICloud开发小技巧分享--持续更新,建议收藏【6-12】

 
23364 89 | 发表于 2015-6-1 17:28:46 |阅读模式 | |
本帖最后由 流浪男 于 2015-6-12 17:04 编辑

在这把用APICLOUD开发APP的一些小技巧分享出来,本贴会持续更新,同时也欢迎大家分享
==========================================================

1.安卓滑动关闭窗口
2.安卓点击两次退出应用
3.安全保存你的各种key
4.利用本地文件存储实现秒开和离线浏览
5.打开页面有闪动?那让他闪的个性点
6.安卓最小化你的APP

7.安卓上巧实现日期加时间的选择
8.IDE里面让代码自动换行

==========================================================

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:1500,
                location: 'bottom'
            });
            setTimeout(function() {
                first = null;
            }, 1000);
        } else {
            if (new Date().getTime() - first < 1000) {
                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=0;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();
参考文档  http://docs.apicloud.com/%E7%AB%AFAPI/api#70
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.IDE里面让代码自动换行
很多小伙伴在问我想让代码自动换行,不想看到长长的水平滚动条,截图来说一下:

依次打开---窗口---->首选项----->Aptana Studio--->Editors--->选中 Enable word wrap ,点击确定并重启IDE







本帖子中包含更多资源    您需要 登录 才可以下载或查看,没有帐号?立即注册

2

查看全部评分

业余车手

UID:22235

主题:
89
帖子:
1166
云币:
10259

版主勋章APICloud粉丝端午节

发表于 2015-6-1 20:21:34 |
在顶一个,这么好的东西,都不关注啊!

主题:
13
帖子:
679
云币:
1141

中秋节APICloud粉丝圣诞节女朋友装逼侠单身狗

发表于 2015-6-1 17:30:48 |
马克一下 , 以后遇到问题就过来看看 , 谢大神 ,

业余车手

UID:22235

主题:
89
帖子:
1166
云币:
10259

版主勋章APICloud粉丝端午节

发表于 2015-6-1 17:42:28 |
顶起来!

业余车手

UID:22414

主题:
8
帖子:
815
云币:
12667

版主勋章APICloud粉丝

发表于 2015-6-1 17:57:04 |
很不错的分享,赞一个

主题:
1
帖子:
33
云币:
100
发表于 2015-6-1 22:31:51 |
持续关注

主题:
68
帖子:
198
云币:
153
发表于 2015-6-2 07:45:53 |
请问第四条中,怎么实现对列表页中的图片进行缓存呢?谢谢

主题:
53
帖子:
333
云币:
552

APICloud粉丝APICloud毕业勋章一周年

 楼主| 发表于 2015-6-2 10:22:02 |
李子木 发表于 2015-6-2 07:45
请问第四条中,怎么实现对列表页中的图片进行缓存呢?谢谢

保存文件后自动对图片缓存,不需要设置什么

主题:
68
帖子:
198
云币:
153
发表于 2015-6-2 10:40:34 |
流浪男 发表于 2015-6-2 10:22
保存文件后自动对图片缓存,不需要设置什么

闷闷,还是不太明白。。。
  1. function writeFile(json){
  2.     var cacheDir = api.cacheDir;
  3.     for(var i=0;i<json.length;i++) {
  4.         var id = json.id;//你的内容id
  5.         var data = json;//内存数据
  6.         api.writeFile({
  7.             path: cacheDir+'/'+id+'.json',
  8.             data: JSON.stringify(data)
  9.         }, function(ret, err){

  10.         })
  11.     }
  12. }
复制代码
上面的代码中我看只是把获取到的json内容写入到缓存文件中。。。没看到哪里有缓存json中的图片代码啊。。。
我的获取到的json内容一般是<img ="http://baidu.com/.jpg"/>怎么设置才能缓存里面的图片呢?

主题:
53
帖子:
333
云币:
552

APICloud粉丝APICloud毕业勋章一周年

 楼主| 发表于 2015-6-2 10:46:27 |
李子木 发表于 2015-6-2 10:40
闷闷,还是不太明白。。。上面的代码中我看只是把获取到的json内容写入到缓存文件中。。。没看到哪里有缓 ...

自动将图片加入缓存,不需要设置
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表