Android 属性动画实战

本文介绍了Android属性动画的概念,并通过实战展示了如何实现类似美团外卖购物车的动画效果。在滑动过程中,购物车平滑移动、消失及出现,详细讲解了滚动事件处理、动画实现以及解决动画冲突的方法。最后给出了项目的Github地址。
摘要由CSDN通过智能技术生成

什么是属性动画?

属性动画可以通过直接更改View的属性来实现View动画。例如:

  1. 通过不断的更改View的坐标来实现让View移动的效果;
  2. 通过不断的更改View的背景来实现让View的背景渐变的效果;
  3. 通过不断的更改View的宽高来实现让View变形的效果;

由此可见,利用属性动画几乎可以处理任何的涉及到View的动画效果。

实战

具体的细节就不多说了,网上相应的教程也不少。这篇博客主要是来实现类似于美团外卖购物车的效果。

分析

首先分析购物车动画具体的细节:在滑动过程中,“购物车”向右移动,直至一半隐藏到右侧;在手指停留在屏幕中时,“购物车”还隐藏在右侧;当手指离开屏幕,“购物车”在一定时间后重新移动回来

以上的动画细节可以分析出和RecycleView的滚动事件息息相关,因此动画就应该在RecycleView的滚动事件中实现。


实现基本布局

上图的蓝色图片既是我们要处理的View


给RecycleView加上滚动事件

接下来给RecycleView加上滚动事件,滑动或者飞翔时图片消失,当停止滑动时图片显示。

// 给rv加上滚动事件
rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
   
    @Override
    public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
   
        switch (newState) {
   
            case RecyclerView.SCROLL_STATE_DRAGGING:// 滚动中
            case RecyclerView.SCROLL_STATE_SETTLING:// 飞翔中
                iv.setVisibility(View.GONE);
                break;
            case RecyclerView.SCROLL_STATE_IDLE:// 停止滚动
                iv.setVisibility(View.VISIBLE);
                break;
        }
    }
});

效果图:


实现消失的动画

根据上面的图可以发现触发时机基本是没问题了,接下来要做的是让消失不突兀,加上消失的动画。

消失的实质是Viewx坐标从当前位置一直往右直到变为隐藏了一半,下面让我们来实现这个效果:

// 消失动画的基本属性(从iv当前的x坐标一直到出了屏幕右侧一半)
disappearAnimator = ValueAnimator.ofFloat(iv.getX(), (float) (Utils.getScreenWidth(this) - iv.getWidth() / 2.0));
disappearAnimator.setDuration(400);// 动画持续时间
disappearAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
   
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
   // Value更新事件
        float curValue = (float) animation.getAnimatedValue();
        iv.setX(curValue);
    }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值