I have an app i am doing, which has a FragmentPagerAdapter setup with 3 fragments to swipe between on the main page.
I have been trying to get it setup so as you swipe between fragments, the action bar changes color (fades in and out).
However i am not sure how i should do this. What method is called when you swipe between fragments? I.E where should i put the code to change the action bar colour?
And also how would i get the fade in and out effect (so it fades out one colour into another one)?
I would really appreciate anyones help.
Thanks in advance
Cheers Corey :)
You could make your FragmentPagerAdapter implements ViewPager.OnPageChangeListener.
Then, override onPageSelected
As for the color change animation. I didn't try it, but this is from another stackoverflow issue :
Android objectAnimator animate backgroundColor of Layout
You're looking for
ViewPager.OnPageChangeListener.onPageScrolled
. This will give you:Although, you'll only need the first two parameters. What you'll want to do is bind a particular color to each of your fragments, retrieve both the current page and next page colors, then blend them together using the
positionOffset
ratio to create your newActionBar
background.A useful algorithm for blending two colors based on a ratio can be found in Google's new
SlidingTabStrip
example.0.0
will return the second color,0.5
will return an even blend, and1.0
will return the first colorHere's a simple example:
ColorFragment
Pulling it all together
Results
http://gfycat.com/CautiousBewitchedJabiru
I hope that helps you out some!