学习软件开发,最直接最快捷的就是尽快动手创建第一个HelloWorld程序。当我们看到Hello World出现在应用中的那一刻,我们和这门语言,或者说这么工具的距离感会突然间变得亲切。

如同我们学习别的语言一样,我在最开始不太喜欢采用庞大的IDE创建第一个项目。还好我对Java语言很熟悉,还好采用Android Studio创建向导与VC++,Eclipse等并没有什么不同,在配置好AndroidStudio的开发环境后,创建过程也简化到了最少,为了排除干扰,我选择最简单的方式:创建一个Empty Activity项目,也只需要设置以下几点:

1.项目名称

2.项目存储目录

3.选择默认的sdk和Empty Activity。

OK,IDE自动创建了项目文件,配置好模拟器,点击运行,就可以在模拟器上看见一个空白的app应用了。虽然什么也没做,但是还是有点亲切了,因为我们看到了真正意义上的第一个App。

看看项目文件,目录不少,包括app和Grandle Scripts。Grandle文件可以暂时不用考虑了,里面都是打包安装点脚本,如果一头扎进去,基本上就失去了学习的兴趣了。还是看看app中的文件吧,包括三部分:

1.mainfests

包含唯一一个文件AndroidManifest.xml。这是本项目的清单文件,用于声明组件、权限和各种约定。

2.java

包含了java代码,其中包括2个测试包:java单元测试,android测试,这也不在目前的了解范围内。

还有就是一个java源码 MainActivity.java。继承于一个Activity(AppCompatActivity),只实现了一个onCreate方法。代码也就两行:

super.onCreate(savedInstanceState);//暂时不需了解
setContentView(R.layout.activity_main);

3.res

包含了各类资源,以xml文件为主:

layout包含页面布局文件,另外其他文件也可暂时不用考虑。

看到这里,我们对整个结构也有个简单的架构了:

1.AndroidManifest.xml对项目组件进行声明,告诉系统本项目有哪些组件,各组件可以接受action和权限约束。在默认代码中我们看到这样的设置

<activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

整个清单文件的层级结构大致为:

<manifest . . . >
    <application . . . >
        <service android:name="com.example.project.SecretService" . . . >
            . . .
        </service>
        . . .
    </application>
</manifest>

从application逐步分解至组件、组件接受的action、数据约束等。

其中android.intent.action.MAIN定义了本app默认启动的activity。

2.页面布局采用xml文件格式,由viewgroup和各种view组成,但是根节点必须是viewgroup。在RelativeLayout节点内添加一个TextView,设置android:text为Hello world,再次运行后,我们可以看到久违的Hello world。

3.在java代码中通过别的代码暂时也不需要了解,只需知道通过setContentView建立Java代码和页面展示xml文件的关联,通过R.layout.activity_main可以找到xml文件,activity_main为res\layout中的activity_main.xml文件,通过文件名进行匹配。

对程序框架有了基本了解后,我们就可以逐步深入了,我们知道了怎么添加一个新的activity,如何建立activity的布局文件以及测试基础空间了。对于刚刚接触Android开发,我们只有分步骤、分重点等学习方式,不求甚解的先了解Activity与xml布局文件如何建立数据、事件关联,Activity的生命周期,典型的展示控件的事件与数据处理方式,Acitvity之间如果交互、Service等其它组件的生命周期及如何交互等。