使用半透明系统UI扩展Android视图

2128 查看

一直以来,Android最大的特点之一就是可以定制UI元素,保持个人应用程序的视觉一致性。

随着Android4.4的发布,谷歌最终去除了应用程序运行时系统UI中的高亮蓝(bright holo blue)效果。这项技术很快将应用于所有的App,但是在你发布下一个版本前,现在就可以利用这项新的半透明系统栏使你的App与众不同。有两种样式可以操作该系统栏:windowTranslucentStatuswindowTranslucentNavigation

在主题(theme)中设置windowTranslucentStatustrue将填充顶部的状态栏区域。(有虚拟按键的设备上)设置windowTranslucentNavigationtrue将填充底部导航栏的区域。这两种样式默认会把应用的内容放到系统栏下面。如果仅仅想扩展背景样式到系统栏下,设置fitsSystemWindowstrue会增加视图的Padding值让你的布局恢复正常大小,并且可以把背景扩大。

下一步要做什么呢?

这就引出了一个重要的关于设计的讨论。可以扩展内容到系统UI并不意味着我们应该这样做。很多情况下,这种风格设计并不合适。如果你把工具栏扩展到状态栏下,这会是一个很糟糕的设计。对于大多数使用action bar的场景来说,一个浮于背景之上的可见action bar作为整个窗口的背景会很突兀。当然,也有例外。

Android行为设计方面的几个哥们,用半透明工具栏做了个小例子。这个特殊的例子效果很好,真正强调了占据整个屏幕的内容,而且并没有像全屏和沉浸模式一样让导航显得很混乱,

fit_system_windows

Jeff Gilfelt已经写了个辅助系统工具栏着色的函数库,他巧妙地将视图放到系统UI下。如果一些UI内容超出了屏幕的边界,这个库可以轻松的为导航区域着色,除此之外,还可以轻松地把工具栏和系统UI结合起来。即使你不打算着色系统工具栏,看一看Jeff的代码也是相当值得的,可以学习如何手动获取状态栏、工具栏和导航区域的高度。

这几个新的样式可以让你很好地扩展自己的应用视图,比正常的窗口都要大。只需在主题中增加几行代码就可以轻松实现,所以我鼓励大家都尝试一下。