Search code examples
androidlistviewanimationviewscale

Problems with Scale Animation


I'm trying to scale a view (a ListView) to a certain size when the user clicks on an item in the ListView. The ListView's "original" (beginning) state is set to

layout_width="match_parent"

The ListView is obviously a rectangle, if you will. I can't figure out how to scale down the ListView and keep the left side of the rectangle(ie. ListView) "anchored" to the left side of the screen/parent-activity. All I want to happen is the ListView's right side to slide in from the right side of the screen/parent. The y-axis is not to be scaled or changed, only the right side of the ListView. I apologize if this isn't clear enough. Below is a crude picture of the beginning state and end state of the ListView upon a user click.

a busy cat http://dc589.2shared.com/download/mdK_EobN/listviewanimationjpeg.jpg?tsid=20130313-093629-3c816601

I appreciate any help, thank you.


Solution

  • if you are certain that you always have the expanded view first, then you could do something like this:

    1. start by using match_parent as you currently do, to ensure it take up all the horizontal space of its parent container.

    2. Override onWindowFocusChanged of your activity to get the maximum required width

      @Override
      public void onWindowFocusChanged (boolean hasFocus) {
          // myComponentToBeResized.getMeasuredWidth(); 
      }
      
    3. Store 50% of this value, so, you have the width of both the fully expanded and partially expanded view.

    4. Update your view to use pixels (or dip) as width, instead of the match_parent keyword. Now, you can animate between the two values as you see if :)