Android Studio中drawable与drawable-v24文件夹的区别是什么?
嘿,从Eclipse转Android Studio的新手朋友,我完全懂你刚接触新目录结构时的困惑!这两个drawable文件夹的核心区别其实就是API版本适配,下面给你拆解清楚:
版本适配逻辑
普通的drawable文件夹是默认资源目录,里面的资源会被所有Android版本(API 1及以上)的设备识别加载;而drawable-v24是专门为API Level 24(对应Android 7.0)及以上的设备准备的资源目录。当设备系统版本≥24时,会优先加载这个文件夹里的同名资源;低于24的设备则会直接忽略它,转而加载默认drawable文件夹中的对应资源。资源类型的兼容性
有些Drawable相关的新特性是从API 24才开始引入的,比如VectorDrawable的部分进阶用法、AnimatedVectorDrawable的完整动画支持,或是一些新的形状Drawable属性。把这类资源放在drawable-v24里,既能让高版本设备用上这些新特性,又能避免低版本设备因不支持而出现崩溃或显示异常的问题。和Eclipse习惯的对比
你之前用Eclipse时,可能习惯把所有drawable资源堆在同一个目录里,Android Studio的这种版本分区其实是更规范的资源适配方案——和你熟悉的drawable-hdpi这类按屏幕密度分区的逻辑类似,只不过这里是按照系统API版本来划分资源。
举个实际场景的例子:如果你做了一个用到API 24新动画特性的ic_loading_anim.xml,把它放在drawable-v24,同时在默认drawable文件夹里放一个静态的ic_loading.png作为兼容 fallback。这样Android 7.0及以上的设备会显示动态加载动画,低版本设备则显示静态图标,完美兼顾兼容性和体验。
内容的提问来源于stack exchange,提问作者Jaskirat Singh Janjua

