Android Support Library介绍

一、Android Support Library存在的原因

      Android自第一代发布以来,它的版本更新迭代的速度可以说是非常快的,但是android又是一个移动操作系统,是面对所有的用户的,并不是一个行业专用的系统,这就是要求这个系统在频繁的更新中,必须使得已经存在运行的大规模的系统能够被新的版本兼容。要做到这一点主要就是要做好API的兼容问题,老的接口被废弃了,但是在新的系统版本上必须还能使用;新的接口老版本上没有,但是提供了极好的特性,开发者想在老的系统平台上使用;这些问题都是android发展中的问题,那么这些问题怎么解决呢?Google引入了Support Library。
Google Support Library的介绍地址:https://developer.android.com/topic/libraries/support-library/index.html
      另外,如果你下载了android的sdk之后Support Library的jar和源码存放的路径是:/sdk/extras/android/support/

(support文件夹下)内容这样:


      经常看到v4,v7,v13这些数字,首先我们就来理清楚这些数字的含义,以及它们之间的区别。

support-v4

      用在API lever 4(即Android 1.6)或者更高版本之上。它包含了相对更多的内容,而且用的更为广泛,例如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabStrip,Loader,FileProvider 等,它提供了极丰富的API,包括对于app组件的支持,用户界面特性,设备无障碍使用,数据处理,网络链接和编程工具等。

Gradle引用方法:


compile 'com.android.support:support-v4:21.0.3'

support-v7

      这个包是为了考虑API level 7(即Android 2.1)及以上版本而设计的,但是v7是要依赖v4这个包的,v7支持了Action Bar以及一些Theme的兼容。这个库包含了一系列的子库,这些子库可以互相独立地存在和应用在app中。

Gradle引用方法:


compile 'com.android.support:appcompat-v7:21.0.3'

support-v13
      这个包的设计是为了API level 13(即Android 3.2)及更高版本的,主要是添加了Fragment用户界面模式的支持。更多信息查看android文档:
https://developer.android.com/reference/android/support/v13/app/package-summary.html。通常来讲google建议开发者需要包含v4 support 和 v7 appcompat这两个库,因为这两个库提供了很大范围的android版本支持和符合android UI设计模式的API。

Theme
Hoho Theme概念

      在4.0之前Android可以说是没有设计可言的,在4.0之后推出了Android Design,从此Android在设计上有了很大的改善,而在程序实现上相应的就是Holo风格,所以你看到有类似 Theme.Holo.Light、 Theme.Holo.Light.DarkActionBar 就是4.0的设计风格,但是为了让4.0之前的版本也能有这种风格怎么办呢?这个时候就不得不引用v7包了,所以对应的就有 Theme.AppCompat.Light、 Theme.AppCompat.Light.DarkActionBar,如果你的程序最小支持的版本是4.0,那么可以不用考虑v7的兼容。

Material Design Theme

      Android5.0版本,Android推出了Material Design的概念,这是在设计上Android的又一大突破。对应的程序实现上就有 Theme.Material.Light、 Theme.Material.Light.DarkActionBar等,但是这种风格只能应用在在5.0版本的手机,如果在5.0之前应用Material Design该怎么办呢?同样的引用appcompat-v7包,这个时候的Theme.AppCompat.Light、 Theme.AppCompat.Light.DarkActionBar就是相对应兼容的Material Design的Theme。

注意事项

      gradle引用appcompat-v7包的时候就不需要引用v4了,因为v7里默认包含了v4包;

      compile ‘com.android.support:appcompat-v7:21.0.3' 中的21代表API level 21推出的兼容包,所以如果你引用的是21之前的版本,则默认这些Theme.AppCompat.Light是Holo风格的,从21开始的版本默认是Material风格,使用appcompat之后,你的所有的Activity应该继承自ActionBarActivity,而ActionBarActivity继承自FragmentActivity,所以放心的使用Fragment;

二、Android Support Library概述

      Android Support Library提供了很多没有编译进framework的特性,这些库提供了很多向后兼容的新特性,提供了在framework中没有的很有用的UI元素,还提供了很多app可以使用的工具。在很多情况下,一些特性对有很多app的开发者而言是很有价值的,但是这些特性如果包含在framework中就不是很合适。比如说,某个app可能需要一个针对某个特定的使用场景下的特性,并不是一个通用的场景特性,这个时候如果把它放到framework中去的话,就会使得framework变得越来越臃肿,并且可能导致API混乱,这些对于一个操作系统来说都是致命的。

      但是这些需求,android不能不管不问,所以android提供了一系列的支持包来支持这些需求,这些支持包的呈现形式是一个jar包,app开发者只要把这个jar包添加到app工程中去就可以使用其中的特性和API了。

三、Support Library提供基本特性

1. 版本向后兼容:保证新版的特性在老版本上依然可以运行
2. 实现了android布局模式的UI元素
3. 支持不同形式的元素
4. 多种多样的工具方法函数
      Android Support Library提供了这么多的特性,所以google建议所有的app开发者应该使用Support Library进行开发。下面我们逐个梳理下这些特性:

1、向后兼容

      Support Library允许app在老旧的android版本上使用新的android版本上才能使用的特性。举个例子来说,假如你开发了一个app,这个app使用了android 5.0的质感设计,整个app的界面风格都是质感设计的风格,看起来很漂亮!这个app在5.0,6.0上运行一点问题都没有,但是一旦到4.4之前的系统上运行的话,所有的材料设计风格全部没有了,而且看来很丑。怎么办?根本的原因就是4.4之前的版本就不支持材料设计这个玩意儿!!!但是Support Library的appcompat library就可以解决,只要你的app包含了这个库,并且声明使用他里面的质感设计主题就可以在很老的android版本上使用材料设计了!是不是很简单,是的!之所以简单的原因是google把复杂的事情替你做完了,你只要使用就可以了。这样一来,你的app就可以在很多的android版本中保持用户体验的一致性了!

      在某些情况下,Support Library的行为还是会受制于具体android平台的,因为它最终还是需要使用系统的接口的。这些情况下,如果一个app调用了Support Library的一个方法,那么这个方法的行为就会取决于app运行的平台版本。如果framework提供了此方法必要的方法,那么Support Library就会调用这个方法来完成工作;如果app是运行在老旧的版本上的话,并且framework没有提供必要的接口的话,那么Support Library就会尝试调用自己内部的接口来完成这个工作或者最糟糕的就是压根调用就没有反应。但是绝对不会导致app崩溃或者出现很奇怪的BUG!这个时候Support Library表现的出来的行为就是不可预期的,保证最差的结果就是没有结果,绝对不会给出一个错误的结果。同时app不应该自己去判断系统平台的版本,这个工作应该由Support Library自己来完成,凡是类名以Compat结尾的都会自动做这样的判断,比如ActivityCompat这个类。这部分接口在使用的时候,需要仔细查看相关的api文档说明。

      另外,比较重要的就是,Support Library也会提供一些完整的,完全独立的接口类,这些类和系统平台的framework没有任何关系,在任何平台上的表现都是一样的。这部分的接口可以放心地使用!

      再次说明一下,在以上两种情况下app都不应该主动去检查系统平台的版本,这部分的工作应该由Support Library内部完成的。

2、支持通用布局模式

      Support Library提供了不被android framework影响的UI元素,举个例子来说,android Support Library提供了一个额外的布局类:DrawerLayout。这些类的设计遵循了android系统设计的基本实践原则,比如Design Library遵循了android 5.0的质感设计全部原则,这样的话这个库在很多android版本上的运行表现都是一样的。

      如果你使用support library的话,你就可以避免陷入重复造车轮的困境。如果你的app有一个特定的UI需求,你就可以使用这些现成的代码,这些库提供了用户一直熟悉的界面风格和设计,这对于保证app的用户体验一致性是非常重要的。这些类还可以帮助你构建出一个看起来很像android生态环境中的一部分的app,因为这些库的设计是完全android的设计哲学的!举一个例子,许多的app都需要展示一个任意长度的列表,并且需要当信息发生变化的时候,这个列表中的信息能够快速,流畅地展示出来;这个列表中的元素可能是邮件,联系人,音乐专辑等等。这些app可以使用support library中的RecyclerView来显示列表。这种做法可以使得开发者不用从0开始构建自己需要的类,并且能够很好保证用户在我们的app中的体验和系统平台的体验是一致的!这些都是HMI设计中重要的原则!

3、提供不同类型的元素

      Android SDK提供了很多要素的类库,比如TV和可穿戴设备,一个app可以依赖一个合适的support library去提供多平台统一的功能,并且可以提供存在于外部显示器,扬声器和其他地方的设备的内容。

4、通用的工具类方法

      Android support library还提供了很多向后兼容的多平台,多版本的工具类方法。app可以使用这些工具类来提供一个在多个多个android系统版本之间的一致的用户体验。比如说,support library提供的权限方法,这个方法的运行会依赖于具体的系统版本,假如运行在支持动态运行时权限检查模型的版本(6.0+)的话,那么这个方法会在运行是弹出相应的对话想用户请求需要的权限;如果是运行在不支持动态权限的版本上时,这个方法会在app安装时候保证所需要的权限被授予。

四、常用支持库

      Android Support Library包包含了一系列可以包含在你的app中的库,这些库中的每一个库都提供了特定的android版本范围支持和特性集合。

1、v7 cardview library主要添加了CardView的支持,CardView是一个继承自FrameLayout的widget,主要用于实现材料设计风格的带有圆角和阴影效果的卡片式UI效果

2、V7 gridlayout library该库添加了grid布局的支持,grid布局是一个网格式的布局,方面在一个屏幕上显示多个格局相似的信息

v7 mediarouter library这个库是一个多媒体路由的库,主要提供了MediaRouter, MediaRouteProvider等类,还有就是支持Google Cast的类,Google Cast是google在2013年7月25日发布的全新的链接设备,主要运行简化版本的chrome操作系统,可以插在电视机的HDMI接口上。

3、v7 palette library该库主要提供了调色板的功能,这个库可以用来从一个图片中抽取某个颜色。举个例子,一个音乐app可能会从当前播放的音乐的的封面图片中抽取出图片的主题颜色,然后使用这个颜色装饰一下当前界面的主题颜色,这样就使得界面更加柔和,给用户更多的代入感。

4、v7 recyclerview library该库主要是提供RecyclerView这个控件,用来再一个有限的窗口中高效灵活地展示数据项,关于RecyclerView 的使用大家可以参考这个博客:
http://blog.csdn.net/lmj623565791/article/details/45059587

5、v7 Preference Support Library这个库主要就是添加了preference的支持,包括CheckBoxPreference 和 ListPreference等类

6、Design Support Library这个库主要添加了材料设计的支持,包含了很多材料设计的组件和模式。关于这个库的使用可以看下这篇老外写的博客,写的很清楚:
https://www.sitepoint.com/material-design-android-design-support-library/

参考:

http://blog.csdn.net/eclipsexys/article/details/46349721
https://developer.chrome.com/multidevice/android/customtabs
https://developer.android.com/topic/libraries/support-library/setup.html
https://developer.android.com/topic/libraries/support-library/revisions.html

http://www.92to.com/bangong/2016/06-28/6619857.html

 

Android Support Library  v23免积分下载:

http://download.csdn.net/detail/ljheee/9715066

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值