Анимацияны аяқтау үшін While циклын кешіктіріп қосыңыз

Мен пайдаланатын SwipeSample анимация xml бар, ол сол жақтан оңға және т.б. орналасуларын сырлайды. Әр анимацияның әрқайсысында 800-ге дейін ұзақтығы бар.

Менде қандай да бір позицияны тексеретін пайдаланушы циклін тексеріп, циклды аяқтау үшін анимацияны айналдыратын уақытша цикл бар.

Мен өзімнің қазіргі жағдайымда 1 мен 0-ге барғым келсе, анимация жақсы жұмыс істейді. Егер мен 6-позицияда болсам және 0-ге барғым келсе, сызбалар бір соқтығысып кетсе, онда әрбір цикл алдында анимациялық уақытты ойнатпайды.

Уақытша циклге кідіріс қосуға бола ма, әлде басқа көзқараста болуға тиіспін бе?

Бұл код:

case R.id.EditTyellow:             System.out.println («Мәтінді сары басқан»);

        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) қосуды байқап көрдім, бірақ ол жұмыс істемейді.

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

1 жауаптар

Thread.sleep - EVIL. Оны синхрондау мәселелерін шешу үшін пайдалану үлкен емес. Android бағдарламасындағы анимациялар AnimationListener арқылы қоңырау шалу арқылы аяқталған кезде сізге хабарлауға мүмкіндік береді. Сіз тыңдаушыны анимацияңызға орнатасыз (slideRightIn, slideRightOut) және анимация өзі жасаған кезде сізге айтып береді, содан кейін қалағаныңыздың бәрін жасай аласыз.

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
қосылды