- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有以下 AnimatorSet 方法:
private AnimatorSet dialCenterThrob() {
int bpm = workoutStream.getHeartRate();
dialCenterImageView.clearAnimation();
AnimatorSet finalSet = new AnimatorSet();
ObjectAnimator pulseX = ObjectAnimator.ofFloat(dialCenterImageView, View.SCALE_X, 0.98f, 1.06f);
ObjectAnimator pulseY = ObjectAnimator.ofFloat(dialCenterImageView, View.SCALE_Y, 0.98f, 1.06f);
pulseX.setRepeatMode(ObjectAnimator.REVERSE);
pulseX.setRepeatCount(ObjectAnimator.INFINITE);
pulseY.setRepeatMode(ObjectAnimator.REVERSE);
pulseY.setRepeatCount(ObjectAnimator.INFINITE);
pulseX.setDuration(bpm);
pulseY.setDuration(bpm);
pulseX.setInterpolator(new AccelerateInterpolator());
pulseY.setInterpolator(new AccelerateInterpolator());
finalSet.playTogether(pulseX, pulseY);
return finalSet;
}
这是在一个名为 throbber 的 var 上设置的,偶尔会通过这种方法更新:
private void updateThrobbing() {
if (hasThrob()) {
throbber = dialCenterThrob();
throbber.start();
} else {
if (throbber != null && throbber.isRunning()) {
stopThrobbing();
}
}
}
但我无法让它停止动画,这是目前尝试这样做的方法:
public void stopThrobbing() {
List<Animator> throbbers = throbber.getChildAnimations();
for(Animator animator : throbbers) {
//accomplishes nothing
((ObjectAnimator)animator).setRepeatCount(0);
((ObjectAnimator)animator).setRepeatMode(0);
}
throbber.pause(); //nothing
throbber.cancel(); //and again, nothing
throbber.end();//shocking, I know, but really, nothing
throbber = null;//you'd think this would definitely do it, but no
//desparate attempt, in vein, of course
dialCenterImageView.clearAnimation();
}
我无法让它停止动画。更新:我只是尝试将本地引用存储到各个对象动画师,然后在每个对象上调用 setRepeatCount、模式、暂停、结束、取消,但仍然没有。
最佳答案
dialCenterImageView.clearAnimation();
这对 ObjectAnimator
创建的动画没有影响。您只能通过 startAnimation()
findViewById(R.id.yourViewId).startAnimation(yourAnimation);
findViewById(R.id.yourViewId).clearAnimation();
any object animator, or animatorset with repeatCount set to Infinite will NOT stop, no matter what you do, short of leaving the view.
没错!今天通过艰难的方式学到了这一点。所以会加上我的两分钱。您需要存储 ObjectAnimator
实例的引用,然后在其上调用 cancel()
。
我在旋转 Android 手机屏幕后动画仍在继续时遇到了这种情况,在这种情况下,您的 Activity 基本上是用新布局重新创建的。
这就是我做的
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
ObjectAnimator buttonOneObjectAnimator = myOnClickListener.getButtonOneColorAnim();
if(buttonOneObjectAnimator != null)
buttonOneObjectAnimator.cancel();
}
您也可以在 onPause()
中很好地完成它。
还有一点需要注意。如果您在 ObjectAnimator
实例上调用 start()
n 次,那么您将不得不调用 cancel()
< strong>n 次 动画完全停止。
此外,如果您添加了 AnimatorSet
监听器,请确保在调用取消之前已移除监听器。
yourAnimatorSet.removeAllListeners();
yourAnimatorSet.end();
yourAnimatorSet.cancel();
关于android - 让 Android AnimatorSet 停止动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254046/
我正在尝试使用 AnimatorSets 链接一组动画。 我有这样的东西: AnimatorSet sequentialSet = new AnimatorSet(); sequentialSet.p
我正在尝试让一个动画在另一个动画结束后开始。我正在使用动画属性并将对象定义为“AnimatorSet”。问题是第一个动画开始时没有问题,但第二个动画从未开始。 public void moveGrou
我需要的是一个可无限重复的 AnimatorSet(由 2 个连续的 animations 组成),同时也是一种在安全的情况下停止这些 animations 的方法方式(即最终状态与起始状态相同)。例
我正在尝试设置一个动画师监听器,所以最终对象动画师会发生一些事情!到目前为止,这是我的代码: as=new AnimatorSet(); as.addListener(new Ani
我需要将以下动画应用于 imageView: 1. alpha (0 -> 1) and scale (0 -> 1) in 500ms 2. pause for 1000ms 3. alpha (1
我想将 View “闪烁”3 倍(缩小和放大,重复 3 倍)。它有效,但不适用于 AnimatorSet。 这个有效: ibOffers.animate().scaleX(0.7f).scaleY(0
我们想在下面的方法中设置结束监听器: private void animation1() { ObjectAnimator scaleXAnimation = ObjectAnima
我无法弄清楚这段代码有什么问题。我通过调用 AnimatorSet.playTogether() 方法一起播放两个 Animator。但是 onAnimationEnd() 回调只被调用一次。为什么会
我已经尝试了几个小时,我觉得是时候放弃了。如何循环在 xml 中定义的 AnimatorSet? 我在单个 objectAnimator 上尝试了 star
我正在使用 Sceneform 创建一个播放动画的 android 应用程序。我正在尝试使用 AnimatorSet 按顺序启动多个 Animator。该代码在尝试播放两个动画时完美运行,但每当我添加
我正在使用 AnimatorSet 创建动画,当它结束时我想将 View 留在原处。 代码是这样的: mLastAnimation = new AnimatorSet(); mLastAnimatio
您好,我正在使用 AnimatorSet 和 ValueAnimator 将多个动画应用到一个 View 。 当用户触摸 View 时,连续的动画会应用到 View 。当用户在 View 上移动手指时
我创建了一个 AnimatorSet s1。 我想使用 s1 AnimatorSet 而不是 R.anim.slide_in_top 。 如何让事务使用s1? private void showsys
我有以下代码,它将图像分成两半并在不同方向为每个部分设置动画: final AnimatorSet mSetAnim = new AnimatorSet(); final Animator topAn
第一次尝试 RoboGuice。到目前为止,注入(inject) View 的一切都运行顺利。 自从我在 tutorial 中看到我可以注入(inject)资源我试图添加一个 AnimatorSet
我正在使用这样的 AnimatorSet playSequentially 方法: AnimatorSet set = new AnimatorSet(); ObjectAnimator in = O
我已经在某些设备上使用 ObjectAnimator 类进行了一些测试,除了一台设备外一切正常:Huawei P8 Lite 2017。 在此设备上,View 在动画开始时“消失”并在结束时“出现”。
这是我需要通过AnimatedVectorDrawableCompat实现的效果。 vector_drawable_anim.xml vector_drawable.xml
我有以下 AnimatorSet 方法: private AnimatorSet dialCenterThrob() { int bpm = workoutStream.getHeartRat
我有一个关于 Android 中的 ObjectAnimator 的问题。我正在尝试模拟一个弹跳效果,其中 View 向上滑动(减小 Y 值)并在相同数量“n”之后返回,然后 View 再次向上和向下
我是一名优秀的程序员,十分优秀!