2016-07-19 6 views
1

Jedes Mal, wenn Benutzer berühren den Bildschirm auf dem Bildschirm erscheint neue Views, jeder dieser View sollte nach links bewegen, jetzt, wenn neue View erscheint, die Animation der vorherigen Ansicht stoppt, wie sie zu animieren alle gleichzeitig?Simultane Animation von einigen Ansichten

private class MyGestureListener extends GestureDetector.SimpleOnGestureListener { 

     @Override 
     public boolean onDown(MotionEvent e) { 
      switch (e.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        int x = (int) e.getX(); 
        int y = (int) e.getY(); 

        draw = new DrawView(getActivity(), 1, String.valueOf(xcoordList.size())); 
        drawViewList.add(draw); 
        progressBar.addView(draw); 
        progressBar.invalidate(); 

        drawViewList.get(drawViewList.size()-1).animate().translationXBy(-360f).setDuration(1000); 

        Runnable runnable = new Runnable() { 
         @Override 
         public void run() { 
          CountDownTimer timer = new CountDownTimer(System.currentTimeMillis() + 2000 - timeList.get(0), 1000) { 
           int j = 3; 
           @Override 
           public void onTick(long millisUntilFinished) { 
            final DrawView drawView = drawViewList.get(drawViewList.size()-1); 

          drawView.animate().translationXBy((-720f)/j).setDuration(1000); 
            j++; 

           @Override 
           public void onFinish() { 

           } 
          }.start(); 
         } 
        }; 

        getActivity().runOnUiThread(runnable); 
} 

Antwort

0

Lösung, die ich verwendet, änderte ich diese Codezeile:

drawView.animate().translationXBy((-720f)/j).setDuration(1000); 

für:

drawView.animate().translationXBy((-720f)/j) 
             .setDuration(1000).setListener(new Animator.AnimatorListener() { 
            @Override 
            public void onAnimationStart(Animator animation) { 
             j++; 
            } 

            @Override 
            public void onAnimationEnd(Animator animation) { 
             drawView.animate().translationXBy((-720f)/j).setDuration(1000); 
            } 

            @Override 
            public void onAnimationCancel(Animator animation) { 

            } 

            @Override 
            public void onAnimationRepeat(Animator animation) { 

            } 
           });