帧动画多次在屏幕上移动

时间:2014-06-13 11:22:05

标签: android animation android-animation

我有一个帧动画(一个循环中的两个ImageViews),我用animate()在屏幕上移动它.translationXBy(x);只要应用程序打开,我希望应用程序继续移动动画。像for()这样的常规循环由于某种原因不能像我这样的新手不理解。这是一些代码:

private ImageView thing;
private AnimationDrawable movingthing;
private int width;

protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    thing= (ImageView)findViewById(R.id.pics);
    thing.setImageResource(R.drawable.thingthatmoves);
    movingthing = (AnimationDrawable)thing.getDrawable();
    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    width = displaymetrics.widthPixels;

// happens twice
public void send(){
    moveThatThing();
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable(){
    public void run(){
        moveThatThing();
        }
    }, 3000);
}

public void moveThatThing(){
    thing.setX(-10);
    x = width;
    movingthing.start();
    thing.animate().setDuration(3000);
    thing.animate().translationXBy(x);
}

2 个答案:

答案 0 :(得分:0)

我认为你所寻找的只是一个循环。

因此,您的应用程序的格式应该类似于

while(programIsStillRunning){
    updateYourAnimation();
}

或者

while(theUserHasNotExitedTheProgram){
    updateYourAnimation();
}

你可以把它放在一个永远运行的while循环中,但这通常不是最好的方法。

答案 1 :(得分:0)

尝试使用runnable。

为oncreate方法添加处理程序:

Handler h=new Handler();
h.postDelayed(move, 0);

然后将此runnable添加到您的班级

Runnable move = new Runnable() {
    @Override
    public void run() {
            moveThatThing();
            h.postDelayed(move, 3000);
        }
};

我在基本应用程序中测试过,它对我有用。