Android动画帮助

时间:2011-05-13 16:00:38

标签: android animation

您好我正在尝试创建像enter image description here这样的动画,像气泡一样创造心脏,但不是100%像这样。这可以在一些静态活动上。

但我不在哪里。文档缺少示例,API中的示例是不可接受的。制作这样的动画不应该那么难。

我粘贴我的代码请帮助我。

班级档案

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;

public class AnimationTest extends Activity {
AnimationDrawable animation;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button btnStart = (Button) findViewById(R.id.btnStart);
    final ImageView imgView = (ImageView) findViewById(R.id.img);

    btnStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startAnimation();
        }
    });
    imgView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });
}

class Starter implements Runnable {
    public void run() {
        animation.start();
    }
}

private void startAnimation() {
    animation = new AnimationDrawable();
    animation.addFrame(getResources().getDrawable(R.drawable.one), 100);
    animation.addFrame(getResources().getDrawable(R.drawable.two), 100);
    animation.addFrame(getResources().getDrawable(R.drawable.three), 100);
    animation.addFrame(getResources().getDrawable(R.drawable.four), 100);
    animation.addFrame(getResources().getDrawable(R.drawable.five), 100);
    animation.addFrame(getResources().getDrawable(R.drawable.six), 100);
    animation.addFrame(getResources().getDrawable(R.drawable.seven), 100);
    animation.addFrame(getResources().getDrawable(R.drawable.eight), 100);
    animation.setOneShot(false);


    ImageView imageView = (ImageView) findViewById(R.id.img);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(80, 90);
    params.alignWithParent = true;
    params.addRule(RelativeLayout.CENTER_IN_PARENT);
    imageView.setLayoutParams(params);
    imageView.setImageDrawable(animation);
    imageView.post(new Starter());
}

}

XML文件          

    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="Frame by Frame Animation Example"
        android:gravity="center" />

    <RelativeLayout android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:layout_gravity="center_horizontal">

        <ImageView android:id="@+id/img" android:layout_width="80px"
            android:layout_height="90px" android:layout_centerInParent="true" />

        <Button android:id="@+id/btnStart" android:text="Start Animation"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_alignParentRight="true" />

    </RelativeLayout>

</LinearLayout>

图片,您也可以过去其他一些图片 1 2 4

修改 我想要实现的目标 step1:鱼来自左侧 setp2:一条鱼来自右侧

步骤3:一只心脏出现并在两条鱼的中心变大 step4:然后小心飞走并消失

2 个答案:

答案 0 :(得分:3)

Grow animations

Translate + scale + rotate animation set

首先看一下。这将教授动画API的基础知识。为了获得一个接一个的链效应,你正在寻找我发现这样做的唯一方法是使用animationListener在一个结束时获得一个回调,然后从那里开始下一个。老实说,如果你只是将它变成一个电影文件并在VideoView中播放它而不是单独创建所有这些视图并将动画应用于所有这些视图,它可能更容易实现。

答案 1 :(得分:2)

属性动画:

在xml中定义的动画,用于在指定的时间内修改颜色,alpha值的属性。

查看动画:

帧动画:动画在xml文件中定义,按顺序显示图像序列。 (就像一部电影)

补间动画: 补间动画通过对单个图像执行一系列转换来创建动画。

AlphaAnimation:控制转换变化。 RotateAnimation:控制旋转。 ScaleAnimation:控制增长和收缩 TranslateAnaimation:控制位置变化。