2012-01-30 2 views
1

Я сделал, как будто это не работает?Как начать анимацию в onCreate() в android?

public class AnimationActivity extends Activity{ 
      private AnimationDrawable yourAnimation; 
      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       // TODO Auto-generated method stub 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.animation); 
       getIntentValues(); 
       final ImageView imageView = (ImageView) findViewById(R.id.animation_iv); 
       imageView.setBackgroundResource(R.drawable.loadinganim); 
       yourAnimation = (AnimationDrawable) imageView.getBackground(); 
       yourAnimation.start(); 
    } 

Рез \ вытяжке \ loading.xml

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:oneshot="false"> 
    <item android:drawable="@drawable/v1" android:duration="160" /> 
    <item android:drawable="@drawable/v4" android:duration="160" /> 
    <item android:drawable="@drawable/v7" android:duration="160" /> 
    <item android:drawable="@drawable/v8" android:duration="160" /> 
    <item android:drawable="@drawable/v9" android:duration="160" /> 
    <item android:drawable="@drawable/v10" android:duration="160" /> 
    <item android:drawable="@drawable/v11" android:duration="160" /> 
    </animation-list> 

Рез \ расположение \ animation.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
    > 
<ImageView 
android:id="@+id/animation_iv" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
/> 

Анимация начинается на ImageView OnClick(). Если мне нужна идея.

+0

Является ли мой код или пример полезными для вас? – Praveenkumar

ответ

3
  view.setImageResource(R.anim.framer); 
      view.post(new Runnable() { 
      public void run() {    
       AnimationDrawable animationDrawable = (AnimationDrawable)view.getDrawable(); 
       animationDrawable.start(); 
      } 
      }); 

Это сработало для меня, попробуйте !!!!

+0

как я могу остановить его через несколько секунд – sai

+0

он работает fine.but через несколько секунд я хочу перейти к следующей деятельности. – sai

+0

Я не понимаю, что вы имели в виду, перейдя к следующему действию через несколько секунд, но чтобы остановить его, вы можете использовать animationDrawable.stop(); –

1

Похоже, что хотя метод onCreate работает, Drawable не полностью инициализирован, и поэтому запуск анимации не будет работать.

Начните свою анимацию в методе onWindowFocusChanged. Это, к сожалению, только задокументировано в Animation Drawable Guide, а не в соответствующих Java-Документах.

Я подал Documentation Bug по этому вопросу. Возьмите проблему, если вы хотите, чтобы команда разработчиков Android улучшила свою документацию.

0

Похоже, вы делаете неправильный литой. Ваш фон StateListDrawable, а не AnimationDrawable. Аналогичный вопрос here. Надеюсь, это будет полезно.

2

Да, ваш метод является правильным, но вам нужно реализовать это -

public void onWindowFocusChanged (boolean hasFocus) 
{ 
    super.onWindowFocusChanged(hasFocus); 
    AnimationDrawable yourAnimation = 
     (AnimationDrawable) animation.getBackground(); 
    if(hasFocus) { 
     frameAnimation.start(); 
    } else { 
     frameAnimation.stop(); 
    } 
} 

как в этом example

0

onEnterAnimationComplete()

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

Вы можете переопределить этот метод и запустить анимацию в этом методе.

+0

Это сработало для меня, не уверен, почему ниспровергнуто. –

Смежные вопросы