Android 应用开发(9)---内联复杂的XML资源

内联复杂的XML资源

某些资源类型是由XML文件表示的多个复杂资源的组合。一个例子是一个可绘制的动画矢量,它是一个可绘制的资源封装矢量绘制和动画。这需要至少使用三个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" />

这里有很多文件只是为了让一个动画矢量可绘制!如果矢量绘制和动画在其他地方重复使用,这是实现动画矢量绘制的最佳方式。如果它们只用于绘制这个动画矢量,那么实现它们的方法就更简单了。

使用AAPT的内联资源格式,您可以在同一个XML文件中定义全部三个资源。由于我们正在制作一个可绘制的动画矢量,因此我们将该文件置于其下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标签的子元素将被视为资源并被提取到自己的资源文件中。属性名称中的值指定在父标签内使用内联资源的位置。

AAPT将为所有内联资源生成资源文件和名称。使用这种内联格式构建的应用程序与所有Android版本兼容。

猜你喜欢

转载自blog.csdn.net/zhangbijun1230/article/details/80634839