我有一个帧动画(一个循环中的两个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);
}
答案 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);
}
};
我在基本应用程序中测试过,它对我有用。