У меня есть основной вопрос о запуске покадровой анимации.
Когда я называю AnimationDrawable.start () методом из моего кода непосредственно, это, кажется, не работает.
public void onCreate(Bundle savedInstanceState) {
...
mAnimation.start();
...
}
Но если я поместил эту строку в onClick (), метод обратного вызова кнопки, нажимая кнопку запускает анимацию.
Почему эта строка не работает в коде?
Спасибо!
public class MyAnimation extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
AnimationDrawable mframeAnimation = null;
super.onCreate(savedInstanceState);
setContentView(R.layout.my_animation);
ImageView img = (ImageView) findViewById(R.id.imgMain);
BitmapDrawable frame1 = (BitmapDrawable) getResources().getDrawable(
R.drawable.splash1);
BitmapDrawable frame2 = (BitmapDrawable) getResources().getDrawable(
R.drawable.splash2);
int reasonableDuration = 250;
mframeAnimation = new AnimationDrawable();
mframeAnimation.setOneShot(false);
mframeAnimation.addFrame(frame1, reasonableDuration);
mframeAnimation.addFrame(frame2, reasonableDuration);
img.setBackgroundDrawable(mframeAnimation);
mframeAnimation.setVisible(true, true);
//If this line is inside onClick(...) method of a button, animation works!!
mframeAnimation.start();
}
}
Важно отметить, что метод start (), вызываемый для AnimationDrawable, не может быть вызван во время метода onCreate () вашего Activity, поскольку AnimationDrawable еще не полностью прикреплен к окну. Если вы хотите воспроизвести анимацию немедленно, не требуя взаимодействия, вы можете вызвать ее из метода onWindowFocusChanged () в вашей Activity, который будет вызываться, когда Android переведет ваше окно в фокус. Самый конец страницы http://developer.android.com/guide/topics/graphics/2d-graphics.html
ImageView img = (ImageView)findViewById(R.id.some layout);
AnimationDrawable frameAnimation = (AnimationDrawable)img.getDrawable();
frameAnimation.setCallback(img);
frameAnimation.setVisible(true, true);
frameAnimation.start();
, а чтобы добавить анимацию, вы можете сделать что-то вроде
<animation-list android:id="@+id/my_animation" android:oneshot="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/frame1" android:duration="150" />
<item android:drawable="@drawable/frame2" android:duration="150" />
</animation-list>