28

我正在尝试使用该Animator集合顺序播放一组动画。除了 alpha 动画(set1)之外,一切都在工作。它从 0.25f 变为 1,但在整个动画中并没有褪色,并且在动画结束时,set1它从 0.25 变为 1 并且没有考虑setDuration(因此我没有得到淡入效果)。所以我没有淡入效果......当我自己做这个动画时,淡入效果就在那里......有什么想法吗?

我正在使用美妙的Nineoldandroids库来实现这一点。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final ImageView image = (ImageView) findViewById(R.id.image);
    final AnimatorSet set = new AnimatorSet();
    set.play(ObjectAnimator.ofFloat(image, "translationX", 0, 100).setDuration(3000));

    final AnimatorSet set1 = new AnimatorSet();
    //THIS IS THE PROBLEMATIC ANIMATION!!
    set1.play(ObjectAnimator.ofFloat(image, "alpha", 0.25f, 1).setDuration(3000));

    final AnimatorSet set2 = new AnimatorSet();
    set2.play(ObjectAnimator.ofFloat(image, "translationX", 100, 200).setDuration(3000));

    final AnimatorSet set3 = new AnimatorSet();
    set3.playSequentially(set,set1,set2);
    set3.start();
}   
4

3 回答 3

45

在 4.0+ 上工作时

ObjectAnimator alphaAnimation = ObjectAnimator.ofFloat(image, View.ALPHA, 0,1);
于 2014-02-16T12:58:39.090 回答
4

尝试这个。

ObjectAnimator.ofFloat(image, "alpha", 0.25f, 1, 1)
于 2012-12-05T05:46:32.697 回答
1

您应该在布局完成后启动对象动画器。

final View image = findViewById(R.id.image);
final ViewTreeObserver observer = image.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        observer.removeOnGlobalLayoutListener(this);
        // start animators
    }
});
于 2014-02-16T13:04:40.467 回答