原生的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,两个星期就可以找工作?...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

cron 每10分钟执行一次_早餐儿子最爱它,简单卷一卷,10分钟做一大盘,三天两头吃一次...

早餐儿子最爱它,卷一卷特简单,10分钟做一大盘,三天两头吃一次。俗话说得好“早餐要吃好,午餐要吃饱,晚餐要吃少。”可见,早餐的重要性,一般早餐在一日三餐中占30%的热量,碳水化合物、…

计算机刚过国家线能调剂到哪些学校,2020考研:刚过国家线好不好调剂?这4个调剂策略!考生要知道...

原标题:2020考研:刚过国家线好不好调剂?这4个调剂策略!考生要知道近日,2020年全国硕士研究生基本分数线已经公布。对于340万左右的考研人来说,心中的那块石头终于有了着落,不管考得好或者不好&a…

生命银行怎么样_减脂就像是从“脂肪银行”中提款,想要成功,你要做到这两点...

本期内容,我们来深刻的聊一聊减脂,减肥。食物为什么会让你长胖?怎样快速的瘦下来?1 食物能量的储存人是铁,饭是钢,一天不吃饿得慌!食物是维持人体正常运转的唯一能量来源,被我们吃进…

二次开发_企业ERP系统二次开发问题的探讨分析

新朋友点上方蓝字“ERP之家”快速关注导读:根据笔者多年在企业中实施及推进ERP,概的实战经验,阐述了ERP系统二次开发的必然性和二次发开的成因及存在的风险,提出如何合理地规避二次开发所带来的风险,值得为实施ERP系统…

西门子逻辑运算指令_西门子S7-200 SMART逻辑运算指令应用实例

本篇我们通过一个实例来讲解一下西门子S7-200 SMART逻辑运算指令在程序中的使用。要求将VW2和VW4中的数据进行逻辑与后,送到VW6。首先我们双击电脑桌面上的STEP7-Micro/WIN SMART图标,打开编程软件,从指令树的位逻辑中选择一个常开触点拖放到…

强行终止python_中国的真实离婚率:一点也不高,反而低的惊人 | 用python计算离婚率...

3600字。现在的网络上,似乎普遍有一种共识,那就是中国的离婚率高的吓人。 各种耸人听闻的标题,比如什么“北上广深等一线城市离婚率高达40%”、“天津的离婚率高达70%”……搞得人心惶惶。有网友对此提出质疑,说,我怎么…

单片机拼字程序怎么做_餐饮怎么用微信小程序?餐饮行业怎么做小程序

随着移动互联网的发展,互联网餐饮这种新型餐饮模式已经发展到了很成熟的地步。很多餐厅都会觉得,自己的活动很有吸引力,但是推广力度不够,不能迅速营造人气,提升收益。对于餐饮人来说,微信是主要的传播渠道…

测试金士顿固态硬盘软件,金士顿固态硬盘优化工具(Kingston Toolbox)

金士顿固态硬盘优化工具KingstonToolbox是金士顿官方出品的SSD优化工具,通过软件能够对金士顿的固态硬盘进行优化设置,同时软件还支持对硬盘进行固件升级,有需要的可以下载使用。金士顿固态硬盘优化工具(Kingston Toolbox)是金士顿官方出品的…

绝地求生测试服画面优化软件,绝地求生正式服设置详解 教你调校最完美的画质...

在绝地求生新版本正式上线之后,蓝洞对于绝地求生的两张地图都做了比较大的优化,令低配玩家的游戏帧数都有了比较大的提升,而此前普遍反映的掉帧问题也得到了不小的改善。不过,由于游戏自身的原因(场景较大,玩家较多&am…

小学计算机画线反思,小学《我们身边的线条》教学反思

小学《我们身边的线条》教学反思《我们身边的线条》教学反思线条课从第一册开始,一直贯穿整个小学美术课程,由简到繁,由易到难。《我们身边的线条》一课,就是要引导学生发现生活中到处都有的线条。线条是绘画造型的基本元素&#…

.net 实时通信_【WebSocket】实时多人答题对战游戏

本文公众号来源:后端技术漫谈 作者:蛮三刀把刀前言前两章教程,我们使用WebSocket的基础特性打造了一个小小聊天室,并在第二章对其进行了集群化改造。系列教程回顾:手把手搭建WebSocket多人在线聊天室【多人聊天室】Web…

磊科路由虚拟服务器设置,磊科路由器虚拟转发服务设置的方法

磊科路由器虚拟转发服务设置的方法磊科路由的虚拟 MAC 地址的分配功能实现了不同主机将流量发送给备份组中不同的路由器,但为了使备份组中的路由器能够转发主机发送的流量,还需要在路由器上创建虚拟转发器,每个虚拟转发器都对应备份组的一个虚…