想要在完成imageview动画后开始活动

时间:2012-09-15 09:56:51

标签: android android-layout android-intent

我想要rotate imageview然后我想开始activity on imageview但问题是android系统没有给出时间来完成animation并启动活动。那么如何完全显示动画然后调用活动。 这是我的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:fromDegrees="-7"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatMode="reverse"
    android:toDegrees="7" />

这段代码:

      public void onImageViewClicked(View view){
        switch(view.getId()){
            case R.id.viewstock:
                Animation shakeV = AnimationUtils.loadAnimation(this,     R.anim.shake);
                view.startAnimation(shakeV);
                startActivityForResult(intent, 12);
                break;
            case R.id.about:
                Animation shakeA = AnimationUtils.loadAnimation(this,     R.anim.shake1);


                 view.startAnimation(shakeA);
            Intent aboutIntent = new Intent(MainActivity.this,AboutActivity.class);
            startActivity(aboutIntent);
            break;
    }
}

3 个答案:

答案 0 :(得分:3)

您是否可以提供代码段来支持您的问题。因此,了解如何处理动画会更容易。

现在我假设您正在使用标准动画。如果是这种情况,请使用Animation.AnimationListener来监听onAnimationEnd(Animation animation)。在那里你开始你的活动。

有关详情this

希望这会对你有帮助。

答案 1 :(得分:3)

是的,我的猜测是正确的。用于 shakeA,shakeV

shakeA.setAnimationListener(new AnimationListener() {

@Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animation animation) { // TODO Start your activity here. startActivity(aboutIntent); // Here you go. } })

答案 2 :(得分:0)

我想最好设置开始活动的持续时间

    @Override
public void onAnimationStart(Animation animation) {

}

@Override
public void onAnimationEnd(Animation animation) {
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            startActivity(aboutIntent); 
        }
    }, 2000);
}

@Override
public void onAnimationRepeat(Animation animation) {

}