android应用程序开发流程要点_第1页
android应用程序开发流程要点_第2页
android应用程序开发流程要点_第3页
android应用程序开发流程要点_第4页
android应用程序开发流程要点_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 / 24 文档可自由编辑 目录目录 1 1小结要点小结要点.1 1 2 2JAVAJAVA 基础知识基础知识 .1 1 3 3ANDROIDANDROID 应用程序开发环境搭建应用程序开发环境搭建 .2 2 4 4ANDROIDANDROID 应用程序目录结构应用程序目录结构 .5 5 5 5新建一个新建一个 ANDROIDANDROID 应用应用.6 6 6 6ANDROIDANDROID 四大组件及界面四大组件及界面 UIUI 元素元素 .7 7 7 7ANDROIDANDROID 应用程序的工作机制应用程序的工作机制 .8 8 8 8ANDROIDANDROID 应用程序常用功能接口

2、应用程序常用功能接口 .1212 1 / 24 文档可自由编辑 1小结要点 1、熟悉了解 java 面向对象编程思想及基础知识; 2、Android 应用程序开发环境的搭建; 3、了解 Android 应用程序的目录结构; 4、新建一个 android 应用(Hello,Android World!) 5、熟悉 Android 四大组件及控件; 6、理解 Android 应用程序开发的工作机制; 7、熟悉常用功能的接口; 2Java 基础知识 表一 JAVA 语法与 C 语言语法对比 C C 语言语法规则语言语法规则JAVAJAVA 语言语法规则语言语法规则 代码框架代码框架从 main 函数

3、开始从 main 方法开始,但是必 须是包含在类中,类名一 般以大写字母开头,文件 名与类名必须相同 数据类型数据类型整型数:整型数: int、unsigned int 4 字节 long int、unsigned long 整数型:整数型:byte -1 字节 short 2 字节 int 4 字节 long 8 字节 浮点型:浮点型:float 4 字节 2 / 24 文档可自由编辑 int 8 字节 浮点型:浮点型:float 4 字节 double 8 字 节 字符型:字符型:char、signed char 1 字节 布尔类型:布尔类型:没有此类型 字符串类型:字符串类型:没有此类

4、型 double 8 字节 字符型:字符型:char 2 字节 可当做无符号整型 布尔型:布尔型:boolean 不确 定,只有 true 和 false, 存储空间取决于 JAVA 虚拟 机的实现 字符串类型:字符串类型:StringString 变量、运变量、运 算符算符 略与 C 语言命令及运算规则 基本一致 语句结构语句结构略与 C 语言基本一致,但没 有 goto 语句 数组数组声明和创建:声明和创建:例:int m10; 声明和创建:声明和创建:例:int m = new int10; 常用修饰常用修饰 符符 static:static:略略 常量:常量:#define#defin

5、e COUNTCOUNT 100100 static:static:与与 C C 语言相同语言相同 常量:常量:privateprivate finalfinal intint countcount = = 100100; publicpublic staticstatic finalfinal intint COUNTCOUNT = = 100;100; 类的定义类的定义无无访问控制符 修饰符 class 类名 3 / 24 文档可自由编辑 属性声明 方法声明 构造器声明 访问控制访问控制 符符 无public、private、protec ted 对象属性对象属性 初始化初始化 无类名 对

6、象名 = new 构造 器 thisthis 关关 键字键字 略参考相关书籍 指针指针略无无 3Android 应用程序开发环境搭建 使用的工具:使用的工具:javajava jdkjdk、androidandroid SDKSDK、eclipseeclipse 、ADTADT 插件插件 方法一:方法一: 一、首先安装 java jdk 并设置环境变量; 二、将别人已经安装好的 eclipse、android SDK 目录拷贝到自己的电脑; 三、打开 eclipse 设置 android SDK 路径(配置 ADT) 。 1、Eclipse启动后,选择Window Preferences.,在

7、打开的属性框,选择 Android,如下图;可以看到: 4 / 24 文档可自由编辑 2、在 SDK location 中输入你的 Android SDK 所在的目录,然后按 Apply 按钮即可看到我们安装SDK包,如下图: 四、android SDK 的配置 1、在Eclipse中选择Window-Android SDK and AVD Manager ,或者在 android-sdk-windows文件夹中双击SDK Manager.exe,可以看到类似如界面: 5 / 24 文档可自由编辑 2. 在上述界面中选择 Virtual Devices,按new 按钮创建虚拟设备,输入如下 图

8、所示: 6 / 24 文档可自由编辑 3. 点击“Create AVD”按钮,如果安装成功,会在“Android SDK and AVD Manager”对话框中显示。 方法二:略方法二:略 安装步骤比较繁琐,网速比较慢的话需要大概一天的时间,对安装步骤不熟悉 的话可能需要两天。 此安装方法关键就是安装 android SDK 和 ADT 插件,方法一是拷贝了已经安装 好了的,所以在方法一中可以直接省去而直接配置环境就 OK 了 4android 应用程序目录结构 1、目录结构如下图所示: 7 / 24 文档可自由编辑 2、目录结构说明: 、src : 放置的是编写的源文件; 1 、gen :

9、 ADT 插件自动生成的 R.java 文件,不可以修改它; 2 、Android 2.2 :这是 android 提供的一个 jar 文件我们所引用的所有类都来 3 源于这个 jar 文件; 、res :可放置文件,同时会在 R.java 中自动生成 ID; 4 drawable :存放的是图片资源 layout :存放的是布局文件 values :存放的是字符串、颜色、数组 、AndroidManifest.xml :这是整个应用程序的配置文件,起到关键性的作 5 用; 5新建一个 android 应用 8 / 24 文档可自由编辑 1.新建项目:打开Eclipse,选择File New

10、Project Android Project, 具体输入如下图: 2、直接点击“Finish”按钮即可 9 / 24 文档可自由编辑 6Android 四大组件及界面 UI 元素 1 1、ActivityActivity :应用程序的界面容器,可以放置各种各样的控件; 2 2、BroadcastBroadcast IntentIntent ReceiverReceiver 可以使用 BroadcastReceiver 来让对一个外部 事件做出响应; 3 3、ServiceService :是一种后台运行的服务程序,是没有用户界面的; 4 4、ContentContent ProviderPr

11、ovider :用于数据共享 ActivityActivity :既然是一个容器那么就可以放置各种控件,如:按钮(Button) 、文 本框(TextView) 、编辑框(EditText) 、多项选择(CheckBox) 、单项选择 (RadioGroup) 、下拉列表(Spinner)等等,具体的用法可参考相关的书 籍。 7Android 应用程序的工作机制 工作机制主要是围绕四大组件进行展开的 1 1、ActivityActivity Android 中,Activity 是所有程序的根本,所有程序的流程都运行在 Activity 之中, Activity 具有自己的生命周期由系统控制生

12、命周期,程序无法改变,但可以用 onSaveInstanceStateonSaveInstanceState 保存其状态。 对于 Activity,关键是其生命周期生命周期的把握(如下图),其次就是状态的保存和恢复 (onSaveInstanceState onRestoreInstanceState),以及 Activity 之间的跳转和 数据传输(intentintent)。 10 / 24 文档可自由编辑 Activity 中常用的函数有 SetContentView()SetContentView() findViewById()findViewById() finish()finis

13、h() startActivity()startActivity(),其生命周期涉及的函数有: voidvoid onCreate(BundleonCreate(Bundle savedInstanceStatesavedInstanceState) ) voidvoid onStart()onStart() voidvoid onRestart()onRestart() voidvoid onResume()onResume() voidvoid onPause()onPause() voidvoid onStop()onStop() voidvoid onDestroy()onDestro

14、y() 注意的是,注意的是,ActivityActivity 的使用需要在的使用需要在 ManifestManifest 文件中添加相应的文件中添加相应的,并设,并设 置其属性和置其属性和 intent-filterintent-filter。 IntentIntent Android 中提供了 Intent 机制来协助应用间的交互与通讯,Intent 负责对应用中一 11 / 24 文档可自由编辑 次操作的动作、动作涉及数据、附加数据进行描述,Android 则根据此 Intent 的描 述,负责找到对应的组件,将 Intent 传递给调用的组件,并完成组件的调用。 Intent 不仅可用于

15、应用程序之间,也可用于应用程序内部的 Activity/Service 之 间的交互。因此,Intent 在这里起着一个媒体中介的作用,专门提供组件互相调用 的相关信息,实现调用者与被调用者之间的解耦。在 SDK 中给出了 Intent 作用的表 现形式为: 通过 Context.startActivity() orActivity.startActivityForResult() 启动一个 Activity; 通过 Context.startService() 启动一个服务,或者通过 Context.bindService() 和后台服务交互; 通过广播方法(比如 Context.sendB

16、roadcast(), Context.sendOrderedBroadcast(), Context.sendStickyBroadcast() 发给 broadcastreceivers。 2 2、IntentIntent 属性的设置,包括以下几点:(以下为 XML 中定义,当然也可以通过 Intent 类的方 法来获取和设置) (1)Action,也就是要执行的动作 SDk 中定义了一些标准的动作,包括 onstant Target component Action 12 / 24 文档可自由编辑 ACTION_CALLactivityInitiate a phone call. ACT

17、ION_EDITactivityDisplay data for the user to edit. ACTION_MAINactivity Start up as the initial activity of a task, with no data input and no returned output. ACTION_SYNCactivity Synchronize data on a server with data on the mobile device. ACTION_BATTERY_LOW broadcast receiver A warning that the batt

18、ery is low. ACTION_HEADSET_PLUG broadcast receiver A headset has been plugged into the device, or unplugged from it. ACTION_SCREEN_ON broadcast receiver The screen has been turned on. ACTION_TIMEZONE_CHANG ED broadcast receiver The setting for the time zone has changed. 当然,也可以自定义动作(自定义的动作在使用时,需要加上包名

19、作为前缀,如 ject.SHOW_COLOR”),并可定义相应的 Activity 来处理我们的 自定义动作。 (2)Data,也就是执行动作要操作的数据 13 / 24 文档可自由编辑 Android 中采用指向数据的一个 URI 来表示,如在联系人应用中,一个指向某联系 人的 URI 可能为:content:/contacts/1。对于不同的动作,其 URI 数据的类型是 不同的(可以设置 type 属性指定特定类型数据),如 ACTION_EDIT 指定 Data 为文 件 URI,打电话为 tel:URI,访问网络为 http:URI,而由 content

20、 provider 提供的 数据则为 content: URIs。 (3)type(数据类型),显式指定 Intent 的数据类型(MIME)。一般 Intent 的数 据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指 定的类型而不再进行推导。 (4)category(类别),被执行动作的附加信息。例如 LAUNCHER_CATEGORY 表示 Intent 的接受者应该在 Launcher 中作为顶级应用出现;而 ALTERNATIVE_CATEGORY 表示当前的 Intent 是一系列的可选动作中的一个,这些动作可以在同一块数据上执 行。还有其他的为 Consta

21、ntMeaning CATEGORY_BROWSABL E The target activity can be safely invoked by the browser to display data referenced by a link for example, an image or an e-mail message. CATEGORY_GADGET The activity can be embedded inside of another activity that hosts gadgets. CATEGORY_HOME The activity displays the

22、home screen, the first screen the user sees when the device is turned on or when the HOME key is pressed. 14 / 24 文档可自由编辑 CATEGORY_LAUNCHER The activity can be the initial activity of a task and is listed in the top-level application launcher. CATEGORY_PREFEREN CE The target activity is a preference

23、 panel. (5)component(组件),指定 Intent 的的目标组件的类名称。通常 Android 会 根据 Intent 中包含的其它属性的信息,比如 action、data/type、category 进行 查找,最终找到一个与之匹配的目标组件。但是,如果 component 这个属性有指定 的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后, Intent 的其它所有属性都是可选的。 (6)extras(附加信息),是其它所有附加信息的集合。使用 extras 可以为组件 提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的 标题、

24、正文等保存在 extras 里,传给电子邮件发送组件。 理解 Intent 的关键之一是理解清楚 Intent 的两种基本用法:一种是显式的显式的 IntentIntent,即在构造 Intent 对象时就指定接收者;另一种是隐式的隐式的 IntentIntent,即 Intent 的发送者在构造 Intent 对象时,并不知道也不关心接收者是谁,有利于降 低发送者和接收者之间的耦合。 对于显式 Intent,Android 不需要去做解析,因为目标组件已经很明确,Android 需要解析的是那些隐式 Intent,通过解析,将 Intent 映射给可以处理此 Intent 的 Activit

25、y、IntentReceiver 或 Service。 Intent 解析机制主要是通过查找已注册在 AndroidManifest.xml 中的所有 15 / 24 文档可自由编辑 IntentFilter 及其中定义的 Intent,最终找到匹配的 Intent。在这个解析过程中, Android 是通过 Intent 的 action、type、category 这三个属性来进行判断的,判 断方法如下: 如果 Intent 指明定了 action,则目标组件的 IntentFilter 的 action 列 表中就必须包含有这个 action,否则不能匹配; 如果 Intent 没有提供

26、 type,系统将从 data 中得到数据类型。和 action 一样,目标组件的数据类型列表中必须包含 Intent 的数据类型,否则不 能匹配。 如果 Intent 中的数据不是 content: 类型的 URI,而且 Intent 也没有明 确指定它的 type,将根据 Intent 中数据的 scheme (比如 http: 或者 mailto:) 进行匹配。同上,Intent 的 scheme 必须出现在目标组件的 scheme 列表中。 如果 Intent 指定了一个或多个 category,这些类别必须全部全部出现在组建 的类别列表中。比如 Intent 中包含了两个类别:LAU

27、NCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。 3、BroadcastReceiver 接收响应动作,如来发送短信时可以注册一个广播接收器,接收发送是否成功的 反馈消息,如果发送成功就提示发送成功,失败就提示失败,代码如下: /* * 注册发送短信状态的消息 */ 16 / 24 文档可自由编辑 Override protected void onResume() super.onResume(); IntentFilter sendFilter = new IntentFilter(ACTION_SMS_SEND); r

28、egisterReceiver(SMSStatusBroatReceiver, sendFilter); /* * 复写取消注册的方法 */ Override protected void onPause() super.onPause(); unregisterReceiver(SMSStatusBroatReceiver); private BroadcastReceiver SMSStatusBroatReceiver = new BroadcastReceiver() Override public void onReceive(Context context, Intent inte

29、nt) String actionName = intent.getAction(); int resultCode = getResultCode(); switch (resultCode) 17 / 24 文档可自由编辑 case Activity.RESULT_OK: Toast.makeText(smsStressTest.this, “成功发送”, Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(smsStressTest.this, 短信

30、发送失败!, Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(smsStressTest.this, 没有服务!, Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: Toast.makeText(smsStressTest.this, 短信内容为空!, Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT

31、_ERROR_RADIO_OFF: Toast.makeText(smsStressTest.this, 射频开关没有打开!, Toast.LENGTH_SHORT).show(); break; ; 18 / 24 文档可自由编辑 4、事件监听机制 如 Button 按钮的监听 5、数据存储机制 SharedPreferences 存储、SQLite 存储、ContentProvider、网络存储、SD 卡存储 8Android 应用程序常用功能接口 相关功能的一些简单实例,如下: 显示网页显示网页 1. Uri uri = Uri.parse(); 2. Intent it = new I

32、ntent(Intent.ACTION_VIEW, uri); 3. startActivity(it); 显示地图显示地图 1. Uri uri = Uri.parse(geo:38.899533,-77.036476); 2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 3. startActivity(it); 4. /其他 geo URI 範例 5. /geo:latitude,longitude 6. /geo:latitude,longitude?z=zoom 7. /geo:0,0?q=my+street+address 8.

33、 /geo:0,0?q=business+near+city 9. 19 / 24 文档可自由编辑 /google.streetview:cbll=lat,lng 2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 3. startActivity(it); 4. /where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456 打电话打电话 1. /叫出拨号程序叫出拨号程序 2. Uri uri = Uri.parse(tel:08000

34、00123); 3. Intent it = new Intent(Intent.ACTION_DIAL, uri); 4. startActivity(it); 1. /直接打电话出去直接打电话出去 2. Uri uri = Uri.parse(tel:0800000123); 3. Intent it = new Intent(Intent.ACTION_CALL, uri); 4. startActivity(it); 5. /用這個,要在 AndroidManifest.xml 中,加上 6. / 传送传送 SMS/MMSSMS/MMS 1. /调用短信程序调用短信程序 2. Inte

35、nt it = new Intent(Intent.ACTION_VIEW, uri); 3. it.putExtra(sms_body, The SMS text); 20 / 24 文档可自由编辑 4. it.setType(vnd.android-dir/mms-sms); 5. startActivity(it); 1. /传送消息传送消息 2. Uri uri = Uri.parse(smsto:/0800000123); 3. Intent it = new Intent(Intent.ACTION_SENDTO, uri); 4. it.putExtra(sms_body, Th

36、e SMS text); 5. startActivity(it); 1. /传送传送 MMSMMS 2. Uri uri = Uri.parse(content:/media/external/images/media/23); 3. Intent it = new Intent(Intent.ACTION_SEND); 4. it.putExtra(sms_body, some text); 5. it.putExtra(Intent.EXTRA_STREAM, uri); 6. it.setType(image/png); 7. startActivity(it); 传送传送 Email

37、Email 1. Uri uri = Uri.parse(mailto:); 2. Intent it = new Intent(Intent.ACTION_SENDTO, uri); 3. startActivity(it); 1. Intent it = new Intent(Intent.ACTION_SEND); 2. it.putExtra(Intent.EXTRA_EMAIL, ); 21 / 24 文档可自由编辑 3. it.putExtra(Intent.EXTRA_TEXT, The email body text); 4. it.setType(text/plain); 5

38、. startActivity(Intent.createChooser(it, Choose Email Client); 1. Intent it=new Intent(Intent.ACTION_SEND); 2. String tos=; 3. String ccs=; 4. it.putExtra(Intent.EXTRA_EMAIL, tos); 5. it.putExtra(Intent.EXTRA_CC, ccs); 6. it.putExtra(Intent.EXTRA_TEXT, The email body text); 7. it.putExtra(Intent.EXTRA_SUBJECT, The email subject text); 8. it.setType(message/rfc822); 9. startActivity(Intent.createChooser(it, Choose Email Client); 1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论