2011-12-30 4 views
2

У меня возникла проблема в Кадр за кадром анимации в Android. На самом деле у меня много изображений в виде фреймов, для чего я разбил разные файлы анимационных списков для разных анимаций. На главном экране у меня есть одно фоновое изображение, на котором у меня разные кнопки для разной анимации. Я тоже сделал анимацию, но когда я нажимаю 2-е время на кнопках, анимация не работает. Значит, он работает только один раз. Я не понимаю, почему это происходит. Вот фрагмент кода моего проекта.Проблема в кадре за рамкой анимации в Android

Animation Список файлов: -

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> 
<item android:drawable="@drawable/cat_angry0000" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0001" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0002" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0003" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0004" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0005" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0006" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0007" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0008" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0009" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0010" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0011" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0012" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0013" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0014" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0015" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0016" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0017" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0018" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0019" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0020" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0021" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0022" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0023" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0024" android:duration="50" /> 
<item android:drawable="@drawable/cat_angry0025" android:duration="50" /> 
</animation-list> 

Код: -

ImageView rocketImage; 

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

    rocketImage = (ImageView) findViewById(R.id.backgroundCat); 
    rocketImage.setImageBitmap(null); 
    rocketImage.setBackgroundResource(R.anim.angry_tail_animation); 
} 

public void headButtonClicked(View v) { 
    final AnimationDrawable mailAnimation = (AnimationDrawable) mMailTab.getBackground(); 
    mMailTab.post(new Runnable() { 
    public void run() { 
     if (mailAnimation != null) mailAnimation.start(); 
    } 
    }); 
} 

headButtonClicked это кнопка помещается мной для запуска анимации. Он работает только один раз. Если кто-нибудь знает, как решить эту проблему, пожалуйста, любезно помогите мне.

Благодаря

ответ

3

В файле XML анимации вы добавили атрибут android:oneshot="true", который означает, что вы хотели, Анимация будет проигрываться только один раз. Для воспроизведения снова вы должны сделать это android:oneshot="false"

UPDATE:

Если вы хотите, чтобы запустить анимацию каждый раз вы нажмете на кнопку, вы должны вызвать animation.stop(); для предыдущего начала анимации, если запуск. Что-то вроде этого,

if (frameAnimation.isRunning()) { 
     frameAnimation.stop(); 
     } 

     else { 
     frameAnimation.stop(); 
     frameAnimation.start(); 
     } 
+0

но я хочу, чтобы эта анимация запускалась при нажатии кнопки, если я изменяю onehot на false, то она работает для n продолжительности. Я хочу, чтобы, когда пользователь нажимал кнопку, тогда только анимация должна начинаться и воспроизводиться. Опять пользователь щелкает, а затем играет в анимацию. – Scorpion

+1

@Scorpion ok проверить мой обновленный ответ. –

+0

Большое вам спасибо ... Сделано сейчас ... Спасибо еще раз! – Scorpion