開(kāi)發(fā)一款基于Bmob后端云的社區(qū)APP

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


一 創(chuàng)作背景

無(wú)論是生活中,還是在書(shū)籍光绕、電影躺涝、戲劇等藝術(shù)作品中,往往存在一閃而過(guò)卻觸動(dòng)人心的文字段落失都。永遠(yuǎn)記得《挪威的森林》里有這樣一句話:“死并非生的對(duì)立面捂人,而作為生的一部分永存”逝段,它一直警戒著我要以一種平和、不以己悲的心態(tài)去度過(guò)這一生摹察,不要汲汲于生或汲汲于死。由此可見(jiàn)文字的力量是巨大的倡鲸。
中學(xué)時(shí)候供嚎,我喜歡準(zhǔn)備一本精致的筆記,將那些扣人心弦的文字語(yǔ)錄鄭重摘抄下來(lái)峭状。上了大學(xué)便隨意了很多克滴,往往是將文字復(fù)制在手機(jī)上的備忘錄或是直接截圖保存,這導(dǎo)致有時(shí)候想起某個(gè)句子优床,左翻右翻卻不得其蹤劝赔。
恰巧上學(xué)期在選修課上接觸到了安卓開(kāi)發(fā),于是這個(gè)寒假便尋思著獨(dú)自開(kāi)發(fā)一款簡(jiǎn)單的文字社區(qū)APP胆敞,用戶能在此發(fā)布着帽、分享罩阵、整理自己所感觸的那些語(yǔ)錄。由于個(gè)人技術(shù)有限启摄,所以通常是一邊學(xué)習(xí)一邊進(jìn)行開(kāi)發(fā)測(cè)試「灞冢現(xiàn)在該產(chǎn)品已完成初期階段的功能目標(biāo)。因此我將開(kāi)發(fā)過(guò)程與功能簡(jiǎn)介整理成這篇文檔歉备。

二 項(xiàng)目簡(jiǎn)介

- 開(kāi)發(fā)介紹及聲明
  • 操作系統(tǒng):Windows 10
  • 開(kāi)發(fā)工具:Android Studio 2.3 & SDK 25
  • 測(cè)試設(shè)備:Android 7.0 及以上版本的手機(jī)
  • 開(kāi)發(fā)時(shí)間:2018年2月
  • 本項(xiàng)目創(chuàng)意完全由開(kāi)發(fā)人員原創(chuàng)傅是。素材版權(quán)歸于原作者。
- 技術(shù)簡(jiǎn)單說(shuō)明

這是一款簡(jiǎn)單的針對(duì)文字分享的社區(qū)APP蕾羊⌒剩框架基于傳統(tǒng)的MVC,界面采用Material Design設(shè)計(jì)龟再。后臺(tái)則使用了Bmob后端云進(jìn)行數(shù)據(jù)存儲(chǔ)书闸。(數(shù)據(jù)庫(kù)設(shè)置如下)

- 主要功能
  • 發(fā)布并分享語(yǔ)錄,可對(duì)自己的語(yǔ)錄進(jìn)行重新編輯利凑,對(duì)他人的語(yǔ)錄進(jìn)行收藏浆劲。
  • 創(chuàng)建特定主題的筆記本,將自己或他人相關(guān)的語(yǔ)錄添至其中哀澈,從而進(jìn)行歸類整理牌借。
  • 「關(guān)注」- 隨時(shí)看到關(guān)注的用戶的最新語(yǔ)錄動(dòng)態(tài)。
  • 「發(fā)現(xiàn)」- 參與最新活動(dòng)割按,查看熱門(mén)板塊膨报,還有開(kāi)發(fā)者的文章推薦。
  • 「?jìng)€(gè)人」- 編輯信息适荣、查看我的各類內(nèi)容现柠,以及消息提示。

三 界面功能介紹

- 啟動(dòng)界面

Bmob提供了一個(gè)專門(mén)的用戶類——BmobUser來(lái)自動(dòng)處理用戶賬戶管理所需的功能弛矛。每當(dāng)用戶注冊(cè)成功或是第一次登錄成功够吩,都會(huì)在本地磁盤(pán)中有一個(gè)緩存的用戶對(duì)象。
因此汪诉,在每次打開(kāi)APP時(shí)废恋,先是歡迎界面,然后通過(guò)判斷是否存在currentUser對(duì)象來(lái)決定是直接進(jìn)入主界面還是登錄界面扒寄。邏輯流程圖如下:

歡迎界面鱼鼓、注冊(cè)界面、登錄界面的設(shè)計(jì)如下:

若忘記或更改密碼界面该编,則進(jìn)入以下界面進(jìn)行密碼重置迄本。

通過(guò)郵箱進(jìn)行重置密碼,確保賬戶的安全性课竣。

- 主界面

主界面布局采用TabLayout+ViewPager實(shí)現(xiàn)了底部導(dǎo)航嘉赎,利用setCustomView填充了自定義的tab圖標(biāo)文字樣式置媳,同時(shí)重寫(xiě)FragmentStatePagerAdapter已達(dá)到點(diǎn)擊滑動(dòng)頁(yè)面的效果。
邏輯圖如下:

界面設(shè)計(jì)如下:

接下來(lái)公条,我們分別從「關(guān)注 發(fā)現(xiàn) 個(gè)人」這三個(gè)模塊進(jìn)行功能展示拇囊。先從「?jìng)€(gè)人」談起。

- 「?jìng)€(gè)人」模塊

可以看到靶橱,「?jìng)€(gè)人」界面中寥袭,上部分是個(gè)人信息展示,點(diǎn)擊「關(guān)注 2」「粉絲 1」進(jìn)入各自對(duì)應(yīng)的列表关霸,點(diǎn)擊item可進(jìn)入相應(yīng)的用戶主頁(yè)传黄。

接著是信息列表,點(diǎn)擊第一行「賬號(hào)資料」可進(jìn)入個(gè)人信息詳細(xì)界面队寇,可選擇進(jìn)行修改膘掰。其中的頭像和封面設(shè)置則是選取手機(jī)相冊(cè)里的圖片進(jìn)行裁剪,將裁剪后的數(shù)據(jù)流填入圖片文件佳遣,獲得其uri再上傳至Bmob后端云识埋。部分界面展示如下:

先談?wù)劇競(jìng)€(gè)人」界面里右下方的懸浮按鈕,點(diǎn)擊即可進(jìn)行語(yǔ)錄編輯并發(fā)布苍日。界面如下:

回到信息列表惭聂,點(diǎn)擊第二行「我的語(yǔ)錄」即可看到自己發(fā)表的所有語(yǔ)錄,這里提供了兩種觀看模式相恃,便于用戶快速找到某一條特定語(yǔ)錄。

回到信息列表笨觅,點(diǎn)擊第三行「我的筆記」即可看到自己創(chuàng)建的所有筆記本拦耐。以下是新建筆記本的流程,創(chuàng)建完畢后见剩,你可以在某條相關(guān)語(yǔ)錄的頁(yè)面右上方點(diǎn)擊“+”號(hào)杀糯,將其添加進(jìn)這本筆記,從而起到歸類整理的作用苍苞。部分頁(yè)面展示如下:

PS:點(diǎn)擊進(jìn)某條語(yǔ)錄或某本筆記的詳情頁(yè)面里固翰,如果系統(tǒng)判斷是自己發(fā)布/創(chuàng)建的,則顯示如下圖1羹呵,點(diǎn)擊右邊符號(hào)彈出菜單抽屜骂际,可選擇重新編輯或者刪除;如果是屬于別的用戶冈欢,則顯示如下圖2歉铝、3,其中數(shù)字表示被喜歡的數(shù)量凑耻,點(diǎn)擊“愛(ài)心”符號(hào)表示喜歡太示。

回到信息列表柠贤,點(diǎn)擊第四行「我的喜歡」即可看到自己曾表示喜歡的語(yǔ)錄和筆記本。

回到信息列表类缤,點(diǎn)擊第五行「消息提示」進(jìn)入以下界面臼勉,針對(duì)每一項(xiàng),我的實(shí)現(xiàn)邏輯是這樣的餐弱。例如坚俗,我在數(shù)據(jù)表里儲(chǔ)存了相應(yīng)的Integer:“新粉絲-總數(shù)”和“新粉絲-已閱”,當(dāng)A用戶關(guān)注B用戶時(shí)岸裙,B對(duì)應(yīng)的“新粉絲-總數(shù)”都會(huì)自增1猖败。當(dāng)系統(tǒng)判斷“新粉絲-總數(shù)”不等于“新粉絲-已閱”時(shí),該項(xiàng)Item右邊則顯示為紅點(diǎn)降允,提示用戶點(diǎn)擊查看恩闻。一旦點(diǎn)擊查看,此時(shí)“新粉絲-已閱”則會(huì)設(shè)置為等于“新粉絲-總數(shù)”剧董,返回則紅點(diǎn)消失幢尚。

點(diǎn)擊進(jìn)入,界面展示如下翅楼。其中尉剩,點(diǎn)擊列表的不同控件可進(jìn)入不同的對(duì)應(yīng)界面。

- 「關(guān)注」模塊

在「關(guān)注」界面里毅臊,可以下拉刷新理茎,即時(shí)顯示關(guān)注用戶的語(yǔ)錄動(dòng)態(tài)。點(diǎn)擊語(yǔ)錄即可查看詳情管嬉。也可通過(guò)點(diǎn)擊用戶頭像或昵稱皂林,進(jìn)入用戶界面。(點(diǎn)擊不同控件都能進(jìn)入對(duì)應(yīng)的界面)

- 「發(fā)現(xiàn)」模塊

在「發(fā)現(xiàn)」界面里蚯撩,從上而下分別是搜索欄础倍,[熱門(mén)活動(dòng)]自動(dòng)輪播圖,熱門(mén)內(nèi)容板塊胎挎,還有最新的三篇文章推送沟启。

點(diǎn)擊搜索欄,進(jìn)入搜索界面犹菇,輸入不同關(guān)鍵字德迹,選擇不同標(biāo)簽,即可查到你的目標(biāo)项栏。

系統(tǒng)在后端云里讀取時(shí)間最新的三個(gè)活動(dòng)數(shù)據(jù)浦辨,通過(guò)ViewPager以輪播圖的形式進(jìn)行呈現(xiàn),建立子線程每三秒便自動(dòng)滑動(dòng)。點(diǎn)進(jìn)某個(gè)活動(dòng)流酬,閱讀活動(dòng)規(guī)則進(jìn)行#話題#參與币厕。點(diǎn)擊查看成功參與的語(yǔ)錄,「熱門(mén)」即是通過(guò)“被喜歡數(shù)”進(jìn)行排序芽腾,「實(shí)時(shí)」即是按時(shí)間排序旦装。

至于熱門(mén)內(nèi)容板塊,分別為「用戶摊滔、語(yǔ)錄阴绢、筆記、文章」艰躺。其中「用戶」通過(guò)粉絲數(shù)量進(jìn)行排序呻袭,「語(yǔ)錄」和「筆記」通過(guò)「被喜歡數(shù)量」進(jìn)行排序,「文章」則顯示所有往期文章腺兴。這樣可方便用戶進(jìn)行查詢左电、瀏覽。
下方的文章推送页响,則是我個(gè)人選取一些喜歡的短文儲(chǔ)存在后端云里篓足,系統(tǒng)讀取最新的三篇進(jìn)行呈現(xiàn),閑暇時(shí)刻即可閱讀闰蚕。

另外:APP里呈現(xiàn)的圖片栈拖,例如語(yǔ)錄配圖、筆記封面没陡、用戶頭像等等涩哟,都可點(diǎn)擊放大,拖曳縮放诗鸭,還可點(diǎn)擊右上角染簇,將圖片下載到手機(jī)本地文件里并通知手機(jī)相冊(cè)。

四 開(kāi)發(fā)體會(huì)與個(gè)人感想

首先夸一下Bmob强岸,這是一個(gè)很優(yōu)秀的云儲(chǔ)存平臺(tái),提供了封裝友好的SDK和各類對(duì)后臺(tái)數(shù)據(jù)進(jìn)行操作的API砾赔。官網(wǎng)附有詳細(xì)的使用教程蝌箍。真的十分容易上手,而且免費(fèi)版的各項(xiàng)服務(wù)指標(biāo)也能很好地滿足個(gè)人開(kāi)發(fā)者暴心。

不過(guò)在使用過(guò)程中也遇到了幾個(gè)麻煩妓盲,比如Bmob不支持多表查詢、免費(fèi)版不支持模糊查詢专普、不可對(duì)非當(dāng)前用戶所在據(jù)表進(jìn)行更改操作悯衬,最坑的是,Bmob的所有查詢操作都屬于異步執(zhí)行檀夹,只能另想它法筋粗,多繞幾步路策橘。

作為一個(gè)接觸Android開(kāi)發(fā)不久的新手,在完成這個(gè)產(chǎn)品的過(guò)程中處處踩坑娜亿,時(shí)常遇到盲點(diǎn)丽已。記得剛開(kāi)始幾天的時(shí)候,由于“發(fā)布語(yǔ)錄”設(shè)置了可加或不加配圖买决,所以一直在研究如何讓「關(guān)注」界面的ListView流暢地加載網(wǎng)絡(luò)圖片沛婴,而且要滿足其中某些Item是不顯示圖片的。后來(lái)通過(guò)巧妙地重寫(xiě)SimpleAdapter的setViewBinder方法以及使用imageLoader框架才解決了這個(gè)問(wèn)題督赤。在開(kāi)發(fā)過(guò)程中也接觸到了很多之前未使用的控件和布局嘁灯,在實(shí)現(xiàn)導(dǎo)航切換和banner輪播圖效果的時(shí)候真的成就感滿滿,但同時(shí)又得學(xué)會(huì)面對(duì)很多麻煩躲舌,比如:如何解決SwipeRefreshLayout和ViewPager的滑動(dòng)沖突丑婿?如何讓ScrollView嵌套ListView和RecyclerView的同時(shí)又使它們的高度自適應(yīng)?諸如此類∧跆牵現(xiàn)在回想枯冈,特別悔恨自己沒(méi)有記錄博客的習(xí)慣,不能把當(dāng)初遇到的那些問(wèn)題與解決方案詳細(xì)地寫(xiě)下來(lái)办悟。

但還是十分感激于此次短暫的獨(dú)立開(kāi)發(fā)經(jīng)歷尘奏,讓我收獲頗豐。其實(shí)最大的體會(huì)便是:思考規(guī)劃比打代碼更重要病蛉。當(dāng)你設(shè)計(jì)好界面布局炫加、UI交互、數(shù)據(jù)表的結(jié)構(gòu)和關(guān)聯(lián)性铺然、以及實(shí)現(xiàn)思路和步驟時(shí)俗孝,再動(dòng)手打代碼時(shí)便能流暢許多,省去了很多發(fā)呆魄健、陷入困惑的時(shí)間空隙赋铝。

PS:代碼已完整上傳,不過(guò)為了保障后端云數(shù)據(jù)庫(kù)的私密性沽瘦,我將文件中的Application ID刪除革骨。

//默認(rèn)初始化Bmob
Bmob.initialize(this, "Your Application ID");
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市析恋,隨后出現(xiàn)的幾起案子良哲,更是在濱河造成了極大的恐慌,老刑警劉巖助隧,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筑凫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)巍实,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)滓技,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蔫浆,你說(shuō)我怎么就攤上這事殖属。” “怎么了瓦盛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵洗显,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我原环,道長(zhǎng)挠唆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任嘱吗,我火速辦了婚禮玄组,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谒麦。我一直安慰自己俄讹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布绕德。 她就那樣靜靜地躺著患膛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耻蛇。 梳的紋絲不亂的頭發(fā)上踪蹬,一...
    開(kāi)封第一講書(shū)人閱讀 52,713評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音臣咖,去河邊找鬼跃捣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛夺蛇,可吹牛的內(nèi)容都是我干的疚漆。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼刁赦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼愿卸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起截型,我...
    開(kāi)封第一講書(shū)人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎儒溉,沒(méi)想到半個(gè)月后宦焦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年波闹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酝豪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡精堕,死狀恐怖孵淘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情歹篓,我是刑警寧澤瘫证,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站庄撮,受9級(jí)特大地震影響背捌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜洞斯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一毡庆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烙如,春花似錦么抗、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至刀闷,卻和暖如春熊泵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甸昏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工顽分, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人施蜜。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓卒蘸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親翻默。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缸沃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,326評(píng)論 25 707
  • 經(jīng)歷 1.對(duì)概念圖進(jìn)行了修改2.做本周HTML作業(yè)3.深入學(xué)習(xí)dom 學(xué)到 1.dom導(dǎo)航具體上使用節(jié)點(diǎn)關(guān)系訪問(wèn)節(jié)...
    16孫一凡通工閱讀 139評(píng)論 0 1
  • 上周收了一款好茶趾牧,美名曰白牡丹 茶柔軟成朵,灰綠的葉緣微卷肯污,披滿白毫 香氣清翘单、柔吨枉、淡、雅 不似紅茶的花果香哄芜,也不似...
    松蘿閱讀 467評(píng)論 0 1
  • 字符串的全排列貌亭,普通遞歸如下: 詳細(xì)的解析:http://blog.csdn.net/randyjiawenjie...
    蠻大人我們走閱讀 1,982評(píng)論 0 0
  • 平時(shí)我們?cè)谏钪?盡量都難避免想煩人憤怒,恐懼這樣的負(fù)面情感,那既然這些情感 對(duì)我們不利,為什么進(jìn)化還把他們留下...
    潮汐之涌閱讀 530評(píng)論 0 0