activity跳转之间的 animation 怎么不起作用

代码:(WelcomeActivity ---- hyb project)

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.welcome);

settings = getSharedPreferences(SETTINGS, 0);
flagIsShowIntro=settings.getBoolean(INTRO_SETTING, false);

Runnable r = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try{
Thread.sleep(2000);// wait 2s
if(flagIsShowIntro)
startActivityForResult(IntentHelperUtil.getInstance().getIntent(WelcomeActivity.this, IntroductionActivity.class),0);
else
startActivityForResult(IntentHelperUtil.getInstance().getIntent(WelcomeActivity.this, HomeActivity.class),0);
overridePendingTransition(R.anim.fade, R.anim.hold); //animation fade in , fade out

}catch(InterruptedException e){
e.printStackTrace();
}
}
};

new Thread(r).start();

}

这是项目的第一个页面,要达到的效果是等待2秒钟之后,淡入淡出到第二个页面。

运行后,发现,其实地方的动画效果都ok,可是这个地方activity切换显示的还是系统默认的animation

why ?

尝试着解决:

修改代码:

使用 activty.runOnUIThread()方法,结果要黑屏2秒之后直到到了第二个页面,不成功。

使用

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.welcome);

settings = getSharedPreferences(SETTINGS, 0);
flagIsShowIntro=settings.getBoolean(INTRO_SETTING, false);

TimerTask tt = new MyTask();

Timer timer = new Timer();
timer.schedule(tt, 2000);


private class MyTask extends TimerTask{
@Override
public void run() {
if(flagIsShowIntro)
startActivityForResult(IntentHelperUtil.getInstance().getIntent(WelcomeActivity.this, IntroductionActivity.class),0);
else
startActivityForResult(IntentHelperUtil.getInstance().getIntent(WelcomeActivity.this, HomeActivity.class),0);
overridePendingTransition(R.anim.fade, R.anim.hold);
}
}


还是不成功!

看来只能使用 Handler来解决了:

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.welcome);

settings = getSharedPreferences(SETTINGS, 0);
flagIsShowIntro=settings.getBoolean(INTRO_SETTING, false);

Timer timer = new Timer();
timer.schedule(tt, 2000);

mHandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
{
if(flagIsShowIntro)
startActivityForResult(IntentHelperUtil.getInstance().getIntent(WelcomeActivity.this, IntroductionActivity.class),0);
else
startActivityForResult(IntentHelperUtil.getInstance().getIntent(WelcomeActivity.this, HomeActivity.class),0);
overridePendingTransition(R.anim.fade, R.anim.hold);
break;
}

}
};
};

}

private class MyTask extends TimerTask{
@Override
public void run() {
Message message = new Message();
message.what = 1;
mHandler.sendMessage(message);

}
}


解决了。。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值