0

こんにちは、アニメーションに問題があります。実際には、リソースの変更中に ImageView をフェードさせたいと考えています。機能していません。リソースを変更できますが、アニメーションはありません。

private void checkX() {
    // TODO Auto-generated method stub
    switch (x) {
    case (1): {
        startingAnimation();
        xImg.setImageResource(R.drawable.test_uno);
        endingAnimation();
        break;
    }
    case (2): {
        startingAnimation();
        xImg.setImageResource(R.drawable.test_due);
        endingAnimation();
        break;
    }
    case (3): {
        startingAnimation();
        xImg.setImageResource(R.drawable.test_tre);
        endingAnimation();
        break;
    }
    case (4): {
        startingAnimation();
        xImg.setImageResource(R.drawable.test_quattro);
        endingAnimation();
        break;
    }
    case (5): {
        x = 1;
        checkX();
        break;
    }
    case (0): {
        x = 4;
        checkX();
        break;
    }
    }
}


private void endingAnimation() {
    // TODO Auto-generated method stub
    ObjectAnimator animation2 = ObjectAnimator.ofFloat(xImg, "alpha", 255);
    animation2.setDuration(1000);
    animation2.start();

}

private void startingAnimation() {
    // TODO Auto-generated method stub
    ObjectAnimator animation = ObjectAnimator.ofFloat(xImg, "alpha", 0);
    animation.setDuration(1000);
    animation.start();
}

checkX は、ボタン (X に 1 を加算または減算する) を押すたびに呼び出されます。

アニメーションと ImageView リソースの両方を変更するにはどうすればよいですか?

4

2 に答える 2

0

アニメーションのonAnimationEndが呼び出されたときに画像ソースを変更してみてください。例えば:

animation.addListener(new AnimatorListener() {

    @Override
    public void onAnimationStart(Animator animation) { }

    @Override
    public void onAnimationRepeat(Animator animation) { }

    @Override
    public void onAnimationEnd(Animator animation) {
        // change your ImageView's source here
    }

    @Override
    public void onAnimationCancel(Animator animation) { }
});
于 2013-03-28T11:31:30.947 に答える
0

ImageView にフェードアウト アニメーションを適用し、animationListener を設定します。アニメーションの最後にビュー リソースを変更し、フェードイン アニメーションを設定します

フェードインアニメーション用

Animation fadeIn = new AlphaAnimation(0, 1);
            fadeIn.setInterpolator(new DecelerateInterpolator()); 
            fadeIn.setDuration(1000);
            final AnimationSet animation = new AnimationSet(false); 
            animation.addAnimation(fadeIn);

フェードアウトアニメーション用

Animation fadeOut = new AlphaAnimation(1, 0);
                fadeOut.setInterpolator(new AccelerateInterpolator()); 
                fadeOut.setDuration(300);
                final AnimationSet animation = new AnimationSet(false);
                animation.addAnimation(fadeOut);

それがアニメーションにリスナーを実装する方法です

fadeout.setAnimationListener(new Animation.AnimationListener(){

            @Override
            public void onAnimationStart(Animation arg0) {
            }           

            @Override 
            public void onAnimationRepeat(Animation arg0) {
            }           

            @Override
            public void onAnimationEnd(Animation arg0) {
                //change resource of Imageview here             
            }
        });
于 2013-03-28T11:33:55.273 に答える