当前位置: 首页 > 知识库问答 >
问题:

Android XML脉冲动画不工作作为预期

鲁泰宁
2023-03-14

我试图编写一个模拟脉冲动画的动画,类似于:

专注于内部的蓝色圆圈(忽略外部的深蓝色圆圈)

http://www.joedubs.com/wp-content/uploads/2016/01/breathe-now.gif

以下是我迄今为止成功编写的代码:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <scale
        android:duration="2000"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0.8"
        android:toYScale="0.8" />

    <scale
        android:duration="2000"
        android:fromXScale="0.8"
        android:fromYScale="0.8"
        android:pivotX="50%"
        android:pivotY="50%"
        android:startOffset="2000"
        android:toXScale="1.8"
        android:toYScale="1.8" />

    <scale
        android:duration="2000"
        android:fromXScale="1.8"
        android:fromYScale="1.8"
        android:pivotX="50%"
        android:pivotY="50%"
        android:startOffset="2000"
        android:toXScale="1"
        android:toYScale="1" />
</set>

虽然这在一定程度上是有效的,但当动画再次重复时,它会跳过并结巴。有人能稍微调整一下它来模仿平滑的脉冲动画吗?(增长和减少)

共有1个答案

狄玉书
2023-03-14

可以像这样添加ObjectAnimator,在反向模式下创建脉动效果:

ObjectAnimator scaleDown = ObjectAnimator.ofPropertyValuesHolder(ImageView,
                PropertyValuesHolder.ofFloat("scaleX", 0.5f),
                PropertyValuesHolder.ofFloat("scaleY", 0.5f));
        scaleDown.setDuration(300);

        scaleDown.setRepeatCount(ObjectAnimator.INFINITE);
        scaleDown.setRepeatMode(ObjectAnimator.REVERSE);

        scaleDown.start();

另一种实现方法是使用CustomClass并重写OnDraw方法,从而产生增加或减少变量并调用invalidate()的效果。我在另一篇帖子中这样做是为了增加我的按钮背景,如果你想这样做,它会对你有用。

脉动按钮Android

 类似资料:
  • null 然而,ItemAnimator并不区分添加和出现。是否有可能修复预测动画或至少使出现的动画看起来像“从屏幕外移动动画”离开添加的动画原样?

  • 我尝试创建一个CSS动画,当你悬停在方框上时,它会显示使用CSS动画的div。我使用了以下站点作为参考。点击这里,但我似乎无法实现EFX。在我的站点上,我使用JqUERY实现了一个show and hide函数,我的addClass和RemoveClass可以正常工作,但总体来说,该函数并没有正常工作。有人能指引我正确的方向吗。 /**HTML**/ /*jquery**/ /**CSS动画**/

  • 我在我的支持FragmentTransaction上使用了setCustomAnimations,但当我执行addToBackStack时,它所做的只是动画,而当我执行popBackStack时,它只是在没有动画的情况下消失。 下面是我的一段代码: 在setCustomAnimations部分,我使用了4个参数,到目前为止,它只在我调用FragmentAccount时显示幻灯片前的淡出动画,而在调

  • 我正在尝试使用Animation类设置ConstraintLayout高度的动画,而setDuration方法似乎不起作用。高度立即更改为所需的高度值。我在开发者选项中看到过关于动画被禁用的帖子,但这不是问题,它设置为1x。无论如何,代码如下:

  • 问题内容: '; ob_flush(); flush(); 我有专用的服务器,因此可以进行更改。我正在运行apache和nginx作为代理服务器。 问题答案: 您正在使用,而没有,因此没有需要冲洗的东西。 它还取决于Web服务器和代理及其设置。 您应该禁用Nginx的缓冲(添加到配置文件并重新启动Nginx) 另外,检查您的 php.ini是否 包含和。

  • 我尝试在视图顶部设置黑色标签高度约束的动画,并在下面的白色标签上设置约束,以设置与上面标签的距离。然后,我尝试使用以下代码设置高度更改黑色标签的动画(我还尝试删除UIView.animateWithDuration块中更改self.height的代码): 按按钮可调用调整大小操作。。有一些东西是动态的,但不是我所期望的:标签立即将其大小更改为0或100。当它变为0时,第二个标签将缓慢向上移动到其新