2010-10-20 2 views
1

Какова наилучшая практика для структурирования деятельности, которая должна начинаться с отображения анимированного изображения, а затем переходить к другой «активности» по желанию, когда анимация завершена? Я понимаю некоторые основные принципы, но я теряюсь при структурировании потока здесь.глупый вопрос относительно аниматора и намерения

public class Scanimation extends Activity { 

//create name of animation 
Animation myFadeInAnimation; 

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

//grab the imageview from the layout, and then load the animation listener 
     ImageView myImageView = (ImageView) findViewById(R.id.blinkingView01); 
     AnimationListener al= new AnimationListener() { 

    public void onAnimationStart(Animation animation) { 
    // do nothing  
    } 

    public void onAnimationRepeat(Animation animation) { 
    // do nothing  
    } 

     // at the end of the animation, start new activity 
    public void onAnimationEnd(Animation animation) { 
     Intent myIntent = new Intent (view.getContext(), LastActivity.class); 
     startActivity(myIntent);    
    } 

    // get the animation effects which are in the XML file and defines how to animate it  Animation myFadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in); 

}; 

    //okay now start the animation on screen 
    myImageView.startAnimation(myFadeInAnimation); 

    // go get the vibration service and vibrate quickly while screen is animated   
    Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
long milliseconds = 2000; 
v.vibrate(milliseconds); 
long[] pattern = { 500, 300 }; 
v.vibrate(pattern, -1); 

     } 

    } 

Большинство учебных пособий, которые я прочитал, похоже, используют этот тип потока. Я затягиваю свой основной макет и просмотр, а затем оживляю конкретный вид, а также быстро вибрирую устройство. В конце анимации намерение начать мое следующее или последнее действие не срабатывает.

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

ответ

2

Я не вижу, где вы звоните setAnimationListener(), чтобы связать al с myFadeInAnimation. Конечно, я не вижу, где вы на самом деле создаете myFadeInAnimation.

+0

Спасибо за свежий взгляд, это было довольно упражнение в разочарование для меня. Мои глаза выстрелили, глядя на это часами, я завтра еще раз ударю и рассмотрю две вещи, которые вы упомянули. – Keith

+0

CommonsWare, спасибо, что указали, что я пропустил. Я потратил около 15 минут на реструктуризацию кода и обратил внимание на ваши наблюдения. Мне удалось создать код и заставить его работать. – Keith

+0

Думаю, что я должен опубликовать новую версию, если кто-то еще захочет ее увидеть. Теперь мне просто нужно выяснить, как перезапустить его после паузы (т. Е. Выйти для вызова и вернуться) – Keith

2

Вот исправленный вариант:

public class Scanimation extends Activity implements  AnimationListener{ 

public Animation myFadeInAnimation; 

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

    ImageView myImageView = (ImageView) findViewById(R.id.blinkingView01); 
    myFadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in); 

    myFadeInAnimation.setAnimationListener(this); 
    myImageView.startAnimation(myFadeInAnimation); 
} 

     public void onAnimationEnd(Animation animation) { 
      Intent myIntent = new Intent (this, Lastactivity.class); 
      startActivity (myIntent);      
    } 

     public void onAnimationRepeat(Animation animation) { 

    } 

     public void onAnimationStart(Animation animation) { 
      // go get the vibrator service   
      Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 

      // 1. Vibrate for 2000 milliseconds 
      long milliseconds = 2000; 
      v.vibrate(milliseconds); 

      // 2. Vibrate in a Pattern 
      long[] pattern = { 500, 300 }; 
      v.vibrate(pattern, -1); 
    } 
}