Android xml捆绑包格式无法识别aapt属性

ars*_*v31 5 android android-animation aapt android-vectordrawable

我已尝试使用Android 文档中提供的示例使用Android xml捆绑包格式,但Android Studio仍然这样说

应该定义'drawable'或'animation'属性(见截图)

在这种情况下可以做些什么来修复错误?

<!-- drawable\some_anim.xml-->
<animated-vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
    <vector
        android:width="64dp"
        android:height="64dp"
        android:viewportHeight="600"
        android:viewportWidth="600">
        <group
            android:name="rotationGroup"
            android:pivotX="300.0"
            android:pivotY="300.0"
            android:rotation="45.0">
            <path
                android:name="v"
                android:fillColor="#000000"
                android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z"/>
        </group>
    </vector>
</aapt:attr>

<target android:name="rotationGroup">
    <aapt:attr name="android:animation">
        <objectAnimator
            android:duration="6000"
            android:propertyName="rotation"
            android:valueFrom="0"
            android:valueTo="360"/>
    </aapt:attr>
</target>

<target android:name="v">
    <aapt:attr name="android:animation">
        <set>
            <objectAnimator
                android:duration="3000"
                android:propertyName="pathData"
                android:valueFrom="M300,70 l 0,-70 70,70 0,0 -70,70z"
                android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
                android:valueType="pathType"/>
        </set>
    </aapt:attr>
</target>
Run Code Online (Sandbox Code Playgroud)

小智 1

您必须在某些标签中添加额外的内容

<android vector add    android:drawable="">
Run Code Online (Sandbox Code Playgroud)

和目标标签中

    <target add android:animation="">
Run Code Online (Sandbox Code Playgroud)

最后为一些标签添加了前缀

    <aapt android:name="android:animation">
Run Code Online (Sandbox Code Playgroud)

这是整个代码,复制并粘贴它,然后检查:

<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/tools" android:drawable="@color/divider">
<aapt:attr android:name="android:drawable">
    <vector
        android:height="64dp"
        android:width="64dp"
        android:viewportHeight="600"
        android:viewportWidth="600" >
        <group
            android:name="rotationGroup"
            android:pivotX="300.0"
            android:pivotY="300.0"
            android:rotation="45.0" >
            <path
                android:name="v"
                android:fillColor="#000000"
                android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
        </group>
    </vector>
</aapt:attr>

<target android:name="rotationGroup"
    android:animation="@android:anim/slide_out_right"> 
    <aapt:attr android:name="android:animation">
        <objectAnimator
            android:duration="6000"
            android:propertyName="rotation"
            android:valueFrom="0"
            android:valueTo="360" />
    </aapt:attr>
</target>

<target android:name="v"
    android:animation="@android:anim/cycle_interpolator">
    <aapt:attr android:name="android:animation">
        <set>
            <objectAnimator
                android:duration="3000"
                android:propertyName="pathData"
                android:valueFrom="M300,70 l 0,-70 70,70 0,0 -70,70z"
                android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
                android:valueType="pathType"/>
        </set>
    </aapt:attr>
</target>
Run Code Online (Sandbox Code Playgroud)

  • 实际上,Android xml 捆绑格式的要点是在动画矢量本身内声明可绘制对象和动画器,而不是引用单独的文件。 (2认同)