開發一款基于Bmob后端云的社區APP

Github項目地址:https://github.com/RebornC/Bmob_Community_Application
歡迎使用小伙伴們一起討論~


一 創作背景

無論是生活中,還是在書籍、電影、戲劇等藝術作品中,往往存在一閃而過卻觸動人心的文字段落。永遠記得《挪威的森林》里有這樣一句話:“死并非生的對立面,而作為生的一部分永存”,它一直警戒著我要以一種平和、不以己悲的心態去度過這一生,不要汲汲于生或汲汲于死。由此可見文字的力量是巨大的。
中學時候,我喜歡準備一本精致的筆記,將那些扣人心弦的文字語錄鄭重摘抄下來。上了大學便隨意了很多,往往是將文字復制在手機上的備忘錄或是直接截圖保存,這導致有時候想起某個句子,左翻右翻卻不得其蹤。
恰巧上學期在選修課上接觸到了安卓開發,于是這個寒假便尋思著獨自開發一款簡單的文字社區APP,用戶能在此發布、分享、整理自己所感觸的那些語錄。由于個人技術有限,所以通常是一邊學習一邊進行開發測試。現在該產品已完成初期階段的功能目標。因此我將開發過程與功能簡介整理成這篇文檔。

二 項目簡介

- 開發介紹及聲明
  • 操作系統:Windows 10
  • 開發工具:Android Studio 2.3 & SDK 25
  • 測試設備:Android 7.0 及以上版本的手機
  • 開發時間:2018年2月
  • 本項目創意完全由開發人員原創。素材版權歸于原作者。
- 技術簡單說明

這是一款簡單的針對文字分享的社區APP。框架基于傳統的MVC,界面采用Material Design設計。后臺則使用了Bmob后端云進行數據存儲。(數據庫設置如下)

- 主要功能
  • 發布并分享語錄,可對自己的語錄進行重新編輯,對他人的語錄進行收藏。
  • 創建特定主題的筆記本,將自己或他人相關的語錄添至其中,從而進行歸類整理。
  • 「關注」- 隨時看到關注的用戶的最新語錄動態。
  • 「發現」- 參與最新活動,查看熱門板塊,還有開發者的文章推薦。
  • 「個人」- 編輯信息、查看我的各類內容,以及消息提示。

三 界面功能介紹

- 啟動界面

Bmob提供了一個專門的用戶類——BmobUser來自動處理用戶賬戶管理所需的功能。每當用戶注冊成功或是第一次登錄成功,都會在本地磁盤中有一個緩存的用戶對象。
因此,在每次打開APP時,先是歡迎界面,然后通過判斷是否存在currentUser對象來決定是直接進入主界面還是登錄界面。邏輯流程圖如下:

歡迎界面、注冊界面、登錄界面的設計如下:

若忘記或更改密碼界面,則進入以下界面進行密碼重置。

通過郵箱進行重置密碼,確保賬戶的安全性。

- 主界面

主界面布局采用TabLayout+ViewPager實現了底部導航,利用setCustomView填充了自定義的tab圖標文字樣式,同時重寫FragmentStatePagerAdapter已達到點擊滑動頁面的效果。
邏輯圖如下:

界面設計如下:

接下來,我們分別從「關注 發現 個人」這三個模塊進行功能展示。先從「個人」談起。

- 「個人」模塊

可以看到,「個人」界面中,上部分是個人信息展示,點擊「關注 2」「粉絲 1」進入各自對應的列表,點擊item可進入相應的用戶主頁。

接著是信息列表,點擊第一行「賬號資料」可進入個人信息詳細界面,可選擇進行修改。其中的頭像和封面設置則是選取手機相冊里的圖片進行裁剪,將裁剪后的數據流填入圖片文件,獲得其uri再上傳至Bmob后端云。部分界面展示如下:

先談談「個人」界面里右下方的懸浮按鈕,點擊即可進行語錄編輯并發布。界面如下:

回到信息列表,點擊第二行「我的語錄」即可看到自己發表的所有語錄,這里提供了兩種觀看模式,便于用戶快速找到某一條特定語錄。

回到信息列表,點擊第三行「我的筆記」即可看到自己創建的所有筆記本。以下是新建筆記本的流程,創建完畢后,你可以在某條相關語錄的頁面右上方點擊“+”號,將其添加進這本筆記,從而起到歸類整理的作用。部分頁面展示如下:

PS:點擊進某條語錄或某本筆記的詳情頁面里,如果系統判斷是自己發布/創建的,則顯示如下圖1,點擊右邊符號彈出菜單抽屜,可選擇重新編輯或者刪除;如果是屬于別的用戶,則顯示如下圖2、3,其中數字表示被喜歡的數量,點擊“愛心”符號表示喜歡。

回到信息列表,點擊第四行「我的喜歡」即可看到自己曾表示喜歡的語錄和筆記本。

回到信息列表,點擊第五行「消息提示」進入以下界面,針對每一項,我的實現邏輯是這樣的。例如,我在數據表里儲存了相應的Integer:“新粉絲-總數”和“新粉絲-已閱”,當A用戶關注B用戶時,B對應的“新粉絲-總數”都會自增1。當系統判斷“新粉絲-總數”不等于“新粉絲-已閱”時,該項Item右邊則顯示為紅點,提示用戶點擊查看。一旦點擊查看,此時“新粉絲-已閱”則會設置為等于“新粉絲-總數”,返回則紅點消失。

點擊進入,界面展示如下。其中,點擊列表的不同控件可進入不同的對應界面。

- 「關注」模塊

在「關注」界面里,可以下拉刷新,即時顯示關注用戶的語錄動態。點擊語錄即可查看詳情。也可通過點擊用戶頭像或昵稱,進入用戶界面。(點擊不同控件都能進入對應的界面)

- 「發現」模塊

在「發現」界面里,從上而下分別是搜索欄,[熱門活動]自動輪播圖,熱門內容板塊,還有最新的三篇文章推送。

點擊搜索欄,進入搜索界面,輸入不同關鍵字,選擇不同標簽,即可查到你的目標。

系統在后端云里讀取時間最新的三個活動數據,通過ViewPager以輪播圖的形式進行呈現,建立子線程每三秒便自動滑動。點進某個活動,閱讀活動規則進行#話題#參與。點擊查看成功參與的語錄,「熱門」即是通過“被喜歡數”進行排序,「實時」即是按時間排序。

至于熱門內容板塊,分別為「用戶、語錄、筆記、文章」。其中「用戶」通過粉絲數量進行排序,「語錄」和「筆記」通過「被喜歡數量」進行排序,「文章」則顯示所有往期文章。這樣可方便用戶進行查詢、瀏覽。
下方的文章推送,則是我個人選取一些喜歡的短文儲存在后端云里,系統讀取最新的三篇進行呈現,閑暇時刻即可閱讀。

另外:APP里呈現的圖片,例如語錄配圖、筆記封面、用戶頭像等等,都可點擊放大,拖曳縮放,還可點擊右上角,將圖片下載到手機本地文件里并通知手機相冊。

四 開發體會與個人感想

首先夸一下Bmob,這是一個很優秀的云儲存平臺,提供了封裝友好的SDK和各類對后臺數據進行操作的API。官網附有詳細的使用教程。真的十分容易上手,而且免費版的各項服務指標也能很好地滿足個人開發者。

不過在使用過程中也遇到了幾個麻煩,比如Bmob不支持多表查詢、免費版不支持模糊查詢、不可對非當前用戶所在據表進行更改操作,最坑的是,Bmob的所有查詢操作都屬于異步執行,只能另想它法,多繞幾步路。

作為一個接觸Android開發不久的新手,在完成這個產品的過程中處處踩坑,時常遇到盲點。記得剛開始幾天的時候,由于“發布語錄”設置了可加或不加配圖,所以一直在研究如何讓「關注」界面的ListView流暢地加載網絡圖片,而且要滿足其中某些Item是不顯示圖片的。后來通過巧妙地重寫SimpleAdapter的setViewBinder方法以及使用imageLoader框架才解決了這個問題。在開發過程中也接觸到了很多之前未使用的控件和布局,在實現導航切換和banner輪播圖效果的時候真的成就感滿滿,但同時又得學會面對很多麻煩,比如:如何解決SwipeRefreshLayout和ViewPager的滑動沖突?如何讓ScrollView嵌套ListView和RecyclerView的同時又使它們的高度自適應?諸如此類。現在回想,特別悔恨自己沒有記錄博客的習慣,不能把當初遇到的那些問題與解決方案詳細地寫下來。

但還是十分感激于此次短暫的獨立開發經歷,讓我收獲頗豐。其實最大的體會便是:思考規劃比打代碼更重要。當你設計好界面布局、UI交互、數據表的結構和關聯性、以及實現思路和步驟時,再動手打代碼時便能流暢許多,省去了很多發呆、陷入困惑的時間空隙。

PS:代碼已完整上傳,不過為了保障后端云數據庫的私密性,我將文件中的Application ID刪除。

//默認初始化Bmob
Bmob.initialize(this, "Your Application ID");
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,630評論 25 708
  • 經歷 1.對概念圖進行了修改2.做本周HTML作業3.深入學習dom 學到 1.dom導航具體上使用節點關系訪問節...
    16孫一凡通工閱讀 140評論 0 1
  • 上周收了一款好茶,美名曰白牡丹 茶柔軟成朵,灰綠的葉緣微卷,披滿白毫 香氣清、柔、淡、雅 不似紅茶的花果香,也不似...
    松蘿閱讀 469評論 0 1
  • 字符串的全排列,普通遞歸如下: 詳細的解析:http://blog.csdn.net/randyjiawenjie...
    蠻大人我們走閱讀 1,991評論 0 0
  • 平時我們在生活中,盡量都難避免想煩人憤怒,恐懼這樣的負面情感,那既然這些情感 對我們不利,為什么進化還把他們留下...
    潮汐之涌閱讀 535評論 0 0