亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Android > 正文

跨平臺移動WEB應用開發(fā)框架iMAG入門教程

2020-04-11 11:49:08
字體:
來源:轉載
供稿:網(wǎng)友

iMAG是一個非常簡潔高效的移動跨平臺開發(fā)框架,開發(fā)一次可以同時兼容Android和iOS平臺,有點兒Web開發(fā)基礎就能很快上手。當前移動端跨平臺開發(fā)的框架有很多,但用iMAG還有一個好處,就是用iMAG開發(fā)出的App是原生的。iMAG采用XML + JavaScript(配置 + 腳本)的開發(fā)方式,它的原理是將符合iMAG開發(fā)規(guī)范的XML文件解釋成對應的原生應用代碼來執(zhí)行。原生跨平臺開發(fā),iMAG App具有和Native App相同的性能和用戶體驗,因此相比PhoneGap、JQuery Mobile等Web開發(fā)框架iMAG適用于對性能要求較高的情況。

雖然是原生又跨平臺,iMAG的開發(fā)環(huán)境卻很簡單,不需要在本地電腦上安裝或部署,在iMAG的官網(wǎng)平臺注冊一個免費帳號,馬上就可以開始開發(fā)了。注冊完登錄,安裝網(wǎng)站提示先在手機上安裝iMAG開發(fā)版的客戶端,然后打開iMAG的在線開發(fā)工具開始開發(fā)。


登錄iMAG開發(fā)版客戶端,在iMAG在線開發(fā)工具里編輯XML文件并保存,在手機上刷新頁面就能看到效果。

Hello World

下面來看這個hello world的例子。iMAG框架使用的XML格式的文件來描述UI,因此代碼必須符合XML格式的規(guī)范,一套代碼在Android和iOS平臺都能運行,而且展現(xiàn)出來的是原生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文檔的根節(jié)點,<page>包含整個頁面的內容,是對頁面的抽象和封裝。上面的代碼中<page>包括<title>和<content>兩個部分,分別是頁面的標題和內容。<title>是頁面標題導航欄,有<center>、<left>、<right>三個子節(jié)點,分別用來在title上居中、居左和居右來擺放文本和按鈕。<content>里有個<list>控件,用來展示“Hello World!”文本內容,list的type屬性是"group",表示是一個分組列表。

iMAG在Android和iOS系統(tǒng)上會將XML解釋成各自的本地代碼,比如在Android上<label>會解釋成原生的TextView,而在iOS上則會解釋成對應的UILabel。因此不同于HTML,在iMAG框架里文本內容只能在放在label標簽里,而不能任意放置。

基本頁面布局

單個頁面通常由title, header, content, footer組成:

<?xml version="1.0" encoding="utf-8"?>  <imag>    <page>      <title style="background:#999999">        <center><label>標題</label></center>      </title>      <header style="background:#cccccc;padding:10">        <label>置頂</label>      </header>      <content style="background:white">        <label>內容</label>      </content>      <footer style="background:#cccccc;padding:10">        <label>置底</label>      </footer>    </page>  </imag>  

<header>中的內容會始終顯示在屏幕上頂部,<content>是頁面的主要內容,<footer>的內容在屏幕中置底顯示。

列表布局

通常頁面內容的布局可以通過列表控件list來實現(xiàn),如下面的例子:

其中<item>是列表項,每個item的都可以有自己的布局,在<item>中,<col>表示一列,<row>表示一行。這里list有點兒類似于HTML里的table,不同的是table是先有行(tr)再有列(td),而list是先有列(col)再有行(row)。col-width樣式用來設置多列的跨度,多個用逗號“,”分割,星號“*”表示寬度自適應。

用list控件可以實現(xiàn)更復雜和細致的布局效果,下面是用iMAG框架開發(fā)的微博App頁面:

UI控件分類

UI控件分類iMAG框架的UI控件可以分為三類:內容控件、表單控件、布局控件。
內容控件:用來展示文字、圖片等內容信息。
表單控件:用來接收用戶輸入的表單信息。
布局控件:用來控制頁面內容的布局和擺放。

iMAG框架的UI控件列表:

分類 名稱 標簽 描述
內容控件 文本控件 label 用來顯示文本內容
網(wǎng)頁控件 web 用來顯示網(wǎng)頁內容
按鈕控件 button 用來顯示按鈕
圖標控件 icon 用來顯示資源圖片或手機本地圖片
圖片控件 image 用來顯示網(wǎng)絡圖片
圖組控件 slideimage 用來顯示一組圖片
進度條控件 progress 用來顯示進度條
日歷控件 calendar 用來顯示日歷,可以用于開發(fā)日程管理功能
地圖控件 bmap 用來顯示地圖,可以在地圖上標注地理位置信息。
表單控件 表單控件 form 用來表示表單,表單項都包含在form標簽內
隱藏域控件 input-hidden 用來表示表單隱藏域
文本輸入框控件 input-text 用來輸入單行文本內容
密碼輸入框控件 input-password 用來輸入密碼
數(shù)字輸入框控件 input-number 用來輸入數(shù)字
郵件地址輸入框控件 input-email 用來輸入郵件地址
日期輸入框控件 input-date 用來輸入日期
時間輸入框控件 input-time 用來輸入時間
搜索框控件 input-search 用來輸入搜索內容
文件選擇框控件 input-file 用來選擇文件
表單提交按鈕 input-submit 用來點擊提交表單
文本域控件 textarea 用來輸入多行文本
單選框控件 select 用來選取單個值
單選按鈕控件 radio 用來選取單個值
單選按鈕組控件 radios 用來選取單個值
多選按鈕控件 checkbox 用來選取多個值
表單驗證控件 validation 用來驗證表單數(shù)據(jù)
布局控件 頁面控件 page 包含當前頁面的所有內容
標題控件 title 用來顯示頁面標題欄
置頂控件 header 內容在屏幕上置頂
置底控件 footer 內容在屏幕上置底
內容控件 content 包含頁面的內容部分
內容組控件 contents 多個content的組
標簽欄控件 tabbar 標簽欄主要用于content內容的切換
標簽頁控件 tabs 以標簽頁的形式來顯示內容
單行控件 row 用來顯示一行控件內容
列表控件 list 以列表的形式來顯示內容
網(wǎng)格控件 grid 以網(wǎng)格的形式來顯示內容
多屏幕控件 screens 以多個屏幕的形式來顯示內容
系統(tǒng)菜單控件 menu 用來顯示系統(tǒng)菜單
彈出菜單控件 actionmenu 用來顯示彈出菜單
導航菜單控件 navmenu 用來顯示導航菜單
彈跳菜單控件 pathmenu 用來顯示彈跳菜單
側滑菜單控件 slidingmenu 用來顯示側滑菜單

動態(tài)腳本

iMAG框架支持通過標準的Javascript語言來操作UI控件對象,完成動態(tài)交互功能,比如:

<?xml version="1.0" encoding="utf-8"?><imag> <script> <![CDATA[  $page.onload = function() {    alert('hello world!');  } ]]> </script> <page> </page></imag>

上面的代碼會在頁面初始化時觸發(fā)onload事件,調用JavaScript方法彈出一個alert對話框。

這里有必要解釋一下Javascript的概念,完整的JavaScript實現(xiàn)是由以下3個不同部分組成的:核心(ECMAScript)、文檔對象模型(Document Object Model,簡稱DOM)、瀏覽器對象模型(Browser Object Model,簡稱BOM)。對于iMAG而言實際上只用到了ECMAScript,因為iMAG并不支持DOM和BOM。這是因為移動UI往往頁面簡潔元素較少,沒有必要引入復雜的DOM操作,而且DOM API本身設計糟糕,對開發(fā)人員不夠友好。而BOM里的Window, Navigator, History這些對象對于移動應用也不再適用,iMAG有自己的MOM(Mobile Object Model)。

 iMAG中定義的MOM對象:

● $page:封裝了頁面UI相關的屬性和方法。
● $http:封裝了http操作相關的方法。
● $phone:封裝了手機本地功能調用相關的方法。
● $util:封裝了一些實用工具方法。

通過這些內置的JavaScript對象和方法,iMAG框架可以輕松調用手機本地功能,比如GPS定位。

$phone.locate({  provider: 'gps',  success: function(location) {    alert('GPS定位成功,經(jīng)緯度:' + location.latitude + ', ' + location.longitude);  },  error: function() {    alert('GPS定位失?。?);  }});

上面的$phone.locate()方法會啟動手機GPS定位功能,定位成功之后回調success方法,顯示出經(jīng)緯度信息。

iMAG框架支持動態(tài)創(chuàng)建UI控件,要用到$C()方法,參數(shù)是XML格式的文檔,如:

復制代碼 代碼如下:

var button = $C('<button id="test_button">按鈕</button>');
$('content').add(button);

上面的方法通過XML動態(tài)創(chuàng)建了一個button控件,并在頁面的content里顯示。

iMAG框架還可以使用Ajax請求來獲取數(shù)據(jù),如:

復制代碼 代碼如下:

$http.get('//www.49028c.com/download/data/http_json_ret.jsp', function(json) {
    var obj = JSON.parse(json);
    $('test_label').text = obj.text;
});

$http.get()方法會發(fā)起一個異步調用的Ajax請求,服務器返回的JSON數(shù)據(jù)格式如下:
復制代碼 代碼如下:

{text:'<font color="blue">JSON數(shù)據(jù)</font>'}

從服務器端動態(tài)獲取的JSON數(shù)據(jù)用JSON.parse()方法解析,然后進行處理和顯示。因為iMAG底層是原生代碼非瀏覽器環(huán)境,因此在iMAG框架里調用Ajax請求沒有跨域問題。

使用HMTL5

雖然使用HTML5不是iMAG開發(fā)所必須的,但iMAG通過web控件的方式對HTML5進行了很好的支持和兼容,并且提供了腳本機制使得web可以同原生控件進行內外交互相互調用,這在開發(fā)網(wǎng)站類應用的時候會比較有用。

使用Web控件顯示HTML網(wǎng)頁的例子:

<?xml version="1.0" encoding="utf-8"?><imag>  <page style="background:white">    <title>      <center>        <label>網(wǎng)頁控件</label>      </center>    </title>    <content>		<web>		<![CDATA[		 <style type="text/css">		 table.altrowstable {		   font-family: verdana,arial,sans-serif;		   font-size:11px;		   color:#333333;		   border-width: 1px;		   border-color: #a9c6c9;		   border-collapse: collapse;		 }		  		 table.altrowstable th {		   border-width: 1px;		   padding: 8px;		   border-style: solid;		   border-color: #a9c6c9;		 }		  		 table.altrowstable td {		   border-width: 1px;		   padding: 8px;		   border-style: solid;		   border-color: #a9c6c9;		 }		  		 .oddrowcolor {		   background-color:#d4e3e5;		 }		  		 .evenrowcolor {		   background-color:#c3dde0;		 }		 </style>		 <table class="altrowstable" id="alternatecolor">		   <tr class="evenrowcolor">		     <th>Info Header 1</th><th>Info Header 2</th><th>Info Header 3</th>		   </tr>		   <tr class="oddrowcolor">		     <td<Text 1A</td><td>Text 1B</td><td>Text 1C</td>		   </tr>		   <tr class="evenrowcolor">		     <td>Text 2A</td><td>Text 2B</td><td>Text 2C</td>		   </tr>		   <tr class="oddrowcolor">		     <td<Text 3A</td><td>Text 3B</td><td>Text 3C</td>		   </tr>		   <tr class="evenrowcolor">		     <td>Text 4A</td><td>Text 4B</td><td>Text 4C</td>		   </tr>		   <tr class="oddrowcolor">		     <td>Text 5A</td><td>Text 5B</td><td>Text 5C</td>		   </tr>		 </table>		]]>		</web>    </content>  </page></imag>

這里顯示的table表格是標準的HTML,因為內嵌的是HTML標簽,所以這里必須使用CDATA來進行標記。

適配不同屏幕

iMAG已經(jīng)屏蔽了不同平臺不同分辨率手機之間的差異,按照iMAG規(guī)范開發(fā)出的移動應用自動適配不同手機。對于不同平臺不同分辨率的屏幕,也需要使用多套不同大小的圖片去適配,這些圖片只需要按照規(guī)則放到相應的服務器目錄下即可,手機客戶端會自動下載與之相適配的圖片。

服務器端圖片資源目錄結構如下:

Android圖片資源目錄是以屏幕密度(density)來區(qū)分,而iOS是以屏幕分辨率來區(qū)分。anroid和ios目錄下分別有一個default目錄,當具體屏幕分辨率或屏幕密度的圖片找不到時會讀取這個default目錄中的相應的圖片。

比如:<page>對于Android屏幕分辨率為800x480的手機bg.png圖片的目錄查找順序是:

復制代碼 代碼如下:
/res/android/hdpi
/res/android/default
/res/default

對于iPhone5手機目錄查找順序是:

復制代碼 代碼如下:
/res/ios/640x1136
/res/ios/default
/res/default

可以看到這個查找順序是由內向外的。
Android各個屏幕密度的取值如下:

密度 ldpi mdpi hdpi xhdpi xxhdpi
密度值 dip<140 140<=dip<190 190<=dip<280 280<=dip<400 400<=dip
分辨率 240x320 320x480 480x800
480x854
720x1280 1080x1920
比例 3 4 6 8 12

可以根據(jù)比例來設計各種屏幕圖片的大小:比如一個圖片在hdpi上大小為48×48,那么在xhdpi上為64x64,在xxhdpi上為96x96(6:8:12)。

打包發(fā)布

App開發(fā)完成之后就是打包和發(fā)布,打包之前要先上傳自己的應用圖標和App啟動加載圖片,因為要適配不同分辨率的手機,圖片要上傳多套。iOS打包時還要上傳證書,這樣打包出來的App才能夠上傳到AppStore。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
欧美一区高清| 蜜桃视频在线观看播放| 国产乡下妇女做爰视频| 精品99久久久久成人网站免费| 无码国产69精品久久久久同性| 日本一道高清一区二区三区| 91福利电影| 亚洲视频在线不卡| 国产内射老熟女aaaa| 成人免费网站观看| 国产情侣久久久久aⅴ免费| 欧亚在线中文字幕免费| 欧美日韩国产第一页| 三级黄色免费观看| 中文一区一区三区高中清不卡免费| 国产一区欧美一区| 日本深夜福利视频| 久久香蕉网站| 国产精品suv一区二区三区| 81精品国产乱码久久久久久| 伊人av电影| 日韩pacopacomama| 欧美黄色一级视频| 亚洲av永久纯肉无码精品动漫| 日本一区二区三区高清不卡| 理论片在线观看理伦片| 精品粉嫩aⅴ一区二区三区四区| 欧美一区二区福利在线| 欧美激情一级精品国产| 白浆在线视频| 欧美成人免费高清视频| 久久久久久久久99| 天天摸天天干| www.se五月| 欧美精品福利在线| 欧产日产国产精品98| 中文字幕一区二区三区精华液| 亚洲最大福利视频网站| 四虎成人在线观看| 日本调教视频在线观看| 美女av一区二区三区| 国产女主播一区二区| 欧美久久久久久久久| 国产在视频线精品视频| 日本欧美在线观看| 亚洲网站在线| 任你弄精品视频免费观看| 国产视频三区| 久久精品一区二区不卡| 最近中文字幕mv免费高清电影| 亚洲品质视频自拍网| 国产亚洲精品精品精品| 中文国产亚洲喷潮| 欧美xxxxx少妇| 亚洲欧美国产制服动漫| 国产午夜免费福利| 午夜在线播放| 操碰在线免费| av中文一区二区三区| 欧美gay囗交囗交| 成人毛片老司机大片| 国产美女自慰在线观看| 色综合色综合色综合| 国产欧美一区二区三区在线看| 国产精品视频流白浆免费视频| 日韩一级特黄毛片| 久久久久亚洲av无码麻豆| 国产成人免费视| 国产日韩三区| 《视频一区视频二区| 激情欧美日韩一区| 欧美日韩不卡视频| 男人添女人下面免费视频| 天天干天天玩天天操| 婷婷久久国产对白刺激五月99| 日本 国产 欧美色综合| 中文字幕亚洲一区二区三区五十路| 日韩精品专区在线影院重磅| 久9re热视频这里只有精品| 天天综合天天| 日韩一区二区三区高清免费看看| 四虎影院一区二区| 人人草在线视频| 久久久9999久久精品小说| 国产精品久久久久毛片大屁完整版| 亚洲缚视频在线观看| 日本小视频在线免费观看| 欧美一区二区三区艳史| 欧美黑人又粗又大又爽免费| www.五月天激情| 异国色恋浪漫潭| 精品magnet| 欧美午夜一区二区三区| 亚洲午夜久久久影院伊人| 九九精品在线视频| a√在线中文网新版址在线| 草莓福利社区在线| 欧美视频久久| 激情欧美国产欧美| 国产精品久久免费视频| 电影一区二区三区| 日本精品在线观看视频| 久久久久久91香蕉国产| 日本一区二区免费高清视频| 精品国产91九色蝌蚪| 久久综合色综合| 成人夜色视频网站在线观看| 国产成a人亚洲| 国产cdts系列另类在线观看| 综合久草视频| 亚洲精品国产首次亮相| heyzo中文字幕在线| 国产精品久久久久久久电影| 99精品在线观看视频| 在线一区日本视频| 男人的天堂成人在线| 欧美三级电影一区二区三区| 亚洲另类春色国产| 亚洲国产综合人成综合网站| 日韩视频免费中文字幕| 一本一道dvd在线观看免费视频| 色噜噜噜噜噜噜| 九九精品在线播放| 成人欧美一区二区三区黑人免费| 久久久久久成人精品| 超碰在线观看免费| 亚洲欧美日韩一区二区三区在线观看| 最新精品国产| 欧美家庭影院| 亚洲免费国产视频| 国产欧美日韩免费观看| 亚洲欧洲日本mm| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 福利社在线免费视频| 91在线观看免费观看| 国产乱码精品一区二区三区四区| 国产精品水嫩水嫩| 一本久道久久综合无码中文| 欧美顶级xxxxbbbb| 日韩精品一区二区三区在线视频| 国产成人麻豆免费观看| 另类av一区二区| 91黄色在线| 精精国产xxxx视频在线| 7777在线视频| 亚洲天堂视频网站| 免费一级欧美片在线观看网站| 黄网站app在线观看下载视频大全官网| 国产成人在线视频播放| 亚洲午夜精品一区二区三区他趣| 51精品国产黑色丝袜高跟鞋| 日本免费观看网站| 三级在线视频| 91视频国产精品| 美女黄网久久| 欧美日韩精品亚洲精品| 精品美女www爽爽爽视频| 91精品国产高清一区二区三区蜜臀| 国产一区二区福利| 久久国产免费看| 中文字幕在线观看日| 91中文在线观看| 国产日韩欧美一区二区三区四区| 99精品女人在线观看免费视频| 高h视频在线观看| 国产在线视频欧美一区| 日韩av地址| 中文字幕亚洲在线| 色影视在线观看| 日本一区不卡| 人妻激情另类乱人伦人妻| 美国成人xxx| 国内在线精品| 国精产品乱码一区一区三区四区| 婷婷在线观看视频| 国产欧美日韩免费看aⅴ视频| 黑人巨大40厘米重口ysn| 11024精品一区二区三区日韩| 超碰97在线资源站| 国产熟女一区二区三区五月婷| 国产成人无码精品久在线观看| 精品久久久久国产| 欧美激情视频播放| 狠狠躁天天躁日日躁欧美| 亚洲综合自拍一区| 久久精品国产99国产精品澳门| 这里只有精品视频在线观看| 欧美日韩一区二区在线视频| 中文字幕亚洲高清| 都市激情久久| 性欧美亚洲xxxx乳在线观看| 久久人妻无码一区二区| 欧美综合天天夜夜久久| 成人免费黄色av| www.超碰97| 林心如三级全黄裸体| 全色精品综合影院| 日本一区免费在线观看| 精品无人乱码| free性欧美69巨大| 男人操女人视频网站| 亚洲高清在线精品| 3atv一区二区三区| 欧美成人猛片aaaaaaa| 免费高清av| 美女视频网站久久| 99精品视频免费在线观看| 91精品国产91久久久久久不卡| 亚洲免费不卡视频| 男女午夜激情视频| 国产乱人伦精品一区二区| 希岛爱理av一区二区三区| av一区二区在线看| 国产精品视频无码| 亚洲国产日产av| 国产精品99精品久久免费| 精品国内二区三区| 亚洲精品国产一区二区三区四区在线| 国色天香一二三期区别大象| 日韩久久免费电影| 91丨九色丨丰满| 国产第一页精品| 一本一道久久a久久精品综合蜜臀| 日韩精品免费综合视频在线播放| 久久国产欧美日韩精品| 性一爱一乱一交一视频| 国产精品sss在线观看av| 国产成人综合在线| 久久亚洲国产成人| 国产成人手机在线| 日本视频免费在线| 亚洲成人国产精品| 欧美色欧美亚洲另类二区| 黄色在线网站| 精品视频999| 国产h在线观看| 岛国精品一区二区| 97久久精品| 91亚洲精华国产精华| 免费看啪啪网站| 欧美日韩亚洲网| 亚洲国产日韩成人综合天堂| 日韩不卡一二三区| 自拍欧美日韩| 国产精品无码专区| 亚洲第一精品福利| 国产精品成人观看视频国产奇米| 成人免费视频播放| 久久综合九色综合欧美狠狠| 4444欧美成人kkkk| 久久99精品久久久久久野外| 国内高清免费在线视频| 亚洲国产一区自拍| 国产馆在线观看| 日韩av在线导航| www.超碰97| 免费视频久久| 中文字幕视频在线免费观看| 亚洲精品四区| 99re视频在线播放| 国产国语刺激对白av不卡| 永久免费av网站| 亚洲天堂网站| 国产欧美日韩第一页| 波多野结衣在线影院| 国内自拍视频在线播放| 亚洲乱码国产乱码精品精大量| 欧美午夜精品理论片a级按摩| 国产精品99久久久| 国产精品露脸av在线| 男人操女人视频网站| 激情亚洲另类图片区小说区| 日本黄色福利视频| 国产乱码精品一区二区三区中文| 亚洲国产欧美日韩在线观看第一区| 一本色道综合亚洲| 欧美日韩日日夜夜| 成人妖精视频yjsp地址| 无码人妻精品一区二区50| 亚洲国产精品电影在线观看| 欧美一区日本一区韩国一区| 四川一级毛毛片| 翔田千里亚洲一二三区| 中文字幕 在线观看| 性欧美xxx69hd高清| 欧美日本三级| 国产女人高潮的av毛片| 最近免费观看高清韩国日本大全| 国产精品99久久99久久久| 天堂v视频永久在线播放| 精品人妻伦一区二区三区久久| 黑人巨大精品欧美一区二区奶水| 日本不卡免费一区| 国产亚洲一区二区三区在线观看| 自拍偷拍校园春色| 真实的国产乱xxxx在线91| 国产精品入口尤物| 亚洲你懂的在线视频| 国产精品免费观看| 99热这里只有精品66| 欧美色网一区| 国产成人自拍视频在线| 欧美精品videofree1080p| 欧美日韩国产一中文字不卡| 国产精品一在线观看| 成人日韩视频| 一区二区三区免费在线| 一级特黄特色的免费大片| av电影资源| 久久国产免费观看| 亚洲精品国产精品国自产| 桃花岛tv亚洲品质| 欧美三级韩国三级日本三斤| 欧美一区二区精品在线| 亚洲免费网站| 蜜桃av在线播放| 日韩成人在线视频| 久久夜精品va视频免费观看| 日韩精品一区二区三区外面| 国产a级网站| 国产日韩综合| 国产精品高潮呻吟久久av野狼| 久久夜色精品国产亚洲aⅴ| 香蕉久久a毛片| 女人18毛片毛片毛片毛片区二| 黄色国产精品视频| 91麻豆精品国产综合久久久| 国产免费人做人爱午夜视频|