《Android应用开发教程 第2版》课后习题参考答案.docx

上传人:b****3 文档编号:10698839 上传时间:2023-05-27 格式:DOCX 页数:15 大小:24.26KB
下载 相关 举报
《Android应用开发教程 第2版》课后习题参考答案.docx_第1页
第1页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第2页
第2页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第3页
第3页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第4页
第4页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第5页
第5页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第6页
第6页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第7页
第7页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第8页
第8页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第9页
第9页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第10页
第10页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第11页
第11页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第12页
第12页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第13页
第13页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第14页
第14页 / 共15页
《Android应用开发教程 第2版》课后习题参考答案.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《Android应用开发教程 第2版》课后习题参考答案.docx

《《Android应用开发教程 第2版》课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《《Android应用开发教程 第2版》课后习题参考答案.docx(15页珍藏版)》请在冰点文库上搜索。

《Android应用开发教程 第2版》课后习题参考答案.docx

《Android应用开发教程第2版》课后习题参考答案

《Android应用开发教程第2版》

课后习题参考答案

第一章

1.主流的Android版本有哪些,各有何特点?

Android最早的一个发布版本开始于2007年11月的Android1.0beta,其后发布了多个更新版本。

这些更新版本都在前一个版本的基础上修复了bug并且添加了前一个版本所没有的新功能。

从2009年4月开始,Android操作系统改用甜点来作为版本代号,这些版本按照大写字母的顺序来进行命名:

纸杯蛋糕(Cupcake)、甜甜圈(Donut)、闪电泡芙(Éclair)、冻酸奶(Froyo)、姜饼(Gingerbread)、蜂巢(Honeycomb)﹑冰激凌三明治(IceCreamSandwich)、雷根糖(JellyBean)、奇巧(KitKat)、棒棒糖(Lollipop)、棉花糖(Marshmallow)、牛轧糖(Nougat)、奥利奥(Oreo)、馅饼(Pie)等。

此外,Android操作系统还有两个预发布的内部版本,它们分别是铁臂阿童木(Astro)和发条机器人(Bender)。

2.Android的系统结构如何?

由里向外有如下几层:

1.LinuxKernel(Linux内核)

Android是在Linux2.6的内核基础之上运行的,提供核心系统服务:

安全、内存管理、进程管理、网络组、驱动模型。

2.AndroidRuntime(Android运行时)

内核之上是核心库和一个叫做Dalvik的JAVA虚拟机。

核心库提供了Java语言核心库中包含的大部分功能,虚拟机负责运行程序。

3.Libraries(库)

Android提供了一组C/C++库,它们为平台的不同组件所使用。

开发人员通过ApplicationFramework来使用这些库所提供的不同功能。

4.ApplicationFramework(应用程序框架)

无论Android提供的应用程序还是开发人员自己编写的应用程序,都需要使用到ApplicationFramework。

通过使用ApplicationFramework,不仅可以大幅度简化代码的编写,而且提高了程序的复用性。

5.Application(应用程序)

Android提供了一组应用程序,包括Email客户端、SMS程序、日历、地图、浏览器、通讯录等。

这部分程序均使用Java语言编写。

3.Android主要用于什么设备之上,可以用于PC么?

Android是一种基于Linux的自由及开放源代bai码的操作系统,主要使用于移动设备,如智能手机和平板电脑

在PC上运行安卓系统有很多种方法,比如虚拟设备模拟器(如Genymotion)、可引导USB版本,以及安卓模拟器(如BlueStacks)。

还有PC上的Androidx86开源项目,Android-x86.org让PC的都可以运行安卓系统。

4.Windows下搭建Android应用程序开发环境需要什么软件,如何安装及配置,请简要说明过程。

Android开发程序使用的是Java语言,由于AndroidStudio安装时自带JRE,所以不需要单独配置Java环境。

在Windows下搭建Android的开发环境主要完成以下工作:

Ø安装用于程序开发的IDE:

AndroidStudio。

Ø安装并升级Android的开发工具包:

SDK。

Ø创建Android虚拟设备:

AVD。

(安装配置过程略)

5.模拟器的功能是什么?

有些什么设置参数?

Android模拟器是用软件模拟终端设备,提供一个虚拟的运行环境,以方便开发人员测试app功能。

常用设置参数如下:

MemoryOptions:

模拟器的运行内存大小。

Internalstorage:

是模拟器内置存储空间大小,用于存放安装程序和程序数据

SDcard:

SD卡存储空间大小

AVDName:

模拟器的名称

Device:

根据一些实际手机配置提供的一些模拟器设置,包括分辨率和运行内存大小、内置存储空间大小

Target:

选择模拟器的Android系统版本

CPU/ABI:

是根据下载的系统镜像文件来的,一般是arm的,intel的会很快

Front/BackCamera:

选择前后镜头设备

VMheap:

设置VM缓存堆栈的大小

6.开发一个Android应用程序,显示效果为黑底白字,界面正中显示“Androidisveryeasy!

”。

提示:

新建android项目,放入一个TextView元件,设置TextView的Text属性为“Androidisveryeasy!

”,在模拟器中运行项目。

7.修改模拟器的输入法为搜狗输入法

打开模拟器,找到“setting”-“language”功能,找到“input”菜单,进行设置即可。

第二章

1.横向和纵向分别显示“赤橙黄绿青蓝紫”七个字,每个字显示为本身所表示的颜色。

提示:

加入线性布局管理器,设置“orientation”属性为“Vertical”,再加入两个线性布局管理器,其中第一个线性布局的“orientation”属性为“Horizontal”,在其中加入7个TextView,按顺序分别设置Text属性为“赤橙黄绿青蓝紫”的一个字,并设置TextColor属性为对应的颜色;第二个线性布局的“orientation”属性为“Vertical”,在其中加入7个TextView,按顺序分别设置Text属性为“赤橙黄绿青蓝紫”的一个字,并设置TextColor属性为对应的颜色。

2.开发一个程序,实现一个漂亮的登录界面,需要应用字符串资源、颜色资源、尺寸资源进行界面管理。

3.将第一题中的字显示为两个字一行,最后一行一个字。

提示:

将后加入的两个线性布局改为TableLayout,加入四个TableRow,每个TableRow中加入两个TextView。

4.让第一题中的文字由大到小显示。

提示:

依次设置每个TextView中的TextSize值得大小。

5.让第一题中显示的文字可以自适应语言设置,显示中文、英文、繁体中文。

提示:

将TextView中显示得文字使用String进行管理,分别建立对应的中文、英文、繁体中文的资源字符串。

6.在第一题的基础上增加菜单,有两项,分别是“反向显示”和“正常显示”。

提示:

创建菜单资源,在Activity中重写onCreateOptionsMenu方法,加载菜单。

7.自己设计一张9-Patch图片,并应用图片为窗体添加一个不失真背景。

提示:

在SDK的tools目录下打开9-patch工具,编辑图片,将图片作为资源保存在项目中,设置项目布局的背景为图片资源。

8.开发一个程序,其中某个按钮能根据状态的不同选择不同的图片背景显示。

提示:

采用StateListDrawable资源方式实现。

第三章

1.设计一个界面可以实现常见的计算器屏幕和按键的布局。

提示:

布局采用表格布局或多种布局的灵活嵌套,推荐使用约束布局。

2.设计两个单选按钮,单击它们可以显示不同时长的提示信息。

提示:

设置按钮单击监听器,在其中使用Toas显示提示信息。

注意设置Toast.LENGTH_SHORT或Toast.LENGTH_LONG参数

3.检查用户是否按下“回退”键,让它失去“关闭程序”的功能,另外在界面右下位置显示一个“退出”按钮,完成“关闭程序”的功能。

提示:

onKeyDown回调函数的使用,检测Keycode。

按钮的单击监听,使用finish()关闭程序。

4.开发一个程序,实现通过ImageView显示带边框的图片。

(略)

5.有五个商品供选择购买,设计界面显示其品名及价格,用户可以多选,选择完毕后按“结账”按钮,系统在屏幕下方显示总金额。

提示:

CheckBox的使用

6.开发一个程序,使用AlertDialog实现一个带图标的、“确定”按钮、“取消”按钮、“中立”按钮的对话框。

(略)

7.开发一个程序,使用AlertDialog实现一个多选列表对话框

(略)

8.开发一个程序,使用Notification实现一个在状态栏上显示备忘通知。

可以查看通知的详细内容,并且该通知在查看后不删除。

(略)

9.开发一个程序,应用AlarmManager实现定时更换桌面背景的功能。

(略)

第四章

1.开发一个程序,实现在屏幕上显示一个按钮,单击按钮时系统转到另一个Activity中。

提示:

创建两个Activity,分别在AndroidManifest配置中添加配置;

在按钮单击监听器的单击事件中,使用StartActivity启动另一个Activity。

2.实现一个关于样式的Activity展示(程序启动界面中,单击关于按钮时,弹出关于介绍的对话框)。

提示:

采用沉浸式显示Activity

3.开发一个程序,实现在两个Activity中传递一个字符串,并在第二个Activity中弹出提示框显示传递的值。

提示:

使用Bundle包装数据,作为Intent对象的参数传递。

4.实现一个星座查询的程序,用户在一个界面上输入生日,在另一个界面上展示星座及性格介绍。

提示:

同第三题

5.实现一个带城市(独立城市列表页面)选择的用户注册界面。

提示:

使用StartActivityForResult启动另一个Activity

6.实现一个古诗阅读程序,程序左边显示诗名列表,右边显示对应的诗文内容。

提示:

仿照4.3节案例实现

7.实现一个图片浏览展示的程序,左边列表是图形缩略图,右边展示对应图的大图。

提示:

程序仿照4.3节案例,图形缩略图采用Gridview组件,右边大图采用ImageView

第五章

1.编写一个程序,使用Intent实现视频播放。

提示:

1.播放本地视频

Intentintent=newIntent(Intent.ACTION_VIEW);

Stringtype="video/mp4";

Uriuri=Uri.parse("file:

///sdcard/test.mp4");

intent.setDataAndType(uri,type);

startActivity(intent);

2.播放网络视频

Intentintent=newIntent(Intent.ACTION_VIEW);

Stringtype="video/*";

Uriuri=Uri.parse("

intent.setDataAndType(uri,type);

startActivity(intent);

如果不设置type的话,这样写:

Intentintent=newIntent(Intent.ACTION_VIEW);

  Uriuri=Uri.parse("

  intent.setData(uri);

  startActivity(intent); 

2.编写一个程序,使用Intent打开网页。

提示:

Intentintent1=newIntent(Intent.ACTION_VIEW);

intent1.setData(Uri.parse(""));

startActivity(intent1);

3.开发一个程序,实现当电池电量低于5%时给出提示。

提示:

采用BroadcastReceiver。

IntentFilterintentFilter=newIntentFilter();

intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);

batteryReceiver=newMyReceiver();

registerReceiver(batteryReceiver,intentFilter);

4.开发一个程序,实现当安装新应用时给出提示。

(略)

5.编写一个程序,使用线程实现每隔一分钟更换一次窗体背景。

提示:

使用线程结合handler实现

6.编写一个程序,使用线程和消息传递机制实现水平移动的图标。

提示:

handler、Message的使用

7.开发一个程序,使用线程和消息传递机制实现一个来回飘动的气球。

提示:

handler、Message的使用,气球可采用图片代替。

第六章

1.编写一个继承IntentService类的服务类,在启动10秒后停止服务,并在LogCat中输出停止服务信息。

@Override

 protectedvoidonHandleIntent(Intentintent){

   //Normallywewoulddosomeworkhere,likedownloadafile.

   //Foroursample,wejustsleepfor5seconds.

   longendTime=System.currentTimeMillis()+10*1000;

   while(System.currentTimeMillis()

     synchronized(this){

       try{

         .。

       }catch(Exceptione){

       }

     }

   }

2.编写一个继承Service类的服务类,在启动10分钟后,以通知的方式提示用户。

提示:

思路同题1,注意NotificationManager消息的使用

3.编写一个程序,以列表的形式显示当前运行服务的详细信息。

提示:

publicstaticvoidlistServices(ContextmContext){

ActivityManageractivityManager=(ActivityManager)

mContext.getSystemService(Context.ACTIVITY_SERVICE);

ListserviceList

=activityManager.getRunningServices(100);

if(!

(serviceList.size()>0)){

return;

}

for(inti=0;i

LogUtils.d("caoservicename="+serviceList.get(i).service.getClassName());

}

}

4.编写一个程序,查看本地服务或远程服务的声明周期。

第七章

1.应用程序一般允许用户自己定义配置信息,如界面背景颜色、字体大小和字体颜色等,尝试使用SharedPreferences保存用户的自定义配置信息,并在程序启动时自动加载这些自定义的配置信息。

提示:

SharedPreferencespreferences=getSharedPreferences(“myfile”,MODE_PRIVATE);

SharedPreferences.Editoreditor=preferences.edit();

editor.putString(“userName”,“jake”);

……………………

mit();

2.尝试把第1题的用户自定义配置信息,以INI文件的形式保存在内部存储器上。

提示:

//以私有模式建立文件

FileOutputStreamfos=openFileOutput(“myfile.ini”,Context.MODE_PRIVATE);

fos.write(“…………..”);//向文件中写入数据,将字符串转换为字节

fos.flush();//将所有剩余的数据写入文件

fos.close();

3.简述在嵌入式系统中使用SQLite数据库的优势。

独立性:

SQLite数据库的核心引擎本身不依赖第三方软件,使用它也不需要“安装”。

所以在部署的时候能够省去不少麻烦。

轻量级:

SQLite和C/S模式的数据库存软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。

使用SQLite,一般只需要带上它的一个动态库,就可以使用它的全部功能。

而且这个动态库的尺寸相当小。

隔离性:

SQLite数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件内,方便管理和维护。

安全性:

SQLite数据库通过数据库级上的独占性和共享锁来实现独立事务处理。

这意味着多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。

在某个进程或线程向数据库执行写操作之前,必须获得独占锁定。

在发出独占锁定后,其他的读写操作将不会再发生。

跨平台:

SQLite数据库支持大部分操作系统,除了在电脑上使用的操作系统之外,很多手机操作系统同样可以运行,比如Andorid、WindowsMobile、Symbin、Palm等。

多语言接口:

SQLite数据库支持很多语言编程接口,比如C/C++、Java、Python、dotNet、Ruby、Perl等,得到更多开发者的喜爱。

4.分别使用手动建库和代码建库的方式,创建名为test.db的数据库,并建立staff数据表,表内的属性值如表7-7所示,同时提供表数据的插入、修改和删除操作方法。

表7-7staff表结构

属性

数据类型

说明

_id

integer

主键

name

text

姓名

sex

text

性别

department

text

所在部门

salary

float

工资

提示:

修改教材中MyDBHelper类中表名称为staff,修改其中的表创建语句为此题结构。

5.开发一个程序,使用列表显示联系人姓名,当单击列表项时显示联系人手机号码。

提示:

权限配置:

name="android.permission.READ_CONTACTS"/>

读取联系人>

name="android.permission.WRITE_CONTACTS"/>

主要代码:

//联系人的Uri,也就是content:

//com.android.contacts/contacts

Uriuri=ContactsContract.Contacts.CONTENT_URI;

//指定获取_id和display_name两列数据,display_name即为姓名

String[]projection=newString[]{

ContactsContract.Contacts._ID,

ContactsContract.Contacts.DISPLAY_NAME

};

//根据Uri查询相应的ContentProvider,cursor为获取到的数据集

Cursorcursor=context.getContentResolver().query(uri,projection,null,null,null);

String[]arr=newString[cursor.getCount()];

inti=0;

if(cursor!

=null&&cursor.moveToFirst()){

do{

try{

Longid=cursor.getLong(0);

//获取姓名

Stringname=cursor.getString

(1);

//指定获取NUMBER这一列数据

String[]phoneProjection=newString[]{ContactsContract.CommonDataKinds.Phone.NUMBER};

//根据联系人的ID获取此人的电话号码

CursorphonesCusor=context.getContentResolver().query(

ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

phoneProjection,

ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+id,

null,

null);

//因为每个联系人可能有多个电话号码,所以需要遍历

if(phonesCusor!

=null&&phonesCusor.moveToFirst()){

do{

}while(phonesCusor.moveToNext());

}

i++;

}catch(PinyinExceptione){

e.printStackTrace();

}

}while(cursor.moveToNext());

}

6.开发一个程序,根据联系人应用中保存的数据,实现自动补全姓名的功能。

提示:

参考题5的样例

7.开发一个程序,实现删除联系人应用中指定的联系人信息。

提示:

参考题5的访问方式

8.开发程序,实现将个人应用数据提供给其他程序访问。

提示:

Contentprovider的使用

第八章

1.开发一个程序,实现播放SD卡中的MP3文件。

提示:

(注意外部sdcard设备的访问权限处理)

/实例化MediaPlayer

MediaPlayerplay=newMediaPlayer();

//指定播放文件的路径

play.setDataSource("/sdcard/music.mp3");

//准备

play.prepare();

//开始播放

play.start();

2.开发一个程序,实现播放SD卡中的3gp文件。

提示:

同题1

3.开发一个程序,实现音频的录制。

提示:

(注意外部摄像头、sdcard设备的访问权限处理)

使用mediarecorder处理。

第九章

1.开发一个程序,实现在屏幕上绘制一个空心的六边形和一个实心的六边形。

提示:

计算六边各点的坐标位置,连线、填充

2.开发一个程序,实现在屏幕上绘制一个随机的数字组成的验证码。

提示:

将随机的数字用绘图方式展现。

3.开发一个程序,实现一个飞舞的蝴蝶。

提示:

准备几张蝴蝶图片,采用逐帧动画实现。

4.开发一个程序,实现在夜空中同时有多颗星星闪烁的效果。

提示:

采用属性动画方式,随机设置星星的亮度。

5.开发一个程序,实现一条小鱼来回捕食的效果。

提示:

参照项目案例-野猪奔跑

第十章

1.使用Socket编制一个文件下载程序,要求能浏览服务器上的下载资源并支持点选下载功能。

提示:

编制通信协议,建立S

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2