My animation works and when the thread ends, the intent for the next screen fires, but it won't fire from the end of the animation. I put log entries for all of the AnimationListener's
callbacks (only End is in this listing), but none get logged.
public class PromoActivity extends Activity implements AnimationListener {
protected boolean _active = true;
protected int _splashTime = 5000; // time to display the splash screen in ms
private static final float ROTATE_FROM = 0.0f;
private static final float ROTATE_TO = -10.0f * 360.0f;// 3.141592654f * 32.0f;
private static final String TAG = "PromoActivity";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread promoThread = new Thread() {
@Override
public void run() {
try {
ImageView favicon = (ImageView) findViewById(R.id.favicon);
RotateAnimation r; // = new RotateAnimation(ROTATE_FROM, ROTATE_TO);
r = new RotateAnimation(ROTATE_FROM, ROTATE_TO, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
r.setDuration((long) 2*1500);
favicon.startAnimation(r);
RotateAnimation q;
q = new RotateAnimation(ROTATE_FROM, -ROTATE_TO, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
q.setDuration((long) 2*1500);
q.setRepeatCount(0);
TextView mobiText = (TextView) findViewById(R.id.logotext_mobi);
mobiText.startAnimation(q);
TextView dawgText = (TextView) findViewById(R.id.logotext_bob);
dawgText.startAnimation(q);
int waited = 0;
while (_active && (waited < _splashTime)) {
sleep(100);
if (_active) {
waited += 100;
}
}
} catch (InterruptedException ex) {
} finally {
finish();
startActivity(new Intent("com.mobibob.promo.AboutActivity"));
stop();
}
}
};
promoThread.start();
}
@Override
public void onAnimationEnd(Animation animation) {
Log.d(TAG, "onAnimationEnd");
startActivity(new Intent("com.mobibob.promo.AboutActivity"));
}
}