今天阅读Android O 源码时发现于API 26新增了adaptive icon这一功能,出处为Settings AndrioidManifest.
Settings的启动图标使用的就是此标签,以达到adaptive icons的效果。突然好奇,这个标签在哪里新增,如何系统能够识别解析,并通过语法检查不抱错。
我自己恰好有个自写的测试APK,所配SDK环境中为不含API 26,最高为API 25,结果无法通过检查。    <application android:label="@string/settings_label"
            android:icon="@drawable/ic_launcher_settings"
            android:taskAffinity=""
            android:theme="@style/Theme.Settings"
            android:hardwareAccelerated="true"
            android:requiredForAllUsers="true"
            android:supportsRtl="true"
            android:allowBackup="false"
            android:usesCleartextTraffic="true"
            android:defaultToDeviceProtectedStorage="true"
            android:directBootAware="true">Settings应用使用的Launcher启动图标为ic_launcher_settngs,它是一个xml文件声明的drawable,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@*android:color/accent_device_default_light"/>
    <foreground android:drawable="@mipmap/ic_launcher_settings"/>
</adaptive-icon>
请问:
是命名空间android中声明的吗? 还是哪儿,如何追寻。补充:
本人对Android xml解析这一块没有深入了解过,只知道API提示可以这么用。站在平台角度,了解此出处。

解决方案 »

  1.   

    Android O新功能,了解了
    ./graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java: * <p>This class can also be created via XML inflation using <code>&lt;adaptive-icon></code> tag
    ./graphics/java/android/graphics/drawable/DrawableInflater.java:            case "adaptive-icon":
      

  2.   


    这个我也在OpenGrok中找到了,从DrawableInflater和Resources这两个类中关于Drawable的注释来看是这里了。