Android Material Design Library系列教程(五)
来源:互联网 发布:可牛软件下载 编辑:程序博客网 时间:2024/06/07 08:39
尊重劳动成果,转载请注明出处: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 引进了一些很强大的阴影渲染elevation和 translationZ 在Lollipop之前是不可用的。虽然你不会知道——阴影渲染是很不错的。甚至从举起到按下的行为看起来都很不错。
因此让我们现在在Android的旧版本试试这个——Gingerbread (API 10):
在WebView 中我们有一些很明显的内容渲染问题,但那与design support library 无关,因此让我们忽略它。
主要的事情是我们可以看见Toolbar 和TabLayout 上面的文本颜色是错误的。我猜是因为这没有light theme 和dark ActionBar 的概念因为在 API 11 Honeycomb之前还没有类似ActionBar 的概念。
其它值得注意的事情是当Snackbar 出现时FAB 没有移动。Chris 解释说是因为在 API 11 Honeycomb之前没有translationY ,因此它是不可能实现属性动画的要求。
总而言之,还是相当不错的。我们在这个系列中获取了其它的好的东西,有些方面是不支持的,尽可能优雅地降解行为,结果仍然是可用的。
总而言之design support library是非常强大的,给我们提供了非常有用的新的工具集,不仅可以很容易地实现而且能够很好地向后兼容。非常感谢Chris 及design support library团队的其他成员。
现在我们将简单地结束这个系列因为在RSS阅读器应用中的例子不多了——至少相对来说在应用中使用FAB 有点牵强!但不要怕,在以后的文章中我们将探索更多特性,行为,和很酷的东西。从下周开始——看这个空间。
在本文我们实际上没有修改任何代码,但之前文章的源码可以从这下载。
请我喝杯咖啡,请使用支付宝扫描下方二维码:
原文地址:https://blog.stylingandroid.com/design-library-part-5/
- Android Material Design Library系列教程(五)
- Android Material Design Library系列教程(一)
- Android Material Design Library系列教程(二)
- Android Material Design Library系列教程(三)
- Android Material Design Library系列教程(四)
- Android Material Design support library
- android material design之CollapsingToolbarLayout(五)
- Material Design:Android Design Support Library
- Material Design Library系列之TextInputLayout
- Material Design Library系列之TabLayout
- Material Design Library系列之NavigationView
- Material Design Library系列之CoordinatorLayout
- Android 5.0 Material Design系列
- android material design 布局教程
- 深度剖析之 Material Design Android Library
- Material Design 组件 (五)
- 使用Android Design Support Library创建一个Android Material Design
- Material Design Library
- Android Material Design:CoordinatorLayout与NestedScrollView
- Navigation自定义
- 算法----数组的排序(冒泡 选择 插入)
- 大连交通大学IPTV使用方法
- SuiShenJi项目_dialog to Activity动画
- Android Material Design Library系列教程(五)
- UVA - 1587 Box
- 配置ubuntu和目标板nfs共享
- HDU 1076 An Easy Task(水~)
- Oracle Flashback Technology【闪回技术】
- java中内部方法对外部类变量的引用
- 跟我一起用Git
- HDOJ 5479 Scaena Felix
- 欢迎使用CSDN-markdown编辑器