pca*_*ans 76
不,遗憾的是你不能用Animation对象做到这一点.但您可以使用插值器来模拟它,它将反转动画:
package com.example.android;
import android.view.animation.Interpolator;
public class ReverseInterpolator implements Interpolator {
@Override
public float getInterpolation(float paramFloat) {
return Math.abs(paramFloat -1f);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在动画上设置新的插补器:
myAnimation.setInterpolator(new ReverseInterpolator());
Run Code Online (Sandbox Code Playgroud)
the*_*yro 26
如果您使用Object或ValueAnimator为视图设置动画,则可以执行此操作
ValueAnimator myAnimator = new ValueAnimator();
myAnimator.reverse()
Run Code Online (Sandbox Code Playgroud)
文档可以在这里找到.
Ily*_*man 13
基于pcans的想法,你可以反转任何内插器,而不仅仅是线性.
class ReverseInterpolator implements Interpolator{
private final Interpolator delegate;
public ReverseInterpolator(Interpolator delegate){
this.delegate = delegate;
}
public ReverseInterpolator(){
this(new LinearInterpolator());
}
@Override
public float getInterpolation(float input) {
return 1 - delegate.getInterpolation(input);
}
}
Run Code Online (Sandbox Code Playgroud)
ReverseInterpolator reverseInterpolator = new ReverseInterpolator(new AccelerateInterpolator())
myAnimation.setInterpolator(reverseInterpolator);
Run Code Online (Sandbox Code Playgroud)
我对pcans有类似的方法,但略有不同.它需要一个Interpolator
并且将有效地传递出与使用Interpolator
正常传入然后在REVERSE模式下相同的值.保存您不得不考虑Animation.REVERSE
跨Android 的错误实现.请参阅此处的代码
public class ReverseInterpolator implements Interpolator {
private final Interpolator mInterpolator;
public ReverseInterpolator(Interpolator interpolator){
mInterpolator = interpolator;
}
@Override
public float getInterpolation(float input) {
return mInterpolator.getInterpolation(reverseInput(input));
}
/**
* Map value so 0-0.5 = 0-1 and 0.5-1 = 1-0
*/
private float reverseInput(float input){
if(input <= 0.5)
return input*2;
else
return Math.abs(input-1)*2;
}
}
Run Code Online (Sandbox Code Playgroud)
我想出的最简单的解决方案
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator">
<alpha
android:duration="2000"
android:fromAlpha="0.1"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:toAlpha="1.0">
</alpha>
</set>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33354 次 |
最近记录: |