android animation——添加购物车动画(填坑和优化)

本文介绍如何创建类似淘宝、京东商品加入购物车的动画效果,包括动画的开始和结束位置设定、图片处理、动画弧度计算、数据操作时机以及处理连续点击时的动画流畅性。通过定义`ShoppingCartAnim`类,使用线程和Handler避免UI阻塞,确保动画流畅。文章还强调了动画细节处理和内存优化的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们经常看到不管是某宝还是某东都有加入购物车的动画。就是在点击某个商品后,这个商品变成小的缩略图移动到购物车里面去。

今天突然想着把原来做过的这么一个动画贴出来供大家学习。

先看效果图。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 run() {
             
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值