你可能會問Yahnac是什么?是一個黑客新聞客戶端,因為黑客新聞客戶端需求遠遠不夠!
黑客新聞是一個專注于計算機科學和創(chuàng)業(yè)的社會新聞網(wǎng)站,由創(chuàng)業(yè)公司孵化器Y Combinator負責運行。一般來說,可提交內容被定義為“可以滿足求知欲的任何內容”。
不久前Y Combinator宣布了黑客新聞API。最令人興奮的消息此API使用Firebase。
在功能方面,Yahnac允許閱讀所有黑客新聞內容。最重要的是,你可以添加書簽并長期保持。
如果你對Yahnac感興趣,請繼續(xù)閱讀!
http://wiki.jikexueyuan.com/project/android-weekly/images/issue-146/1.1.png" alt="alttext" />
我喜歡Loader,內容提供商及其樣板。沒有必要爭論是否是最佳解決方案,明顯不是。
幾個月前RxJava 在Novoda之間逐漸流行起來。像數(shù)字音樂廳等應用已經(jīng)開發(fā)出來,成效顯著。
我很慶幸自己擁有 Benjamin Augustin, Volker Leck 和Antonio Bertucci等出色的同事。
遵循以上原則,我使用Rx和Firebase把所有框架特定解決方案組合起來。
原理很簡單,數(shù)據(jù)如何從網(wǎng)絡提取的具體方式不用考慮,只需考慮數(shù)據(jù)庫存儲路徑即可。在網(wǎng)絡層使用Rx,數(shù)據(jù)層使用SQlite,UI層使用Loaders即可實現(xiàn)這些需求。
根據(jù)目前應用的API,可能需要檢索到第501個 Firebase實例,以顯示500 top stories的列表。一個調用將檢索Top Stories頁面所有項目的ID,然后需要對這些ID的每一個進行另一個調用,并從新聞項目中檢索數(shù)據(jù)。
Rx似乎是一個解決這一切問題的完美候選方法,它的積極性方法可以處理所有的遞歸調用和線程的無縫連接。它還允許操作數(shù)據(jù),并提供數(shù)據(jù)庫層所需求的輸出。這個輸出將是ContentValues,其為一種 ContentProvider需求。
在UI層面,當使用ContentProvider時,它可以非常容易地決定如何顯示內容。 CursorLoader允許檢索含有所需數(shù)據(jù)的 Cursor,這將非常有意義!
這里只需再進行一步,而且這是解決RecyclerView 和Cursor之間不兼容問題的方法。在下面的專欄里我會深入探討到實際的實現(xiàn)細節(jié)和問題,如果你有興趣,敬請關注。
我對關于該UI和它在不同形式的因素中的樣式有一些疑慮。在最開始的時候,我考慮使用Multi Pane,但是在使用了該應用一段時間后,我感覺有些地方不合理。
http://wiki.jikexueyuan.com/project/android-weekly/images/issue-146/1.2.png" alt="alttext" />
在格局上,導覽不是非常清晰,所以我決定使用一個類似于Etsy 的Staggered Grid制作比較流行的背景。
http://wiki.jikexueyuan.com/project/android-weekly/images/issue-146/1.3.png" alt="alttext" />
同樣,智能手機的用戶界面將能夠適應從一列變?yōu)閮闪械那闆r。
http://wiki.jikexueyuan.com/project/android-weekly/images/issue-146/1.4.png" alt="alttext" />
現(xiàn)如今,沒有一個不包含有Material Design principles的得體的應用程序被推出,在talking 和presenting 它之后,我也不可能有不同的觀點。
大多數(shù)文章都顯示在WebView中,WebView沒有預留很多空間用于過渡和花哨的動畫顯示。該應用程序沒有圖片,因此不能添加漂亮的Palette ,這不是最好的情況嗎?
然而,材料不僅僅是動畫和顏色。也可以很方便地使用像字體、空間和波動等方面,形成一個很大的差異。
http://wiki.jikexueyuan.com/project/android-weekly/images/issue-146/1.5.png" alt="alttext" />
另一個特點是,所有的材料應用表明目前是快速返回模式。這是一個不錯的想法,使用滾動可以讓用戶享受到更多的內容。
http://wiki.jikexueyuan.com/project/android-weekly/images/issue-146/1.6.gif" alt="alttext" />
該應用程序并沒有完成,其中還有幾個我想增加的特點,比如能夠發(fā)布一條消息或回復評論。你還有更好的提議嗎?請告訴我!該程序的源碼可以從GitHub獲得,歡迎所有的PRs。