`
前进的路中没有月亮
  • 浏览: 20705 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

移动应用开发跨平台工具imag.js入门

阅读更多

imag.js是一种NativeScript形式的框架,它兼具 Web 应用的灵活和 Native 应用的高性能,可以使用 JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用Native抽象操作系统原生的 UI 组件,并内置一体化框架,结合 Java、.Net、php和HTML5等主流开发语言/开发环境来写XML语法。敲一次代码,能够运行在多个平台上,平台同时融合第三方原生SDK以及模板服务

虽然是原生又跨平台,iMAG的开发环境却很简单,不需要在本地电脑上安装或部署,在iMAG的官网平台imagapp.com注册一个免费帐号,马上就可以开始开发了。注册完登录,安装网站提示先在手机上安装iMAG开发版的客户端,然后打开iMAG的在线开发工具开始开发。

 

 

登录iMAG开发版客户端,在iMAG在线开发工具里编辑XML文件并保存,在手机上刷新页面就能看到效果。

 

Hello World

下面来看这个hello world的例子。iMAG框架使用的XML格式的文件来描述UI,因此代码必须符合XML格式的规范,一套代码在Android和iOS平台都能运行,而且展现出来的是原生UI效果。

 

<?xml version="1.0" encoding="utf-8"?>
<imag>
    <page>
        <title style="background:#6495ED">
            <center><label>测试App</label></center>
        </title>
        <content>
            <list type="group">
                <item>
                    <label>Hello World!</label>
                </item>
            </list>
        </content>
    </page>
</imag>

 

其中<imag>是XML文档的根节点,<page>包含整个页面的内容,是对页面的抽象和封装。上面的代码中<page>包括<title>和<content>两个部分,分别是页面的标题和内容。<title>是页面标题导航栏,有<center>、<left>、<right>三个子节点,分别用来在title上居中、居左和居右来摆放文本和按钮。<content>里有个<list>控件,用来展示“Hello World!”文本内容,list的type属性是”group”,表示是一个分组列表。

 

iMAG在Android和iOS系统上会将XML解释成各自的本地代码,比如在Android上<label>会解释成原生的TextView,而在iOS上则会解释成对应的UILabel。因此不同于HTML,在iMAG框架里文本内容只能在放在label标签里,而不能任意放置。

基本页面布局

单个页面通常由title, header, content, footer组成:


 

<header>中的内容会始终显示在屏幕上顶部,<content>是页面的主要内容,<footer>的内容在屏幕中置底显示。

列表布局

通常页面内容的布局可以通过列表控件list来实现,如下面的例子:

其中<item>是列表项,每个item的都可以有自己的布局,在<item>中,<col>表示一列,<row>表示一行。这里list有点儿类似于HTML里的table,不同的是table是先有行(tr)再有列(td),而list是先有列(col)再有行(row)。col-width样式用来设置多列的跨度,多个用逗号“,”分割,星号“*”表示宽度自适应。用list控件可以实现更复杂和细致的布局效果。

UI控件分类

UI控件分类iMAG框架的UI控件可以分为三类:内容控件、表单控件、布局控件。
内容控件:用来展示文字、图片等内容信息。
表单控件:用来接收用户输入的表单信息。
布局控件:用来控制页面内容的布局和摆放。

iMAG框架的UI控件列表:


在iMAG中通过对这些控件进行简单的组合和设置,就可以开发出各种效果的UI页面。

动态脚本

iMAG框架支持通过标准的Javascript语言来操作UI控件对象,完成动态交互功能,比如:

上面的代码会在页面初始化时触发onload事件,调用JavaScript方法弹出一个alert对话框。

这里有必要解释一下Javascript的概念,完整的JavaScript实现是由以下3个不同部分组成的:核心(ECMAScript)、文档对象模型(Document Object Model,简称DOM)、浏览器对象模型(Browser Object Model,简称BOM)。对于iMAG而言实际上只用到了ECMAScript,因为iMAG并不支持DOM和BOM。这是因为移动UI往往页面简洁元素较少,没有必要引入复杂的DOM操作,而且DOM API本身设计糟糕,对开发人员不够友好。而BOM里的Window, Navigator, History这些对象对于移动应用也不再适用,iMAG有自己的MOM(Mobile Object Model)。

iMAG中定义的MOM对象:

● $page:封装了页面UI相关的属性和方法。
● $http:封装了http操作相关的方法。
● $phone:封装了手机本地功能调用相关的方法。
● $util:封装了一些实用工具方法。

通过这些内置的JavaScript对象和方法,iMAG框架可以轻松调用手机本地功能,比如GPS定位。

上面的$phone.locate()方法会启动手机GPS定位功能,定位成功之后回调success方法,显示出经纬度信息。

iMAG框架支持动态创建UI控件,要用到$C()方法,参数是XML格式的文档,如:

 

上面的方法通过XML动态创建了一个button控件,并在页面的content里显示。

iMAG框架还可以使用Ajax请求来获取数据,如:

$http.get()方法会发起一个异步调用的Ajax请求,服务器返回的JSON数据格式如下:


 

从服务器端动态获取的JSON数据用JSON.parse()方法解析,然后进行处理和显示。因为iMAG底层是原生代码非浏览器环境,因此在iMAG框架里调用Ajax请求没有跨域问题。

使用HMTL5

虽然使用HTML5不是iMAG开发所必须的,但iMAG通过web控件的方式对HTML5进行了很好的支持和兼容,并且提供了脚本机制使得web可以同原生控件进行内外交互相互调用,这在开发网站类应用的时候会比较有用。

使用Web控件显示HTML网页的例子:

 

这里显示的table表格是标准的HTML,因为内嵌的是HTML标签,所以这里必须使用CDATA来进行标记。

适配不同屏幕

iMAG已经屏蔽了不同平台不同分辨率手机之间的差异,按照iMAG规范开发出的移动应用自动适配不同手机。对于不同平台不同分辨率的屏幕,也需要使用多套不同大小的图片去适配,这些图片只需要按照规则放到相应的服务器目录下即可,手机客户端会自动下载与之相适配的图片。

服务器端图片资源目录结构如下:

9e00003825c366ebfb9

 

Android图片资源目录是以屏幕密度(density)来区分,而iOS是以屏幕分辨率来区分。anroid和ios目录下分别有一个default目录,当具体屏幕分辨率或屏幕密度的图片找不到时会读取这个default目录中的相应的图片。

比如:<pagestyle=”background:bg.png”>对于Android屏幕分辨率为800×480的手机bg.png图片的目录查找顺序是:
/res/android/hdpi
/res/android/default
/res/default

对于iPhone5手机目录查找顺序是:
/res/ios/640×1136
/res/ios/default
/res/default

可以看到这个查找顺序是由内向外的。
Android各个屏幕密度的取值如下:

密度 ldpi mdpi hdpi xhdpi xxhdpi
密度值 dip<140 140<=dip<190 190<=dip<280 280<=dip<400 400<=dip
分辨率 240×320 320×480 480×800

480×854
720×1280 1080×1920
比例 3 4 6 8 12

可以根据比例来设计各种屏幕图片的大小:比如一个图片在hdpi上大小为48×48,那么在xhdpi上为64×64,在xxhdpi上为96×96(6:8:12)。

打包发布

App开发完成之后就是打包和发布,打包之前要先上传自己的应用图标和App启动加载图片,因为要适配不同分辨率的手机,图片要上传多套。iOS打包时还要上传证书,这样打包出来的App才能够上传到AppStore。

 

 

 

分享到:
评论

相关推荐

    imag.js|教你如何智做原生APP

    imag.js可能是JavaScript的一个库或者框架,专为创建移动应用设计,它允许开发者用JavaScript编写代码,同时能够生成接近原生性能的应用。 【描述】虽然描述部分为空,但我们可以通过博文链接...

    cut_imag.7z

    《win截屏工具cut_imag.7z详解及应用》 截屏工具在现代计算机使用中扮演着不可或缺的角色,尤其在信息分享、问题反馈以及教学演示等场景中,它提供了便捷的方式来捕捉屏幕上的图像。"cut_imag.7z"便是一款针对...

    fastICA_imag.zip_fastica图像_图像分离_混合图像分离

    独立成分分析(Independent Component Analysis, ICA)是一种统计方法,用于从多个随机变量的混合信号中恢复出...通过学习和理解这个代码,我们可以更深入地了解这一强大的统计工具,并将其应用到自己的研究或项目中。

    4_Add2Imag.zip_thisimag

    OpenCV(开源计算机视觉库)是一个强大的跨平台库,广泛用于图像处理、计算机视觉以及机器学习等领域。 【描述】"this is an opencv project" 暗示了这个项目是基于OpenCV进行开发的,可能包含了使用OpenCV库的各种...

    VC_start_up_imag.rar_MFC 启动界面_Start Up

    在Windows应用程序开发中,MFC(Microsoft Foundation Classes)是一个强大的库,它为C++程序员提供了构建Windows应用程序的框架。这个“VC_start_up_imag.rar_MFC 启动界面_Start Up”资源是一个实例,展示了如何在...

    yolov8系列--GUI for marking bounded boxes of objects in imag.zip

    在本压缩包“yolov8系列--GUI for marking bounded boxes of objects in imag.zip”中,包含的是一个用于图像目标检测的图形用户界面(GUI)工具。这个工具主要用于在图像上标注物体的边界框,是训练对象检测模型如...

    SMPTEMot.Imag.J-2014--1-60.pdf

    文章主要聚焦在两个视频色彩标准上:BT.709和BT.2020,探讨了与之相关的新技术和应用前景。 首先,BT.709标准是长期以来用于定义高清晰度视频压缩中显示设备的主色度以及Y’Cb’Cr’色彩空间转换的标准。然而,随着...

    imag.xy2.dev

    标题"imag.xy2.dev"暗示了这是一个与图像处理或者图像展示相关的开发平台或者工具,可能是为了优化和管理网页上的图像资源。这可能包括对图片进行压缩、调整大小、转换格式等功能,以提高网页加载速度和用户体验。 ...

    fastICA_imag.rar_fastica 图像_fastica图像_图像复原算法_图像盲分离、_混合图像分离

    快速独立分量分析(Fast Independent Component Analysis,简称fastICA)是一种在统计学和信号处理领域广泛应用的算法,尤其在图像处理中,它被用来进行图像盲分离和混合图像的复原。本文将深入探讨fastICA的基本...

    Android 预约订餐order.zip

    imag.js框架,虽然名字看起来像是JavaScript库,但这里可能是开发者自创的一个组件或者工具,因为没有公开的"imag.js"框架信息。它可能是一个专门为Android定制的JavaScript库,用于增强图形处理、动画效果或者交互...

    PyPI 官网下载 | imag3-1.1.0.tar.gz

    《PyPI官网下载imag3-1.1.0.tar.gz:深入解析Python图像处理库imag3》 在Python编程世界中,PyPI(Python Package Index)是开发者们...对于Python开发者而言,掌握imag3库的应用将极大地提升图像处理项目的工作效率。

    A Small Target Detection Method in Infrared Imag.pdf

    5. 自适应背景减除方法:本文提出的自适应背景减除方法,根据红外图像中小移动目标相对于天空背景高度稀疏的特征,能够直接检测红外图像序列中的小目标。通过这种方法,可以有效地检测出目标,即使目标在复杂背景下...

    blr-imag.fig.zip_去模糊_去模糊MATLAB_模糊图像恢复

    图像被模糊以后的模糊图像和去模糊后的恢复图像的对比

    简单复数计算器

    result = new Complex((a.real * b.real + a.imag * b.imag) / (b.real * b.real + b.imag * b.imag), (b.real * a.imag - a.real * b.imag) / (b.real * b.real + b.imag * b.imag)); return result; } // 除法...

    fastICA_imag.rar_fastica_fastica image_fastica 图像_fastica图像_hybr

    利于fastICA算法实现混合图像分离的源代码,给大家一个参考

    AA.rar_ONDELETTES

    antonia@imag.fr http://www-lmc.imag.fr/SMS G′en′eralit′es sur les d′ecompositions en ondelettes &#8226 Les ondelettes . Analyses multir′esolution . Algorithmes de calcul &#8226 Approximation et ...

    imag推送程序

    "imag推送程序"是针对iOS平台的一个特定应用组件,它主要负责处理应用程序内部的消息推送功能。在iOS系统中,消息推送通常通过Apple Push Notification Service (APNS)来实现,但开发者可能需要定制化推送服务或者...

    imag-popupmenu.zip

    在Android开发中,PopupMenu是一个非常实用的组件,它允许我们创建从特定视图弹出的下拉菜单。"imag-popupmenu.zip"这个压缩包显然包含了一个关于如何在Android应用中绘制多个PopupMenus的示例。下面我们将深入探讨...

    Matlab常用工具箱.docx

    7. **Image Processing Toolbox**:图像处理工具箱提供了一系列函数,用于图像处理、分析、可视化和算法开发。 8. **LMI Control Toolbox**:线性矩阵不等式工具箱用于设计和分析基于LMI的控制器和滤波器。 9. **...

Global site tag (gtag.js) - Google Analytics