Android动画资源文件

本文详细介绍了Android中的两种动画资源:Property Animation和View Animation。Property Animation通过改变对象属性创建动画,包括ValueAnimator、ObjectAnimator和AnimatorSet。View Animation则包含Tween和Frame动画,用于位移、缩放、旋转等效果。文中还提供了各种动画的XML语法和使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android的动画资源文件可以是以下两种的其中之一:

  • Property Animation
    • 通过改变对象的属性值来创造动画
  • View Animation
    • 通过View Animation框架你可以实现两种类型的动画
      • Tween animation
      • Frame animation

Property Animation

在xml文件中定义动画来改变目标对象的属性,比如背景颜色或者透明度,来实现的动画效果
  • 文件位置
    • res/animator/filename.xml
  • 编译后的资源类型
    • ValueAnimator ObjectAnimator或者AnimatorSet
  • 调用方法
    • Java:R.animator.filename
    • Xml:@{package:}animator/filename
  • 语法
    • <set
        android:ordering=["together" | "sequentially"]>
      
          <objectAnimator
              android:propertyName="string"
              android:duration="int"
              android:valueFrom="float | int | color"
              android:valueTo="float | int | color"
              android:startOffset="int"
              android:repeatCount="int"
              android:repeatMode=["repeat" | "reverse"]
              android:valueType=["intType" | "floatType"]/>
      
          <animator
              android:duration="int"
              android:valueFrom="float | int | color"
              android:valueTo="float | int | color"
              android:startOffset="int"
              android:repeatCount="int"
              android:repeatMode=["repeat" | "reverse"]
              android:valueType=["intType" | "floatType"]/>
      
          <set>
              ...
          </set>
      </set>


  • 例子
    • <set android:ordering="sequentially">
          <set>
              <objectAnimator
                  android:propertyName="x"
                  android:duration="500"
                  android:valueTo="400"
                  android:valueType="intType"/>
              <objectAnimator
                  android:propertyName="y"
                  android:duration="500"
                  android:valueTo="300"
                  android:valueType="intType"/>
          </set>
          <objectAnimator
              android:propertyName="alpha"
              android:duration="500"
              android:valueTo="1f"/>
      </set>


    • AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
          R.anim.property_animator);
      set.setTarget(myObject);
      set.start();


View Animation

Tween animation

  • 文件位置
    • res/anim/filename.xml
  • 编译后数据类型
    • Animation
  • 调用方法
    • Java:R.anim.filename
    • Xml:@anim/filename
  • 语法
    • <?xml version="1.0" encoding="utf-8"?>
      <set xmlns:android="http://schemas.android.com/apk/res/android"
          android:interpolator="@[package:]anim/interpolator_resource"
          android:shareInterpolator=["true" | "false"] >
          <alpha
              android:fromAlpha="float"
              android:toAlpha="float" />
          <scale
              android:fromXScale="float"
              android:toXScale="float"
              android:fromYScale="float"
              android:toYScale="float"
              android:pivotX="float"
              android:pivotY="float" />
          <translate
              android:fromXDelta="float"
              android:toXDelta="float"
              android:fromYDelta="float"
              android:toYDelta="float" />
          <rotate
              android:fromDegrees="float"
              android:toDegrees="float"
              android:pivotX="float"
              android:pivotY="float" />
          <set>
              ...
          </set>
      </set>


  • 例子
    • <set xmlns:android="http://schemas.android.com/apk/res/android"
          android:shareInterpolator="false">
          <scale
              android:interpolator="@android:anim/accelerate_decelerate_interpolator"
              android:fromXScale="1.0"
              android:toXScale="1.4"
              android:fromYScale="1.0"
              android:toYScale="0.6"
              android:pivotX="50%"
              android:pivotY="50%"
              android:fillAfter="false"
              android:duration="700" />
          <set
              android:interpolator="@android:anim/accelerate_interpolator"
              android:startOffset="700">
              <scale
                  android:fromXScale="1.4"
                  android:toXScale="0.0"
                  android:fromYScale="0.6"
                  android:toYScale="0.0"
                  android:pivotX="50%"
                  android:pivotY="50%"
                  android:duration="400" />
              <rotate
                  android:fromDegrees="0"
                  android:toDegrees="-45"
                  android:toYScale="0.0"
                  android:pivotX="50%"
                  android:pivotY="50%"
                  android:duration="400" />
          </set>
      </set>


    • ImageView image = (ImageView) findViewById(R.id.image);
      Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
      image.startAnimation(hyperspaceJump);


Frame animation

  • 文件位置
    • res/drawable/filename.xml
  • 编译后数据类型
    • AnimationDrawable
  • 调用方法
    • Java:R.drawable.filename
    • Xml:@[package:]drawable.filename
  • 语法
    • <?xml version="1.0" encoding="utf-8"?>
      <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
          android:oneshot=["true" | "false"] >
          <item
              android:drawable="@[package:]drawable/drawable_resource_name"
              android:duration="integer" />
      </animation-list>


  • 例子
    • <?xml version="1.0" encoding="utf-8"?>
      <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
          android:oneshot="false">
          <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
          <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
          <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
      </animation-list>


    • ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
      rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
      
      rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
      rocketAnimation.start();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值