UI线程中是否总是安装Android动画?

atl*_*der 6 animation multithreading android

我想在Android中澄清使用view,propery等动画.

通常,我创建没有任何Tread的东西的动画 - 直接在我的Activity/Fagment/ViewClass中:

AlphaAnimation alphaAnimation = new AlphaAnimation(0,1);
alphaAnimation.setDuration(100);
mView.setAnimation(alphaAnimation);
alphaAnimation.start();
Run Code Online (Sandbox Code Playgroud)

我理解这是在主UI线程中执行的动画.

但是,如果我将在工作线程中创建动画 - 这是正常的方式吗?

public void onClick(View v) {
  new Thread(new Runnable() {
    public void run() {
      final AlphaAnimation alphaAnimation = new AlphaAnimation(0,1);
      alphaAnimation.setDuration(100);
      mView.post(new Runnable() {
        public void run() {
          mView.setAnimation(alphaAnimation);
          alphaAnimation.start();
        }
      });
    }
  }).start();
}
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 5

你的线程在这里没有实际效果.对mView.post()的调用实质上是调度可运行的,以便在下一个可用循环中在主线程上执行.您也可以节省启动新线程的工作,并在主线程上完成所有操作.这里没有多少事情发生.

动画使我的调度工作在每个帧的主线程上运行很多小工作,大约每16ms.这很典型.除非您看到需要优化的非常具体的问题,否则没有理由避免在主线程上执行此类工作.