在下面的图片中,左屏幕显示动画的开始状态,右屏幕显示结束状态。
动画的作用是,当列表视图从上到下移动时,“欢迎”标签将逐渐向上移动,并且个人资料图像视图将逐渐缩小并移至右上角。 当列表视图移回顶部时,将发生反转的动画。
我想问一下我该怎么做? 有关动画的开始和结束状态的图片
答案 0 :(得分:0)
尝试此过渡,您可能需要修复一点可能并不完美
以2个imageviews开始动画的结尾。使结束动画imageview不可见
scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
int scrollY = scrollView.getScrollY();
interpolate(start_profile_imageView, end_profile_imageView, scrollY );
}
});
将它们添加到同一课程中
private RectF mRect1 = new RectF();
private RectF mRect2 = new RectF();
private void interpolate(View view1, View view2, float interpolation) {
getOnScreenRect(mRect1, view1);
getOnScreenRect(mRect2, view2);
float scaleX = 1.0F + interpolation * (mRect2.width() / mRect1.width() - 1.0F);
float scaleY = 1.0F + interpolation * (mRect2.height() / mRect1.height() - 1.0F);
float translationX = 0.5F * (interpolation * (mRect2.left + mRect2.right - mRect1.left - mRect1.right));
float translationY = 0.5F * (interpolation * (mRect2.top + mRect2.bottom - mRect1.top - mRect1.bottom));
view1.setTranslationX(translationX);
view1.setTranslationY(translationY);
view1.setScaleX(scaleX);
view1.setScaleY(scaleY);
}
private RectF getOnScreenRect(RectF rect, View view) {
rect.set(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
return rect;
}
也请查看此project