實(shí)現(xiàn)這個APP是我自己對于一些常用框架的熟悉過程和應(yīng)用過程。
這是一個基于mvp的模式開發(fā)的APP。其實(shí)現(xiàn)的效果如下:


這篇文字不是講解是如何實(shí)現(xiàn),因?yàn)槲蚁嘈湃绻阆耄敲磳?shí)現(xiàn)它只是時間問題,無關(guān)你是否聰明。(作者表示 最近智商被壓制?????,本來就笨)
我只講實(shí)現(xiàn)該項目的一些難點(diǎn):
1.合理使用單例模式,這會使你的應(yīng)用程序更加完善和減少內(nèi)存的使用。在數(shù)據(jù)庫操作中,使用單例模式將是你非常好的選擇。當(dāng)然,這一切隨之需求變化而變化。合理使用現(xiàn)成的模式,比如裝飾者模式等會使你的編程更加有效和實(shí)用。這將更加符合現(xiàn)實(shí)開發(fā)的需求。如果不會,那就必須來一彈了。
2.字符串的連接操作:
第一反應(yīng)是不是“+”,小兒科的東西,運(yùn)算符操作多么方便。但是這并不是說效率第一。當(dāng)運(yùn)用到及其多的字符串操作的時候,我覺得應(yīng)該想你推薦:
StringBuilder 這個類了。這個類同樣是來自Java,但其在字符串拼接上回更具有優(yōu)勢。如果不信,你可以試試。
3.GreenDao 是一款特別有名的數(shù)據(jù)庫操作庫。在Android中,由于它是在編譯中注入而不是反射注入的關(guān)系,操作速度回比其他的數(shù)據(jù)庫更加迅速。
如果你用過,是不是很酸爽,沒用的朋友可以試試。但中間有個問題:
但你使用
@ Property(nameInDb = "Title")
該注解的時候,greenDao 會默認(rèn)將bean的字符當(dāng)成數(shù)據(jù)庫字段的。如果用這個就是指定字段。但千萬記住好像 你用了@id 這后并不會創(chuàng)建這個字段的數(shù)據(jù)庫字段,當(dāng)你用@ Property 時 ,這時候要在@id的下面加@Property。這是我嘗試了許久的。
4.SurfaceView 并不適合作為loadview,這句話并不肯定,因?yàn)槲覜]有嘗試過其他情況,在我的APP中我用了SurfaceView這個作為loagdview,中間會有些UI不同協(xié)同的情況。我并沒有舍棄這個控件。正如前面所提的這是個學(xué)習(xí)的demo,更多的是學(xué)到點(diǎn)什么,不是嗎?
5.關(guān)于textview 的跑馬燈實(shí)現(xiàn),作者是參考了網(wǎng)上的教程自己寫的一個view,并不是在xml中實(shí)現(xiàn)。因?yàn)樵赬ML中設(shè)置并沒有看到其中的效果。
6.關(guān)于AlertDialog 的設(shè)置和適配屏幕的問題。AlertDialog這個自身是會帶有背景的,如果你想用有圓角的背景,那么請在代碼中設(shè)置AlertDialog沒背景或者用
dialog.getWindow().setBackgroundDrawableResource(R.drawable.writerinfo);
進(jìn)行設(shè)置AlertDialog 的背景。這個適配其實(shí)比較麻煩的操作。另外DialogFragment其實(shí)是替代Dialog的一個很好的類。
這個APP使用的框架有:
- 著名的網(wǎng)絡(luò)框架 retrofit2 自然包括okhttp等
- 數(shù)據(jù)庫操作 GreenDao Sql 語句很容易產(chǎn)生錯誤,如果你是大神請忽略
*butterknife 框架 減少你寫findviewbyid onclick 等重復(fù)代碼
這個demo并不是十分清晰的MVP模式樣板。
近期不會進(jìn)行更新該app ,沒實(shí)現(xiàn)加載更多,rxjava 沒用上。。。。。 = ̄ω ̄=
感謝gank.io的api
好了,沒什么想說的了。
最后來個github傳送門
期望給個star 鼓勵一下(有問題可以私信 或郵箱)