Как задержать два кадра в покадровой анимации - PullRequest
0 голосов
/ 15 июля 2011

Теперь у меня есть четыре изображения, и я применил кадровую анимацию к этим четырем изображениям

1.one

2.two

3.three

4.Go

Я хочу указать временную задержку между тремя и кадром Go, которая будет случайным временем.

Вот мой код

int d=5000;
AnimationDrawable drawable=new AnimationDrawable();
    drawable.addFrame(getResources().getDrawable(R.drawable.one), 1000);
    drawable.addFrame(getResources().getDrawable(R.drawable.two), 1000);        
    drawable.addFrame(getResources().getDrawable(R.drawable.three),d);      
    drawable.addFrame(getResources().getDrawable(R.drawable.go),d);
    drawable.setOneShot(true);
    iv3.setBackgroundDrawable(drawable);
    drawable.start();

Где iv3мой ImageView

И я также хочу дать анимацию Scale с покадровой анимацией на этих изображениях.

Пожалуйста, помогите мне ...

Th @ nks

Ответы [ 3 ]

1 голос
/ 04 марта 2015

посмотри, у меня это нормально работает.

  public class MainActivity extends ActionBarActivity {
ImageView view;
AnimationDrawable Anim;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    view = (ImageView) findViewById(R.id.ivAnimation);
    view.setId(1);
    view.setBackgroundResource(R.drawable.image);
    view.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if (view.getId() == 1) {
                animationStart();
                view.setId(2);
            } else {
                view.setBackgroundResource(R.drawable.image);
                view.setId(1);

            }
        }

        private void animationStart() {
            try {
                BitmapDrawable frame1 = (BitmapDrawable) getResources()
                        .getDrawable(R.drawable.one);
                BitmapDrawable frame2 = (BitmapDrawable) getResources()
                        .getDrawable(R.drawable.two);
                BitmapDrawable frame3 = (BitmapDrawable) getResources()
                        .getDrawable(R.drawable.three);

                BitmapDrawable frame4 = (BitmapDrawable) getResources()
                        .getDrawable(R.drawable.four);
                BitmapDrawable frame5 = (BitmapDrawable) getResources()
                        .getDrawable(R.drawable.five);
                BitmapDrawable frame6 = (BitmapDrawable) getResources()
                        .getDrawable(R.drawable.six);

                Anim = new AnimationDrawable();
                Anim.addFrame(frame1, 200);
                Anim.addFrame(frame2, 200);
                Anim.addFrame(frame3, 200);
                Anim.addFrame(frame4, 200);
                Anim.addFrame(frame5, 200);
                Anim.addFrame(frame6, 200);
                Anim.setOneShot(false);
                view.setBackgroundDrawable(Anim);
                final Handler handler = new Handler();
                handler.postDelayed(new Runnable() {

                    public void run() {

                        Anim.start();

                    }
                }, 100);

            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    });
}

}

0 голосов
/ 16 июля 2011

После поиска и выполнения большого количества онлайн-работ, я считаю, что я не могу дать время задержки между двумя последующими кадрами в покадровой анимации, а также я не могу реализовать масштабирование и покадровое объединение. Так что я выполнил другойПуть следующий

    b=AnimationUtils.loadAnimation(this, R.anim.scalealpha);
a=AnimationUtils.loadAnimation(this, R.anim.scalealpha);
        c=AnimationUtils.loadAnimation(this, R.anim.scalealpha);
        e=AnimationUtils.loadAnimation(this, R.anim.scalealpha);

                a=AnimationUtils.loadAnimation(this,R.anim.scalealpha);
                iv3.setImageResource(R.drawable.one);
                iv3.startAnimation(a);

            Handler handler = new Handler();
            handler.postDelayed(new Runnable()
            {

                public void run()
                {

                       iv3.setImageResource(R.drawable.two);  
                       iv3.startAnimation(b);
                       Handler handler = new Handler();
                        handler.postDelayed(new Runnable()
                        {
                            public void run()
                            {

                                   iv3.setImageResource(R.drawable.three);
                                   iv3.startAnimation(c);
                                   Handler handler = new Handler();
                                    handler.postDelayed(new Runnable()
                                    {
                                        public void run()
                                        {

                                               iv3.setImageResource(R.drawable.go);                                                                  
                                               iv3.startAnimation(e);
                                        }}, 3000);

                            }}, 1000);


                }}, 1000);  

Если кто-нибудь знает лучший способ, чем этот, пожалуйста, скажите мне, и я был бы рад узнать .......... Спасибо, кто пытался решить эту проблему .....

0 голосов
/ 15 июля 2011

Вот пример: отметьте это

Кажется, вы должны записать продолжительность анимации в XML, например:

<item android:drawable="@drawable/wheel0" android:duration="50" />

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

РЕДАКТИРОВАТЬ: : проверьте эту ссылку тоже.

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