ObjectAnimator不能淡入

30

我试图使用 Animator 集合逐个播放一组动画。除了 alpha 动画(set1)以外,其他都正常工作。alpha 动画应该从 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();
}   

2
检查动画对象是否可见 - Krishna Shrestha
你应该将1变成1f。 - tim687
3个回答

46

在工作时,涉及到4.0+版本。

ObjectAnimator alphaAnimation = ObjectAnimator.ofFloat(image, View.ALPHA, 0,1);

4

试一下这个。

ObjectAnimator.ofFloat(image, "alpha", 0.25f, 1, 1)

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
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接