我有动画两个不同的TextViews两个功能,但他们似乎都在同一时间开始,但我想首先第一个函数完成的动画,然后启动第二个功能。
公共布尔functionFinished = FALSE;公共无效runFunction(){ 所以firstFunction(); 如果(functionFinished =真){ secondFunction(); }}公共无效了firstFunction(){ initialCount =(的TextView)findViewById(R.id.textView_Fade); initialCount.setText(3); 最终的动画了=新AlphaAnimation(1.0F,0.0); out.setDuration(1000); initialCount.startAnimation(出); out.setAnimationListener(新Animation.AnimationListener(){ @覆盖 公共无效onAnimationStart(动画动画){ } @覆盖 公共无效onAnimationEnd(动画动画){ 如果(initialCount.getText()。等于(3)){ initialCount.setText(2); initialCount.startAnimation(出); }否则如果(initialCount.getText()。等于(2)){ initialCount.setText(1); initialCount.startAnimation(出); }否则如果(initialCount.getText()。等于(1)){ initialCount.setText(开始!); } } @覆盖 公共无效onAnimationRepeat(动画动画){ } }); functionFinished = TRUE;}
第二个函数简单地从0变为它自己的TextView每秒计数。
我做了什么错了/我怎么纠正此,使第二函数的第一个函数完成后运行? (即套functionFinished为true,只有当从了firstFunction TextView的是开始!)
解决方案 公共无效runFunction(){ 所以firstFunction();}公共无效了firstFunction(){ initialCount =(的TextView)findViewById(R.id.textView_Fade); initialCount.setText(3); 最终的动画了=新AlphaAnimation(1.0F,0.0); out.setDuration(1000); out.setAnimationListener(新Animation.AnimationListener(){ @覆盖 公共无效onAnimationStart(动画动画){ } @覆盖 公共无效onAnimationEnd(动画动画){ ... secondFunction(); } @覆盖 公共无效onAnimationRepeat(动画动画){ } }); initialCount.startAnimation(出);}
只要打电话从 onAnimationEnd
第二功能。也请记住,你应该开始动画之前连接监听器。
I have two functions that animate two different TextViews but they both seem to start at the same time but I am trying to have the animation of the first function finish first and then start the second function.
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;
}
The second function simply changes its own textView every second counting up from 0.
What did I do wrong / how do I correct this so that the second function runs after the first function has finished? (ie. sets functionFinished to true only when the TextView from the firstFunction is "START!")
解决方案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);
}
Just call second function from onAnimationEnd
. Also keep in mind that you should attach listener before start animation.