尊重劳动成果,转载请注明出处:http://blog.csdn.net/growth58/article/details/48877875
关注新浪微博:@于卫国
邮箱:yuweiguocn@gmail.com

Google在2015 I/O大会上公布了Material Design Support Library,使用它可以创建materail应用在API 19以下突然变得很容易。在这个系列中,我们将使用RSS阅读器应用,我们用于Material系列的基础应用,重写让它完全使用新的Design Support Library。在本文中,我们将看看Design Support Library 引入的新组件在Android旧版本中的行为怎么样。

在看完 Vandana Shah, Ian Lake, and Chris Banes 在Google I/O 2015大会上对Design Support Library 介绍后我就开始思考Design Support Library 将会怎样运行在Android的旧版本上。我注意到一个幻灯片上显示当在TabLayout 上点击一个tab 后出现一个很好的波纹效果并且认为这个不太可能向后兼容。我能够问下Chris Banes 并且他很乐意分享对向后兼容引起的问题的一些见解,本文基于这些见解。

让我们从我首先注意到的事开始——波纹触摸反馈。我觉得很难向后兼容的原因是它们是怎么渲染的。在Lollipop 潜在的变化之一是它们运行于渲染线程和UI线程平行。渲染线程允许动画(例如Ripples)被渲染在一个和其它UI任务分开的线程运行确保高帧频动画,因此对用户来说出现的很平滑。典型的触摸事件将会触发一大堆东西在UI线程(例如切换Activities,填充新布局)因此尝试在相同的线程做所有事情将会使Ripple 动画的帧频效果相当差。Lollipop 之前的版本没有专用的渲染线程使得Ripples 向后兼容不太可能。

因此在Lollipop 之前的设备上触摸反馈做了什么?让我们在Jelly Bean 尝试并且看看效果:

很不错!看看tabs上的触摸反馈是没有Ripple 效果的,但在Lollipop 之前的设备上这是正常的触摸反馈样式。它有点不太明显是因为在我们的主题中选择的颜色colorControlHighlight (在navigation drawer中被共用于选择的状态)——它很容易被修复。这也是用户会(也许不会)注意到的唯一的区别。

除了触摸反馈的不同还有其它的区别吗?实事上这还有一个非常微妙的区别,当你寻找它的时候它看起来太微妙了,它就是在FAB 上的阴影渲染。Lollipop 引进了一些很强大的阴影渲染elevationtranslationZLollipop之前是不可用的。虽然你不会知道——阴影渲染是很不错的。甚至从举起到按下的行为看起来都很不错。

因此让我们现在在Android的旧版本试试这个——Gingerbread (API 10)

WebView 中我们有一些很明显的内容渲染问题,但那与design support library 无关,因此让我们忽略它。

主要的事情是我们可以看见ToolbarTabLayout 上面的文本颜色是错误的。我猜是因为这没有light theme 和dark ActionBar 的概念因为在 API 11 Honeycomb之前还没有类似ActionBar 的概念。

其它值得注意的事情是当Snackbar 出现时FAB 没有移动。Chris 解释说是因为在 API 11 Honeycomb之前没有translationY ,因此它是不可能实现属性动画的要求。

总而言之,还是相当不错的。我们在这个系列中获取了其它的好的东西,有些方面是不支持的,尽可能优雅地降解行为,结果仍然是可用的。

总而言之design support library是非常强大的,给我们提供了非常有用的新的工具集,不仅可以很容易地实现而且能够很好地向后兼容。非常感谢Chrisdesign support library团队的其他成员。

现在我们将简单地结束这个系列因为在RSS阅读器应用中的例子不多了——至少相对来说在应用中使用FAB 有点牵强!但不要怕,在以后的文章中我们将探索更多特性,行为,和很酷的东西。从下周开始——看这个空间。

在本文我们实际上没有修改任何代码,但之前文章的源码可以从这下载。

请我喝杯咖啡,请使用支付宝扫描下方二维码:

原文地址:https://blog.stylingandroid.com/design-library-part-5/

更多相关文章

  1. Android下载文件,如果文件夹下有同名文件,则重命名规则为a(2)、a(3
  2. Android(安卓)ANR 分析学习总结(转)
  3. OkHttp源码解析
  4. android动画之通过子线程来实现动画
  5. Android(安卓)-- Interpolator
  6. Android(安卓)点击菜单键显示效果
  7. [置顶] 自定义漂亮的Android(安卓)SeekBar样式
  8. Android仿ios微信左划条目删除、置顶的实现,代码简洁,更容易理解使
  9. Android(安卓)资料整理

随机推荐

  1. Android(安卓)资源文件屏幕适配
  2. Android实现调用震动的方法
  3. AndroidStudio基础视频教程-整理
  4. Android打包apk
  5. android中menu.add()参数解析
  6. Android(安卓)RadioGroup和RadioButton案
  7. Android(安卓)本地缓存开源库 Reservoir
  8. Android可滑动TextView设置大段文字后,如
  9. TextView中的常用属性
  10. Android在广播接收器里启动活动和弹出对