Android Support Library 22.1 发布

英文原文见官博:http://android-developers.blogspot.hk/2015/04/android-support-library-221.html

转载务必注明出处。

关键词:ActionBarActivity已死,AppCompatActivity万岁!

俗语云“无码胜有码”,虽然我们并不是真的推荐完全不写代码,但是代码对你的app而言应该有独立的价值,而不是将日常那些支离破碎的代码拷贝在一起。Android Support Library就是帮你完成各种细小功能的最佳资源之一。

最新版本的Support库加入和修改了很多组件,包括了Support V4,AppCompat,Leanback,RecyclerView,Palette以及Renderscript库。从AppCompatActivityAppCompatDialog 到新的Android TV开发指导,总之我们有足够的理由对这个新版本的发布感到欣喜。

Support V4

Support V4库作为安卓兼容库中最基本的部分,包含了许多对向上兼容有用的类。 DrawableCompat 让drawable 着色兼容至api 4,现在只需通过DrawableCompat.wrap(Drawable) 将Drawable封装一下,可以直接使用 setTint(), setTintList(), 和 setTintMode() 方法了,不再需要为不同的颜色去维护多个drawable。

另外ColorUtils 这个工具还提供了一些Palette 内部的功能,让你更好的处理颜色的问题。比如计算两个颜色之间的对比度,决定最小的透明度来获得更好的阅读效果(比如两个相近的颜色会干扰阅读,降低某个的透明度增强视觉效果)。还可以将颜色转换成相应的HSL模式。

插值器(Interpolator)是动画系统中非常重要的部分。它控制着动画的节奏(比如加速还是减速等)。Lollipop在android.R.interpolator中加入了几个interpolator,包括fast_out_linear_in, fast_out_slow_in,和linear_out_slow_in:对于产生逼真的物理效果至关重要。现在我们可以通过使用兼容包中的FastOutLinearInInterpolator, FastOutSlowInInterpolator, LinearOutSlowInInterpolator类来达到同样的效果。除此之外,我们还可以使用PathInterpolatorCompat 来制造二次方或三次方的贝塞尔曲线动画。

这个版本还将Space控件从GridLayout中抽取出来放到Support V4中,作为独立的控件。Space控件用于在两个组件之间制造间隙,是一个轻量级的view。

AppCompat

AppCompat最开始扮演的是一个不起眼但很重要的角色:让API 7也能也可以使用actionbar。而在AppCompat 21版本中,AppCompat担当起了更多的责任:为api 7+的设备带来material color palette ,widget着色,Toolbar以及其他功能。因此ActionBarActivity这个名称已经不能完整的体现AppCompat的作用了。在这个版本中,ActionBarActivity已经不推荐,取而代之的新宠是AppCompatActivity 。但是,这并不只是命名的改变,内部实现原理其实是通过AppCompatDelegate 来完成的。AppCompatDelegate是一个可以放在任意Activity中,并且回调相应生命周期的类,在不使用AppCompatActivity的情况下,也可以得到一致的主题与颜色(虽然使用AppCompatActivity仍然是最简单的方法)。

AppCompatDelegate还用在了AppCompatDialog类中,让我们可以实现material design的对话框。你应该使用过AlertDialog ,幸运的是在这个版本的 support.v7.app.AlertDialog中,集成了AppCompatDialog的所有优点,但是api仍然和以前一样。

AppCompat的控件自动着色功能对于app具有一致的体验与认可度是非常有用的。这是自动完成的,你只要用AppCompatButton替代Button,AppCompatTextView替代TextView ,等等。 下面是具有此功能的AppCompat控件的完整列表:

  • AppCompatAutoCompleteTextView

  • AppCompatButton

  • AppCompatCheckBox

  • AppCompatCheckedTextView

  • AppCompatEditText

  • AppCompatMultiAutoCompleteTextView

  • AppCompatRadioButton

  • AppCompatRatingBar

  • AppCompatSpinner

  • AppCompatTextView

Lollipop中,可以使用android:theme属性在xml中重写一个view的主题 ,这对于light风格的Activity中有深色actionbar的类似场景很有用。现在AppCompat让你可以在Toolbars中使用android:theme属性(注意是android:theme而不是之前的app:theme),我们甚至为所有view都提供了android:theme的支持(API 11+)。

现在你可以尝试使用AppCompat,看看它使用起来有多么简单:视频略(反正是英文的)。

Leanback

这部分没涉及过,关于TV的,看不懂,不翻译了。

With the Leanback library serving as the collection of best practices for Android TV apps, we’d be remiss to not make an even better 10’ experience as part of the release with the new guided step functionality.

image00.png

This set of classes and themes can be used to build a multiple step process that looks great on Android TV. It is constructed from a guidance view on the left and a list of actions on the right. Each is customizable via themes with a parent of Theme.Leanback.GuidedStep or, if even more customization is needed, through custom a GuidanceStylist and

RecyclerView

除了修复一些bug之外,这个版本好提供了新的数据结构SortedList。这个集合让你轻松维护一个可排序的自定义对象列表,在数据变化的时候向RecyclerView.Adapter分发change事件:维护RecyclerView自带的item的added/deleted/moved/changed动画。

另外,SortedList还支持将所有的change绑在一起,只对Adapter分发一个操作,保证在大量item改变的时候获得最佳体验。

Palette

Palette现在使用Builder模式来实例化,而不是之前直接调用Palette.generate(Bitmap)。使用Palette.from(Bitmap)来获得Palette.Builder。你可以改变生成色彩的最大数目,设置image的最大尺寸来获得Palette而不是之前通过调用generate()或者generateAsync()来获得Swatch。

Renderscript

Renderscript帮助你获得强大的计算潜能,Support Library还制作了几个内置的script,称为script intrinsics ,可以在API 8+设备上使用。这个版本改进了稳定性与性能。可以检测Renderscript功能是否可以被使用-以保证选择最快最稳定的实现。另这个intrinsics中还添加了  ScriptIntrinsicHistogramScriptIntrinsicResize

-Renderscript我也不熟悉,翻译很勉强。

SDK可以下载了

现在是开始使用Android Support Library的最好时机。你可以今天就开始使用sdk Manager下载Android Support Library。

关于Android Support Library的更多api,请访问开发者网站的Support Library 章节