当灵感冒出来时, 会激动的对游戏构思一番, 有了创意, 还要对游戏开发流程心中有数, 了解每个环节, 从而控制风险。
这里只是以个人经验来介绍, 自己做一个备忘:
1.创意构思
2.WAP页面的还是客户端下载的:页面的不必多说
3.玩家群定位:策划考虑的,对游戏可玩性、体验的要求
4.运行平台:用哪种技术
5.适应机型:考虑屏幕大小,内存等限制、处理能力的等,移植
6.连接类型:socket 还是http, 对玩家来说感受不大, 但对开发来说关系很大
7.服务器交互:这里的设计会影响游戏的结构,网络处理很费时,切难度较大
8.资源存放:单击游戏没什么说的, 但网络游戏往往有大量图片处理,放在本地并非上策
暂时只想到这么多
开发完成后, 还没真正结束, 重头戏还在后头
1.测试:和开发同步进行
2.移植:在基础版出来后,即可以同步移植到不同机型或平台
3.内测:内部调试
4.公测:收集bug,完善
5.正式运营:收费,保持升级,收集用户体验
希望大家能多多补充
还是Hello World!
本节中,你会创建另一个Hello World!Android应用。然而这次你是用代码编写UI,而不是用xml文件——实际上你会做更多的工作。第一步是移除main.xml中的TextView代码。下面是TextView的代码部分。删除它,基本上使你的应用变成一个空壳。
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, HelloWorldText"
/>
在你移除TextView代码后,你的main.xml文件看起来是这样的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</LinearLayout>
现在你有了一个干净的main.xml文件,也就是一个干净的应用空壳,你可以添加在屏幕上显示“Hello Worldwide!”的代码。打开HelloWorldText.java文件,移除下面的行:
setContentView(R.layout.main);
本行用setContentView()函数将main.xml文件提到屏幕。因为你不用main.xml文件定义你的TextView,你也不会让它出现在你的视野。相反,你会通过代码构建TextView。
下一步是导入从android.widget中导入TextView包。这会让你访问TextView,并让借助它创建你的示例。将这段代码放到HelloWorldText.java文件的顶部, import声明是
import android.widget.TextView;
现在创建一个TextView实例。通过创建TextView实例,你会用它将文本输出到屏幕上而不是直接修改main.xml。在onCreate()声明触发之后,放上下面的代码:
TextView HelloWorldTextView = new TextView(this);
上面一行通过设定一个新的TextView,创建了名为HelloWorldTextView的TextView实例,然后实例化了HelloWorldTextView,新的TextView在这里被实例化了。
现在定义了TextView,你可以在上面添加文本了。下面一行代码就在TextView上设置了“Hello World!”文本。
HelloWorldTextView.setText("Hello World!");
本行设置了你的TextView中的文本。setText()函数让给TextView指定一个字符串。
你已经创建了包含你想要展示的信息的TextView。然而,仅仅在TextView上传递“Hello World!”并不会显示到屏幕上。如前面提到的,你需要设定ContentView向屏幕展示内容。你必须用下面的代码设定TextView内容,并将它展示到屏幕上。
setContentView(HelloWorldTextView);
研究该行,你会发现你将TextView传递给了setContentView。前三行代码组成了你的Hello World!应用。你创建一个TextView,为它指定文本,然后将它设置到屏幕上。从各方面来看,这一点儿都不复杂。
你的HelloWorldText.java文件的完整内容应该如下:
package android.programmers.guide;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloWorldText extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
/** Hello World JFD */
/** BEGIN */
/** Create TextView */
TextView HelloWorldTextView = new TextView(this);
/** Set text to Hello World */
HelloWorldTextView.setText("Hello World!");
/** Set ContentView to TextView */
setContentView(HelloWorldTextView);
/** END */
}
}
现在在Android模拟器中,编译并运行你的新Hello World!应用。选择 Run|Run或者按CTRL-F11组合键在Android模拟器中启动应用。下面的插图展示了你的Hello World!应用的结果。
你已经创建了你的第一个完整的Android Activity。这个小项目展示了一个相当普通的Hello World!应用的执行。你为活动的内容视图设定一个TextView,然后向Android模拟器中的手机屏幕显示“Hello World!”信息。下面一节展示一种不同的利用图片执行Hello World!的方式。
使用图像的Hello World!本节,你会利用Hello World!应用,进一步了解一种相对平常的编程实践:显示图片。没有图形展示,现代的计算机显示器会变得非常无趣。这些图形显示中心能够往屏幕上发送图像。
五年前,手机显示图片非常麻烦。作为现代的PC用户,处理图片是我们习以为常的事情。我们每天都看各种类型的窗口,却不会想到他们其实是发送到屏幕上的图片而已。这个版本的Hello World!应用会在屏幕上显示一个图片来表示“Hello World!”。
对于该应用,利用新建Android项目向导来创建一个新项目,并命名为HelloWorldImage,如下所示:
应用项目创建之后,浏览并从main.xml中移除TextView代码,保证你有一个空项目。如果你不移除这些代码,最后还会是一个基于文本的Hello World!项目。
在你开始写代码之前,你需要一个展示的图片。在图形程序中创建一个小图片。简单起见,我选择Microsoft Paint,但是任何程序都能够为你提供你需要的图片。我用的图片是:
将你的图片命名为helloworld.png,并把它保存到%workspace%/HelloWorldImage/res/
drawable目录。
在你将图片复制到正确的目录之后,刷新项目。helloworld.png图片就会出现在你的项目视图中,在drawable目录,如下所示:
打开R.java,浏览它的代码。Eclipse已经为你的helloworld.png增加了一个指针。你的R.java文件类似这样:
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package android_programmers_guide.HelloWorldImage;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int helloworld=0x7f020000;
public static final int icon=0x7f020001;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040000;
}
}
有了一个可以起步的空应用和一个你可以处理的图片,你就可以开始添加你的代码了。你可以从两方面浏览这个应用:基于XML的UI和基于代码的UI。
基于代码UI的 Hello World!
假设你能理解HelloWorldText的,该版本的Helloworld!会非常熟悉。开始你需要导入展示图片的包。而文本显示使用的是TextView,图片显示使用的是ImageView。一次你需要导入ImageView包。如同TextView,ImageView也包含在android.widgets:
import android.widgets.ImageView;
导入包后,你可以创建你的ImageView应用然后显示到屏幕上。实例化ImageView与实例化TextView相同;创建一个ImageView实例,使用方法如下:
ImageView HelloWorldImageView = new ImageView(this);
下一行是ImageView与TextView的不同之处。该步骤包含了设定你想显示的内容。在TextView的例子中,你使用setText()将TextView的文本设置成“Hello World!”。虽然ImageView与TextView都是从View衍生而来,但他们仍然不同,因此需要不同的方法。很显然,你不会在ImageView中使用setText()。你需要用setImageResource(),来在你的ImageView中设定图片。如下所示,从R.java给setImageResource()的手柄传递helloworld.png。(手柄的语法就是R.drawable.helloworld):
HelloWorldImageView.setImageResource(R.drawable.helloworld);
最后,你必须设定ContentView才能将图片输出到屏幕。如图你对TextView的做法一样,给ContentView传递ImageView。ContentView的任务就是将对象输出到屏幕。
setContentView(HelloWorldImageView);
你的HelloWorldImage.java的最终文件如同这样:
package android_programmers_guide.HelloWorldImage;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
public class HelloWorldImage extends Activity {
/** Called when the activity is first created. */
Chapter 5: Application: Hello World! 77
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
/**Hello World Image JFD*/
/**BEGIN */
/**Create the ImageView */
ImageView HelloWorldImageView = new ImageView(this);
/**Set the ImageView to helloworld.png */
HelloWorldImageView.setImageResource(R.drawable.helloworld);
/**Set the ContentView to the ImageView */
setContentView(HelloWorldImageView);
/**END */
}
}
编译HelloWorldImage,并在Android模拟器中运行。你的应用应该像下面的图例中所示:
下一节,你还会展示helloworld.png,但是这次是使用XML而不是代码。
基于XML UI的 Hello World!
本节为你区分基于XML的UI和基于代码的UI展示图片的流程,进行了很好的比较。就像你看到的一样,使用main.xml向屏幕发送图片的流程,和使用基于代码的UI,需要的代码量大体相当。然而这两种流程的语法不同。
通过同一个项目的最后一个例子,从HelloWorldImage.java文件中移除TextView代码。空文件此处所示:
package android_programmers_guide.HelloWorldImage;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorldImage extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
}
}
现在你有了个干净的面板,移到main.xml中。你需要添加一个ImageView的定义。从给你的main.xml文件添加空的ImageView标签开始:
<ImageView
/>
你需要编辑ImageView的四个属性:android:id、android:layout_width、android:layout_height、和android:src。你把这些属性放到标签中,他们会控制标签在屏幕上的现实方式。
android:id属性是设置ImageView的标识。android:id属性用来和你的代码中的ImageView关联。使用@+id/<name>语法给ImageView配置一个可以在以后使用R.layout.imageView纠正的标识:
android:id="@+id/imageview"
这一行是插入一个自动生成的id,@+id,插入到在名字imageview下的R.java文件。
下面两个你必须定义的属性是:layout_width和layout_height。这些属性控制图片填充屏幕的方式。当为这些属性分配值时,有两个选项可以选择。fill_content值在可见范围内使图片填充屏幕。wrap_content值保持图片的原始大小,可能处理时会失去一些图片精确度。例如,使用wrap_content:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
最后的属性你需要分配的是相对最重要的:android:src。这个属性指定你想在视图中显示的图片。例如,将该属性指定为drawable/helloworld图片:
android:src="/blog_article/@drawable/helloworld/index.html"
你的整个ImageView标签应该像这样:
<ImageView android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="/blog_article/@drawable/helloworld/index.html"
/>
最后,在图片显示到视图之前,你必须将main.xml传递到HelloWorldImage.java中的setContentView。
setContentView(R.layout.main);
编译并运行HelloWorldImage。结果如下面的插图所示:
在你结束本章前,再做一件事。回到main.xml,将层从warp_content变成fill_content。当你结束时,你的main.xml文件会像这样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView android:id="@+id/imageview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="/blog_article/@drawable/helloworld/index.html"
/>
</LinearLayout>
再次运行应用,看看wrap_content和fill_content之间的差别。你的新应用运行时,应该如下所示:
下一节从命令行编程出发,会对Hello World!应用做进一步的研究。
专家答疑
问:Android是否像其它大部分API一样,拥有一个label或者LabelView吗?
答:没有。所有文本都是通过TextView定义的。你可以像一些人一样,创建一个自定义的如同label功能的View,并将其命名为LabelView!
问:通过<application>.java来创建视图比main.xml有优势吗?
答:当在用一个创建其它文件时没有记载或过程文件的时候,就会有一个关键优势:使用main.xml,你会有大量的预定义的Activity视图。然后再你的代码中,你可以根据所需从一个视图跳到另一个视图,而不用人工编码创建。
07年底通过中国移动付费购机入手第一台智能手机多普达D600,从那时候开始接触智能手机,并且此款智能手机一直陪伴我到现在,先后经历Windows Mobile 5.0,Windows Mobile6.0,Windows Mobile 6.1以及到现在的Windows Mobile6.5,将来可能还会刷上Windows Mobile 7.0,我相当感谢我的手机带给我的无限乐趣!跟手机相处久了,慢慢就认识并了解它,从到手机论坛下载别人的刷机包刷新一版又一版的系统,到现在有能力贡献自己的刷机包提供给论坛"机油"们下载使用,我必须感谢手机论坛创始人提供了一个平台,以及一些制作ROM的高手无私的奉献和写大量技术文章的高手,由我下决心学会自己定制ROM,我用了7天的时间搜索各大手机论坛的技术文章,自己不断的尝试以及咨询一些版主,最终也学会了定制ROM,并且懂得了美化方面的技巧以及修改桌面插件的技巧,我相信这是开源带给我们的乐趣,如果没有这么多的帮助,我无法学会的,所以某种程度上,我热爱开源,热爱团队,我相信群众的力量是不可忽视的,一只蚂蚁可能很渺少,一窝蚂蚁就不渺少了,分工合作,齐心协力,不断壮大!