Animasyonun tamamlanması için while döngüsüne gecikme ekle

Kullandığım SwipeSample, soldan sağa vb. İçin düzenleri kaydıran bir animasyon xml'e sahiptir. Animasyonların her birinde 800'e ayarlanmış bir süre vardır.

Kullanıcının hangi konumu tıkladığını kontrol eden ve ardından döngüyü tamamlamak için animasyonu döngüye sokan bir süre döngüsüm var.

Bulduğum şey şu an 1 pozisyonumdaysam ve 0'a gitmek istersem, animasyon iyi çalışıyor. 6. pozisyondayım ve 0'a gitmek istersek, düzenler bir isabette kayıyor gibi görünür. Döngü, animasyon zamanının her geçişten önce oynatılmasına izin vermez.

Bir süre döngüsüne gecikme eklemek mümkün mü yoksa başka bir yaklaşım mı kullanmalıyım?

Bu kod:

dava R.id.EditTYellow:             System.out.println ("Metin Sarı basılı");

        if(viewFlipper.getDisplayedChild()!=0 || viewFlipper.getDisplayedChild()> 0 ){
            do  
             { 
            viewFlipper.setInAnimation(slideRightIn);
            viewFlipper.setOutAnimation(slideRightOut);
            viewFlipper.showPrevious();
            //Delay need here to allow animation to complete
             } while (viewFlipper.getDisplayedChild()!=0);
        }                       
        //System.out.println("New Flipper "+viewFlipper.getDisplayedChild());
    break;

Thread.sleep (800) eklemeye çalıştım ama işe yaramadı.

            try {
                Thread.sleep(800);
            } catch (InterruptedException e) {
               //TODO Auto-generated catch block
                e.printStackTrace();
            }
0

1 cevap

Thread.sleep EVIL. Senkronizasyon sorunlarını düzeltmek için kullanmak büyük bir hayırdır. Android'deki animasyonlar, bittiğinde AnimationListener geri aramasıyla sizi haberdar edebilir. Dinleyiciyi animasyonunuza yerleştirirsiniz (slideRightIn, slideRightOut) ve animasyonun ne zaman biteceğini size söyler, daha sonra istediğinizi yapabilirsiniz.

slideRightIn.setAnimationListener(new AnimationListener() {
    public void onAnimationStart(Animation animation) {

        }

    public void onAnimationRepeat(Animation animation) {

    }

    public void onAnimationEnd(Animation animation) {
     //will be called when your animation is complete 
    }
});
1
katma