安卓Material Design(3)

688 查看

在上一篇文章中,我们使用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里

这篇文章的源码从这里可得到