某些资源类型是由XML文件表示的多个复杂资源的组合。例子是一个animated vector drawable,它是一个封装了vector drawable和动画的drawable资源。这需要使用至少三个XML文件。

res/drawable/avd.xml

<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/vectordrawable" >
    <target
        android:name="rotationGroup"
        android:animation="@anim/rotation" />
</animated-vector>

res/drawable/vectordrawable.xml

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    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:fillColor="#000000"
            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />

   </group>
</vector>

res/anim/rotation.xml

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/android"
    android:duration="6000"
    android:propertyName="rotation"
    android:valueFrom="0"

   android:valueTo="360" />

这么多文件只构成了一个animated vector drawable!如果vector drawable和animated在要别的地方重复使用,这是实现animated vector drawable的最佳方法。 如果它们只用于这个animated vector drawable,此外还有一种更简洁的方式来实现。

使用AAPT的内联资源格式,您可以在同一XML文件中定义所有三个资源。因为我们现在只构成一个animated vector drawable,我们将文件放在res/drawable/下。

res/drawable/avd.xml

<?xml version="1.0" encoding="utf-8"?>
<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: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: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>
</animated-vector>

XML的标记<aapt:attr>告诉AAPT标记的子标记应被当做资源并提取到其自己的资源文件中。 属性名的值指定在父标记中使用这个内联资源的位置。

复杂的xml资源的更多相关文章

  1. 【krpano】krpano xml资源解密(破解)软件说明与下载(v1.4)

    欢迎加入qq群551278936讨论krpano技术以及获取最新软件.   该软件已经不再维护,现在已经被KRPano资源分析工具取代,详情参见 http://www.cnblogs.com/reac ...

  2. 【krpano】krpano xml资源解密(破解)软件说明与下载(v1.2)

    欢迎加入qq群551278936讨论krpano技术以及获取最新软件.   该软件已经不再维护,现在已经被KRPano资源分析工具取代,详情参见 http://www.cnblogs.com/reac ...

  3. android 各种xml资源的引用方式

    更多资源类型 本页定义了其它一些具体的资源类型,包括: Bool 存放布尔值的XML资源. Color 存放颜色值的XML资源(十六进制颜色). Dimension 存放数量值的XML资源(带计量单位 ...

  4. Android反编译(二)之反编译XML资源文件

    Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具  apktool http ...

  5. 使用原始XML资源——使用原始XML文件

    下面为示例程序添加一个原始的XML文件,将该XML文件放到/res/xml目录下,该XML文件的内容很简单.XML资源的内容如下. 程序清单:  \res\xml\books.xml文件 <?x ...

  6. 使用原始XML资源——定义原始XML资源

    原始XML资源一般保存在/res/xml路径下——当使用ADT创建Android应用时,/res/目录下并没有包含该目录,开发者应该自行手动创建xml目录. 接下来Android应用对原始XML资源没 ...

  7. (转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别

    原帖地址:http://blog.csdn.net/zfrong/article/details/7332545 Android xml资源文件中@.@android:type.@*.?.@+引用写法 ...

  8. Android中 string.xml资源 如何添加参数?

    在android 开发,我们通常会用string.xml资源去设置textview等控件的字符串.而值一般是与程序的运行结果无关的. 但有时需要根据运行的结果来显示到控件中,这时字符串资源就不能写死了 ...

  9. res文件夹及xml资源文件详解

    目录 一.values文件:存放字符串(strings).颜色(colors).尺寸(dimens).数组(arrays).样式(styles类似于CSS文件).类型等资源 二.drawable:存放 ...

  10. Android下的xml资源详解

    最近遇到的bitmap资源 <?xml version= "1.0" encoding ="utf-8"?> <bitmap xmlns:an ...

随机推荐

  1. java中进程与线程的区别

    进程是一个正在运行的应用程序.一个进程包含一个或多个线程.它可以是一段完整的代码或部分程序的动态执行.系统资源分配与调度的基本单位.而线程是CPU调度与运行的基本单位,它是一组指令的集合或是程序的特殊 ...

  2. 网络编程之实现server端并发聊天

    程序如下: import socketserver class MyServer(socketserver.BaseRequestHandler): #自己定义一个类,继承BaseRequestHan ...

  3. Json数据产生树形结构

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  4. Catch That Cow (BFS广搜)

    问题描述: Farmer John has been informed of the location of a fugitive cow and wants to catch her immedia ...

  5. Idea导包与打包

    今天做了一个javavuser协议的性能测试,需要导入jar包,将jar包粘贴到lib下面后不知道怎么加到工程当中, 1,下面分享一下有关导包的流程: 先是在jar 右键,如图 : 选择项目结构,选择 ...

  6. Centos7 创建内部的yum源

  7. Restful levels and Hateoas

    RESTful: Rest是一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等 ...

  8. Android的JSON数据解析

    一. 使用原生方式解析 准备工作:准备一个布局文件,用来显示元数据与转换之后的数据 <?xml version="1.0" encoding="utf-8" ...

  9. Flutter数据库Sqflite之增删改查

    Flutter数据库Sqflite之增删改查   简介 sqflite是Flutter的SQLite插件,支持iOS和Android,目前官方版本是sqflite1.1.3 sqflite插件地址:h ...

  10. 本学期C#学习个人总结

    本学期C#的学习结束了,我在这里作一下总结.我还记得陈老师在第一节课上说过,学任何东西,都要学结构,否则你不会学好.当我听到这句话的时候,没有放在心上,可是随着C#学习的不断深入,我越来越发现许多知识 ...