Android Support 兼容包详解
来自于知乎上邀请回答的一个问题 Android 中 AppCompat 和 Holo 的一个问题? , 看来很多人还是对这些兼容包搞不清楚,那么干脆写篇博客吧.
Support Library
我们都知道 Android 一些 SDK 比较分裂,为此 google 官方提供了 Android Support Library package 系列的包来保证高版本 sdk 开发的向下兼容性, 所以你可能经常看到 v4,v7,v13 这些数字,首先我们就来理清楚这些数字的含义,以及它们之间的区别。
support-v4
用在 API lever 4(即 Android 1.6) 或者更高版本之上。它包含了相对更多的内容,而且用的更为广泛,例如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabStrip,Loader,FileProvider 等
Gradle 引用方法:
compile 'com.android.support:support-v4:21.0.3'
support-v7
这个包是为了考虑 API level 7(即 Android 2.1) 及以上版本而设计的,但是 v7 是要依赖 v4 这个包的,v7 支持了 Action Bar 以及一些 Theme 的兼容。
Gradle 引用方法:
compile 'com.android.support:appcompat-v7:21.0.3'
support-v13
这个包的设计是为了 API level 13(即 Android 3.2) 及更高版本的,一般我们都不常用,平板开发中能用到,这里就不过多介绍了。
Theme
回到知乎上的这个问题,我们来介绍下各种 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
今年的 5.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;
最后,相信已经讲的很清楚了,大家有问题可直接博客留言。如果英语好的,可直接移步官方最权威的解释 https://developer.android.com/tools/support-library/features.html
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论