Android测试驱动开发实践2
|
package com.bjcic.wkj;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.WindowManager;
public class SplashActivity extends Activity {
// 生命周期方法---开始
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//全屏
setContentView(R.layout.splash);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
appModel = (AppModel)getApplication();
appController = appModel.getAppController();
appController.postDelayed(new Runnable() {
/**
* 隔10秒钟启动主页面
*/
@Override
public void run() {
appController.processEvent(new AppEvent(SplashActivity.this, AppEvent.EVE_SPLASH_END, null));
}
}, AppKeys.SPLASH_DURATION);
// 启动异步任务准备应用数据
}
// 生命周期方法---结束
private AppController appController = null;
private AppModel appModel = null;
}
|
|
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/splash">
</LinearLayout>
|
|
package com.bjcic.wkj;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
public class AppController extends Handler {
public AppController(AppModel appModel) {
super();
this.appModel = appModel;
}
/**
* Activity中会根据用户的操作或系统状态,产生对应的事件,发送给AppController进行统一处理。
* @param event
*/
public void processEvent(AppEvent event) {
switch (event.getEventId()) {
case AppEvent.EVE_SPLASH_END: // 从Splash界面显示主界面
showMainActivity((Activity)event.getContext(), event.getParams());
break;
default:
break;
}
}
/**
* 异步任务、线程、后台服务等需要更新界面时,向AppController发送消息即可
*/
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
/**
* 关闭Splash页面并打开应用主界面
* @param activity
* @param params
*/
private void showMainActivity(Activity activity, Bundle params) {
Log.d("wkj", "activity=" + activity + "; c=" + MainActivity.class + "!");
Intent intent = new Intent(activity, MainActivity.class);
activity.startActivity(intent);
activity.finish();
}
private AppModel appModel = null;
}
|
|
package com.bjcic.wkj;
import android.content.Context;
import android.os.Bundle;
public class AppEvent {
public AppEvent(Context context, int eventId, Bundle params) {
this.context = context;
this.eventId = eventId;
this.params = params;
}
public Context getContext() {
return context;
}
public void setContext(Context context) {
this.context = context;
}
public Bundle getParams() {
return params;
}
public int getEventId() {
return eventId;
}
public void setEventId(int eventId) {
this.eventId = eventId;
}
public final static int EVE_NONE = 0;
public final static int EVE_SPLASH_END = 1; // Splash界面显示时间到期
private Context context = null;
private int eventId = 0;
private Bundle params = null;
}
|
|
package com.bjcic.wkj;
public class AppKeys {
public final static long SPLASH_DURATION = 10 * 1000;
}
|