【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

本人看的是PDF文档,很多都是直接都是复制粘贴的记录,简单的记录下笔记!

2.1 创建一个Android项目

Application Name: 应用名称(安装在手机上显示的名字)
Project Name : 项目名称
Package Name : 包名

Min SDK Version : 最低运行版本号
Create Activity : 主Activity类名

Minimum Required SDK : 最低要求的sdk
Target SDK : 选择目标SDK
Compile SDK : 编译SDK
Theme: 主题
Holo : n. 完全;整体
Holo Dark : 全黑
Holo Light:全息光
None(默认值)

 2.2 剖析 Android Project 结构

1. src 目录用来存放项目源代码(.java)
2. gen 目录下存放R.java 文件,R.java文件是该项目所有资源的索引文件,在建立项目时自动生成,R.java 文件属于只读模式,不能更改,一般不会对其进行修改。R 类中包含很多静态类,其中这些静态类的名称和res 目录下的资源目录一一对应。
3. Android (Library) 目录: 此目录下的“android.jar”文件指向的是 Android SDK,是开发Android应用程序所用到的所有API函数库。
4. assets 目录是用来存放引用的外部资源,此目录与res 目录最大的区别在于 res 路径下的资源文件都会在R 资源文件中自动生成对应的资源ID,而assets 目录下的资源不会。
5. res 目录是用来存放项目中用到的资源文件。
6.AndroidManifest 是当前项目的配置文件,其中包括编码格式、应用的icon、程序的版本号以及指定该程序使用到的服务等等。
7. default.properties 是记录项目工程的环境信息。

2.3 AndroidManifest.xml 与应用程序功能组件

 在每个 Android 应用程序中都必须具备 AndroidManifest.xml 这个文件,此文件定义了该程序的主要功能、处理的信息,以及执行的动作等等。

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

在上面的层次图中,在同一层的标签都是按照位置关系写在了一起,不同层的标签并不都是包含关系。
1. 最外层的<manifest>定义了软件的属性,如包路径、程序的版本、版次等等。
2. 第2层<application>定义应用程序属性及功能;如 android:icon 指定了应用的 icon图标, android:label 定义了应用程序的名称,并且声明功能<activity>活动。
3. 第3层是定义功能组件的一层,如<activity> 活动、<receiver> 意图与广播接收、<service>服务、<provider>属性(内容)提供者,都必须定义在<application>中,所以这里定义了<activity>活动类以及活动类名称。
4. <intent-filter> 其功能如一个过滤器。
5.第5层中的<action>定义了意图动作的类型;<category>是意图的属性,这里的值android.intent.category.LAUNCHER 表示启动应用程序的时候,意图将该 activity显示在屏幕上;这种启动程序的意图活动只能有一个。

<activity> - Activity(活动)
Android中一个 activity 就是一个用户界面,比如手机拨号界面、通讯录界面等都是活动。在应用程序中可以有一个或多个活动,但是如果新建了一个活动,必须在AndroidManifest.xml 中声明。

<receiver> - Intent (意图) 与 Broadcast Receiver (广播接收)
意图是描述动作的机制,在 Android 手机中几乎都有意图阶段。例如,当前有一个“发出一条信息”的意图(Intent), 这时候如果应用程序需要发送消息,调用该意图即可。
既然有意图,当然也需要在应用程序中注册一个活动来处理该意图,那么接收意图可称为 Broadcast Receiver (广播接收); 举个例子,比如手机启动的时候会有一个系统发出“系统启动”的意图,只要在应用程序中注册活动来接受此意图,就可以让其应用程序在手机启动的时候自动启动程序。因为在 Android中有很多意图,为了使接收具有针对性,可以在 <intent-filter>中指定接收意图的动作<action>,因此 <intent-filter>的作用就是一个意图的过滤器。

<service> - 服务
简单来说,就是应用程序在后台运行的任务,无需显示界面、也不必跟用户进行交互,但是又需要长时间在后台进行运行;例如 Android 系统中的音乐播放器,当选定歌曲进行播放时,即时用户将播放器应用程序放入后台,然后打开其他程序,音乐也会照常播放,那么肯定播放器程序添加了 service 服务功能。

<provider> - Content Provider (内容提供者)
带有内容提供者功能的应用所进行的动作是让使用者可以保存他们的信息或文件,例如:Android 手机联系人程序提供了一个内容提供者,任何要使用联系人信息的应用程序都可以共享内容提供者的所有信息,比如联系人的姓名、电话号、地址等等。

在AndroidManifest.xml 文件中除了以上介绍的功能组件之外,Android 对某些关键操作和访问都是有权限来限制的。假如一个应用程序需要将一些数据保存到手机的 SDCard 中,那么就需要在AndroidManifest.xml 中设置添加写入 SD卡权限,其语法是 <uses-permission>。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission>和<application>在AndroidManifest.xml 语法中属于同一层次。

2.4 运行 Android 项目(启动 Android 模拟器)

太简单,可以百度,略

2.5 详解第一个 Android 源码

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

 @Override //重写了基类Activity中的onCreate()方法;如果没有这个标志,编译代码的时候会认为是开发者自定义的函数
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

2.6 Activity 生命周期

单个Activity的生命周期

1. onCreate: Activity 初次创建时被调用,一般在这里创建 view、初始化布局信息、将数据绑定到 list 以及设置监听器等等。如果Activity 首次创建,本方法将会调用 onStart(); 如果 Activity是停止后重新显示,则将调用 onRestart() 。
2. onStart: 当Activity对用户即将可见的时候被调用,其后调用 onResume() 。
3. onRestart: 当Activity停止后重新显示的时候会被调用,然后调用 onStart() 。
4.onResume: 当用户能在界面中进行操作的时候被调用。
5. onPause: 当系统要启动一个其他的Activity时调用(其他的Activity 显示之前),这个方法用来停止动画和其他占用CPU资源的事情。所以在这里应该提交保存那些持久数据,这些数据可以在 onResume() 方法中读出。
6. onStop: 当另外一个 Activity 恢复并遮盖住当前 Activity, 导致其对用户不再可见时调用。 一个新 Activity启动、其他 Activity 被切换至前景、当前 Activity 被销毁时都会调用此函数。如果当 Activity 重新回到前景与用户交互时会调用 onRestart(),如果 Activity将退出则调用 onDestory() 。
7. onDestory: 在当前的Activity 被销毁前所调用的最后一个方法,当进程终止时调用(对Activity 直接调用 Finish 方法或者系统为了节省空间而临时销毁此 Activity的实例)。

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

多个Activity的生命周期
一个 Android应用程序,是可以存在多个Activity的。

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

当打开另外一个Activity的时候,手动关闭之前的Activity时,两个Activity的生命流程(在一个Activity中,只要调用finish()函数,即可退出当前Activity)

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

Android OS 管理 Activity 的方式

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

2.7 Android 开发常见问题

Android SDK 与 Google APIs 创建 Emulator的区别

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

将Android项目导入Eclipse

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

在 Eclipse 中显示Android开发环境下常用的View窗口

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

在 Eclipse 中利用打印语句(Log) 调试Android 程序

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

在 Eclipse 中 真机运行Android项目

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

模拟器横竖屏切换

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

打包Android项目

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!

【读书笔记-《Android游戏编程之从零开始》】2.Hello,World!