什么是属性动画?
属性动画可以通过直接更改 View 的属性来实现 View 动画。例如:
通过不断的更改 View 的坐标来实现让 View 移动的效果;
通过不断的更改 View 的背景来实现让 View 的背景渐变的效果;
通过不断的更改 View 的宽高来实现让 View 变形的效果;
...
由此可见,利用属性动画几乎可以处理任何的涉及到 View 的动画效果。
实战具体的细节就不多说了,网上相应的教程也不少。这篇博客主要是来实现类似于美团外卖购物车的效果。
分析首先分析购物车动画具体的细节:在滑动过程中,“购物车”向右移动,直至一半隐藏到右侧;在手指停留在屏幕中时,“购物车”还隐藏在右侧;当手指离开屏幕,“购物车”在一定时间后重新移动回来。
以上的动画细节可以分析出和 RecycleView 的滚动事件息息相关,因此动画就应该在 RecycleView 的滚动事件中实现。
实现基本布局上图的蓝色图片既是我们要处理的 View 。
给 RecycleView 加上滚动事件接下来给 RecycleView 加上滚动事件,滑动或者飞翔时图片消失,当停止滑动时图片显示。
1 // 给rv加上滚动事件 2 rv.addOnScrollListener(new RecyclerView.OnScrollListener() { 3 @Override 4 public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { 5 switch (newState) { 6 case RecyclerView.SCROLL_STATE_DRAGGING:// 滚动中 7 case RecyclerView.SCROLL_STATE_SETTLING:// 飞翔中 8 iv.setVisibility(View.GONE); 9 break; 10 case RecyclerView.SCROLL_STATE_IDLE:// 停止滚动 11 iv.setVisibility(View.VISIBLE); 12 break; 13 } 14 } 15 });