《Android高级编程》实验指导书.docx
《《Android高级编程》实验指导书.docx》由会员分享,可在线阅读,更多相关《《Android高级编程》实验指导书.docx(69页珍藏版)》请在冰豆网上搜索。
《Android高级编程》实验指导书
Android高级编程
实验指导书
周景孟志刚杨凤年编
长沙学院计算机科学与技术系
前言
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。
第一部Android智能手机发布于2008年10月。
Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。
2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。
随着Android平台的设备日趋流行,人们对于Android平台的应用软件的需求也急剧增加,Android平台应用的开发也就越来越受到企业和市场的重视。
《Android高级编程》课程的实验课分为三个实验,分8次完成,共16个学时,具体内容如下:
实验一Android开发基础实验
1.查看联系人信息
2.编辑和创建联系人
实验二Android开发进阶实验
3.联系人列表的设计
4.Android菜单和对话框的设计
5.Android数据存储
6.AndroidActivity实验
实验三Android开发综合实验
7.Android自选题目(4学时)
实验指导主要为实验提供了实验目的,实验要求,部分程序框架,设计方法和要点的分析,主要实现步骤,实现的关键代码,开发过程中使用的开发平台基于AndroidSDK,Eclipse,以及ADT插件,AndroidSDK版本要求在2.2及以上。
开发使用的开发语言是Java,要求选修该课程的同学已经修过Java编程语言的课程,但不要求非常熟练,只要有一定基础就能够完成本课程制定的实验任务。
该实验指导书主要参照了AndroidSDKdocs和《Android权威开发指南》(第二版)一书,将遵循由浅入深、循序渐进的原则。
因编者的经验、水平和写作时间限制,书中难免有疏漏、不妥和错误之处,欢迎读者批评指正。
祝学习愉快!
编者
2014年8月
实验一Android开发基础实验
(一)查看联系人信息
【学时数】
2学时
【目的】
学习Android基本界面布局和简单控件的使用
【要求】
1,在开展本实验前,请先掌握教材《Android开发权威指南》(第二版)的两个范例程序:
p35声明和使用Activity源代码目录:
src/ch05/MobileActivity
p40Activity的生命周期源代码目录:
src/ch05/ActivityCycle
2,本实验将创建一个简单Android应用,要求掌握的内容包括:
Android工程的创建,Activity的创建,线性布局和TextView。
【实验步骤】
1,在Eclipse中创建一个AndroidApplicationProject,选择合适的应用名称,Package名称以及AndroidSDK的版本,然后点击Next,如下图所示:
一直点击Next,直到创建工程向导的最后一步,可以设置要创建的Activity名称和Activity所对应界面布局的名称,如下图所示(Activity的名称是MainActivity,该Activity的布局名称是activity_main),点击Finish,完成创建。
2,创建一个新的类Contact,方法如下:
鼠标右键点击工程文件夹src下的子文件夹,在弹出菜单中选择命令New-->Class,如下图所示:
如下图所示,在弹出的对话框中输入要创建的类名:
Contact,点击Finish,完成类的创建。
编辑Contact类,下面是Contact类的参考实现:
packageedu.ccsu.quickcontacts;
publicclassContact{
Stringname;//联系人姓名
StringphoneNumber;//联系人电话号码
StringcellPhone;//联系人手机号码
Stringemail;//联系人电子邮件
StringqqNumber;//联系人QQ号码
//构造函数,创建联系人对象,并且给联系人姓名赋值
publicContact(Stringn){
this.name=n;
}
//构造函数,创建联系人对象,创建的联系人姓名为unknown
publicContact(){
this.name="unknown";
}
//获取联系人姓名
publicStringgetContactName(){
returnname;
}
//修改联系人姓名
publicvoidsetContactName(Stringn){
name=n;
}
}
请在参考实现的基础上实现Contact类除了name属性外,其他属性的get方法和set方法。
3,在Activity的onCreate方法中添加下面的代码:
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Contactzhang=newContact("张三");//创建一个联系人对象
}
4,选择文件夹res->layout里的布局文件,鼠标双击,选择标签activity_main.xml
修改Activity的这个布局文件,创建一个显示联系人信息的界面,参考实现如下:
xmlversion="1.0"encoding="utf-8"?
>
android="
android:
layout_width="match_parent"
android:
layout_height="match_parent"
android:
orientation="vertical">
android:
layout_width="match_parent"
android:
layout_height="wrap_content"
android:
orientation="horizontal">
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
text="姓名"/>
android:
id="@+id/tvName"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
/>
android:
layout_width="match_parent"
android:
layout_height="wrap_content"
android:
orientation="horizontal">
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
text="手机"/>
android:
id="@+id/tvCellPhone"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
/>
android:
layout_width="match_parent"
android:
layout_height="wrap_content"
android:
orientation="horizontal">
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
text="电子邮件"/>
android:
id="@+id/tvEmail"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
/>
在模拟器上运行程序,程序界面如下所示:
5,在Activity的onCreate方法中添加下面的代码:
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Contactzhang=newContact("张三");//创建一个联系人对象
//获取界面布局中的三个TextView对象
TextViewtvName=(TextView)findViewById(R.id.tvName);
TextViewtvEmail=(TextView)findViewById(R.id.tvEmail);
TextViewtvCellPhone=(TextView)findViewById(R.id.tvCellPhone);
//设置第一个TextView对象显示的内容为联系人的姓名
tvName.setText(zhang.getContactName());
}
在上面的代码基础上进行修改,使得界面布局可以显示联系人的电子邮件信息和电话号码信息。
(注意:
首先应该完成第2步,给Contact类添加get方法和set方法,用来修改和获取联系人的信息)
6,运行程序,显示效果如下图所示
(二)编辑和创建联系人
【学时数】
2学时
【目的】
学习Android事件机制和用户交互的编程实现
【要求】
1在开展本实验前,请先掌握教材《Android开发权威指南》(第二版)的两个范例程序:
p53使用Intent传递数据源代码目录:
src/ch05/TransmitData
p59从Activity返回数据源代码目录:
src/ch05/ActivityResult
2在开展本实验前,请先完成实验
(一)查看联系人信息
3本实验将在实验
(一)查看联系人信息的基础上,加入编辑和创建联系人的功能,要求掌握的内容包括:
启动Activity,在Activity之间传递数据,EditText,Button以及对Button的onClick事件进行编程
【实验步骤】
1,创建一个新的类EditContactActivity,方法如下:
鼠标右键点击工程文件夹src下的子文件夹,在弹出菜单中选择命令New-->Class,如下图所示:
在弹出的对话框中输入要创建的类名:
EditContactActivity,点击Finish,完成类的创
建,如下图所示:
编辑新创建的这个类,代码如下所示:
packageedu.ccsu.contacts;
importandroid.app.Activity;
importandroid.os.Bundle;
publicclassEditContactActivityextendsActivity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
}
}
编辑项目配置文件AndroidManifest.xml中注册这个Activity,编辑后文件内容如下所
示(注意:
加粗字体表示要添加的代码):
xmlversion="1.0"encoding="utf-8"?
>
android="
package="edu.ccsu.contacts"
android:
versionCode="1"
android:
versionName="1.0">
android:
minSdkVersion="8"
android:
targetSdkVersion="10"/>
android:
allowBackup="true"
android:
icon="@drawable/ic_launcher"
android:
label="@string/app_name"
android:
theme="@style/AppTheme">
android:
name="edu.ccsu.contacts.MainActivity"
android:
label="@string/app_name">
name="android.intent.action.MAIN"/>
name="android.intent.category.LAUNCHER"/>
android:
name="edu.ccsu.contacts.EditContactActivity"
android:
label="编辑联系人">
2,鼠标右键点击工程文件夹,在弹出菜单中选择命令New-->AndroidXMLFile,如下图所示:
在弹出对话框中,输入布局文件名edit_contact,点击Finish,完成布局文件的创建。
双击工程文件夹res->layout下的edit_contact.xml文件,对布局文件进行编辑,内容如下:
xmlversion="1.0"encoding="utf-8"?
>
android="
android:
layout_width="match_parent"
android:
layout_height="match_parent"
android:
orientation="vertical"
>
android:
layout_width="match_parent"
android:
layout_height="wrap_content"
android:
gravity="center_horizontal"
>"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
text="姓名:
"
/>
android:
id="@+id/editName"
android:
layout_width="200dp"
android:
layout_height="wrap_content"
/>
android:
layout_width="match_parent"
android:
layout_height="wrap_content"
android:
orientation="horizontal"
android:
gravity="center_horizontal">
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
text="手机:
"/>
android:
id="@+id/editCellPhone"
android:
layout_width="200dp"
android:
layout_height="wrap_content"
/>
android:
layout_width="match_parent"
android:
layout_height="wrap_content"
android:
orientation="horizontal"
android:
gravity="center_horizontal">
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
text="电子邮件:
"/>
android:
id="@+id/editEmail"
android:
layout_width="200dp"
android:
layout_height="wrap_content"
/>
android:
layout_width="match_parent"
android:
layout_height="wrap_content"
android:
orientation="horizontal"
android:
gravity="center_horizontal">
这个布局文件与实验
(一)的布局相比,几乎完全相同,只在需要输入信息的地方将TextView控件替换为EditText控件,最后在布局中加入一个线性布局和2个Button控件。
3,编辑EditContactActivity类的代码,如下所示:
packageedu.ccsu.contacts;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
publicclassEditContactActivityextendsActivity{
privateContactcontact;
privateEditTexteditName;
privateEditTexteditEmail;
privateEditTexteditPhone;
privateButtonbtnSave;
privateButtonbtnNew;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_contact);
editName=(EditText)findViewById(R.id.editName);
editEmail=(EditText)findViewById(R.id.editEmail);
editPhone=(EditText)findViewById(R.id.editCellPhone);
btnSave=(Button)findViewById(R.id.btnSave);
btnNew=(Button)findViewById(R.id.btnNew);
Intentintent=getIntent();
contact=(Contact)intent.getSerializableExtra("contactObject");
editName.setText(contact.getContactName());
btnSave.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
StringnewName=editName.getEditableText().toString();
contact.setContactName(newName);
Intentintent=newIntent();
intent.putExtra("contactObject",contact);
setResult(2,intent);
finish();
}
});
}
}
4,修改Contact类的代码(修改的部分用加粗字体表示),如下所示:
p