我最近下载了Google表格应用,我对第一个解释应用详细信息的屏幕感兴趣,所以我尝试重新创建它。
经过一些研究后我决定ViewPager
并实施了它。
但result并非我的预期。
在工作表应用程序中,颜色变化是渐进的,几乎不会引人注意,但在我的情况下,过渡是明确的(使用的颜色方案与工作表应用程序中的相同)。
在工作表应用程序中应用的动画类型是什么?如何复制它?
答案 0 :(得分:2)
最简单的方法是:
Fragments
中移除ViewPager
的背景(我假设您在Fragments
ViewPager's
内使用Adapter
...如果没有,请告诉我们) 。通过“删除背景”,我的意思是,例如将其设置为"@android:color/transparent"
。ViewPager
本身移除背景(例如,将其颜色设置为transparent
)。View
放在ViewPager
下面(z-wise)作为更改背景。例如像这样(没有参数):
<FrameLayout>
<View android:id="@+id/animated_color_view"/>
<android.support.v4.view.ViewPager/>
</FrameLayout>
animated_color_view
背景颜色的方法。您可以使用REG1 in the comment (edit: the comment has been deleted, but this link points to the same thread)链接的线程中包含的方式之一。例如像这样(方法取自this post):
int[] pageColors = new int[]{Color.RED, Color.GREEN};
int currentColor = pageColors[0];
ValueAnimator colorAnimation;
public void animateToColor(int colorTo) {
if (colorAnimation != null) {
colorAnimation.cancel();
}
colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), currentColor, colorTo);
colorAnimation.setDuration(250); // milliseconds
colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
currentColor = (int) animator.getAnimatedValue();
animatedColorView.setBackgroundColor(currentColor);
}
});
colorAnimation.start();
}
OnPageChangeListener
,每次选择页面时都会调用此动画方法。
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
animateToColor(pageColors[position]);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
还有一点注意事项:请记住,pageColors
数组的大小必须等于ViewPager
中的页数。