我们经常看到不管是某宝还是某东都有加入购物车的动画。就是在点击某个商品后,这个商品变成小的缩略图移动到购物车里面去。
今天突然想着把原来做过的这么一个动画贴出来供大家学习。
先看效果图。gif工具不忍直视,真实操作是很流畅的一个抛物线。
首先从效果图看出来我们需要几个东西。
1,动画的开始位置
2,动画的结束位置
3,动画移动的图片(这里为了简单用一个小圆点,可以换成商品的缩略图)
4,动画的弧度如何处理
5,动画完成后在哪里操作数据
6,连续点击图片动画时如何new出多个动画
那么我们就来解决这问题
首相定义一个ShoppingCartAnim类,定义几个必要常量
**
* 购物车添加动画
*/
public class ShoppingCartAnim {
private ImageView buyImg;//播放动画的参照imageview
private int[] start_location = new int[2];// 这是用来存储动画开始位置的X、Y坐标;
private int[] end_location = new int[2];// 这是用来存储动画结束位置的X、Y坐标;
private static Handler mThreadHandler;//数据操作的非ui线程回调
public ViewGroup root;//动画层
private static Thread thread;//数据操作的非ui线程
}
其中我定义了一个线程和一个handler,这样做的目的就是为了在动画结束后做一些操作不要影响下一次点击动画。所以放在非ui’线程中。
这样,当我们连续点击动画的时候,不会因为上一次的数据没有操作完而动画出现卡顿。
在静态方法中实例化子线程
static {
thread = new Thread(new Runnable() {
@Override
public void