资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,Android,系列培训课程,Android,开发,入门篇,1,Mac OS X,课程,内容,功能键,输入法,资源管理器,Dock,应用程序在哪儿,?,菜单栏,系统设置,-,控制面板,全局搜索,命令行和活动监视器,(,任务管理器,),F8,F9,F10,F11,F12,关机,2,Who am i,?,3,Android,的前世今生,4,千万美元卖给,Google,Android,5,亿美元卖给,Microsoft,创立了:,Andy Rubin,4,Android,的前世今生,名称来源:,Android,一词的本义指“机器人”,同时也是,Google,于,2007,年,11,月,5,日宣布的基于,Linux,平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。,5,Android,的前世今生,成长历程:,2007.11.5 Android 平台发布,2008.9.22 T-Mobile G1上市,2009年1季度 G1销售100万支,2009.3 MWC华为发布Android手机,Moto,三星,LG计划2009年下半年推出Android手机,2009 获得Orange, Vodafone, O2, Telefonica支持,2009进军上网本,2010,已出货,4,600,万支,2010,.,10,月份谷歌,Android,应用商店内的程序数量达到了,10,万项下载量超过,10,亿,6,Android,的前世今生,新时代:,手机成武器 美研究Android战争防卫系统,NIST透露将用Android设备充当战场翻译,Android,步入外太空,7,Android,的前世今生,智能手机操作系统有:,Android,iPhone,Windows Mobile,RIMBlackBerry,Symbian,.,8,优势,应用,平等,应用无,界限,快速方便的应用开发,开放性,Android,的优势,9,Android,的优势,一、开放性,Android 是一个真正意义上的开放性移动设备综合平台。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。,10,Android,的优势,二、应用平等,所有的Android应用之间是完全平等的。所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开这个核心引擎Android的所有其他的东西都是“应用”。,11,Android,的优势,三、应用无界限,Android打破了应用之间的界限,比如:开发人员可以把Web上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。,12,Android,的优势,四、快捷方便,Android,平台为开发人员提供了大量的实用库和工具,开发人员可以很快速的创建自己的应用。,例如:在别的手机平台上要进行基于位置的应用的开发是相当的复杂的,而,Android,将,Google Map,集成了进来,开发人员通过简单的几行代码就可以实现一个应用。,13,Android,的系统结构,14,Android依赖Linux 2.6来提供核心的服,务,例如存储管理、进程(Process)管理等,Android Runtime,Libraries,Application Framework,Linux,核心,系统,结构,Applications,Java语言层级的,Virtual Machine,根据用户的期望而将,AF,的组件及,Libraries,组件组合而成的服务,Android,里已经提供的,C/C+,组件。如:,SQLite,、,OpenGL 3D,等,这是结合,A,pplications,和Libraries的主架构,让Libraries組件能不断地为Applications所重复使用。,Android,的系统结构,15,Android,的系统结构,Android,平台架构的汉堡情缘,芝麻,:Android的应用程序,上层面包,:Android的应用框架,牛肉,:框架和硬件之间的C/C+组件,底层面包,:硬件,16,1.1,发布于,2009,年,2,月,1.5,该版本又叫,“,Cupcake”,, 这是第一个主要版本,1.6,搭载,Android 1.6,的,HTC Hero,获得了意想不到的成功。,2.0/2.1,2009,年,10,月,26,日,又一个主要版本升级,2.2,加入了,Just-In-Time(JIT),可以使程序运行速度提高,2-5,倍,2.3,2010,年,11,月发布,代号“姜饼”,Android,的系统结构,Android,系统版本,17,辅助工具,ApkInstaller,91,助手,HTC Sync,Android辅助工具,18,QQ,空间,浏览器,更多精彩请到,Android Market,下载!,Android软件,19,Android论坛,开发论坛,安卓网,机锋网,20,环境搭建,环境搭建,21,准备工作,2,安装,开发环境,3,调试,开发环境,1,所需,开发环境,JDK,(=1.5),Eclipse 3.,6(=3.4),ADT 0.9.9(,Eclipse插件,),SDK,22,开发第一个,Android,应用,新建项目:,23,开发第一个,Android,应用,24,开发第一个,Android,应用,1.,创建一个新项目,ProjectName,Application Name,Package Name,Activity Name,Mini SDK Version,2.,创建,ApiDemo,项目,25,开发第一个,Android,应用,运行程序,创建,AVD,:,26,开发第一个,Android,应用,命令行方式:,创建AVD:,查看AVD,启动模拟器,27,开发第一个,Android,应用,目录结构:,src/ java原代码存放目录,gen/ 自动生成目录,res/,资源,(Resource),目录,assets/,是存放不进行编译加工的原生文件,AndroidManifest.xml,功能清单文件,default.properties,项目环境信息,一般是不需,要修改此文件,28,开发第一个,Android,应用,res目录结构,res/anim/,:,它们被编译进逐帧动画,res/drawable/:,编译进以下的,Drawable,资源子类,res/layout/,:,被编译为屏幕布局,res/values/:,可以被编译成很多种类型的资源的,XML,文件,res/xml/,:,任意的,XML,文件,在运行时可以通过调用,Resources.getXML(),读取,res/raw/:,直接复制到设备中的任意文件,29,开发第一个,Android,应用,AndroidManifest.xml,解析:,30,开发第一个,Android,应用,1,.,.,2.,31,开发第一个,Android,应用,3. ,32,Activity,Android,入门课程,33,学而不思则罔,二千多年前的一天,在古希腊的叙拉古城上演了科学史上极其悲壮的一幕:一个罗马士兵闯入了一位老人的屋子,老人正在炭灰地上专心致志地画着几何图形。士兵的脚踩在了图上,老人气冲冲地喊道:“别弄乱了我的这些图!”勃然大怒的士兵,拔出剑刺向了手无寸铁的老人。就这样,这位七十五岁高龄的老人走完了自己的一生,临终前仍像他活着时一样,执着于他所喜爱的科学研究。,34,回顾,Android,系统架构有几层?能分别说明吗?,安装,Android,开发环境都需要几个必要条件?,有谁还记得用命令行创建,AVD,的具体命令格式?,35,Android,应用程序基本组件,Service,Broadcast Receiver,Content Provider,Intent,Activity,36,Android,应用程序基本组件,Activity,简介,Activity,是应用程序的表示层。应用程序中的每屏幕显示都通过继承和扩展基类,Activity,来实现。,Activity,利用,View,来实现应用程序的,GUI(,图形用户面,),,而我们的手机用户则通过,GUI,和应用程序做交互,如程序通过,GUI,向用户显示消息,用户通过,GUI,向应用发出指令。,37,Android,应用程序基本组件,Service,简介,与,Activity,相反,,Service,没有可见的用户界面,但,Service,的特点是能长时间在后台运行。例如:音乐播放器,你可以在播放音乐时候编辑短信,看网页。,38,Android,应用程序基本组件,BroadcastReceiver,简介,BroadcastReceiver,是用户接受广播通知的组件。广播是一种同时通知多个对象的事件通知机制。,Android,中的广播通知要么来自系统,要么来自普通程序。很多事件都可能导致系统广播,比如手机所在的时区发生变化,电池电量低、用户改变系统语言等,.,当然也有广播来自应用程序,比如:一个应用程序通知其他程序某些数据下载完毕。,39,Android,应用程序基本组件,ContentProvider,简介,在,Android,中,每个应用程序都是用自己的用户,id,并在自己的进程中运行。这样做的好处是可以保护系统和应用程序,避免被其他不正常的应用程序所影响,每个进程都拥有独立的进程地址空间和虚拟内存。,ContentProvider,能将应用程序特定的数据提供给另一个应用程序使用。数据的存储方式可以是,Android,文件系统,也可以是,Sqllite,数据库,或者其他方式。,40,Intent,activity,service,Broadcast receiver,Android,应用程序基本组件,Intent,简介,Activity,、,Service,和,Broadcast Receiver,都是由,Intent,异步消息激活的。,Intent,在不同的组件之间传递消息,将一个组件的请求意图传给另一个组件。因此,,Intent,是包含具体请求信息的对象。,41,Intent,的两种调用方法,startActivity(new Intent(Intent.ACTION_DIAL);,startActivity(newIntent(ActivityLifecycle.this,AnotherActivity.class);,1.,显式:指定具体的目标组建处理,2.,隐式:由系统接受并决定如何处理,42,Intent,的两种用法,在,AndroidManifest.xml,中定义,activity,、,service,、,broadcast receiver,接受的,intent,。,43,几种,Intent,常规用法,显示网页:,显示地图,:,Uri uri = Uri.parse(geo:38.899533,-77.036476);,Intent it = new Intent(Intent.Action_VIEW,uri);,startActivity(it);,Uri uri = Uri.parse(); Intent it= new Intent(Intent.ACTION_VIEW,uri); startActivity(it);,44,几种,Intent,常规用法,拨打电话:,Uri uri = Uri.parse(“tel:xxxxxx”),;,Intent it = new Intent(Intent.ACTION_DIAL, uri),;,startActivity(it),;,Uri uri = Uri.parse(“tel.xxxxxx”),;,Intent it =new Intent(Intent.ACTION_CALL,uri),;要使用这个必须在配置文件中加入,45,几种,Intent,常规用法,发送短信:,发送,EMail,:,Intent it = new Intent(Intent.ACTION_SEND);,it.putExtra(Intent.EXTRA_EMAIL, );,it.putExtra(Intent.EXTRA_TEXT, The email body text);,it.setType(text/plain);,startActivity(Intent.createChooser(it, Choose Email Client);,Intent it = new Intent(Intent.ACTION_VIEW);it.putExtra(sms_body, The SMS text); it.setType(vnd.android-dir/mms-sms); startActivity(it);,46,Activity,生命周期,Activity,栈,Android,系统中,所有的,Activity,被保存在,Activity,栈中,当启动一个新的,Activity,时,这个,Activity,就被压入,Activity,栈顶,如果用户通过“返回”键可以回到上一个,Activity,的画面,栈顶的,Activity,将被弹出。,新建,Activity,活跃,Activity,之前活跃,Activity,之前的,Activity,返回,键会将栈顶,Activity,弹出,系统需要释放是会,删除栈底的,Activity,47,Activity,生命周期,在,android,中,,Activity,拥有四种基本状态:,Active/Runing,一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。,Paused,当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。,Stoped,当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped状态。,Killed,Killed Activity 被系统杀死回收或者没有被启动时处于 Killed状态。,48,Activity,生命周期,49,Activity,生命周期,Activity,状态变化,在,android.app.Activity,类中,,Android,定义了一系列与生命周期相关的方法,在我们自己的,Activity,中,只是根据需要复写需要的方法;,public class HelloActivity extends Activity ,protected void onCreate(Bundle savedInstanceState);,protected void onStart();,protected void onResume();,protected void onPause();,protected void onStop();,protected void onDestroy();,50,Anroid Log,的使用,log.v(String tag, String msg); /verbose,冗余信息,log.d(String tag, String msg); /debug,调试信息,log.i(String tag, String msg); /info,普通信息,log.w(String tag, String msg); /warn,警告信息,log.e(String tag, String msg); /error,错误信息,Tag,标识的用法,51,UI,介绍,(,一,),Android,入门课程,52,Android UI,组件,What is ,View,?,要创建用户界面,首我们必须了解的是,View,类。,View,是可视化控件的基类,它主要提供了控制绘制和事件处理的方法。而可视化控件,是指重新实现了,View,的绘制和事件处理方法,并最终生成与用户交互的对象如文本显示,按钮等。,53,Android UI,组件,下面我们用,SDK2.2,创建一个新项目,在,res,目录下我们看到和,1.5,有些不同,让我们看看这些是什么。,drawable-hdpi,drawable-mdpi,drawable-ldpi,54,Android UI,组件,55,Android UI,组件,创建我们的,Login,界面:,56,界面中我们应用的组件:,TextView,EditText,Button,组 件,详见,API,Android UI,组件,57,1.,布局文件,(,编辑,XML,文件,),UI,操作的两种形式:,Android UI,组件,58,2.,代码动态添加,Android UI,组件,59,调整,Login,界面,:,Android UI,组件,60,小故事,传说老子骑青牛过函谷关,在函谷府衙为府尹留下洋洋五千言,道德经,时,一年逾百岁、鹤发童颜的老翁招招摇摇到府衙找他。 老子在府衙前遇见老翁。,老翁对老子略略施了个 礼说:,听说先生博学多才,老朽愿向您讨教个明白。,“,老翁得意地说:,我今年已经一百零六岁了。说实在话,我从年少时直到现在,一直是游手好闲地轻松度日。与我同龄的人都纷纷作古,他们开垦百亩沃田却没有一席之地,修了万里长城而未享辚辚华盖,建了,4,舍屋宇却落身于荒野郊外的孤坟。而我呢,虽一生不稼不穑,却还吃着五谷;虽没置过片砖只瓦,却仍然居住在避风挡雨的房舍中。先生,是不是我现在可以嘲笑他们忙忙碌碌劳作一生,只是给自己换来一个早逝呢?,”,老子听了,微然一笑,吩咐府尹说:,请找一块砖头和一块石头来。,老子将砖头和石头放在老翁面前说:,如果只能择其一,仙翁您是要砖头还是愿取石头?,老翁得意地将砖头取来放在自己的面前说:,我当然择取砖头。,“,老子抚须笑着问老翁:,“,为什么呢,”,?,老翁指着石头说:,这石头没楞没角,取它何用?而砖头却用得着呢。,”,老子又招呼围观的众人问:,“,大家要石头还是要砖头?,”,众人都纷纷说要砖而不取石。,老子又回过头来问老翁:,是石头寿命长呢,还是砖头寿命长?,老翁说:,当然石头了。,“,老子释然而笑说:,石头寿命长人们却不择它,砖头寿命短,人们却择它,不过是有用和没用罢了。天地万物莫不如此。寿虽短,于人于天有益,天人皆择之,皆念之,短亦不短;寿虽长,于人于天无用,天人皆摒弃,倏忽忘之,长亦是短啊。,“,老翁顿然大惭。,61,正直,Integrity,尽责,Commitment,合作,Teamwork,创新,Innovation,62,
展开阅读全文