Search code examples
androidviewflipperscroller

How to make a ViewFlipper behave like a Scroller?


Good day everyone.

I am creating a calendar component, and I'm working in the month view. I have created a view named MonthView, and I am adding a couple instances of this to a ViewFlipper:

viewFlipper = new ViewFlipper(getContext());
viewFlipper.addView(new MonthView(viewFlipper.getContext()));
viewFlipper.addView(new MonthView(viewFlipper.getContext()));

I have implemented the fling gesture so that I change views when sliding my finger left or right. This will cyclically update and display the months.

Now, I need to give the fling gesture a smoothly effect when touching and slowly sliding my finger. The same we get when we use a Slider instead a ViewFlipper.

The problem with Scroller is that the effect is not cyclic. Once I get to the last view, I have to slide in the other direction.

I need someone help me find how to give a scroll-like effect to the ViewFlipper, or how to make a Scroller cyclic.

Thanks in advance.

Extra comment:

I have already implemented a ViewFlipper with 2 views. I update the views by using the SimpleOnGestureListener.onFling(...) method, and the behavior I got is something like this:

Imagine I always slide from rigth to left, like flipping a book's page to read the next one, and also imagine there is a caption in the header of the view that is displayed after flipping.

View # 0 --> Caption: January 2011

View # 1 --> Caption: Febrary 2011

View # 0 --> Caption: March 2011

View # 1 --> Caption: April 2011

View # 0 --> Caption: May 2011

If at this point I slide from left to right, the result will be something like:

View # 1 --> Caption: April 2011

View # 0 --> Caption: March 2011

The ability to cyclically move forward or backward, giving the user the idea of having infinite views, but using only a couple is characteristic of ViewFlipper, and that's what I can't loose. That's why I need a way to add the cool scroll effect without loosing what I've got.

Thanks.


Solution

  • Then you can use ViewFlinger!

    viewflinger this an android widget (extends ViewGroup) that allows to group a set of views that can be swiped horizontally. It offers a smoother transition that cannot be accomplished using ViewFlipper. This is based on the Workspace class on the iosched project, which is based in the class with the same name of the Launcher app.

    Download: 1.0.2 | Sources | JavaDoc

    If you use Maven, you can use it as an artifact from this repository: http://mvn.egoclean.com/. Also, you would want to look this video where I show how it looks like: http://www.youtube.com/watch?v=gqIXq5x7iLs (sorry for my accent which sucks)