Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 帧动画在屏幕上移动多次_Android_Animation_Android Animation - Fatal编程技术网

Android 帧动画在屏幕上移动多次

Android 帧动画在屏幕上移动多次,android,animation,android-animation,Android,Animation,Android Animation,我有一个循环中的两个图像视图的帧动画,我用animate.translationXByx在屏幕上移动它;我希望只要应用程序打开,应用程序就可以一直移动动画。像for这样的常规循环由于某些原因不起作用,像我这样的新手不理解。下面是一些代码: private ImageView thing; private AnimationDrawable movingthing; private int width; protected void onCreate(Bundle savedInstanceSt

我有一个循环中的两个图像视图的帧动画,我用animate.translationXByx在屏幕上移动它;我希望只要应用程序打开,应用程序就可以一直移动动画。像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);
}

我想你要找的只是一个循环

因此,应用程序的格式应该是

while(programIsStillRunning){
    updateYourAnimation();
}
或许

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

尝试使用runnable

将处理程序添加到oncreate方法:

Handler h=new Handler();
h.postDelayed(move, 0);
然后将此runnable添加到您的类中

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

我在一个基本的应用程序中进行了测试,它对我有效

我也试过while loop,它的循环非常棒,只是没有显示任何东西