以下均转自Android游戏编程入门经典,转载请标明出处
在准备Android游戏编程前,我是一筹莫展不知从何下手!
这几天通过看书学习,慢慢理清思路。开始Android游戏编程前并不需要对Android API有深刻了解,
我们只需要对Android游戏编程所需要的API有所了解就可以了。我们大概要先了解:
窗口管理
输入
文件IO
音频
图形
先对清单文件进行了解
<activity
android:name="org.example.ch04_android_basics.AndroidBasicsStarter"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
name:用于指定活动类的名称,相对于<manifest>元素中指定的包属性(如:package="org.example.ch04_android_basics")。
label:该标签将显示在活动(如果有的话)的标题栏上。如果活动是应用程序的入口点,那么该标签也会作为文本显示在应用程序启动器中。如果我们不指定该标签,那么<application>元素里面的标签将会取代它。
ScreenOrientation:该属性用于指定活动将使用的方向。这里我们指定的是横向(landscape)模式,如果想工作在纵向模式就用(portrait)方向。这两个属性配置将会使活动在其生命周期内保持特定的方向,而不管设备实际方向怎么变化。如果不指定该属性,那么活动将会使用设备当前方向,它取决于加速计的数据。这就意味着每当设备的方向发生变化时,活动将会销毁并重新启动——这在游戏中是不能接受的。
configChange:调整设备方向或滑出键盘可认为是一种配置更改。在这样一种更改下,Android系统会销毁并重启应用程序以适应这种变化,这在游戏中就很糟糕了。<activity>元素的configChange属性就会派上用场。它允许我们指定某种想处理的配置更改,而不是销毁并重启应用程序的活动。可通过|字符将多个配置更改连接起来进行指定。在这里我们处理了keyboard、keyboardHidden、orientation更改。
对于<action>和<category>这两个元素,只需要指定name属性,android.intent.action.MAIN,它可被Android系统用来启动一个应用程序的主活动。而android.intent.category.LAUNCHER这个意图用于告诉Android系统,应用程序是否有一个特定的活动应该在应用程序启动器中有一个入口。
<uses-permission>元素将指定应用权限,通常一个权限形式如下:
<uses-permission android:name="string">
下面是一些可能用到的权限名称:
android.permission.RECORD_AUDIO:允许我们访问音频录制硬件。
android.permission.INTERNET:允许我们访问所有的联网API
android.permission.WRITE_EXTERNAL_STORAGE:允许我们读写外部存储器的文件,一般是指设备上的SD卡。
android.permission.WAKE_LOCK:允许我们获取一个所谓的唤醒锁。有了该唤醒锁,当屏幕一段时间没有被触摸时,可通过它防止设备进入睡眠状态。例如,在重力感应的游戏中就会派上用场。
android.permission.ACESS_COARSE_LOCATION:允许获取非GPS级别的访问权限,例如用户所在的国家,这对配置语言默认设置和分析十分有用。
android.permission.NFC:允许应用程序通过NFC(Near-Field Communication, 近场通信)执行IO,这对于许多涉及快速交换少量信息的游戏功能十分有用。
<uses-feature>元素有以下属性:
<uses-feature android:name="string"
android:required=["true"|"false"]
android:glEsVersion="integer"/>
name属性指定该功能本身,而required属性用于告诉过滤器我们是否在任何情况下都需要该功能或者该功能是可有可无的。最后是一个可选属性,只与特定的OpenGL ES版本协同使用。对于游戏开发而言,下面这些功能是最相关的:
android.hardware.touchscreen.multitouch:这要求设备具有多点触摸交互的屏幕,如捏拉缩放这类的操作。这种类型的屏幕在独立追踪多根手指方面存在问题,因此需要你评估这些功能是否足以支持你的游戏。
android.hardware.touchscreen.multitouch.distinct:这是上一项的关联功能,它要求具有完全的多点触控能力来实现像屏幕上的虚拟双摇杆等控制功能。