创建Android游戏编程测试项目(1)

以下均转自Android游戏编程入门经典,转载请标明出处  

         上次提到Android游戏编程我们需要了解一些API:窗口管理、输入、文件IO、音频、图形

        为了能在一个项目里测试这些API,我创建了一个ListActivity,代码如下

package org.example.ch04_android_basics;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class AndroidBasicsStarter extends ListActivity {
	String tests[] = {"LifeCycleTest", "SingleTouchTest", "MultiTouchTest",
			"KeyTest", "AccelerometerTest", "OrientationTest", "AssetsTest",
			"ExternalStorageTest", "SoundPoolTest", "MediaPlayerTest",
			"FullScreenTest", "RenderViewTest", "ShapeTest", "BitmapTest",
			"FontTest", "SurfaceViewTest"};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setListAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, tests));
	}

	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		// TODO Auto-generated method stub
		super.onListItemClick(l, v, position, id);
		String testName = tests[position];
		try{
			Class clazz = Class
					.forName("org.example.ch04_android_basics." + testName);
			Intent intent = new Intent(this, clazz);
			startActivity(intent);
		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}
	}
}

tests数组里面有关于窗口管理、输入、文件IO、音频、图形相应的API的所有Activity名字,在AndroidBasicsStarter类中点击相应的Item就测试相应名字的Activity,运行效果如下

接下来就该创建测试活动了,一个活动包含一些受保护的方法,我们可重写它们已获知状态的变化:

Activity.onCreate():当活动第一次创建时调用该方法。在这里,我们设置所有的UI组建并挂载到输入系统中。它在生命周期中只会被调用一次。

Activity.onRestart():当活动从停止状态恢复时调用该方法,onStop()方法先于它被调用。

Activity.onStart():当onCreate()方法被调用之后或者活动从停止状态恢复时调用该方法。在后一种情况下,onRestart()方法先于它被调用。

Activity.onResume():当onStart()方法被调用之后或者活动从暂停状态恢复时调用该方法(例如,屏幕解除锁定时)。

Activity.onPause():当活动进入暂停状态时调用该方法。这也许是我们最后接收的通知,因为Android系统可能会决定不进行通知就直接删除我们的应用程序。我们应该在该方法内保存所有需要持久存储的状态。

Activity.onStop():当活动进入停止状态时调用该方法,onPause()方法先于它被调用。这就意味着一个活动在停止之前,它会暂停。与onPause()方法相同,它应该是Android系统直接删除活动之前我们最后得到的通知。在这里,我们也可保存一些持久状态。不过,系统有可能不调用该方法而删除活动。由于onPause()方法先于onStop()方法在活动被直接删除前被调用,因此应该在onPause()方法内保存所有内容.

Activity.onDestory():当活动被彻底销毁时,在活动生命周期的最后调用该方法。这是持久保存任何信息的最后机会,用于在下次创建活动时恢复信息。注意,当活动在系统调用onPause()或onStop()方法后被销毁时是不会调用该方法的。

Android生命周期如下图:


package org.example.ch04_android_basics;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class LifeCycleTest extends Activity {
	StringBuilder builder = new StringBuilder();
	TextView textView;
	
	private void log(String text){
		Log.d("LifeCycleTest", text);
		builder.append(text);
		
		builder.append('\n');
		textView.setText(builder);
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		textView = new TextView(this);
		textView.setText(builder);
		setContentView(textView);
		log("created");
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		log("paused");
		
		if(isFinishing()){
			log("finishing");
		}
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		log("resumed");
	}
}

运行效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值