解决android线程(thread)中页面跳转动画无效

android中如果要在线程中实现页面跳转,其动画效果overridePendingTransition会失效。而我们有时候(比如启动页面)又必须用到,所以

参考网上方法,利用Thread结合Handler方式最终得到解决,代码如下:

参考网页:1.http://blog.csdn.net/woshicaixianfeng/article/details/6826263

    2.http://www.2cto.com/kf/201305/215230.html


import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

@SuppressLint("HandlerLeak")
public class SplashActivity extends Activity {
	private Thread msThread;
	private static final int JUMP_TO_MAIN = 1000;
	private Handler mHandler;
	private final SplashActivity splash = this;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_splash);
		overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
		initData();
		msThread.start();
	}
	private void initData() {
		// TODO Auto-generated method stub

		mHandler = new Handler(){ 
			@Override 
	        public void handleMessage(Message msg) { 
	            // TODO Auto-generated method stub  
	            super.handleMessage(msg); 
	            if(msg.what == JUMP_TO_MAIN){
					Intent intent;
					intent = new Intent(splash, MainFragmentActivity.class);
					startActivity(intent);
					overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
					finish();
	            }
	        } 
	         
	    };
		msThread = new Thread() {
			@Override
			public void run() {
				try {
					synchronized (this) {
						wait(3000);
					}
				} catch (InterruptedException ex) {
					ex.printStackTrace();
				}
				Message msg = new Message(); 
                msg.what = JUMP_TO_MAIN; 
                mHandler.sendMessage(msg); 
			}
		};
	}
	
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值