Кадровая анимация в Android? - PullRequest
       7

Кадровая анимация в Android?

1 голос
/ 12 октября 2010

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

Я использую следующий код для анимации:

public class FrameAnimationActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setupButton();
    }
    private void setupButton(){
        Button b = (Button)this.findViewById(R.id.startFAButtonId);
        b.setOnClickListener(
          new Button.OnClickListener(){
            public void onClick(View v){
                parentButtonClicked(v);
            }
          });
    }
    private void parentButtonClicked(View v){
        animate();
    }
    private void animate(){
        ImageView imgView = (ImageView)findViewById(R.id.imageView);
        imgView.setVisibility(ImageView.VISIBLE);
        imgView.setBackgroundResource(R.drawable.frame_animation);
        AnimationDrawable frameAnimation = (AnimationDrawable) imgView.getBackground();
        if (frameAnimation.isRunning()){
            frameAnimation.stop();
        }
        else{
            frameAnimation.stop();
            frameAnimation.start();
        }
    }
}
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
    <item android:drawable="@drawable/colored-ball1" android:duration="50" />
    <item android:drawable="@drawable/colored-ball2" android:duration="50" />
    <item android:drawable="@drawable/colored-ball3" android:duration="50" />
    <item android:drawable="@drawable/colored-ball4" android:duration="50" />
    <item android:drawable="@drawable/colored-ball5" android:duration="50" />
    <item android:drawable="@drawable/colored-ball6" android:duration="50" />
    <item android:drawable="@drawable/colored-ball7" android:duration="50" />
    <item android:drawable="@drawable/colored-ball8" android:duration="50" />
</animation-list>

Ответы [ 2 ]

4 голосов
/ 01 июня 2011

В документации Android вы найдете следующее:

"Важно отметить, что метод start (), вызываемый для AnimationDrawable, не может быть вызван во время метода onCreate () вашего Activity, поскольку AnimationDrawable еще не полностью присоединен к окну. Если вы хотите воспроизвести анимацию немедленно, не требуя взаимодействия, тогда вы можете вызвать его из метода onWindowFocusChanged () в вашем Activity, который будет вызываться, когда Android фокусирует ваше окно. "

Надеюсь, это поможет!

3 голосов
/ 29 мая 2011

Когда вы нажимаете кнопку, вызывается только метод animate().Вы пытались поместить

animate();

внутри onCreate() и удалить его из parentButtonClicked(View v), чтобы вызывать animate при создании действия, а не при нажатии кнопки?Не понимаю, почему это не сработает для вас.

Тогда у вас также будет бесполезная кнопка.:)

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