2月25凌晨Google正式发布了android-support-library-23.2支持库,一大早微信群里面都在热议不止,开发者们的福音。这一次23.2版本增加了一些新的支持库以及新的功能,许多现有的库,还把之前的library小学生问题修复了,可喜可贺。闲言碎语不要讲,直接切入正题。(文中链接记得自备梯子)
YouTube观看链接Android Support Library
中文翻译
本次更新主要涉及:
- Support Vector Drawables and Animated Vector Drawables
- AppCompat DayNight theme
- Design Support Library: Bottom Sheets
- Support v4: MediaBrowserServiceCompat
- RecyclerView
- Custom Tabs
- Leanback for Android TV
1.Support Vector Drawables and Animated Vector Drawables(支持矢量图片和矢量图片动画)
Vector Drawables让你用一个矢量图片,替换定义在XML中的多个PNG资源。而此前只支持L版本或者更高的设备版本,通过support-vector-drawable和support-animated-vector-drawable两新的支持库分别支持矢量图片和矢量图片动画。
AndroidStudio1.4已经引入过矢量绘图支持在构建时生成PNG图像。要想禁用此功能(并想使用最新支持库),你需要在你的build.gradle里面添加vectorDrawables.useSupportLibrary = true
1 | // Gradle Plugin 2.0+ |
你会发现这个新的属性只在AndroidStudio2.0版本存在。如果您使用的是AndroidStudio1.5,需要
1 | // Gradle Plugin 1.5 |
VectorDrawableCompat支持API7+,AnimatedVectorDrawableCompat支持API11+。
由于android的图片加载机制的限制,不是所有支持图片id的地方(例如xml文件里)都能使用矢量图。值得一体的是,AppCompat已经增加了许多功能,可以很容易地使用新的矢量绘图资源。
首先,当我们在ImageView(或子类,如ImageButton和FloatingActionButton)中使用Appcomat,你就可以使用新属性app:srcCompat来引用矢量图片(也可以在android:src中以及任何其他可用的地方使用图片)。
1 | <ImageView |
如果你在运行时(java代码中)更改drawable,你也可以使用相同的setImageResource()和以前一样没有变。使用AppCompat和 app:srcCompat是将矢量图片集成到app的最简单的方法。
你会发现在L版本中不使用app:srcCompat引用矢量图都是无效的。然而,当矢量图被另一个drawable container(例如StateListDrawable,InsetDrawable,LayerDrawable,LevelListDrawable和RotateDrawable )引用时,AppCompat是可以加载的。所以,在一些无法直接使用AppCompat(直接使用app:srcCompat)的地方通过这种间接使用,也可以在矢量图片中使用类似 TextView’s android:drawableLeft属性。
2.AppCompat DayNight theme(DayNight 主题)
此前API14,该DayNight主题以及DayNight.NoActionBar, DayNight.DarkActionBar,DayNight.Dialog等等,提供了相同的亮度。但在API 14和更高版本的设备,这个主题可以让应用程序可以轻松地支持 白天和夜晚的主题,根据是否是“夜晚”来决定主题是否从白天切换到夜晚主题。
默认情况下,是否是“夜晚”是由系统值(UiModeManager.getNightMode())决定,但你可以重写该方法AppCompatDelegate中的值来设置。你将能够在整个应用程序中设置默认值(直到进程重新启动)与静态AppCompatDelegate.setDefaultNightMode()或通过 getDelegate()) 得到AppCompatDelegate对象,并使用setLocalNightMode()来设置当前的Activity或Dialog的主题。
当使用AppCompatDelegate.MODE_NIGHT_AUTO,它会时刻知道你最后的位置和时间(如果您的应用程序已开启位置权限)用于白天和黑夜之间自动切换的依据。MODE_NIGHT_NO 和 MODE_NIGHT_YES 则分别强制设定了从不或是一直使用夜晚主题。
这是您在使用白天主题的时候彻底测试你的应用程序的关键,因为白天主题的亮度很可能导致一些文字或者图标变得不可阅读。如果您使用的是标准TextAppearance.AppCompat 从你的主题样式android:textColorPrimary为你的文本或颜色,你会发现这些为你自动更新。
3.Design Support Library: Bottom Sheets(材料设计,底部表)
通过附加一个BottomSheetBehavior到子视图的CoordinatorLayout(添加app:layout_behavior =“android.support.design.widget.BottomSheetBehavior”),通过对BottomSheet的操作我们可以得到它的五种状态。
- STATE_COLLAPSED:关闭Bottom Sheets,高度可控属性app:behavior_peekHeight(默认为0)
- STATE_DRAGGING:在用户直接拖动Bottom Sheets向上或向下的中间状态
- STATE_SETTLING:当Bottom Sheets被释放和沉降到其最终位置记录的状态
- STATE_EXPANDED:Bottom Sheets展开时的状态
- STATE_HIDDEN:默认情况下禁用(和启用应用程序:behavior_hideable属性),这使得用户可以向下滑动Bottom Sheets完全隐藏底部
请记住,你的底部滚动容器必须支持嵌套滚动(例如,NestedScrollView, RecyclerView, or ListView/ScrollView on API 21+)。
如果需要监听Bottom Sheets回调时的状态,可以通过BottomSheetCallback来实现。
1 | // The View with the BottomSheetBehavior |
虽然BottomSheetBehavior能够捕获持续bottom sheet的情况,此版本还提供了一个BottomSheetDialog和BottomSheetDialogFragment填补了model bottom sheets使用情况。只需更换AppCompatDialog或AppCompatDialogFragment作为底片。
4.Support v4: MediaBrowserServiceCompat
该Support v4库用作许多支持库的基础,并且为一些新版本介绍的特征提供支持(backports)。
添加到以前发布的MediaSessionCompat类,为媒体播放了提供了坚实的基础,这个版本增加了MediaBrowserServiceCompat和MediaBrowserCompat提供,带来了最新的API兼容的解决方案(甚至没有在L设备上加)支持API4+。这使得我们更容易地在Android上支持媒体的播放和在Android Wear上浏览媒体,为我们提供了一个标准的接口,让你的媒体播放服务与界面连起来。
5.RecyclerView
最新的RecyclerView目录结构如下
RecyclerView组件为我们提供了灵活的创建列表和网格以及动画的特性。这个版本带来一个激动人心的新特性LayoutManager API:自动测量!!!这允许RecyclerView尺寸大小根据其内容的大小尺寸定制。这意味着,先前不可用的情况,例如使用WRAP_CONTENT为尺寸的RecyclerView,现在都是可能的。你会发现所有内置的布局管理现在都支持自动测量。
由于这种变化,一定要确保你的item的布局属性:以前被忽视的布局参数(如MATCH_PARENT的滚动方向)现在将不一样。
如果你有一个自定义的LayoutManager并且不是基于之前的拓展,有一个选择就是你可以调用setAutoMeasureEnabled(true),以及做一些小的变化(详情见Javadoc)来支持新特性
注意,虽然RecyclerView支持动画,但是他不支持自己动画边界变化,如果你想对RecyclerView边界进行动画处理,你可以使用 Transition APIs.
6.Custom Tabs(自定义选项卡)。
Custom Tabs能够同时保持你的应用程序的外观和感觉无缝地过渡到Web内容。在这个版本中,您现在就可以行动加入底栏显示旁边的网页内容。
有了新加的addToolbarItem(),你现在可以在底栏增加五种动作,并且一旦会话开始就可以使用 setToolBarItem()更新他们,你还会发现一个setSecondaryToolbarColor()自定义底栏的背景颜色。
7.Leanback for Android TV
AndroidTV
请看原文,对这方面了解甚少,就不嚯嚯读者了。。
动手吧!!!
Android的支持库的版本23.2是通过您的SDK管理器和Android Studio中更新可用。充分利用所有的新特性以及其他bug修复从现在开始!与往常一样,在提交错误报告b.android.com并与其他开发人员交流的Android开发Google+社群
版权声明:
除非注明,本博文章均为原创,转载请以链接形式标明本文地址。