首先給大家展示下效果圖:
點(diǎn)此下載安裝包:愛(ài)閱.apk
此進(jìn)入開(kāi)源地址:GitHub_WillFlow
一寇僧、前言
1狸涌、關(guān)于“愛(ài)閱”APP
“愛(ài)閱”是一款專(zhuān)注于收藏優(yōu)秀站點(diǎn)與優(yōu)質(zhì)教程骨望、文章的移動(dòng)端應(yīng)用程序泰演。無(wú)論你是研發(fā)人員猎拨、產(chǎn)品經(jīng)理還是UI設(shè)計(jì)師,無(wú)論你想提高自己的職場(chǎng)水平萌朱、謀求職業(yè)發(fā)展還是提升生活質(zhì)量宴树,再或者說(shuō)的干脆點(diǎn),只要你想提升自己生命的效率和質(zhì)量晶疼,那么“愛(ài)閱”絕對(duì)可以助你一臂之力酒贬。因?yàn)樵谶@里,你可以發(fā)現(xiàn)相見(jiàn)恨晚的網(wǎng)站與教程冒晰;在這里同衣,你可以找到愛(ài)不釋手的工具資源竟块;在這里壶运,你可以遇見(jiàn)心有靈犀的文章與聲音。
2浪秘、關(guān)于本文
該系列文章介紹了本人利用業(yè)余十幾天完成的一款A(yù)ndroid產(chǎn)品的全部開(kāi)發(fā)流程:從創(chuàng)意的挖掘到產(chǎn)品原型與設(shè)計(jì)蒋情,從工程的架構(gòu)到代碼的編寫(xiě),最后再到應(yīng)用的開(kāi)源與上架耸携,一切的一切都在這里棵癣。讀完該系列文章,想學(xué)習(xí)產(chǎn)品的你能知道在一個(gè)APP正式開(kāi)發(fā)之前你需要做足那些準(zhǔn)備夺衍,想深入開(kāi)發(fā)的你能更好的從整體上看到整個(gè)APP的架構(gòu)過(guò)程狈谊,并且能夠從細(xì)節(jié)上把握熱門(mén)技術(shù)的使用;總之,希望大家看完該系列文章后也能對(duì)創(chuàng)意、產(chǎn)品和開(kāi)發(fā)產(chǎn)生自己的獨(dú)道見(jiàn)解河劝,然后憑欄遠(yuǎn)眺壁榕,對(duì)長(zhǎng)亭晚,捧起鍵盤(pán)赎瞎;任風(fēng)蕭蕭雨漫漫路遠(yuǎn)遠(yuǎn)牌里,在每一寸屏幕上輾轉(zhuǎn),寫(xiě)出自己的明天务甥。
二牡辽、開(kāi)發(fā)流程
1、創(chuàng)意的來(lái)源
孔子曰:“偉大的創(chuàng)意對(duì)于偉大的產(chǎn)品來(lái)說(shuō)敞临,是必須滴态辛!”所以在正式動(dòng)手之前,我們必須要有一個(gè)好的創(chuàng)意哟绊。那么好的創(chuàng)意來(lái)自哪呢因妙?在我看來(lái)主要有這四個(gè)方面:
(1)上級(jí)安排的任務(wù)
有老板、專(zhuān)家直接提出的項(xiàng)目(常見(jiàn)于ToB類(lèi)項(xiàng)目)票髓,或者是直接用戶提出的明確需求攀涵。
(2)競(jìng)品啟示
通過(guò)對(duì)市場(chǎng)趨勢(shì)、潮流洽沟,以及同類(lèi)相近產(chǎn)品的分析得到的啟示以故,進(jìn)而提出的創(chuàng)意。一般來(lái)說(shuō)裆操,這種類(lèi)型的創(chuàng)意需要針對(duì)某個(gè)細(xì)分市場(chǎng)怒详,或者在某些縱深方面有所突破。
(3)用戶反饋
對(duì)現(xiàn)有產(chǎn)品的一種升級(jí)需求踪区。從現(xiàn)有市場(chǎng)產(chǎn)品的用戶的抱怨中昆烁,洞察出新的市場(chǎng)需求。
(4)突發(fā)奇想
突發(fā)奇想下的創(chuàng)意來(lái)源于我們的經(jīng)驗(yàn)缎岗、愛(ài)好或隨機(jī)的事件静尼,類(lèi)似于靈光一現(xiàn)的靈感。其實(shí)传泊,這需要我們具備善于發(fā)現(xiàn)需求的能力鼠渺。否則當(dāng)機(jī)會(huì)來(lái)臨的時(shí)候,你也是把握不住的眷细。這種能力是需要培養(yǎng)的拦盹,卻是我們傳統(tǒng)教育中非常缺乏的,也是未來(lái)教育非常需要的溪椎。
2普舆、發(fā)掘本就屬于你的創(chuàng)意
在正式開(kāi)始一個(gè)安卓應(yīng)用之前恬口,我們需要一個(gè)好點(diǎn)子來(lái)開(kāi)始我們的項(xiàng)目。但是正如前文所述沼侣,一個(gè)好的創(chuàng)意本身就是可遇而不可求的楷兽,我這里嘗試給大家一些線索,以此來(lái)更有效的發(fā)掘我們的創(chuàng)意华临。
- 首先芯杀,你或你的朋友,親戚雅潭,同學(xué)有沒(méi)有經(jīng)歷過(guò)一些痛點(diǎn)揭厚,讓人們?cè)谏罟ぷ鲗W(xué)習(xí)等方面是可以改進(jìn)優(yōu)化的。這時(shí)我們就需要記錄這些痛點(diǎn)扶供,思考這些痛點(diǎn)筛圆,想想他們所處的場(chǎng)景是否足夠普遍,這是我們發(fā)掘創(chuàng)意的最好的源泉之一椿浓。
- 這些痛點(diǎn)有哪些解決方案太援?要腦洞大開(kāi),和其他人進(jìn)行頭腦風(fēng)暴扳碍,這個(gè)時(shí)候可以不要有任何束縛提岔,盡量的在橫向和縱向進(jìn)行思維拓展,必要的時(shí)候可以畫(huà)思維導(dǎo)圖笋敞。
- 試著提出可行的解決方案碱蒙,可以采用跨界思維的方式,可以隨便選擇一個(gè)和痛點(diǎn)毫無(wú)關(guān)系的物件和名詞夯巷,比如說(shuō):?jiǎn)诬?chē)赛惩、風(fēng)扇、交通趁餐、健康喷兼、旅行等等。然后看看他們之間能不能產(chǎn)生關(guān)系后雷,再進(jìn)一步來(lái)講季惯,延伸這些物件的屬性和特點(diǎn),看有沒(méi)有什么收獲喷面,然后最好和其他人進(jìn)行討論星瘾。
- 在所有的解決方案當(dāng)中走孽,想一想有沒(méi)有一個(gè)方案或者方案的某一部分是可以借助APP或者你熟悉的技術(shù)來(lái)實(shí)現(xiàn)的惧辈。如果這一條路可行的話,那么有哪些困難事你可以解決的磕瓷,哪些是解決不了的盒齿?盡量想清楚念逞。
- 如果上述的答案是肯定的話,那么你還需要考慮边翁,對(duì)于這個(gè)解決方案翎承,它是否可能產(chǎn)生較為普遍的價(jià)值?你是否為他感到興奮符匾?如果你感到興奮叨咖,而且愿意付出相當(dāng)?shù)木痛鷥r(jià),那就恭喜你了啊胶,你找到了一個(gè)比較靠譜的app的想法甸各。
上述的方法,是從挖掘用戶需求來(lái)出發(fā)的焰坪。相反趣倾,我們也可以從某個(gè)已有的技術(shù)創(chuàng)新點(diǎn)出發(fā),去發(fā)掘這項(xiàng)新技術(shù)某饰,可能創(chuàng)造出來(lái)的新的用戶需求儒恋,從而提出我們的創(chuàng)意。
好了黔漂,假設(shè)你的創(chuàng)意已經(jīng)有了诫尽,你為他感到興奮不已,你決定摩拳擦掌想要實(shí)現(xiàn)它炬守,那么我們要開(kāi)始的第一步是什么呢箱锐?在技術(shù)層面的角度來(lái)講,毫無(wú)疑問(wèn)劳较,那就是應(yīng)該驹止,規(guī)劃我們產(chǎn)品的整體技術(shù)架構(gòu),并從細(xì)節(jié)上做好技術(shù)選型观蜗,接下來(lái)我們就來(lái)說(shuō)一說(shuō)臊恋。
3、Android架構(gòu)
(1)兩大架構(gòu)模式:MVC和MVP
- MVC簡(jiǎn)單來(lái)說(shuō)就是模型(Model)墓捻、視圖(View)抖仅、控制器(Controller)相互依賴(lài)相互影響的一種架構(gòu)模型,優(yōu)點(diǎn)就是相對(duì)于傳統(tǒng)的架構(gòu)模型相比砖第,MVC模式的各個(gè)模塊指責(zé)分明撤卢,Controller在一定程度上把Model和View分離開(kāi)來(lái),使得系統(tǒng)耦合度得以降低梧兼;而隨著軟件工程的不斷龐大放吩,MVC模式中的控制器卻容易變得臃腫并且耦合度也不斷增加,于是MVP模型誕生了羽杰。
- MVP是從MVC發(fā)展而來(lái)的一種架構(gòu)模型渡紫,自然就繼承了MVC的諸多優(yōu)點(diǎn)到推,并且控制器的身份演化成了Presenter,從而是的Model和View層得以完全分離惕澎,從而View層可以做的更輕莉测,在進(jìn)一步降低系統(tǒng)耦合度的同時(shí)提高界面響應(yīng)速度和交互的敏捷性。
這兩者的孰優(yōu)孰略以及對(duì)比和選擇唧喉,我們?cè)诮酉聛?lái)的Day2文章中會(huì)詳細(xì)介紹捣卤。
(2)涉及到的技術(shù)細(xì)節(jié)
-
自定義View
可以看出,“愛(ài)閱”在右邊欄中的“我的訂閱”處即實(shí)現(xiàn)了一個(gè)較大的自定義View八孝,我們?cè)贒ay4文章中會(huì)有所介紹腌零; -
ViewPager、DrawerLayout唆阿、RecyclerView等常用控件的使用
ViewPager+RecyclerView毫無(wú)疑問(wèn)成了當(dāng)下最火的新聞閱讀類(lèi)產(chǎn)品技術(shù)實(shí)現(xiàn)的組合形式益涧,而DrawerLayout自誕生之日起就名聲大噪,我們會(huì)在Day3和Day4文章當(dāng)中進(jìn)行詳細(xì)介紹驯鳖; -
基于greenDao的數(shù)據(jù)庫(kù)構(gòu)建
greenDao是一個(gè)將對(duì)象映射到SQLite數(shù)據(jù)庫(kù)中的輕量且快速的ORM解決方案闲询。它之所以如此聞名是因?yàn)樗梢允勾a比較簡(jiǎn)單明了的呈現(xiàn),也就是說(shuō)我們能夠用最少的代碼做最多的事浅辙,從而更加專(zhuān)注與業(yè)務(wù)邏輯扭弧,它的詳細(xì)介紹會(huì)在Day5進(jìn)行。 -
網(wǎng)絡(luò)請(qǐng)求OkHttp3和Volley
網(wǎng)上關(guān)于OkHttp3和Volley孰優(yōu)孰略的爭(zhēng)論一直喋喋不休记舆,我們這里不爭(zhēng)論這些鸽捻,“愛(ài)閱”在開(kāi)發(fā)之初即在不同場(chǎng)景下分別使用了OkHttp3和Volley進(jìn)行了網(wǎng)絡(luò)請(qǐng)求,以此發(fā)揮了更好的請(qǐng)求性能泽腮,優(yōu)秀的網(wǎng)絡(luò)請(qǐng)求尤其是在閱讀類(lèi)APP中尤為重要御蒲,我們會(huì)在Day6文章中進(jìn)行深入的講解; -
圖片加載Glide
毫無(wú)疑問(wèn)的是诊赊,任何一個(gè)APP中(不只是新聞閱讀類(lèi))厚满,圖片加載都成為了一個(gè)必備的產(chǎn)品開(kāi)發(fā)內(nèi)容,而這又的的確確是一個(gè)充滿荊棘的道路碧磅,比如最令人頭疼的OOM碘箍,可謂驚險(xiǎn)無(wú)數(shù)。所以在快速迭代的過(guò)程中鲸郊,一個(gè)優(yōu)秀的圖片加載框架的重要程度自然不用多說(shuō)丰榴,我們這里選取當(dāng)下最為火熱的Glide來(lái)進(jìn)行圖片的加載,內(nèi)容會(huì)在Day7呈現(xiàn)給大家秆撮; -
郵件反饋四濒、崩潰日志抓取、以及主題更換
這些屬于附加功能,但是對(duì)于一個(gè)走向市場(chǎng)的APP來(lái)說(shuō)卻也是必不可少的峻黍,我們將在Day7和Day8中為大家做出詳細(xì)的講解;
三拨匆、文章目錄
下面是整個(gè)十天時(shí)間的文章目錄結(jié)構(gòu):
大叨安卓全系列教程66篇目錄導(dǎo)圖
Day1 制作一個(gè)APP之前你要準(zhǔn)備的東西都在這了
Day2 當(dāng)前最火爆的APP架構(gòu)及其實(shí)現(xiàn)
Day3(上) 基于ViewPager和TabLayout的主頁(yè)設(shè)計(jì)
Day3(下) 基于ViewPager和TabLayout的主頁(yè)設(shè)計(jì)
Day4 基于DrawerLayout的菜單欄設(shè)計(jì)
Day5 基于greenDao的List存儲(chǔ)與查詢(xún)方法大全
Day6 快速學(xué)習(xí)OkHttp3的九大用法
Day7 Glide的三級(jí)數(shù)據(jù)結(jié)構(gòu)緩存設(shè)計(jì)
Day8 一行代碼給我們的APP增添多彩主題
Day9 APP中抓取崩潰日志與郵件通知
Day10 總結(jié):產(chǎn)品開(kāi)發(fā)必備的63個(gè)網(wǎng)站和工具
聯(lián)系方式: