安卓Material Design(3)

zer0Black發表於2015-09-08

在上一篇文章中,我們使用appcompat包為我們的RSS閱讀器app做了配色方案。在這篇文章中,我們要看一下我們的文字樣式,也要看一下CardView。

只做了很少的宣傳(指的是Lollipop,而不是Material design本身)的Lollipop的Material主題和appcompat包中介紹了一些預定義的文字樣式。我們可以從預定義的樣式中選擇最恰當的來支援我們的想法,並且在不同的app中保持文字樣式的一致性。這些樣式的細節在Material Design Style reference(Material設計模式引用)

實際上,應用這些文字樣式很簡單。在Lollipop中,許多TextAppearance樣式都再android.R.style.TextAppearance.Material.*裡,這些都相當於 Material Style風格的引用。使用appcompat也是很容易的——我們可以使用在R.style.TextAppearance.AppCompat.*裡的樣式來替代上面的:

我們也需要在res/layout/feed_detail.xml,做同樣的事,但是我不想把它列在這,變化基本是一樣的。

下一件要考慮的事是在我們的佈局檔案中使用CardView 。CardView 是一個已經發布了相容包的功能元件,使用它可以很容易的在我們的app裡包含進Material cards。cardview相容包定義了一個新的必不可少的CardView元件,該元件和FrameLayout(實際上它是FrameLayout的子類)做一樣的事並且會渲染一個card-like大綱。

相容包會針對主系統的特點使用適用的控制元件——在Lollipop上陰影將使用正在研製的演算法來渲染,但是在Lollipop之前的裝置drawables控制元件將使用陰影特效來建立。支援陰影繪製的Lollipop上會有更好的使用者體驗,但在之前的舊裝置上看起來也不賴。

在2014的Droidcon London上,Nick Butcher 和 Chris Banes在他們的Papercraft討論中說,不要 over cardify 應用——只在適合的地方使用卡片。在這個專案裡,我覺得為我們的Listview使用卡片是不合適的,因為這些單獨的ListView條目本質上都是一種型別的資料。然而,在詳細檢視他有一個頭部區(header section),還有一個body去包含WebView裡的整篇文章,這些區域就可以拆分作為卡片。

首先,我們需要新增cardview包到我們的依賴關係裡:

然後把佈局檔案裡已經存在的程式碼包含進CardView容器裡:

完成了,讓我們看看在Lollipop裡看起來如何:

在Kitkat 它看起來也很好(形狀不同的裝置有不同的佈局——一臺Lollipop系統的Nexus9和一臺Kitkat系統的Nexus5)

在這篇文章裡,我們沒有用很龐大的處理程式碼就使用Material design模式完整的完成了我們的app。

在下一篇文章裡,我們將從表面上的UI切換到如何優化的幕後工作,要新增更多的Material 優點到我們的app裡

這篇文章的原始碼從這裡可得到

相關文章