Android 资源简介(五) AnimationDrawable

AnimationDrawable 代表动画资源。Android 既支持逐帧动画,也支持补间动画。

定义补间动画的 XML 资源文件以 <set> 元素作为根元素,该元素可以设定如下 4 个元素:

  1. alpha:透明度;
  2. scale:缩放;
  3. translate:位移;
  4. rotate:旋转。

定义动画的 XML 资源文件应该放在 /res/anim 路径下。

<set>、<alpha>、<scale>、<translate>、<rotate> 都可以指定 android:interpolator 属性,该属性指定动画的变化速度,可以实现匀速、正加速、负加速、无规则变加速等,Android 系统的 R.anim 对象中包含了定制常量,它们定义了不同的动画速度,例如:

  1. linear_interpolator: 匀速
  2. accelerate_interpolator: 加速
  3. decelerate_interpolator: 减速

如果程序需要让 <set> 元素下的所有变换效果使用相同的动画速度,则可以指定 android:shareInterpolator="true"。

我们可以通过两张方式访问动画资源文件:

  1. 在 XML 中
@[<package_name>:]anim/file_name
  1. 在 Java 中
[<package_name.>]R.anim.file_name

下面是一个简单的使用示例:

首先是自定义的 test_anim01.xml 文件的代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:duration="5000"
    >

    <scale android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="true"
        android:duration="2000"
        />

    <translate android:fromXDelta="10"
        android:toXDelta="130"
        android:fromYDelta="30"
        android:toYDelta="-80"
        android:duration="2000"
        />
</set>

之后是主布局文件的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorGray"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    >

    <ImageView
        android:id="@+id/imageAnim"
        android:layout_width="400dp"
        android:layout_height="400dp"
        android:scaleType="fitCenter"
        android:src="@drawable/img07"
        android:layout_marginTop="20dp"
        />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="@string/start"
        android:onClick="start"
        />

</LinearLayout>

接下来是主程序文件的源代码:

package com.toby.personal.testlistview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    final private static String TAG = "Toby_Test";

    private ImageView imageView;
    private Animation animation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = (ImageView) findViewById(R.id.imageAnim);
        animation = AnimationUtils.loadAnimation(this, R.anim.test_anim01);
        animation.setFillAfter(true);

    }

    public void start(View view) {
        imageView.startAnimation(animation);
    }
}

本示例的运行效果,各位可以自行运行测试,如果出现运行不了等问题,可以给我留言。本文参考文献:《疯狂Android讲义(第2版)》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,774评论 25 709
  • 1 背景 不能只分析源码呀,分析的同时也要整理归纳基础知识,刚好有人微博私信让全面说说Android的动画,所以今...
    未聞椛洺阅读 2,770评论 0 10
  • android 动画资源Tween动画 tween动画 实现目标对象的变换,如移动、旋转、色彩变换、拉伸等。 xm...
    天空下天的月亮阅读 387评论 0 1
  • 作者:雪野 一箸入口,三春不忘。本出自汪曾祺《豆腐》篇中的“拌豆腐”小节。 然而这句话并非是形容豆腐,而是拌豆腐中...
    雪野阅读 1,177评论 12 14
  • 1 今天生产线休息,所以感觉像是放假一般,整个人是心情也是很放松的,可以稍微轻轻松松的上班了今天。 2 和企业社会...
    冬冬Steven阅读 204评论 0 0