? ? 忽略之前小打小鬧,這個項目算是我的第一個項目--SCNU的網絡公選課的android版本的客戶端。項目是從5月中旬開始的,中間經歷了幾個星期的復習考試時間,到現在可以說是完工了吧(或許還有寫細節要修改)。這個項目帶給我蠻多的經驗,包括android開發及其它,所以有必要寫寫總結。
? ? 項目的故事版是另外一個負責iphone版本的同學設計的,所以界面就有仿照iphone的樣子,其實正如kinfey(boss)說的,一個項目的不同平臺還是要有自己平臺的特性,所以下個項目不同平臺就會有不同的故事版。項目的具體功能是實現學生、教師、管理員都可以通過移動app實現相關操作,可以看視頻、看論壇、發帖、回復、看作業、看統計...相關總結如下:
1、故事版
? ? 所謂故事版就是項目的整個設計圖,具體包括整個界面初型。其實故事版是kinfey保留的習慣,我覺得這對于整個項目的實施時有好處的。有了故事版,就清楚了整個項目的功能邏輯,這樣不會是在開發中混亂功能需求;其次,故事版也利于整個項目技術難點的掌握。
2、一程序猿一美工
? ?這也是kinfey的工作習慣。這種模式對于項目不是很大的項目還是不錯的,因為他給程序猿夠大的自由度,能更好的把握全局。所以這個項目的android及iphone客戶端就三個人,兩個程序猿,一個美工。
3、全局觀
? ? 這次項目因為要做學生、教師、管理員三個角色都可以使用的客戶端。因為三者界面是相似的,所以一開始就像先實現學生端的,但是在后來想加例外兩個的時候,但是很多命名都是命為學生的,不符合命名規范,所以要取改,這是很煩人的活,因為很容易出錯。
4、android的多分辨率問題
? ?這也是項目中比較棘手的問題,一開始因為沒想好怎么解決,所以導致美工做了無謂的工作。其實一套圖是可以解決的:只叫美工設計一套高分辨率的圖,然后所有的圖都要按比例縮放。網院的彭老師的經驗:保持你的圖在父容器中的相對位置不變。其實就只有一句話,保持比例不變。只有這樣,圖片才不會變形。(相關可參照android:屏幕自適應)
5、關于tab內的多視圖跳轉
? ?這個也困擾了我近2天,問題是這樣的:android的tab在跳轉時下面的tab bar 會消失,其實是轉到了其它的activity,離開了tab,沒有iphone的tab的跳轉的樣子,最后的解決是使用Tabhost+Fragment ,Fragment是3.0之后的新特性,其原始目的是實現分頁的效果,如同iphone的splitView,不過可以利用它來管理Fragment。實現一開始提到的效果,具體可以參照:Android Tabhost with FragmentActivity
6、gson
? ?這次解析json的是用到gson庫。還蠻好用的,注意解析時的Model只要所需的數據就行,不用全部,一開始以為要全部都設的,一大堆get set.....
7、MVP
? ?MVC大家一定不會陌生,model view controller。而MVP的模式則是MVC的改進,view與model的交互要通過Presenter。這種模式也是與kinfey之間的“約定”。使用此模式,這個程序是層次分明的,開發感覺有點像iphone的一個View對應一個Controller的感覺。結構分明了,各種事情都會好辦很多,發現問題也快很多。相關可參照
??http://jamespeckham.com/blog/10-11-21/MVP_on_Android.aspx?里面會有提到一個示例模板,照做就行,其優雅還是在應用到項目中才會體會到。
8、異步
? ?iphone中的異步使用gcd可以實現。原以為android的要自己管理線程類,所以覺得很麻煩。后來發覺原來沒有這么沒“人道”,哈哈,android的異步是使用AsyncTask來實現的。異步是后來才加的,操作起來是比較簡單的。這有部分是MVP模式的功勞。
9、activity棧及程序退出
? ? 程序要注意返回Button和物理返回鍵的邏輯統一。這就要對activity棧有相關的理解。同樣 程序的退出也于此有關,現在實現的是通過全局變量的方式去解決,但總感覺此方法不是很優,需找其它解決方法吧。
?
程序以為有簽保密協議,是不能貼上來的,不過可以貼貼幾張圖......美工老師蠻給力的哦!
? ? ? ?
? ? ??
? ??
? ? ? ?
?
(截圖是在模擬器截的,所以tab顯示不太正常,本來是有字顯示的)
總結至此,繼續加油,MYBKN!
?
?
?
?
?
?
?
?
?
?