我正在尝试使用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();
}
答案 0 :(得分:38)
在4.0+上工作时
ObjectAnimator alphaAnimation = ObjectAnimator.ofFloat(image, View.ALPHA, 0,1);
答案 1 :(得分:5)
试试这个。
ObjectAnimator.ofFloat(image, "alpha", 0.25f, 1, 1)
答案 2 :(得分: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
}
});