Animation not starting until another animation is started
===

I have a strange issue with my animations:

I have a ViewGroup *groupDropDown*.
Clicking on a button `btnDropDown` will start  `showDropDown()` or `hideDropDown()` in which a custom expand/collapse animation is executed 

I have a second ViewGroup *groupMenu*.
Clicking on ad button `btnMenu` will start `showMenu()` or `hideMenu()` in which a `TranslateAnimation` is executed

Only one of this views can be visible at the same time:
So if groupMenu is visible and `btnDropDown` is clicked `hideMenu()` is called and If groupDropDown is visible and `btnMenu` is clicked `hideDropDown()` is called.

On **ICS** all works fine, but on **Gingerbread** I have this bug:
When starting the Activity both of these views are not visible. If `btnShowDropDown` is clicked, `showDropDown()` is executed but does nothing (in debug the method is called properly).
If I now click on `showMenu()` both views (groupMenu and groupDropDown) are animating in - what never should happen. After both view are invisible again the behavior of the ViewGroups is normal.

I think there is no "real" problem with the animations. I use the expand/collapse animation very often and it works really fine. I think that there is a problem with the hardware acceleration which doesn't work well in older Android versions.
 

Here the listener which is calling showDropDown or hideDropDown
    ...

    btnShowDropDown.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
            if (!isDropDownAnimating) {
               if (ddListVisible) {
                  Log.d(getClass().getSimpleName(), "Hide Drop-Down menu");
                  hideDropDown();
               } else {
                  Log.d(getClass().getSimpleName(), "Show Drop-Down menu");
                  showDropDown();
               }
            }
         }
      });

    ...


These methods are showing or hiding the DropDownMenu

    private void showDropDown() {
          if (groupDropDown == null) {
             groupDropDown = findViewById(R.id.group_list);
          }
          if (menuIsVisible) {
             hideMenu();
          }
         
    
          Animation show = AnimationHelper.expand(groupDropDown, true,  DUATION_LONG, listHeight);
          show.setInterpolator(new DecelerateInterpolator());
          show.setAnimationListener(new AnimationListener() {
             @Override
             public void onAnimationEnd(Animation animation) {
                ddListVisible = true;
                isDropDownAnimating = false;
             }
    
             @Override
             public void onAnimationRepeat(Animation animation) {
                // Nothing to do here right now
             }
    
             @Override
             public void onAnimationStart(Animation animation) {
                isDropDownAnimating = true;
             }
          });
         groupDropDown.startAnimation(show);
       }

    private void hideDropDown() {
          if (groupDropDown == null) {
             return;
          }
          Animation hide = AnimationHelper.expand(groupDropDown, false, DUATION_LONG, listHeight);
          hide.setAnimationListener(new AnimationListener() {
             @Override
             public void onAnimationEnd(Animation animation) {
                ddListVisible = false;
                isDropDownAnimating = false;
             }
    
             @Override
             public void onAnimationRepeat(Animation animation) {
                // Nothing to do here right now
             }
    
             @Override
             public void onAnimationStart(Animation animation) {
                isDropDownAnimating = true;
             }
          });
          hide.setInterpolator(new DecelerateInterpolator());
          groupDropDown.startAnimation(hide);
       }


These methods are showing or hiding the groupMenu

     @Override
     protected void showMenu() {
       if (ddListVisible) {
          hideDropDown();
       }
       if (isMenuAnimating) {
          return;
       }
       View menuContainer = findViewById(R.id.group_menu_container);
       TranslateAnimation inAnim = new TranslateAnimation(start, 0, 0, 0);
       inAnim.setDuration(400);
       inAnim.setInterpolator(new DecelerateInterpolator());
       inAnim.setAnimationListener(new AnimationListener() {
          @Override
          public void onAnimationEnd(Animation animation) {
             menuIsVisible = true;
             isMenuAnimating = false;
          }
    
          @Override
          public void onAnimationRepeat(Animation animation) {
             // Nothing to do here
          }
    
          @Override
          public void onAnimationStart(Animation animation) {            
             isMenuAnimating = true;
          }
       });
       menuContainer.startAnimation(inAnim);
    }

    public void hideMenu() {
       if (isMenuAnimating) {
          return;
       }
       View menuContainer = findViewById(R.id.group_menu_container);
       TranslateAnimation outAnim = new TranslateAnimation(0, end, 0, 0);
       outAnim.setDuration(400);
       outAnim.setAnimationListener(new AnimationListener() {
          @Override
          public void onAnimationEnd(Animation animation) {
             menuIsVisible = false; 
             isMenuAnimating = false;
          }
    
          @Override
          public void onAnimationRepeat(Animation animation) {
             // Nothing to do here
          }
   
          @Override
          public void onAnimationStart(Animation animation) { 
             isMenuAnimating = true;
          }
       });
       menuContainer.startAnimation(outAnim);
      }

Thanks in advance!