Java 为什么将Runnable传递给onAnimationEnd不会';不行?

Java 为什么将Runnable传递给onAnimationEnd不会';不行?,java,android,Java,Android,我在一个单独的类上有一个动画实用程序实用程序。java我对这个类的定义如下: utility.java public class utility{ public void setAnimation(View view1, View view, Runnable doSomethingBeforeEnding){ AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f); animation.setDur

我在一个单独的类上有一个动画实用程序
实用程序。java
我对这个类的定义如下:

utility.java

public class utility{
    public void setAnimation(View view1, View view, Runnable doSomethingBeforeEnding){
       AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f);
       animation.setDuration(fadeAnimationDelay);
       new android.view.animation.Animation.AnimationListener() {
                        @Override
                        public void onAnimationStart(android.view.animation.Animation animation) {
                            
                        }

                        @Override
                        public void onAnimationEnd(android.view.animation.Animation animation) {
                           doSomethingBeforeEnding.run()  
                           
                        }

                        @Override
                        public void onAnimationRepeat(android.view.animation.Animation animation) {
                            
                        }
                    }
view1.startAnimation(animation);
   }
}  
现在,从我的
MainActivity
调用如下:

public void set(View view1, View view){
    utility.setAnimation(view1, view, new Runnable(){
                                    @Override
                                    run(){
                                       view.setRotation(180);
                                     }
                                    }
}
set(someOtherView, infomationTextView); //this textview exists and reference is not null and valid  

alpha动画可以工作,但是
TextView
()不旋转。为什么TextView不旋转?runnable是否没有捕获视图?

这实际上是运行的,并且是我观察到的一个错误,我认为android应该具有通用旋转值,在我的情况下:


我刚刚发现
view.setRotation(angle)
view.animate().rotate(angle)
的角度值不一样,例如-90在前一种情况下是顺时针旋转90,但在后一种情况下是逆时针旋转,当我在一个带有公共变量的循环中使用这两种方法时,旋转基本上被取消,因为角度被添加到一个循环中,而在上面的代码中没有显示。

动画需要在UI线程上运行。通过以这种方式传递runnable,它可能正在工作线程上运行。尝试将doSomethingBeforeeding.run()替换为view.post(doSomethingBeforeeding)@DexterBarretto,runnable只是一个接口,不是吗,它在工作线程上是如何工作的?它只是一个带有方法的抽象类,对吗?如果我定义了一个类似的可运行接口myRunnable{public void run(){})myRunnable的每个实例是否也会在工作线程上执行?它应该在主线程上运行,因为它是在主线程上调用的,在主线程上它甚至不会崩溃,如果它在不同的线程上运行,它将给出一个不在UI线程上运行的命令,除非您创建了一个
AnimationListener
,但您从未分配它因此,
doSomethingBeforeeding.run()
甚至不应被称为
onAnimationEnd()
ist从不调用我启动动画