Можно ли запустить анимацию Android в обратном вызове onanimationEnd предыдущего? - PullRequest
2 голосов
/ 05 января 2011

Я пытаюсь запустить одну анимацию после завершения другой, отслеживая обратный вызов onanimationEnd первой.Однако Android выдает следующую ошибку, когда я пытаюсь сделать это:

Ошибка - метод loadAnimation (Context, int) в типе AnimationUtils не применим для аргументов (new Animation.AnimationListener () {}, int)

Я пытался использовать ответ в этом посте: --- Android-анимация одна за другой Что я интерпретировал как означающее, что я должен переместить все, кроме начальной анимации, из обратного вызова,но когда я делаю это, я получаю следующую ошибку:

Ошибка - Невозможно обратиться к неконечной переменной fade3 внутри внутреннего класса, определенного в другом методе

Чего мне здесь не хватает ???


****** КОД ДЛЯ ПЕРВОГО ПРИМЕРА **********


package com.smartproducts.dragracepro;

import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.widget.ImageView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;


public class DragRaceProSplashActivity extends DragRaceProActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        //animate title fade in
        TextView programtitle = (TextView) findViewById(R.id.TextViewTopTitle);
        Animation fade1 = AnimationUtils.loadAnimation(this,R.anim.fade_in);
        programtitle.startAnimation(fade1);

        //show introduction and logo for Smart Shocks
        fade1.setAnimationListener(new AnimationListener(){         
            @Override
            public void onAnimationEnd(Animation fade1)
            {
***************  
ERROR IS HERE> Animation fade3 = AnimationUtils.loadAnimation(this,R.anim.fade_in2); ***************
            ImageView sslogo = (ImageView) findViewById(R.id.ImageView03);
                sslogo.setVisibility(View.VISIBLE);
                sslogo.startAnimation(fade3);
            }

            @Override
            public void onAnimationRepeat(Animation animation) {}

            @Override
            public void onAnimationStart(Animation animation) {}
        });

    }

1 Ответ

0 голосов
/ 26 сентября 2011
Animation fade3 = AnimationUtils.loadAnimation(this,R.anim.fade_in2);

this относится к анимации вместо вашего контекста как к вызову ее внутри слушателя. Если вы хотите использовать этот код, то вам нужно создать глобальную переменную вашего контекста и использовать эту переменную вместо this.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...