andorid动画之呼吸效果


在 Android 中实现呼吸效果的动画可以通过多种方式来实现,最常见的方法是使用 ObjectAnimator 和 AnimatorSet。呼吸效果通常指的是一个视图的大小或透明度在一定时间内逐渐增大和减小,模拟出一种呼吸的感觉。

效果图

在这里插入图片描述

实现

布局

   <TextView
        android:id="@+id/heart"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="100dp"
        android:layout_gravity="center"
        android:background="@android:color/holo_blue_light" />

方式一 :使用 ObjectAnimator 实现呼吸效果

ObjectAnimator 可以用来对视图的属性进行动画操作,比如缩放、透明度等


        // 创建缩放动画
        ObjectAnimator scaleX = ObjectAnimator.ofFloat(binding.heart, "scaleX", 1.0f, 1.2f, 1.0f);
        ObjectAnimator scaleY = ObjectAnimator.ofFloat(binding.heart, "scaleY", 1.0f, 1.2f, 1.0f);

        // 创建透明度动画
        ObjectAnimator alpha = ObjectAnimator.ofFloat(binding.heart, "alpha", 1.0f, 0.8f, 1.0f);

        // 设置动画持续时间
        scaleX.setDuration(1000);
        scaleY.setDuration(1000);
        alpha.setDuration(1000);

        // 设置动画重复模式和次数
        scaleX.setRepeatMode(ObjectAnimator.REVERSE);
        scaleX.setRepeatCount(ObjectAnimator.INFINITE);
        scaleY.setRepeatMode(ObjectAnimator.REVERSE);
        scaleY.setRepeatCount(ObjectAnimator.INFINITE);
        alpha.setRepeatMode(ObjectAnimator.REVERSE);
        alpha.setRepeatCount(ObjectAnimator.INFINITE);

        // 将动画组合在一起
        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet.playTogether(scaleX, scaleY, alpha);

        // 开始动画
        animatorSet.start();

方式二:使用 ValueAnimator 实现呼吸效果

ValueAnimator 也可以用于实现复杂的动画效果。

 // 创建 ValueAnimator
        ValueAnimator valueAnimator = ValueAnimator.ofFloat(1.0f, 1.2f, 1.0f);
        valueAnimator.setDuration(1000);
        valueAnimator.setInterpolator(new LinearInterpolator());
        valueAnimator.setRepeatMode(ValueAnimator.REVERSE);
        valueAnimator.setRepeatCount(ValueAnimator.INFINITE);

        // 添加动画更新监听器
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                float animatedValue = (float) animation.getAnimatedValue();
                binding.heart.setScaleX(animatedValue);
                binding.heart.setScaleY(animatedValue);
                binding.heart.setAlpha(1.0f - (animatedValue - 1.0f) * 0.2f);
            }
        });

        // 开始动画
        valueAnimator.start();

总结

通过使用 ObjectAnimator、AnimatorSet 或 ValueAnimator,可以轻松实现视图的呼吸效果。这种动画效果可以用于各种场景,比如按钮的点击反馈、加载指示器的动画等。根据具体需求选择合适的动画工具,可以实现更加生动和流畅的用户体验。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值