Method works with literal value but not with variable holding the same value
<p>Code below.</p>

<p>The ObjectAnimator object "<strong>slideUpTranslate</strong>" works just fine.  It slides the ImageView upward.</p>

<p><strong>slideDownTranslate</strong>, however, doesn't work at all unless a literal value is supplied in lieu of the integer variable "menuHeight".  It doesn't throw an error of any kind, it just does nothing when you press the slide down button.</p>

<p>I've tried manually initializing menuHeight to an arbitrary value in the onCreate call.  I've tried designating it as a float instead of an integer.  I've tried using different variables for each of the ObjectAnimator objects.  I've tried instantiating slideDownTranslate with exactly the same parameters as slideUpTranslate.  No cigar.  I really don't see a reason why slideDownTranslate isn't working.</p>

<pre><code>    Button slideUpButton;
    Button slideDownButton;
    ImageView menuView;
    int menuHeight;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        slideUpButton = (Button)findViewById(R.id.slideUpButton);
        slideDownButton = (Button)findViewById(R.id.slideDownButton);
        menuView = (ImageView)findViewById(R.id.menuView);

        menuView.setBackgroundResource(R.drawable.menucropped);

        //This works
        final ObjectAnimator slideUpTranslate = 
ObjectAnimator.ofFloat(menuView,View.TRANSLATION_Y, menuHeight * -1);
        slideUpTranslate.setInterpolator(new AccelerateDecelerateInterpolator());

        //This does nothing
        final ObjectAnimator slideDownTranslate = 
ObjectAnimator.ofFloat(menuView,View.TRANSLATION_Y, menuHeight);
        slideDownTranslate.setInterpolator(new AccelerateDecelerateInterpolator());


        menuView.post(new Runnable() {
            @Override
            public void run() {
               menuHeight = menuView.getHeight();
                menuView.setTranslationY(menuHeight);
            }
        });

        slideUpButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                slideUpTranslate.start();
                Log.i("Test", "Slide up clicked...  Height:" + Integer.toString(menuHeight));
            }
        });

        slideDownButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                slideDownTranslate.start();
                Log.i("Test", "Slide down clicked...  Height:" + Integer.toString(menuHeight));
            }
        });

    }
}
</code></pre>

<p>So in short, this works:</p>

<pre><code>final ObjectAnimator slideDownTranslate = 
ObjectAnimator.ofFloat(menuView,View.TRANSLATION_Y, 500);
</code></pre>

<p>But this doesn't:</p>

<pre><code>final ObjectAnimator slideDownTranslate = 
ObjectAnimator.ofFloat(menuView,View.TRANSLATION_Y, menuHeight);
</code></pre>

<p>To further complicate things, <strong>slideUpTranslate</strong> works with either a literal value <em>or</em> a variable.  They're exactly the same, yet one works with a variable in the third parameter slot and one does not.</p>

<p>Going to wind up in the nut house if I can't figure this out soon!  Save me!</p>