差沙的密碼 -- SSHWSFC's code
閱讀本Blog請自備塑料袋一只 |
經(jīng)過兩天的努力,終于在Android上面跑起來MSN了。現(xiàn)在實(shí)現(xiàn)了基本的聊天功能,打算陸續(xù)的把其他功能完善,萬事開頭難,相信以后的工作會(huì)很順利。
Gtalk的功能由于有官方支持,早就弄了跟這個(gè)差不多的版本。
另外,這個(gè)軟件目前是以插件的形式開發(fā),多一個(gè)協(xié)議就是多一個(gè)apk,實(shí)現(xiàn)一些intent即可。官方的IM包里面有很多支持,可惜文檔沒有提及。
今天看到Air1.0和Ext2.0.2的發(fā)布消息,很是興奮,要知道Ext的每個(gè)版本升級(jí)都是很實(shí)惠的。
Ext2.0.2的這次升級(jí)主要是針對Air的支持,看來他們的關(guān)系是越來越近了,我也借機(jī)小試了一下Air。
簡單說說Air的開發(fā)過程:
1.先要下載jre 和 airSDK
2.jre就不說了,airSDK也是簡單的解壓一下便可。
可以看看SDK下面的bin目錄,一共倆文件,一個(gè)adl一個(gè)adt,adl是用來測試的,adt使用編輯發(fā)布的(ADT怎么讓我想起來android了)
3.創(chuàng)建一個(gè)普通的目錄作為項(xiàng)目目錄。OK,可以寫頁面了。就是寫html js flash什么的,都可。
4.編寫一個(gè)xml文件,名字不限。內(nèi)容嘛~~~~
看看這個(gè)文件,airSDK\templates\descriptor-template.xml 里面有詳細(xì)的解釋,拿過來改改即可,給一個(gè)例子:
<?xml version="1.0" encoding="UTF-8"?> <application xmlns="http://ns.adobe.com/air/application/1.0.M6"> <id>examples.html.HelloWorld</id> <version>0.1</version> <filename>HelloWorld</filename> <initialWindow> <content>HelloWorld.html</content> <visible>true</visible> <width>400</width> <height>200</height> </initialWindow> </application>
5.運(yùn)行airSDK\bin\adl.exe (那個(gè)創(chuàng)建的xml文件名),運(yùn)行即可。
PS:我一般用eclipse來編輯,用外部命令的工具來運(yùn)行adl,很方便。
簡單的說了一下Air的開發(fā)方法后,我們來簡單的看一下Ext都對Air提供了什么支持。
1.Ext.air.FileProvider
Ext提供狀態(tài)保存的功能,在對AIr的支持中Ext實(shí)現(xiàn)了一個(gè)Provider,這個(gè)Provider把狀態(tài)保存在本地目錄的一個(gè)文件里。使用方法如下:
// Initialize the state provider Ext.state.Manager.setProvider(new Ext.air.FileProvider({ file: 'ext.state', // if first time running defaultState : { mainWindow : { width:400, height:200, x:10, y:10 } } }));
制定Provider為Ext.air.FileProvider即可,這個(gè)操作一般在onReady里面執(zhí)行。當(dāng)然需要你先創(chuàng)建一個(gè)ext.state文本文件,在程序根目錄下即可。這樣ext的應(yīng)用運(yùn)行時(shí),窗口等大小的調(diào)整,位置之類的調(diào)整都能保存下來了。很方便。
這里包裝的Air代碼主要是:
air.File.applicationStorageDirectory.resolvePath
air.FileStream
等
2.Ext.air.NativeWindow
Ext可以調(diào)用Air實(shí)現(xiàn)Native的窗口。使用方法如下:
var win = new Ext.air.NativeWindow({ id: 'mainWindow', instance: window.nativeWindow, minimizeToTray: true, trayIcon: 'ext-air/resources/icons/extlogo16.png', trayTip: 'Simple Tasks', trayMenu : [{ text: 'Open Simple Tasks', handler: function(){ win.activate(); } }, '-', { text: 'Exit', handler: function(){ air.NativeApplication.nativeApplication.exit(); } }] });
我們可以看到,其中最吸引人的是系統(tǒng)托盤的功能,可以方便的指定系統(tǒng)托盤的各種屬性。
這里包裝的主要是:
window.runtime.flash.html.HTMLLoader.createRootWindow
air.Screen.mainScreen.visibleBounds
3.Ext.sql.Connection
這個(gè)是重頭戲,對db的支持,我們知道Air的DB是采用sqlite3來實(shí)現(xiàn)的。Ext封裝了Air的db操作,簡化統(tǒng)一了一些,而且提供了Store的支持,非常強(qiáng)大:
讓我們簡單看一下用法:
首先取得connection
var conn = Ext.sql.Connection.getInstance();
而后打開db
conn.open('ext.db');//這里的文件如果不存在會(huì)自動(dòng)創(chuàng)建
創(chuàng)建Table
conn.createTable({ name: 'user', key: 'userId', fields: [ {name: 'userId', type:'string'}, {name: 'name', type:'string'}, {name: 'pwd', type:'string'}, {name: 'email', type:'string'} ] });
取得一個(gè)Table
var userDao = conn.getTable('user','userId');
查詢
var users = userDao.select();//這里可以寫條件式
添加
var newuser = { userId : 'sshw', name : 'sshwsfc', pwd : 'test', email : 'sshwsfc@gmail.com' } userDao.insert(newuser);
感覺使用上還是蠻不錯(cuò)的,大家可以一點(diǎn)點(diǎn)試試看。
值得一提的是,在源碼中發(fā)現(xiàn)Connection這里設(shè)計(jì)成了工廠的模式,Connection是一個(gè)偽接口,實(shí)現(xiàn)除了Air的還有GoogleGear的,會(huì)根據(jù)所處環(huán)境選擇,灰常的好。
功能還在研究中,有心得了一點(diǎn)點(diǎn)給大家分享,
PS:打算搞一個(gè)iphone的信息管理軟件練練手。反正都是sqlite的
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 31 | 1 | 2 | |||
3 | 4 | 5 | 6 | 7 | 8 | 9 | |||
10 | 11 | 12 | 13 | 14 | 15 | 16 | |||
17 | 18 | 19 | 20 | 21 | 22 | 23 | |||
24 | 25 | 26 | 27 | 28 | 29 | 1 | |||
2 | 3 | 4 | 5 | 6 | 7 | 8 |