【Wifi簽到APP】大學生的一次完整的中小型項目的編碼經歷

效果圖

    

  

經歷

大一的時候報的一個院級課題,做課題一般得自學。大一時其實大家因爲知識範圍原因都不知道怎麼做,包括在討論APP的設計想法時往往說的也比較泛,或者存在眼高手低的情況。基本上很長時間,大家都停留在自學和摸索的迷茫過程。

我自己自費買了個差不多500塊的課程(關於開發即時通訊的APP),其實我買課程也不完全是爲了項目,畢竟我也想學習到不一樣的東西。雖然在寒假大概把這個課程學了一遍,雖然中間遇到不少麻煩,但還是跟着視頻把視頻中的項目做了一遍。我並不安利大家。但說實話,我認爲這個課程對代碼的設計和封裝真的太強了,新式的MVP的編碼模式(各種接口設計和監聽回調)也讓我大開眼界。所以說對我來說這個課程是比較難的,啃一遍不足以吃透。

問題是學完這個網課,我該如何做我們課題的APP呢?如果按照網課中採用MVP的編碼方式,顯然我的水平不夠,同時隊友肯定也沒接觸過。其實這個時候,我們組對我們自己APP的設計和模樣還不是很清晰的。直至好像是今年的3月底吧(如果沒記錯),我們開了個語音會議。這次負責客戶端的組員提出了一個簡潔卻又符合我們項目課題的想法。同時他的想法也跟我之前的想法有一點契合。這是一個轉折點。

課題是基於Wifi的簽到APP,我們的簡單想法是。用戶發起簽到時需要選擇一個羣,那麼該羣內的所有成員需要在指定時間內出席這次簽到,但是要想出席成功,必須要跟發起人處於同一Wifi下。關於這個判定如何實現,我並不負責,因爲這是負責客戶端的組員去做的。我要做的是,負責服務端的接口開發,並做APP服務端的部署。

其實說來也巧。上學期剛學完Linux,這學期要學Android。這或許對我們來說也是一種幫助。2月底,學校佈置了這學期的Java初級軟件實作。這學期課程的確多,而且我相信像PHP和Android這兩門課肯定得佈置期末作品,而做一個期末作品肯定是需要花費比考試更大的精力和時間,甚至遇到更多麻煩。所以2月底3月份,我基本都在忙着做這個軟件實作。做完後不久,也就是3月底,我們組開了那次語音會議。之後,我也在忙着做APP的服務端。

語音會議上基本確定了APP的基本功能。之後,我們前後端也沒太多交流。服務端方面大概用到的接口都考慮了一遍,客戶端先做着界面的樣子和交互先。服務端的編碼,我大概忙了大半個月吧。基本完成時好像已經是4月20號左右了。當時距離結題已經很近了。接下來,我就是跟負責客戶端的同學進行溝通對接了,我並不負責他們那部分的工作,頂多是在APP請求服務端接口方面跟他們交流。成品出來了,我覺得客戶端界面還行,主要功能完成了,但不是很精緻。只能說總體上基本上滿足要求。

由於客戶端方面的我並未參與,同時剛好這學期有Android課程,所以我打算利用項目的服務端,再做個更好的Android客戶端,作爲期末作品。前面也提到了,期末可能各種大作業,所以我很早就開始了這項工作。在4月底到5月20多號,這段時間我的主要重心都在這上面。做完後,在叫同學幫忙測試之後,有必要寫一篇博客記錄一下,即使還有一堆作業被我拖着(我吐了,,,(ง •_•)ง)。。

客戶端介紹

截圖已經貼了,我來說一些不一樣的亮點。比我之前組員做的客戶端體驗更好一點。

這個客戶端的編碼我沒有采用網課學習到的MVP模式(主要是沒學到家,沒啃透)。對於這個項目的客戶端,隨緣編碼加上自己做些簡單的封裝應該也能做。但後期我發現了,這樣代碼有些許冗餘,APP再複雜一點後期就真的很難受了。

亮點:

1、界面簡潔,但不失精緻

比如說:按鈕的點擊效果,item的點擊效果,主頁頂部狀態欄的浸入式效果,註冊頁面彈出的BottonSheetDialog,還有些地方加了些許動畫效果。雖然不算的是Material Design,但絕對可以說的上精緻!

2、功能上更注重細節

比如說,註冊頁面會監聽你輸入手機號的每個字符,只有輸入正確格式的手機號才允許點擊發送驗證碼。

還有個人搜索記錄界面,這個從界面到功能實現,我花了將近一天的時間。

更一個亮點是,對於數據顯示的更新,我並不是刷新整個界面來實現,而是通過數據監聽回調的方式實現動態的局部更新。不如說,你修改了個人信息的頭像,在返回主界面後,會同步更新主界面左上角的小頭像(當然還有很多其他類似的地方)

3、不同Android版本的適配問題

APP主要功能的核心是出席的判斷,需要獲取當前設備所連Wifi的bssid。但是在某些高版本的Android手機,需要開啓定位服務。這個我也在網上找資料做了適配和測試。還有就是Android10上遇到無法裁剪圖片的問題,也是由於版本問題導致的,這個問題也基本上結局了。

4、非必要功能的拓展

在選擇照片時,又相冊和拍攝兩種方式,我特地增加了圖片裁剪的功能(第三方開源框架)。同時我增加了對於主界面頂部Header的背景設置。

成品

涉及到項目技術棧、代碼設計方面,我也不去多OB了。儘管這是個中小型項目,但是要邊摸索邊去做,還是會遇到很多麻煩和問題的。

APK

鏈接: https://pan.baidu.com/s/1RcJ_ttDdcI1ql9CyUqO6FQ  提取碼: sc2k 

Github

客戶端的編碼,我有一直在Github上提交。過一段時間,我修改並整理後,把服務端和客戶端的代碼都整理到Github,再貼出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章