Android笔记---- Android 应用程序设计基础
来源:互联网 发布:少女大召唤知轩藏书 编辑:程序博客网 时间:2024/04/29 04:35
开发Android应用程序(★)
Android应用结构分析(★)
Android应用的基本组件介绍
开发Android应用程序(★)
开发流程总结如下:
1、创建工程
在Eclipse IDE中借助ADT插件创建Android工程框架。
2、添加文件资源
对程序所用到的图片、音频、设置等文件资源进行筹备,并添加到应用程序工程的相关结构中。
3、修改或定义XML组件
用户需要修改ADT插件所定义的XML组件,或者新增XML组件的定义,内容包括:颜色、格式字符串、数组、大小、样式、主题、用户界面等。
4、添加Activity
5、运行和调试
注意:开发Android应用程序首先需要搭建Android开发环境和配置模拟器,网上有很多相关资料,这里略过,如搭建环境遇到问题可以留言一起交流。
Android应用结构分析(★)
创建一个HelloAndroid项目,如下:
其中,
1、src文件夹:包括了项目的所有包及源文件(.java)。打开其目录下的HelloAndroid.java文件,它就是Android项目的Java文件,程序清单如下:
2、gen文件夹:该目录用于保存Android自动生成的的一个R.java文件。 R.java是在建立项目时自动生成的,这个文件是只读模式,不能更改,定义该项目所有资源的索引文件。
3、bin文件夹:用于存放生成的目标文件,如Java的二进制文件、资源打包文件(.ap-)、Dalvik虚拟机的可执行文件(.dex)等。
4、 res文件夹:包含项目中的所有资源,如程序图标(drawable)、布局文件(layout)、常量(values)等。
Android按照约定,将不同的资源放在不同的文件夹内,这样可以方便地让AAPT工具来扫描这些资源,并为它们生成对应的资源清单类:R.java。
分析res文件夹中一些常量的定义,如strings.xml,代码清单如下:
在strings.xml文件中,定义了两个字符串资源。我们可以在R.java中看到相关的内容,即定义了”app_name”和 “hello”两个常量。分别指向了strings.xml中的两个字符串资源。
如何使用所定义的资源,代码如下:
Resources r=this.getContext().getResources(); String appname=((String)r.getString(R.string.app_name)); String hello=((String)r.getString(R.string.hello));
现在来分析一下HelloAndroid项目的布局文件(layout),打开main.xml文件,代码清单如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /></LinearLayout>
5、AndroidManifest.xml:每个Android项目必须有的,它是整个Android应用的全局描述文件。
该文件通常包括如下信息:
应用程序的包名,该包名将会作为该应用的唯一标识。
应用程序所包含的组件,如Activity、Service、BroadcastReceiver、ContentProvider等。
应用程序兼容的最低版本。
应用程序使用系统所需的权限声明。
其他程序访问该程序所需的权限声明。
下面是一份简单的AndroidManifest.xml清单文件:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.HelloAndroid" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".HelloAndroidActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
Android应用的基本组件介绍
Android应用通常由一个或多个基本组件组成,可能包括Activity、Service、BroadcastReceiver、ContentProvider、Intent等。
Activity:在Android应用中负责与用户进行交互的组件,我们称之为”活动”,一个Activity就是一个屏幕。每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件作出响应。 Android应用需要多个用户界面,将会包含多个Activity,多个Activity组成了Activity栈,当前活动的Activity位于栈顶。
Service :它也代表一个单独的Android 组件,Service与Activity的区别在于: Service通常位于后台运行,它一般不需要与用户交互,因些Service组件没有图形用户界面。同样, Service组件需要继承Service基类。 一个Service被运行起来之后,它将拥有自己独立的生命周期, Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。
BroadcastReceiver:代表广播消息接收器,非常类似于事件编程中的监听器,所监听的事件源是Android应用中的其他组件。
使用BroadcastReceiver组件接收广播消息,只需实现BroadcastReceiver子类,并重写onReceive(Context context,Intent intent)方法即可。
ContentProvider:提供一种跨应用的数据交换的标准。当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。
需要实现如下抽象方法:
query(Uri, String[], String, String[], String)
insert(Uri, ContentValues)
update(Uri, ContentValues, String, String[])
delete(Uri, String, String[])
Intent和IntentFilter:它是Android应用内不同组件之间通信的载体。也就是说, Activity、Service、BroadcastReceiver三种组件之间的通信都是以Intent作为载体,只是不同组件使用的Intent的机制略有不同。
显示Intent:明确指定需要启动或触发的组件的类名
隐式Intent:只是指定需要启动或触发的组件应该满足的条件。
Android系统通过IntentFilter来判断被调用组件是否符合隐式Intent。
- Android笔记---- Android 应用程序设计基础
- Android 应用开发笔记 - 应用程序设计基础
- Android应用开发揭秘(笔记) 第三章 程序设计基础
- android GPS应用程序设计
- Android程序设计基础
- Android程序设计基础
- Android程序设计基础--总结
- android基础笔记:数据库SQLite应用
- java android HTTP应用程序设计
- android基础应用
- Android应用开发基础
- android应用基础
- android 应用基础
- android应用资源基础
- Android 应用编程基础
- Android基础--Service应用
- Android ClassLoder 基础应用
- android应用基础开发
- Linux服务器的初步配置流程
- 内存分配函数 _alloc/malloc/calloc
- 发表测试123
- iOS——day1-day6笔记
- PCL之空间非合作目标位姿估计
- Android笔记---- Android 应用程序设计基础
- Majority Element
- 性能测试用例模板及相关
- Mysql数据库的索引原理
- 数组变量与算术运算
- linux命令之grep
- C# 用户自定义UserControl控件使用
- HDU 2527 Safe Or Unsafe 【Huffman编码】
- 解释下浏览器是如何判断元素是否匹配某个 CSS 选择器?