Android Support 库 22.1 版
你可能听过这么一句话 最好的代码就是没有代码。然而我想对你说的是:你写下的每一行代码应该能为应用增加独特的价值,而不是为应用添加一行又一行繁复、无趣的模板代码。Android 提供支持库的初衷正是如此:让 Android 开发工程师把精力更多地放在逻辑实现上,而不是写业务代码。
最新发布的 Android 支持库一如既往地添加了许多实用的组件,并对 Support V4、AppCompat、Leanback、RecyclerView、Palette 和 Renderscript 库的内部实现逻辑作出改变。从新的 AppCompatActivity 和 AppCompatDialog 到 Android TV 全新的引导流程我们可以发现,新的库确实带来许多让我们耳目一新的惊喜。
Support V4
Support V4 库作为众多 Android 支持库的基础,包含许多向下兼容的类,大大简化了向下兼容的具体实现。
DrawableCompat 现在使 drawable 着色绘制向下兼容到了 API 4:现在只需要通过 DrawableCompat.wrap(Drawable) ) 简单封装你的 Drawable,然后 setTint() )、 setTintList() )、 setTintMode() ) 就能完成着色绘制:完全不需要为了支持多种颜色而去创建和维护几个不同的 Drawable 文件!
此外,我们正在通过 ColorUtils 类做一些适用于所有使用场景的 Palette 内部构件,ColorUtils 可以很容易地计算出颜色之间的对比度,确定维持最小对比度的最小透明度值(完美地保证文字的阅读体验),或者将颜色转换为对应的 HSL 值(译者注:Hue[hju]色调,Saturation['sætʃə'reʃən]饱和度,Luminance['lumɪnəns]亮度)。
插值器是所有动画系统的重要组成部分,它负责控制一个动画中某项数值改变的比率(例如加速、减速等)。Lollipop 中的 android.R.interpolator 已经内置了许多插值器,例如用于 建立真实感的动效 的 fast_out_linear_in、fast_out_slow_in、and linear_out_slow_in。但现在我们可以用代码调用 FastOutLinearInInterpolator 、 FastOutSlowInInterpolator 、 LinearOutSlowInInterpolator 类为动画添加这些插值器。除了那些预建的插值器,我们还创建了允许你创建二次方或三次方贝塞尔曲线的 PathInterpolatorCompat 类。
这个版本的支持库还把 Space 控件从 GridLayout 库移动到了 Support V4,使其不需要在项目中添加单独的依赖。Space 控件是一种轻量的、无形的控件,可用于创建控件间的间隙效果。
AppCompat
AppCompat 支持库开始地很低调,却是一个很重要的开端:为 API 7 及以上的设备提供了一个一致的 Action Bar。 在 版本 21 的修订中 ,它承担了新的职责:带来了 material color palette 、控件着色、Toolbar 支持,还有更多支持所有 API 7+的设备。单从 ActionBarActivity 名字上看是体现不出它全部功能的。
在此版本中,ActionBarActivity 已经过时了,新的替代者是 AppCompatActivity 。然而,这不只是一个重命名。事实上,AppCompat 的内在逻辑现在可以通过 AppCompatDelegate 实现-这是一个可以在所有 Activity 中包含的类,与合适的生命周期方法挂钩,并得到一致的主题、着色等,而不需要使用 AppCompatActivity (尽管这仍然是最简单的开始方式)。
在全新 AppCompatDelegate 类的帮助下,我们继续增加了一致性体验的支持,通过 AppCompatDialog 类增加了材料设计规范对话框的支持。如果你之前使用过 AlertDialog ,你会很高心,因为现在支持库中也有其对应的版本: support.v7.app.AlertDialog ,让你用相同的 API 享受 AppCompatDialog 带来的便利。
在使用 AppCompat 时,自动为控件着色的能力是在你的应用程序中保持品牌烙印和一致性体验中的重要保证。因为在填充布局时 AppCompat 会自动地为你将诸如 Button、TextView 这些传统控件替换为 AppCompatButton、AppCompatTextView 等新控件,以确保布局内的每一个控件都能支持着色。而在新的支持库中,色彩感知控件现在已经被公开,让控件类对自动着色的支持能延续到子类中。
这个列表囊括了目前所有的色彩感知控件:
- AppCompatAutoCompleteTextView
- AppCompatButton
- AppCompatCheckBox
- AppCompatCheckedTextView
- AppCompatEditText
- AppCompatMultiAutoCompleteTextView
- AppCompatRadioButton
- AppCompatRatingBar
- AppCompatSpinner
- AppCompatTextView
Lollipop 增加了在一个 view 中通过 view 级别上的 XML 属性 android:theme 实现重写主题的能力-非常有用的特性,如在亮色 activities 上的黑色 action bars。现在,AppCompat 允许你为 Toolbars 使用 android:theme(不赞成使用之前的 app:theme),更好地带来为 API 11+的所有 views 的 android:theme 支持。
如果你刚开始接触 AppCompat,那么看看下面的视频,可以察觉出是多么容易上手,这就能为你所有的用户带来了一致性的设计:
Leanback
Leanback 库作为 Android 电视应用程序的最佳实践的集合,我们曾忽略去不使一个更美好的 10 的经验作为发行版的一部分。你会注意到加载后立即更新 Leanback 例子新功能的引导步骤。
这组类和主题可以用来构建一个多步骤的过程,这在 Android TV 上看起来很棒。它是由一个左边上的指导视图和右边的列表操作建立了起来。每一个都是可定制的,通过一些主题与 Theme.Leanback.GuidedStep 的父类或其它,如果需要更多的定制,通过自定义一个 GuidanceStylist 和 GuidedActionsStylist。 。
你还会发现大量的 bug 修复,性能改进,以及使它更完美贯穿在库中-所有与制作 Leanback 的经验,更多就是为用户和开发人员所喜欢。
RecyclerView
除了一系列正确的 bug 修复,此版本增加了一个新的 SortedList 数据结构。此集合可以很容易地保持自定义对象的排序列表,通过 RecyclerView.Adapter 正确地分发数据改变的事件:维护 item 的 添加/删除/移动/改变 时 RecyclerView 提供的动画。
此外,SortedList 还支持成批地一起改变,调度只是适配器上一个单一的集操作,确保大量 items 改变时的最佳的用户体验。
Palette
如果你已经使用 Palette 从图像中提取出颜色,你会很高兴地知道,现在在不会丢失品质下速度是之前的 6~8 倍!
Palette 现在使用建造者模式来实例化。不是直接调用 Palette.generate(Bitmap) 或者其它相似的操作,你会使用 Palette.from(Bitmap) ) 来取回一个 Palette.Builder 实例。然后,在调用 generate() 或者 generateAsync() 检索颜色的色板之前,您可以随意更改的最大颜色数来生成并设置图像的最大尺寸来重新运行 Palette。
Renderscript
Renderscript 给你巨大的计算潜力,此外这个支持库版本使得一些预先定义的脚本和调用脚本内部函数在 API 8+的设备上变得可用。这个版本改善了所有设备的可靠性和性能,这些提升取决于本地 Renderscript 可用时通过一种改进的图像边缘检测算法实现-确保最快和最可靠的实现总是我们的选择。两个额外的内部函数也被添加在此版本中: ScriptIntrinsicHistogram 和 ScriptIntrinsicResize ,完成采集到 10。
SDK 现在可用了!
没有比这更好的时间来开始使用 Android 支持库。今天你就可以使用这个库开始开发了,从 Android SDK Manager 下载 Android 支持库和 Android 支持资源吧。
要了解更多关于 Android 的支持库和它提供给你的 API,请访问 Android 开发者官网上的 支持库章节 的网页。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论