2017-09-06 28 views
0

Ich habe eine Sammlung von Ansichten in der Lage, den Bildschirm nach unten und anschließend rückwärts, aber jetzt, wenn ich versuche, ein CardView zu bewegen, wird es gehen, aber nicht sichern.ObjectAnimator nicht rückwärts

Wenn der Benutzer auf eine Schaltfläche klickt, wird die Sammlung von Ansichten auf- und ausgeblendet und wenn der Benutzer erneut auf die Schaltfläche klickt, kehren sie zurück. In dem Raum, der durch das Verschwinden von Views erstellt wurde, wird eine CardView-Ansicht geschlossen. Ich habe die CardView zu Drop-Down, aber wenn der Benutzer auf die Schaltfläche klickt, gibt die Auflistung der Ansichten aber nicht die CardView zurück - stattdessen verschwindet es einfach. Prost!

MainActivity (NB: in OnCreate())

 ... 


final View blankCard = findViewById(R.id.child_card_template); 
    blankCard.setVisibility(blankCard.INVISIBLE); 

     ... 

    ImageButton btn = (ImageButton) findViewById(R.id.imageLeft); 
    btn.setOnClickListener(new View.OnClickListener() { 

     int click_Animation_Type = 0; 

     View viewTest = findViewById(R.id.child_card_template); 
     View viewCard = viewTest; 

     @Override 
     public void onClick(View view) { 
      switch(click_Animation_Type) { 
       case 0: 
        moveSecondRow(); 
        moveCardViewLayout(); 
        click_Animation_Type = 1; 
        break; 

       case 1: 
        rewindSecondRow(); 
        rewindCardViewLayout(); 
        click_Animation_Type = 0; 
        break; 
      } 
     } 

      public void moveCardViewLayout() { 
       View viewTest = findViewById(R.id.child_card_template); 
       ObjectAnimator viewTestMovi = ObjectAnimator.ofFloat(viewTest, "translationY", 0f, 258f); 
       if(viewTest.getVisibility()==View.INVISIBLE) { 
        viewTestMovi.setDuration(250); 
        viewTestMovi.start(); 
        viewTest.setVisibility(viewTest.VISIBLE); 
       } 
      } 

      public void rewindCardViewLayout() { 
       View viewTest = findViewById(R.id.child_card_template); 
       ObjectAnimator viewTestMoviReverse = ObjectAnimator.ofFloat(viewTest, "translationY", 258f, 0f); 
       if (viewTest.getVisibility() == View.VISIBLE) { 
        viewTestMoviReverse.setDuration(250); 
        viewTestMoviReverse.start(); 
        viewTest.setVisibility(viewCard.INVISIBLE); 

        //THERE'S NO ANIMATION, JUST TURNING INVISIBLE. 
        //Registers View is visible. 
       } 
      } 

      public void moveSecondRow() { 
       for (int i = 0; i < list.size(); i++) { 
        ObjectAnimator bottomRow = ObjectAnimator.ofFloat(list.get(i), "translationY", 0f, 300f); 
        bottomRow.setDuration(250);//set duration 
        Animation fadeOutAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade_out_anim); 
        bottomRow.start();//start animation 
        list.get(i).startAnimation(fadeOutAnimation); 
        list.get(i).setVisibility(View.GONE); 
       } 
      } 

      public void rewindSecondRow() { 
       for (int i = 0; i < list.size(); i++) { 
        ObjectAnimator bottomRow = ObjectAnimator.ofFloat(list.get(i), "translationY", 300f, 0f); 
        bottomRow.setDuration(300);//set duration 
        Animation fadeInAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade_in_anim); 
        bottomRow.start();//start animation 
        list.get(i).setVisibility(View.VISIBLE); 
        list.get(i).startAnimation(fadeInAnimation); 
       } 
      } 

    }); 

Antwort

0

jedes Mal click_Animation_Type beginnt mit 0. Setzen click_Animation_Type = 0; Schicht unterhalb der setContentView.

+0

Ich habe click_Animation_Type = 0 unter setContentView (R.layout.activity_main) hinzugefügt, aber es hat nichts geändert. Da es als 0 initialisiert wird, würde das tatsächlich irgendetwas verändern? Ich denke nicht, dass es eine Sache ist, von 0 zu 1 zu wechseln, da ich Toast-Nachrichten zeigte, wann auch immer es 0 und 1 war, während die rewindSecondRow() ausgeführt wurde. – Hews

Verwandte Themen