Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动画don';t使用ImageView可绘制的更改_Java_Android_Xml_Android Animation - Fatal编程技术网

Java 动画don';t使用ImageView可绘制的更改

Java 动画don';t使用ImageView可绘制的更改,java,android,xml,android-animation,Java,Android,Xml,Android Animation,您好,我有一个动画问题,实际上我想淡入我的ImageView,而它正在改变它的资源。 它不工作,我可以改变资源,但没有任何动画 private void checkX() { // TODO Auto-generated method stub switch (x) { case (1): { startingAnimation(); xImg.setImageResource(R.drawable.test_uno); e

您好,我有一个动画问题,实际上我想淡入我的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();
}
每次我按下一个按钮(加或减1到X)时,都会调用checkX


如何更改动画和ImageView资源?

调用动画的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) { }
});

在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             
            }
        });
用于淡出动画

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             
            }
        });
这就是在动画上实现listner的方法

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

如果答案有用的话,你可以接受。很乐意帮忙!切士