28

セットを使用して一連のアニメーションを順番に再生しようとしていAnimatorます。アルファアニメーション( )を除いて、すべてが機能していset1ます。0.25f から 1 に変更されていますが、アニメーション全体でフェードしておらず、アニメーションの最後にset10.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

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 に答える