根据Android系统版本禁用/启用某些Activity
Contents
在开发中,需要用到Android新版本的特性,而又要适配旧版本。如何让Activity低版本中不显示,而高版本无影响呢?
在查看APIDemos源码时,看到AndroidManifest.xml中有这样一段
1 | <activity android:name=".animation.AnimationLoading" |
android:enabled
这个属性是控制Activity是否能被实例化的。@bool/atLeastHoneycomb
是指values/bools.xml
中的atLeastHoneycomb
属性的值。
该文件定义了许多与平台相关的atLeastXxx
属性,默认值都是false
。
在APIDemos/src/res/ 目录下有许多的values-vXX
目录,各自下面都有bools.xml
,
在values-v11/bools.xml
中可以看到
1 | <resources> |
即,.animation.AnimationLoading
这个Activity在v11版本以上系统可以被实例化,以下则不能。
如此便做到了让应用更好的适配各个版本。
延伸:
activity-alias
为某个Activity起别名,重复使用同一个Activity,同样可以做到平台相关的一些处理:
比如有Activity需要在Launcher上创建入口,但又不想在低版本上这样做。
1 | <activity |
1 | <bool name="show_settings">true</bool> |
1 | <bool name="show_settings">false</bool> |
为SettingsActivity应用别名,当v14以上时,别名生效,允许实例化。而在低版本中则没有入口