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版本兼容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值