重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
iMAG是一個(gè)非常簡潔高效的移動(dòng)跨平臺開發(fā)框架,開發(fā)一次可以同時(shí)兼容Android和iOS平臺,有點(diǎn)兒Web開發(fā)基礎(chǔ)就能很快上手。當(dāng)前移動(dòng)端跨平臺開發(fā)的框架有很多,但用iMAG還有一個(gè)好處,就是用iMAG開發(fā)出的App是原生的。iMAG采用XML + JavaScript(配置 + 腳本)的開發(fā)方式,它的原理是將符合iMAG開發(fā)規(guī)范的XML文件解釋成對應(yīng)的原生應(yīng)用代碼來執(zhí)行。原生跨平臺開發(fā),iMAG App具有和Native App相同的性能和用戶體驗(yàn),因此相比PhoneGap、JQuery Mobile等Web開發(fā)框架iMAG適用于對性能要求較高的情況。
為企業(yè)提供成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)營銷推廣、競價(jià)托管、品牌運(yùn)營等營銷獲客服務(wù)。創(chuàng)新互聯(lián)擁有網(wǎng)絡(luò)營銷運(yùn)營團(tuán)隊(duì),以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗(yàn)助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術(shù)實(shí)力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時(shí)降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認(rèn)可!
雖然是原生又跨平臺,iMAG的開發(fā)環(huán)境卻很簡單,不需要在本地電腦上安裝或部署,在iMAG的官網(wǎng)平臺www.imagapp.com注冊一個(gè)免費(fèi)帳號,馬上就可以開始開發(fā)了。注冊完登錄,安裝網(wǎng)站提示先在手機(jī)上安裝iMAG開發(fā)版的客戶端,然后打開iMAG的在線開發(fā)工具開始開發(fā)。
登錄iMAG開發(fā)版客戶端,在iMAG在線開發(fā)工具里編輯XML文件并保存,在手機(jī)上刷新頁面就能看到效果。
Hello World
下面來看這個(gè)hello world的例子。iMAG框架使用的XML格式的文件來描述UI,因此代碼必須符合XML格式的規(guī)范,一套代碼在Android和iOS平臺都能運(yùn)行,而且展現(xiàn)出來的是原生UI效果。
其中imag是XML文檔的根節(jié)點(diǎn),page包含整個(gè)頁面的內(nèi)容,是對頁面的抽象和封裝。上面的代碼中page包括title和content兩個(gè)部分,分別是頁面的標(biāo)題和內(nèi)容。title是頁面標(biāo)題導(dǎo)航欄,有center、left、right三個(gè)子節(jié)點(diǎn),分別用來在title上居中、居左和居右來擺放文本和按鈕。content里有個(gè)list控件,用來展示“Hello World!”文本內(nèi)容,list的type屬性是"group",表示是一個(gè)分組列表。
iMAG在Android和iOS系統(tǒng)上會將XML解釋成各自的本地代碼,比如在Android上label會解釋成原生的TextView,而在iOS上則會解釋成對應(yīng)的UILabel。因此不同于HTML,在iMAG框架里文本內(nèi)容只能在放在label標(biāo)簽里,而不能任意放置。
基本頁面布局
單個(gè)頁面通常由title, header, content, footer組成:
header中的內(nèi)容會始終顯示在屏幕上頂部,content是頁面的主要內(nèi)容,footer的內(nèi)容在屏幕中置底顯示。
列表布局
通常頁面內(nèi)容的布局可以通過列表控件list來實(shí)現(xiàn),如下面的例子:
其中item是列表項(xiàng),每個(gè)item的都可以有自己的布局,在item中,col表示一列,row表示一行。這里list有點(diǎn)兒類似于HTML里的table,不同的是table是先有行(tr)再有列(td),而list是先有列(col)再有行(row)。col-width樣式用來設(shè)置多列的跨度,多個(gè)用逗號“,”分割,星號“*”表示寬度自適應(yīng)。
用list控件可以實(shí)現(xiàn)更復(fù)雜和細(xì)致的布局效果,下面是用iMAG框架開發(fā)的微博App頁面:
UI控件分類
UI控件分類iMAG框架的UI控件可以分為三類:內(nèi)容控件、表單控件、布局控件。
內(nèi)容控件:用來展示文字、圖片等內(nèi)容信息。
表單控件:用來接收用戶輸入的表單信息。
布局控件:用來控制頁面內(nèi)容的布局和擺放。
iMAG框架的UI控件列表:
分類 | 名稱 | 標(biāo)簽 | 描述 |
---|---|---|---|
內(nèi)容控件 | 文本控件 | label | 用來顯示文本內(nèi)容 |
網(wǎng)頁控件 | web | 用來顯示網(wǎng)頁內(nèi)容 | |
按鈕控件 | button | 用來顯示按鈕 | |
圖標(biāo)控件 | icon | 用來顯示資源圖片或手機(jī)本地圖片 | |
圖片控件 | p_w_picpath | 用來顯示網(wǎng)絡(luò)圖片 | |
圖組控件 | slidep_w_picpath | 用來顯示一組圖片 | |
進(jìn)度條控件 | progress | 用來顯示進(jìn)度條 | |
日歷控件 | calendar | 用來顯示日歷,可以用于開發(fā)日程管理功能 | |
地圖控件 | bmap | 用來顯示地圖,可以在地圖上標(biāo)注地理位置信息。 | |
表單控件 | 表單控件 | form | 用來表示表單,表單項(xiàng)都包含在form標(biāo)簽內(nèi) |
隱藏域控件 | input-hidden | 用來表示表單隱藏域 | |
文本輸入框控件 | input-text | 用來輸入單行文本內(nèi)容 | |
密碼輸入框控件 | input-password | 用來輸入密碼 | |
數(shù)字輸入框控件 | input-number | 用來輸入數(shù)字 | |
郵件地址輸入框控件 | input-email | 用來輸入郵件地址 | |
日期輸入框控件 | input-date | 用來輸入日期 | |
時(shí)間輸入框控件 | input-time | 用來輸入時(shí)間 | |
搜索框控件 | input-search | 用來輸入搜索內(nèi)容 | |
文件選擇框控件 | input-file | 用來選擇文件 | |
表單提交按鈕 | input-submit | 用來點(diǎn)擊提交表單 | |
文本域控件 | textarea | 用來輸入多行文本 | |
單選框控件 | select | 用來選取單個(gè)值 | |
單選按鈕控件 | radio | 用來選取單個(gè)值 | |
單選按鈕組控件 | radios | 用來選取單個(gè)值 | |
多選按鈕控件 | checkbox | 用來選取多個(gè)值 | |
表單驗(yàn)證控件 | validation | 用來驗(yàn)證表單數(shù)據(jù) | |
布局控件 | 頁面控件 | page | 包含當(dāng)前頁面的所有內(nèi)容 |
標(biāo)題控件 | title | 用來顯示頁面標(biāo)題欄 | |
置頂控件 | header | 內(nèi)容在屏幕上置頂 | |
置底控件 | footer | 內(nèi)容在屏幕上置底 | |
內(nèi)容控件 | content | 包含頁面的內(nèi)容部分 | |
內(nèi)容組控件 | contents | 多個(gè)content 的組 | |
標(biāo)簽欄控件 | tabbar | 標(biāo)簽欄主要用于content 內(nèi)容的切換 | |
標(biāo)簽頁控件 | tabs | 以標(biāo)簽頁的形式來顯示內(nèi)容 | |
單行控件 | row | 用來顯示一行控件內(nèi)容 | |
列表控件 | list | 以列表的形式來顯示內(nèi)容 | |
網(wǎng)格控件 | grid | 以網(wǎng)格的形式來顯示內(nèi)容 | |
多屏幕控件 | screens | 以多個(gè)屏幕的形式來顯示內(nèi)容 | |
系統(tǒng)菜單控件 | menu | 用來顯示系統(tǒng)菜單 | |
彈出菜單控件 | actionmenu | 用來顯示彈出菜單 | |
導(dǎo)航菜單控件 | navmenu | 用來顯示導(dǎo)航菜單 | |
彈跳菜單控件 | pathmenu | 用來顯示彈跳菜單 | |
側(cè)滑菜單控件 | slidingmenu | 用來顯示側(cè)滑菜單 |
在iMAG中通過對這些控件進(jìn)行簡單的組合和設(shè)置,就可以開發(fā)出各種效果的UI頁面。
動(dòng)態(tài)腳本
iMAG框架支持通過標(biāo)準(zhǔn)的Javascript語言來操作UI控件對象,完成動(dòng)態(tài)交互功能,比如:
上面的代碼會在頁面初始化時(shí)觸發(fā)onload事件,調(diào)用JavaScript方法彈出一個(gè)alert對話框。
這里有必要解釋一下Javascript的概念,完整的JavaScript實(shí)現(xiàn)是由以下3個(gè)不同部分組成的:核心(ECMAScript)、文檔對象模型(Document Object Model,簡稱DOM)、瀏覽器對象模型(Browser Object Model,簡稱BOM)。對于iMAG而言實(shí)際上只用到了ECMAScript,因?yàn)閕MAG并不支持DOM和BOM。這是因?yàn)橐苿?dòng)UI往往頁面簡潔元素較少,沒有必要引入復(fù)雜的DOM操作,而且DOM API本身設(shè)計(jì)糟糕,對開發(fā)人員不夠友好。而BOM里的Window, Navigator, History這些對象對于移動(dòng)應(yīng)用也不再適用,iMAG有自己的MOM(Mobile Object Model)。
iMAG中定義的MOM對象:
● $page:封裝了頁面UI相關(guān)的屬性和方法。
● $http:封裝了http操作相關(guān)的方法。
● $phone:封裝了手機(jī)本地功能調(diào)用相關(guān)的方法。
● $util:封裝了一些實(shí)用工具方法。
通過這些內(nèi)置的JavaScript對象和方法,iMAG框架可以輕松調(diào)用手機(jī)本地功能,比如GPS定位。
$phone.locate({ provider: 'gps', success: function(location) { alert('GPS定位成功,經(jīng)緯度:' + location.latitude + ', ' + location.longitude); }, error: function() { alert('GPS定位失敗!'); } });
上面的$phone.locate()方法會啟動(dòng)手機(jī)GPS定位功能,定位成功之后回調(diào)success方法,顯示出經(jīng)緯度信息。
iMAG框架支持動(dòng)態(tài)創(chuàng)建UI控件,要用到$C()方法,參數(shù)是XML格式的文檔,如:
var button = $C(''); $('content').add(button);
上面的方法通過XML動(dòng)態(tài)創(chuàng)建了一個(gè)button控件,并在頁面的content里顯示。
iMAG框架還可以使用Ajax請求來獲取數(shù)據(jù),如:
$http.get('http://www.imagapp.com/download/data/http_json_ret.jsp', function(json) { var obj = JSON.parse(json); $('test_label').text = obj.text; });
密度 | 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ù)比例來設(shè)計(jì)各種屏幕圖片的大小:比如一個(gè)圖片在hdpi上大小為48×48,那么在xhdpi上為64x64,在xxhdpi上為96x96(6:8:12)。
打包發(fā)布
App開發(fā)完成之后就是打包和發(fā)布,打包之前要先上傳自己的應(yīng)用圖標(biāo)和App啟動(dòng)加載圖片,因?yàn)橐m配不同分辨率的手機(jī),圖片要上傳多套。iOS打包時(shí)還要上傳證書,這樣打包出來的App才能夠上傳到AppStore。
iMAG官網(wǎng)地址:http://www.imagapp.com