欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android SDK中的Support兼容包详解

程序员文章站 2022-04-12 11:54:05
背景 来自于知乎上邀请回答的一个问题android中appcompat和holo的一个问题?, 看来很多人还是对这些兼容包搞不清楚,那么干脆写篇博客吧. 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;

最后,相信已经讲的很清楚了,大家有问题可直接博客留言。如果英语好的,可直接移步官方最权威的解释