原生的html组件,如何创建HTML5与原生UI组件混合的移动应用程序

本文将介绍如何使用Trigger.io创建原生的顶部栏、标签栏、以及HTML/CSS/JavaScript的混合型移动应用程序。

以后我们将添加更多的原生UI组件到Trigger.io,但现在你只需要使用web技术就可以在IOS和Android上创建漂亮而流畅的移动应用。

d35f57fcf410432970338dfc920e5cdf.png

c70446166e9c4e309c431219237815ef.png

这是一个简单的菜谱应用程序的屏幕截图,我们使用Trigger.io提供的原生UI组件,我们将向你展示该应用程序是如何构建的:

配置Trigger.io,并添加顶部栏和标签栏到应用程序中

给原生控件添加样式

用JavaScript给控件添加监听器

第一步:创建App并添加顶部栏

你需要使用Trigger.io生成App的基本框架,然后使用web技术来获取原生的UI组件。因此,在开始之前,你需要先进行注册签约。这里有完整的文档教你如何设置Trigger.io,一旦你完成设置只需要运行:

forge create

这时会提示你给app命名,命令完成后会自动生成app的项目文件夹。

让我们开始给app添加一个顶部栏,之后在Android模拟器上运行测试。

将src/config.json文件的代码替换成以下代码:

{

"author": "amir@trigger.io",

"config_version": "2",

"description": "View ingredients for your favorite recipes",

"modules": {

"is": true,

"logging": {

"level": "INFO"

},

"prefs": true,

"request": {

"permissions": []

},

"tools": true,

"topbar": true

},

"name": "Recipe list",

"platform_version": "v1.3",

"version": "0.1"

}

在模块配置中设置顶部栏可用:“topbar”: true。

然后修改一下index.html

Hello world!

现在你可以使用forge命令运行并测试app了:

forge build

forge run android --android.sdk ~/Desktop/android-sdk-macosx

29c3d7f63428973582a01533327cc89e.png

第二步:配置标签栏

在app的底部添加标签栏也很容易,你只需要在src/config.json(模块配置)中加上“tabbar”: true,如下:

{

"author": "amir@trigger.io",

"config_version": "2",

"description": "View ingredients for your favorite recipes",

"modules": {

"is": true,

"logging": {

"level": "INFO"

},

"prefs": true,

"request": {

"permissions": []

},

"tools": true,

"topbar": true,

"tabbar": true

},

"name": "Recipe list",

"platform_version": "v1.3",

"version": "0.1"

}

但是,在运行之前,我们还需要添加一些按钮和侦听器。这样,当点击每个选项卡时,我们就可以执行JavaScript来处理页面的切换。

让我们添加一个JavaScript文件,命名为src/js/main.js:

// A helper function so that when we change tab the web view scrolls to the top of the new page

var scrollTop = function () {

setTimeout(function () {

document.body.scrollTop = 0;

}, 0);

}

// This is the method we are going to call when a tab button is pressed

var updateRecipes = function (search) {

scrollTop();

// For now just pop up a message with the tab which was pressed

alert(search);

}

// Set a better title for the topbar

forge.topbar.setTitle("Recipe shopping list");

// Add our 3 tab buttons to the tabbar and add press listeners

var starterButton = forge.tabbar.addButton({

text: "Starters",

icon: "img/tomato.png",

index: 0

}, function (button) {

button.onPressed.addListener(function () {

updateRecipes("starter");

});

// This is the default button, activate it immediately

button.setActive();

updateRecipes("starter");

});

var mainButton = forge.tabbar.addButton({

text: "Mains",

icon: "img/pizza.png",

index: 1

}, function (button) {

button.onPressed.addListener(function () {

updateRecipes("main");

});

});

var dessertButton = forge.tabbar.addButton({

text: "Desserts",

icon: "img/strawberry.png",

index: 2

}, function (button) {

button.onPressed.addListener(function () {

updateRecipes("dessert");

});

});

这里我们调用了forge.topbbar.setTitle,该API会改变顶部的标题,然后用forge.tabbar.addButton来添加标签栏的按钮,以及该按钮的监听器。

我们修改src/index.html这个文件:

Hello world!

src/js/main.js文件里面引用了一些图片,这些图片你可以从代码示例中获取,并放在src/img目录里。

这次我们在IOS里面运行测试:

a8f26af47da4eaace5aaee7ea54b0c43.png

第三步:创建列表视图

OK,现在我们需要创建菜谱列表,并让它们点击后可跳转。

我们将使用轻量级的zepto.js库,以帮助我们处理DOM操作。我们已经发表了一篇关于如何使用zepto.js和backbone.js快速创建HTML5的移动应用程序的博客。因此,我们就不在这对做介绍了。接下来在菜谱列表中使用HTML/CSS/JavaScript。

首先,让我们将菜谱数据导入到zepto.js库。你可以下载zepto.js和data.js从Github上的例子,并把它们放在你的src/js目录里。

然后我们更新src/js/的main.js中的updateRecipe功能 - 这是当标签栏按钮被按下时调用的:

var updateRecipes = function (search) {

scrollTop();

$('.content').html('

$.each(data[search], function (i, recipe) {

var el = $('

'+recipe.thumb+''+recipe.title+'');

el.on('click', function () {

scrollTop();

$('.content').html('

'+recipe.title+'

'+recipe.img+'

View full recipe

');

$.each(recipe.ingredients, function (i, ingredient) {

$('.ingredients').append('

'+ingredient+'');

});

forge.tabbar.setInactive();

});

$('.list').append(el);

});

}

现在完成应用程序,我们只需要在src/index.html添加一些简单的样式并导入JavaScript文件:

body, html, li, ul {

padding: 0;

margin: 0;

}

body {

font-size: 1.2em;

}

.recipe {

text-align: center;

}

.recipe img {

max-width: 80%;

}

.recipe li {

display: block;

font-size: 0.9em;

padding: 2px;

}

.list {

margin: 0;

padding: 0;

}

.list li {

display: block;

border-bottom: 1px solid #aaa;

padding: 0;

margin: 0;

width: 100%;

overflow: hidden;

white-space: nowrap;

text-overflow: ellipsis;

}

.list li img {

height: 50px;

width: 50px;

padding: 2px 7px 2px 2px;

vertical-align: middle

}

完成

现在,你运行应用程序就会看起来跟本篇文章的顶部截图一样了。除此之外,你也可以尝试调用以下API来探索顶部栏和标签栏的不同造型:

因此,你也可以使用Trigger.io中的原生UI组件创建出丰富的混合应用程序!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言不会可以学好java吗_有人说学了C语言,两天就能学会Java,两个星期就可以找工作?...

作为一个过来人来说,编程如果真的那么简单就不会导致现在各大公司还喊着招不到人的情况了,虽然编程领域里面有触类旁通的说法,但这个说法只是针对于对于一种编程已经掌握到一定程度了,不是简单的学过或者做过就可以轻松的转向别的…

html 正则表达式验证金额,js金额校验,js正则表达式,包含正负,小数点后两位...

js金额校验,js正则表达式,包含正负,小数点后两位,js代码如下:function isMoney(s) {//金额 只允许正数//var exp /(^[1-9]([0-9])?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;//金额 允许正()负数//…

苹果app商品定价_【知乎问答】苹果 App Store 新推出的 1 元或 3 元定价对开发者有什么影响?...

徐小懒:我的游戏今年 10 月 1 日上线,定价 6 元。上线后,排名起起落落,总的来说一直在爬升。截止到 19 号之前,爬到总榜前 20(未刷榜),最多一天 300 个下载,累计下载 3500。19 号改成 1 元后,当…

sublime默认html,Sublime Text默认HTML评论

似乎对安装包装或拆卸包装有点隐蔽,因此需要进行一些调查才能解决问题。对于后台,用于注释(单行或块)的字符或字符的设置信息由tmPreferences类型的文件提供(不是tmLanguage,如在{您在问题的评论中链接到的教程)。文件的名称及其包含的包无关…

笔记本连接显示器后没有声音_电脑用HDMI外界显示器后,没有声音

本人使用Y450, 总感觉屏幕小, 现有PHILIPS 202E, 但是笨笨VGA坏了(真是悲催啊, 但是我强悍小Y跟我也有4~5个年头了, 可以理解) 所以买了HDMI赚VGA, 接上显示器后显示非常棒, 很爽, 绝对高清. 但是唯一的缺点就是接上HDMI后笨笨就没声音, 而且我的飞利浦又没有音频输出. 悲催了…

html文本域 高度自适应,textarea高度自适应,textarea随着内容高度变化

有时候我们需要textarea的高度随着内容的多少去自适应的变化,今天我使用了JS原生和JQ写了一个textarea的高度随着他的内容高度变化的代码,希望能帮上忙。废话不多说直接贴代码:textarea{ width:500px; margin:20px auto; padding:0; font-siz…

layer 线上_LAYER

SHIPPING TO : 가나(GHANA)SHIPPING TO : 가봉(GABON)SHIPPING TO : 가이아나(GUYANA)SHIPPING TO : 감비아(GAMBIA)SHIPPING TO : 과테말라(GUATEMALA)SHIPPING TO : 그레나다(GRENADA)SHIPPING TO : 그루지야(GEORGIA)SHIPPING TO : 그리스(GREECE)SHIPPING TO : 기니(GUINEA…

ajax为什么返回html标签,AJAX与特定值后返回的HTML标签

我想写使用jQuery的post.I传递的参数,以ajax.php并获得josn数据添加用户注释代码,如下:AJAX与特定值后返回的HTML标签var formObjectData $(# form_id).serialize() &flagadd_comment; // all$.post(http://192.168.3.3/myblog/ajax.p…

wps合并所有sheet页_WPS里面如何批量打印(WPS2019)

WPS里面如何批量打印(WPS2019)分四步:1. 创建WPS表格获奖名单2. 创建WPS文字的获奖模板3. 将WPS表格名单内容调入到WPS文字奖状模板中4. 批量打印(或保存)(注:我在这里用了别人的office版本的表…

丘成桐科学奖计算机类,2017东润丘成桐科学奖计算机参赛指引.PDF

2017东润丘成桐科学奖计算机参赛指引2017 东润丘成桐科学奖 (计算机)参赛指南一、 参赛方式 每支参赛队伍由1 至3 位华人中学生组成,由一位指导老师带领,提交研究报告。 学生身份:以在参赛报名之时是否为在校中学生为准。 导师身份&…

keepalived mysql双主架构图_基于MySQL双主的高可用解决方案理论及实践

MySQL在互联网应用中已经遍地开花,但是在银行系统中,还在生根发芽的阶段。本文记录的是根据某生产系统实际需求,对数据库高可用方案从需求、各高可用技术特点对比、实施、测试等过程进行整理,完善Mysql高可用方案,同时…

俄亥俄州立大学计算机科学转学成功,俄亥俄州立大学转学成功率83.38%!!

俄亥俄州立大学The Ohio State University-Columbus,即OSU成立于1870年,全美高校排名第54位(公立学校排名第18位),是美国较好的公立学校之一,亦是“公立常春藤”的成员。OSU是美国重要的学术联盟“美国大学协会”的成员之一&#…

小爱同学100个奇葩回复_小米小爱音箱Pro开箱评测,看到的不仅是全面升级更是小米loT的高速发展...

Hello,大家好,这里是科技能量站,今天有何大家见面了,本期小编给大家带来的是小米最新推出的小爱同学“小米小爱音箱Pro”,小米在前两年推出了自家的小米AI音箱,那一刻起,智能语音人工助手在小米…

你了解的继承方式html,法定继承、遗嘱继承、遗赠,这三种房产过户方式你了解多少?...

在房产过户的中,与继承相关的方式有三种:法定继承、遗嘱继承和遗赠。这三种过户方式其实是有较大不同的,下面我们就来具体分析下,希望能对需要的朋友有帮助。过户在房产过户中,与继承相关的有三种,分别是法…

计算机在生物学研究领域的认识,阮晓钢——北京工业大学——主要研究领域涉及:控制科学与工程,人工智能与认知科学,机器人学与机器人技术,计算机应用技术,生物医学工程与生物信息学。...

2007 年度:[1] On-line adaptive control for inverted pendulum balancing based on feedback-error-learning. Neurocomputing, 70 (4-6): 770-776 JAN 2007.[2] A tabu based neural network learning algorithm. Neurocomputing, 70 (4-6): 875-882 JAN 2007.20…

wedo2.0编程模块介绍_福特福克斯TCM重新编程操作

适用范围支持车型/年款:新福克斯 2011 – 2018 1.6L/2.0L DPS6变速箱 车型嘉年华 2013 1.5L DPS6变速箱 车型翼博 2013 – 2016 1.5L DPS6变速箱 车型功能介绍升级ECU版本或者对空白ECU写入数据, PAD Ⅲ请使用有线连接进行编程, 测试时保证车辆电瓶电压充足条件要求…

全国计算机二级公共知识点,全国计算机二级公共基础知识知识点

全国计算机二级公共基础知识知识点公共基础知识第一章 数据结构与算法1.1 算法1.1.1 算法的基本概念1、算法的基本特征可行性、确定性、有穷性、拥有足够的情报所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的…

中计算散度的函数_梯度、散度、旋度

一、麦克斯韦基于四元数观点导出散度与旋度已知的最早的关于散度和旋度的描述都来自麦克斯韦1873年的《A Treatise on Electricity and Magnetism》(电磁通论)一书。因此,为了探明散度和旋度的物理意义,有必要回到那本1873年的专著…

必须重启计算机才能关闭用户账户控制,Win10系统怎么彻底关闭用户帐户控制?...

大多是win10系统用户都知道,微软所推出的用户帐户控制能够限制一些病毒程序启动,从而较好的保护我们的电脑安全,以达到降低win10系统中毒的风险。可是每当我们运行一个程序的时候系统总会出现提示,感觉很烦,那么怎么永…

三菱plcfx5u指令手册_从西门子200的PLC程序来看三菱FX5U的PLC程序

小型PLC系统中西门子200系列和三菱的FX系列是应用的比较多的,作为工控行业的工程师是很有必要明白他们之间的一些不同点的,特别是从程序上来说,因此来写一篇文章,简单的聊聊他们在编程上的一下不同!西门子PLC和三菱PLC…