APICloud开发小技巧(一)

2021-06-11 06:02

阅读:641

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:1500,
                location: ‘bottom‘
            });
            setTimeout(function() {
                first = null;
            }, 1000);
        } else {
            if (new Date().getTime() - first 

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



然后通过
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.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效果
比如你的页面内容全部在

里面。那么我们就给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和安卓上的非全屏自动播放

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



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

如果要缓冲,在安卓下可以  让用户自己通过点击再播放

 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 : 300
                    },
                    //出境国内周边 游轮 分别对应一个 id 
                    pageParam : {
                        key : id
                    }
                });
            };

下个页面接受参数

var typeName = api.pageParam.key;

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

  • 2天
  • 3天
  • 4天
  • 10天
  • 10天以上
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 = 0; i 

 

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

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

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

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

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

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

  • tapmod是为了点击更顺利。
    function chooseDay(obj){
          var dateId = $api.attr(obj,‘dateId‘);
          console.log(dateId)
        }

    还有一种直接传递的方式

  • function openDetailWin(zxId, title) {
                var delay = 0;
                if ("ios" != api.systemType) delay = 300;
                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:300
            },
            pageParam : {
                        key : id
                    }
          });
        api.closeWin({
                bounces: false,
                animation:{
                    type: "push",
                    duration:300,
                    subType:"from_left"
                }
            });

     15、常用弹出

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

    api.hideProgress();

     

    APICloud开发小技巧(一)

    标签:play   属性   简单   comm   picker   第三方   自动   swipe   前端开发   

    原文地址:https://www.cnblogs.com/adozheng/p/10572847.html


    评论


    亲,登录后才可以留言!