Android 各个Support Library介绍

参考:

http://zmywly8866.github.io/2015/10/09/android-support-library.html


V4 Support Library

这个包的名字是:“android-support-v4.jar”,是为Android 1.6(API版本为4)及以上的版本设计的,它包含大部分高版本中有而低版本中没有的API,包括application componentsuser interface featuresaccessibilitydata handlingnetwork connectivityand programming utilities  

V7 SupportLibraries

针对Android 2.1(API Level 7)及以上的版本谷歌提供了一系列的support包,这些support包各自对应着特定的功能,每一个都可以单独地被引用。

V7 appcompat library

这个包的主要作用是为了在低版本实现AndroidHolo风格界面而引入的,主要包括ActionBarAppCompat等类和主题,它是一个依赖工程而不是jar包。

注意:这个包需要依赖android-support-v4.jar,如果你使用的是Eclipse或者Ant编译你的APP,确保你在使用这个依赖包时集成了android-support-v4.jar这个jar包。

v7 cardview library

一个在Android 5.0才被引入的卡片布局support包。

v7 gridlayout library

一个支持网格布局的support包。

v7mediarouter library

一个用于设备间音频、视频交换显示的support包。

v7 palette library

一个可以实现页面的颜色动态变换的support包,Palette是这个support包的核心类。

v7 recyclerview library

核心类是RecyclerView,用于替换ListViewGridView等需要依赖AdapterView,具体可以查阅RecyclerView方面的资料。

v7 Preference Support Library

一个用于支持各种控件存储配置数据的support包。

v8 renderscript library

一个用于渲染脚本的support包。

v13 Support Library

这个包的作用主要是为Android3.2API Level 13)及以上的系统提供更多地Fragment特性支持,使用它的原因在于,android-support-v4.jar中虽然也对Fragment做了支持,由于要兼容低版本,导致他是自行实现的Fragment效果,在高版本的Fragment的一些特性丢失了,而对于v13以上的sdk版本,我们可以使用更加有效,特性更多的代码。这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。

v17 Leanback Library

  一个主要作用是用于支持电视设备的support包,为电视设备提供了很多组件,比如:BroweFragmentDetailsFragmentPlaybackOverlayFragmentSearchFragment等。

Android Support Library 23.2

参考资料:

Android Support Library 23.2 中文版

Android Support Library 23.2

本周 Android Support 库发布了 23.2新版本,该版本包含了几个新功能。
本次更新主要涉及:

1.Support Vector Drawables and Animated Vector Drawables

2.AppCompat DayNight theme

3.Design Support Library: Bottom Sheets

4.Support v4: MediaBrowserServiceCompat

5.RecyclerView

6.Custom Tabs

7.Leanback for Android TV

 

支持 Vector Drawables 和 Animated Vector Drawables

使用矢量图的好处之一就是不用出多个图片(hdpi,xhdpi 等)了, 只需要一个矢量图即可涵盖所有屏幕密度的需要。矢量图在Android 5.0 才开始支持,使用23.2 support 库中的support-vector-drawable 和animated-vector-drawable 可以在之前的版本支持矢量图了。之前Android studio在 build的时候, 通过生成 PNG图片来支持矢量图,要使用 23.2版本中的矢量图功能,需要禁用之前版本的功能。如果你使用的 gradle插件为 2.0+版本,则通过如下方式来启用新功能:

// Gradle Plugin 2.0+  
android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
}  

如果你使用 1.5 的 gradle 插件,则需要通过如下的方式:

/ Gradle Plugin 1.5  
 android {  
   defaultConfig {  
     generatedDensities = []  
  }  

  // This is handled for you by the 2.0+ Gradle Plugin  
  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 }  

然后就可以使用 VectorDrawableCompat 和 AnimatedVectorDrawableCompat 了,VectorDrawableCompat最低可以在 API 7 版本上使用, 而 AnimatedVectorDrawableCompat需要 API 11 版本。目前通过 AppCompat 库只支持 ImageView和其子类(例如 ImageButton和 FloatingActionButton)可以在布局文件中直接使用 矢量图,支持方式为使用 app:srcCompat来替代 android:src


如果在代码中设置矢量图,则和之前一样,可以直接使用 setImageResource() 。使用AppCompat 和app:srcCompat 是使用矢量图最简单的方式。

在5.0之前的版本除了 app:srcCompat 属性之外,其他属性都不支持矢量图,例如TextView 的android:drawableLeft ,你如果在该属性上使用矢量图,则在5.0之前的版本上会crash。但是,你如果把矢量图放到其他Drawable 容器中,再使用这个Drawable 容器可以支持5.0之前的版本,支持的容器有StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable,和 RotateDrawable。

你可以在 Drawable 容器中应用你的矢量图,例如通过 StateListDrawable 来引用矢量图,然后在TextView 的android:drawableLeft 中使用这个StateListDrawable,这样在5.0 之前的版本也可以使用矢量图了。

这样每个矢量图都需要放到一个 Drawable 容器中,可能比较繁琐,如果你使用 Data Binding 框架,则还可以又一个相对方便的方式。

定义一个 BindingAdapter, 该 BindingAdapter 把一个Drawable id绑定到 TextView的 drawableTop,


然后在 布局文件中,使用这个自定义的 BindingAdapter,


AppCompat DayNight 主题

除了支持矢量图以外,23.2版本中还保护了一个新的Theme.AppCompat.DayNight主题。

在API 14之前的版本,DayNight主题和其子主题(DayNight.NoActionBar, DayNight.DarkActionBar, DayNight.Dialog等)都使用白色主题替代。在14+版本,则 DayNight可以使应用很容易的同时支持白色和黑色主题,并且可以根据用户当前的时间自动切换主题,白天使用白色主题,夜晚使用黑色主题,是不是很酷。

默认情况下系统使用UiModeManager.getNightMode()来判断是否使用黑色主题。在AppCompatDelegate中可以重写该方法。通过函数AppCompatDelegate.setDefaultNightMode()可以设置整个应用的模式,也可以通过getDelegate().setLocalNightMode()函数来修改当前 Activity 和Dialog 的主题。

如果使用AppCompatDelegate.MODE_NIGHT_AUTO 模式,系统会根据当前的时间和设备最后已知的位置(需要您的应用具有位置权限)来自动切换主题。

如果你使用了DayNight ,请全面测试你的应用在每个主题都可以使用,特别是文本和图标的颜色,如果你使用标准的TextAppearance.AppCompat来设置文字样式,或者从android:textColorPrimary 来获取颜色,则系统会自动切换到合适的颜色。

除了这两个比较大的新功能以外,23.2 版本中还有如下改动,详细情况请参考这里

·Design 库中新加一个bottom sheet控件。

·Support v4 的MediaBrowserServiceCompat

·RecyclerView 的自动计算本身大小的功能,这样RecyclerView就可以根据其内容的大小来设置自己的尺寸了。

·Custom Tabs更加好用。

·Leanback for Android TV 中新的 GuidedStepFragment,更加方便的创建新手指引。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值