版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AndroidAndroid开发讲义开发讲义主讲人:lAndroid开发环境的搭建lAndroid初级界面编程l事件处理l深入ActivitylIntent与IntentFilterlAndroid高级界面编程lAndroid应用的资源Android开发讲义l图形与图象处理lAndroid数据存储技术与数据共享lService与Broadcast ReceiverlAndroid网络应用l多媒体应用开发lOpenGL与3D应用开发l传感器应用开发Android开发讲义lGPS应用开发lGoogle Map服务l项目实战Android开发讲义l理解Activity的功能与作用l开发普通Activ
2、ity类l在AndroidManifest.xml中配置Activityl特殊Activity的功能和用法l在程序中启动ActivityAndroid开发讲义l关闭Activityl使用Bundle在不同Activity之间交换数据l启动其他Activity并返回结果lActivity的回调机制lActivity的生命周期Android开发讲义 Activity是Android应用的重要组成单元之一(另外三个是Service、BroadcasReceiver和ContentProvider),而Activity又是Android应用最常见的组件之一。之前看到的示例通常都只包含一个Activit
3、y,但在实际应用中这是不大可能的,实际应用中往往包括多个Activity,不同的Activity向用户呈现不同的操作界面。Android应用的多个Activity组成Activity栈,当前活动的Activity位于栈顶。 有web开发经验的程序员对servlet的概念应该比较熟悉了。实际上Activity对于Android应用的作用有点类似于Servlet对于web应用的作用,一个web应用通常都需要N个servlet组成;那么一个Android应用通常也需要N个Activity组成。对于web应用而言,servlet主要负责与用户交互,并向用户呈现应用状态;对于Android应用而言,Ac
4、tivity大致也具有相同的功能。 当Activity处于Android应用运行时,同样受系统控制有其自身的生命周期。Android开发讲义一一 建立、配置和使用建立、配置和使用ActivityActivity 1.建立Activity 与开发web应用时建立Servlet类相似,建立自己的Activity也需要继承Activity基类。 当一个Activity类定义出来之后,这个Activity类何时被实例化、它所包含的方法何时被调用,这些都不是有开发者决定的,都应该有Android系统来决定。 为了让Servlet能响应用户请求,开发者需要重写HttpServlet的doRequest()
5、、doResponse()方法。Activity与此类似,创建一个Activity也需要实现一个或多个方法,其中最常见的就是实现onCreate()方法,该方法将会在Activity启动时被回调。 在Android中创建一个Activity是很简单的事情,编写一个继承自android.app.Activity的Java类即可。Android开发讲义创建创建Activity 示例示例public class DemoActivity extends Activity Override public void onCreate(Bundle savedInstanceState) super.on
6、Create(savedInstanceState); setContentView(R.layout.main); Android开发讲义继承自Activity基类一一 建立、配置和使用建立、配置和使用ActivityActivity 2.配置Activity 创建完Activity子类之后,此时Activity还不能使用,必须在AndroidManifest.xml文件中配置Activity才行。 Android应用要求所有应用程序组件(Activity)都必须显式进行配置。 只要在元素中添加子元素即可配置Activity。 (1)name:指定该Activity的实现类。 (2)icon
7、:指定该Activity对应的图标。 (3)label:指定该Activity的标签。Android开发讲义配置配置Activity 示例示例 Android开发讲义配置Activity“.”指定为package属性所指定的包指定该Activity是程序的入口一一 建立、配置和使用建立、配置和使用ActivityActivity 3.启动、关闭Activity 一个Android应用通常都会包含多个Activity,但只有一个Activity会作为程序的入口,该Android应用运行时将会自动启动并执行该Activity。至于应用中的其他Activity,通常都有入口Activity启动,或由
8、入口Activity启动的Activity启动。 Activity启动其他Activity有如下两个方法: startActivity(Intent intent):启动其他Activity。 startActivityForResult(Intent intent,int requestCode):以指定请求码(requestCode)启动Activity,而且程序将会等到新启动Activity的结果。 finish():结束当前Activity。 finish(int requestCode):结束以startActivityForResult( )方法启动的Activity。Androi
9、d开发讲义启动启动Activity(跳转到第二个跳转到第二个Activity) 示例示例public class DemoActivity extends Activity public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button)findViewById(R.id.bn); btn.setOnClickListener(new OnClickListener() public vo
10、id onClick(View v) Intent intent = new Intent(DemoActivity.this,SecondActivity.class); startActivity(intent); ); Android开发讲义启动其他Activity启动启动Activity(返回到第一个返回到第一个Activity) 示例示例public class DemoActivity extends Activity public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState)
11、; setContentView(R.layout.main); Button btn = (Button)findViewById(R.id.bn); btn.setOnClickListener(new OnClickListener() public void onClick(View v) Intent intent = new Intent(SecondActivity.this,DemoActivity.class); startActivity(intent); finish(); ); Android开发讲义结束当前Activity一一 建立、配置和使用建立、配置和使用Acti
12、vityActivity 4.使用Bundle在Activity之间交换数据 当一个Activity启动另一个Activity时,常常会有一些数据需要传过去这就像Web应用从一个servlet跳到另一个servlet时,web应用习惯把需要交换的数据放入requestScope、sessionScope中。在Activity之间进行数据交换则更简单,将需要交换的数据放入Intent即可。 (1) 放入传递的数据:putExtras(Bundle data):向Bundle中放入需要“携带”的数据。putXxx(String key,Xxx data):向Bundle放入Int、Long等各种类
13、型的数据。putSerializable(String key, Serializable data):向Bundle中放入一个可序列化的对象。 (2) 取出传递的数据:getXxx(String key):从Bundle取出Int、Long等各种类型数据。getSerializable(String key, Serializable data):从Bundle取出一个已经序列化的对象。Android开发讲义使用使用BundleBundle在在ActivityActivity之间交换数据之间交换数据 示例示例第一个Activity界面布局(1) Android开发讲义使用使用BundleBu
14、ndle在在ActivityActivity之间交换数据之间交换数据 示例示例第一个Activity界面布局(2) Android开发讲义使用使用BundleBundle在在ActivityActivity之间交换数据之间交换数据 示例示例第一个Activity界面布局(3) Android开发讲义使用使用BundleBundle在在ActivityActivity之间交换数据之间交换数据 示例示例第一个Activity界面布局(4)Android开发讲义使用使用BundleBundle在在ActivityActivity之间交换数据之间交换数据 示例示例第一个界面布局所对应的Java类pub
15、lic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button)findViewById(R.id.reg); btn.setOnClickListener(new OnClickListener() public void onClick(View v) EditText username = (EditText)findViewById(R.id.username); EditText pa
16、ssword = (EditText)findViewById(R.id.password); RadioButton male = (RadioButton)findViewById(R.id.male); String gender = male.isChecked() ? 男:女; Person person = new Person(username.getText().toString(), password.getText().toString(), gender); Bundle data = new Bundle(); data.putSerializable(person,
17、person); Intent intent = new Intent(DemoActivity.this,SecondActivity.class); intent.putExtras(data); startActivity(intent); );Android开发讲义使用使用BundleBundle在在ActivityActivity之间交换数据之间交换数据 示例示例第二个Activity界面布局 Android开发讲义使用使用BundleBundle在在ActivityActivity之间交换数据之间交换数据 示例示例第二个界面布局所对应的Java类protected void onC
18、reate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.second); TextView username = (TextView)findViewById(R.id.username); TextView password = (TextView)findViewById(R.id.password); TextView garden = (TextView)findViewById(R.id.garden); Intent intent = getIntent
19、(); Bundle bundle = intent.getExtras(); Person person = (Person)bundle.getSerializable(person); username.setText(用户名为:+person.getUsername(); password.setText(密码为:+person.getPassword(); garden.setText(性别为:+person.getGender();Android开发讲义一一 建立、配置和使用建立、配置和使用ActivityActivity 5.启动其他Activity并返回结果 当第一个界面需要用
20、户进行选择,但是需要选择的列表数据比较复杂,必须启动另一个Activity让用户选择,当用户在第二个Activity选择完成后程序返回第一个Activity,第一个Activity能获取并显示用户在第二个Activity选择的结果。此时可以调用startActivityForResult(Intent,int requestCode)方法启动指定的Activity,并且获取指定Activity返回的结果 为了获取被启动的Activity所返回的结果,当前Activity需要重写onActivityResult(int requestCode,int resultCode,Intent inte
21、nt),其中requestCode代表请求码,而resultCode代表Activity返回的结果码,这个结果码也是由开发者根据业务自行设定的。 一个Activity中可能包含多个按钮,并调用多startActivityForResult 方法来打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activity的onActivityResult()方法。为了知道该方法是由哪个请求的结果所触发的,可利用requestCode请求码;为了知道返回的数据来自于哪个新的Activit可利用resultCode结果码。Android开发讲义startActiv
22、ityForResultstartActivityForResult方法方法 示例示例主界面部分布局 Android开发讲义startActivityForResultstartActivityForResult方法方法 示例示例列表界面布局 Android开发讲义startActivityForResultstartActivityForResult方法方法 示例示例列表界面所对应的Java类protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView
23、(R.layout.city); Button selBtn = (Button)findViewById(R.id.sel); final RadioGroup group = (RadioGroup)findViewById(R.id.city); final RadioButton tj = (RadioButton)findViewById(R.id.tj); final RadioButton bj = (RadioButton)findViewById(R.id.bj); final RadioButton sh = (RadioButton)findViewById(R.id.s
24、h); final Intent intent = getIntent(); final Bundle data = new Bundle();Android开发讲义startActivityForResultstartActivityForResult方法方法 示例示例列表界面所对应的Java类group.setOnCheckedChangeListener(new OnCheckedChangeListener() public void onCheckedChanged(RadioGroup group, int checkedId) if(checkedId=tj.getId() ci
25、tyTxt=tj.getText().toString(); else if(checkedId=bj.getId() cityTxt=bj.getText().toString(); else cityTxt=sh.getText().toString(); );selBtn.setOnClickListener(new OnClickListener() public void onClick(View v) data.putString(city, cityTxt); intent.putExtras(data); CityActivity.this.setResult(0, inten
26、t); CityActivity.this.finish(); );Android开发讲义二二 Activity Activity的回调机制的回调机制 Android应用中的Activity与Web应用中的Servlet有点相似,也就是说Activity被开发出来之后,开发者只要在AndroidManifest.xml文件配置该Activity即可。至于该Activity何时被实例化,它的方法何时被调用,对开发者来说是完全透明的。 Android的回调机制:当Activity被部署在Android应用中之后,随着应用程序的运行,Activity会不断地在不同的状态之间切换,该Activity中
27、特定的方法就会被回调,开发者就可以选择性地重写这些方法来加入业务相关的处理。Android开发讲义三三 Activity Activity的生命周期的生命周期 当Activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理。当前活动的Activity位于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入非活动状态,也可能从非活动状态转入活动状态。Android开发讲义三三 Activity Activity的生命周期的生命周期 1. Activity的四种状态 活动状态:当前Activity位于前台,用户可见,可以获得焦点。 暂停
28、状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。 停止状态:该Activity不可见,失去焦点。 销毁状态:该Activity结束,或Activity所在的Dalvik进程被结束 Android开发讲义三三 Activity Activity的生命周期的生命周期 2. Activity所对应的回调函数 onCreate(Bundle savedStatus):创建Activity时被回调。 onStart():启动Activity时被回调。 onRestart():重新启动Activity时被回调。 onResume():恢复Activity时被回调。 onP
29、ause():暂停Activity时被回调。 onStop():停止Activity时被回调。 onDestroy:销毁Activity时被回调。 Android开发讲义Android开发讲义开始调用onCreate()onStart()onResume()Activity is running另一个Activity转入该Activity前面onPause()该Activity以后都不可见onStop()onDestroy()onRestart()由用户操作进入该ActivityProcess iskilled其他应用程序需要内存该Activity再次回到前台该Activity再次回到前台Ac
30、tivityActivity生命周期生命周期(onCreate(onCreate、onStartonStart、onResumeonResume方法方法) ) 示例一示例一public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.d(tag, -onCreate-); Button finishBtn = (Button)findViewById(R.id.finish); finishBtn.setOnClickListener(new OnClickListener
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 34912-2024工业锅炉系统节能设计指南
- 果园经营权转让合同模板
- 个人与公司间借款协议书范本2024年
- 婚前财产协议书公证流程
- 展览延期协议书范本
- 自由职业者合作工作室合伙协议
- 房屋中介服务协议书样式
- 设计合同补充协议范本
- 沥青运输合同模板
- 建筑施工合同补充协议模板
- 咖啡线下活动策划方案
- 草原牧歌-鸿雁 课件 2024-2025学年人音版(简谱)(2024)初中音乐七年级上册
- 期中模拟试卷(1-4单元)(试题)-2024-2025学年五年级上册数学人教版
- 期中测试卷(1-3单元)(试题)-2024-2025学年六年级上册数学苏教版
- 人教版八年级上册生物期中考试试卷
- 2024年江苏省淮安市中考英语试题卷(含答案解析)
- 《医疗机构工作人员廉洁从业九项准则》制定主题学习课件
- 小学数学西南师大五年级上册四小数混合运算小数混合运算 PPT
- 施工方案及施工三措
- 小学数学教学中有效情境的创设与利用案例1
- 《大数据导论通识课版》PPT课件
评论
0/150
提交评论