我有两个函数可以动画两个不同的TextView但它们似乎都是同时启动但我试图让第一个函数的动画先完成,然后启动第二个函数。
public Boolean functionFinished = false;
public void runFunction(){
firstFunction();
if(functionFinished = true){
secondFunction();
}
}
public void firstFunction(){
initialCount = (TextView) findViewById(R.id.textView_Fade);
initialCount.setText("3");
final Animation out = new AlphaAnimation(1.0f, 0.0f);
out.setDuration(1000);
initialCount.startAnimation(out);
out.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
if(initialCount.getText().equals("3")){
initialCount.setText("2");
initialCount.startAnimation(out);
} else if(initialCount.getText().equals("2")){
initialCount.setText("1");
initialCount.startAnimation(out);
} else if (initialCount.getText().equals("1")){
initialCount.setText("START!");
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
functionFinished = true;
}
第二个函数每秒只更改自己的textView,从0开始计数。
我做错了什么/如何纠正这个问题,以便第二个功能在第一个功能完成后运行? (即只有当firstFunction的TextView为“START!”时才将functionFinished设置为true)
答案 0 :(得分:1)
public void runFunction() {
firstFunction();
}
public void firstFunction() {
initialCount = (TextView) findViewById(R.id.textView_Fade);
initialCount.setText("3");
final Animation out = new AlphaAnimation(1.0f, 0.0f);
out.setDuration(1000);
out.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
...
secondFunction();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
initialCount.startAnimation(out);
}
只需从onAnimationEnd
调用第二个函数即可。另请注意,您应该在开始动画之前附加侦听器。
答案 1 :(得分:1)
如果你的最低sdk版本是14: -
textView1.animate()
.alpha(0f)
.setDuration(400)
.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation arg0) {
// animate second textview here....
}
});
答案 2 :(得分:0)
因为您在firstFunction()的末尾指定了functionFinished = true
。
你必须误解initialCount.startAnimation(out)
将阻止代码,firstFunction()
仅在动画结束后才完成。
initialCount.startAnimation(out)
不会阻止任何代码,functionFinished = true
会立即运行。因此secondFunction()
将在firstFunction()
完成后立即运行而不是动画完成。