overridePendingTransition()在TimerTask中不起作用

时间:2012-12-17 02:27:09

标签: android

我想在satrtactivity或finish时显示Activity Animation,但它可能在TimerTask Thread中无效(我知道它在UI线程中工作)

Timer timer = new Timer();
timer.schedule(new TimerTask() {
            @Override
            public void run() {
                startActivity(new Intent(myActionAnimation.this,activitytest.class));
                overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
            }
        }, 100);

可以解释一下吗? THX。

2 个答案:

答案 0 :(得分:2)

你只需使用它:

    Handler h = new Handler();
    h.postDelayed(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            startActivity(new Intent(myActionAnimation.this,
                    activitytest.class));
            myActionAnimation.this.overridePendingTransition(
                    android.R.anim.slide_in_left, android.R.anim.slide_out_right);
            finish();
        }
    }, 5000);

答案 1 :(得分:1)

我也遇到了这个问题,经过一些研究后我找到了一个解决方案并且它正在运行 你应该像这样使用Handler

  Handler handler=new Handler(){
    public void handleMessage(android.os.Message msg) {

        startActivity(new Intent(myActionAnimation.this,
                activitytest.class));
        myActionAnimation.this.overridePendingTransition(
                android.R.anim.slide_in_left, android.R.anim.slide_out_right);
        finish();

    };
};

在线程中你需要像

一样调用它
   Timer timer = new Timer();
   timer.schedule(new TimerTask() {
        @Override
        public void run() {
          handler.sendMessage(new Message());
        }
    }, 100);

我认为它可能对你有所帮助 快乐的编码