您当前的位置:首页 > 互联网教程

Android核心技术与实例详解的前 言

发布时间:2025-05-12 14:48:38    发布人:远客网络

Android核心技术与实例详解的前 言

一、Android核心技术与实例详解的前 言

Android是Google于2007年11月推出的一款开放的嵌入式操作系统平台,由于其完全开源的特性,Android正以空前的速度吸引着大批开发者的加入。为了帮助众多的软件开发人员尽快地掌握Android平台的相关知识,尽快地步入实际项目的开发中来,作者根据多年项目开发经验编写了此书。

本书既介绍了Android应用程序基本框架,也对Android平台的各种控件进行了讲解,还通过三个真实案例向读者介绍了Android应用程序完整的开发步骤。通过本书读者可以尽快地掌握在Android平台下进行开发的相关知识。

本书内容既包括Android平台下开发的基础知识,也有项目编程的实用技巧,还提供了多个真实案例供读者学习。本书在知识的层次上由浅入深,使读者可以从Android的门外汉平稳、快速地步入Android开发的殿堂。

本书中所有案例都是按照笔者的实际开发过程进行介绍的,同时也是按照真实项目的开发流程进行的,结构清晰,语言简洁,便于实际练习。为了帮助读者更好地理解相关知识点,全书穿插了很多实用技巧及温馨提示。

为了帮助读者更好地掌握与实践Android平台下应用程序的开发,本书附赠DVD光盘一张,其中包括案例的多媒体视频、电子教案(PPT)和实例源代码等。

本书最后的三个案例都有实际商业价值,如果进行开发,价格要数万元,笔者将其完整地展现给了读者。

本书共分三篇,第一篇介绍了在Android平台下进行应用程序开发的基本知识,主要对Android应用程序框架及用户界面的开发进行了介绍。章名主要内容

第1章 Android开发起步简要说明Android平台的来历及其特性,同时介绍了在Android平台下开发用户界面的基本知识

第2章 Android应用程序的构成对Android平台下的应用程序构成进行了介绍,同时还介绍了应用程序基本组件(如Activity等)的相关知识

第3章 Android布局管理器初步介绍Android平台下用户界面的开发,主要对布局管理器(如线性布局等的用法)进行了介绍

第4章 Android常用基本控件介绍了Android平台用户界面中基本控件(如按钮和文本框等)的特性及其用法

第5章 Android常用高级控件继续上一章的内容,对Android平台用户界面中的高级控件的相关知识和用法进行了介绍

第6章菜单与对话框介绍了Android平台选项菜单、上下文菜单和子菜单等的相关知识,同时还将各种对话框的用法进行了详细的介绍

第7章 Android事件处理模型对Android平台下用户界面开发中常用到的事件处理模型进行了介绍

第二篇介绍如何在Android平台下进行高级应用程序的开发,包括游戏和基于OpenGL ES的3D应用程序的开发,以及与针对手机特性和网络服务程序的开发。

第8章游戏与3D应用程序开发向读者介绍了在Android平台下进行游戏开发的相关知识,同时还对Android平台下3D应用程序的开发进行了初步介绍

第9章消息广播与服务对Android平台下基于Intent的消息广播机制进行了介绍,同时通过一个比较大的案例说明Service组件的用法

第10章网络与数据处理简要介绍了在Android平台下进行网络编程的相关知识,同时还对Android平台下的SQLite等数据处理机制进行了介绍

第11章手机通信功能开发通过实例对Android平台下基于手机通信功能(如打电话、发短信和E-mail)的开发进行了介绍

第12章手机特有Feature开发介绍了如何基于Android平台对手机的特性进行开发,如改变壁纸、控制手机振动和音量等

第13章桌面组件与多媒体数据采集简单介绍了如何在Android平台下开发包括快捷方式和实时文件夹等在内的桌面组件的流程,以及如何在程序中对多媒体数据(如音频和图像)等进行采集的步骤

第14章传感器应用的开发对Android平台下传感器的相关知识进行了简单介绍,并通过案例来讲解开发基于传感器的应用程序的步骤

第15章 Google服务介绍了在应用程序中与Google提供的如Google Map等网络服务进行混搭的开发步骤

第三篇以三个比较大的案例来说明Android平台下大型应用的开发流程,通过这三个案例的讲解,读者对Android开发将会有更深层次的理解。

第16章 Android游戏开发实践——快乐数独介绍了手机游戏《快乐数独》的开发,通过该案例向读者介绍了在Android平台下进行游戏开发的相关知识和基本流程,并对游戏开发中的编程技巧进行了介绍

第17章 Android地图搜索应用——美食天下介绍了地图搜索应用《美食天下》的开发,该应用包括Web端和Android手机端,通过该案例向读者介绍了在Android平台下开发大型应用的基本步骤

第18章 Android社交分享平台——口袋微博介绍了社交分享平台《口袋微博》的开发,该平台包括Web端和Android手机端,通过该案例向读者介绍了基于客户端/服务器模式的网络应用程序开发的基本步骤

本书的内容十分详细,几乎涵盖了Android相关的所有技术,并向读者介绍了真实项目的开发流程,主要面向以下读者。

Android初学者:本书详细介绍了Android的基础知识及各种控件,并对Android平台下3D程序的开发进行了介绍,Android初学者通过本书可以快速、全面地掌握Android平台相关知识,快速地步入Android开发人员的行列。

有一定Java基础且希望学习Android开发的读者:Android平台下的开发基于Java语言,有一定Java基础的读者通过阅读本书的前半部分便可快速地掌握Android的各种组件及基础控件,然后通过三个真实案例的学习迅速地掌握Android平台下的应用程序开发。

在职的开发人员:本书中的案例都是作者精心挑选的,其中涉及的相关知识均是作者多年来积累的编程经验及心得体会。具有一定开发经验的在职开发人员可以通过本书进一步巩固Android的基础知识,并迅速成为高级的Android开发人员。

吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java的开发,有十多年的Java开发与培训经验。主要的研究方向为手机游戏、Java EE、搜索引擎,现为手机游戏、Java EE独立软件开发工程师,同时兼任Sun授权Java培训中心认证教师。为数十家著名企业培训了上千名软件开发人员,曾编写过《Java SE 6.0编程指南》、《30天学通Java Web项目案例开发》、《Java程序员职场全攻略:从小工到专家》、《Android 2.0游戏开发实战宝典》等畅销技术书籍。2008年开始关注Android平台下的应用开发,并开发出一系列优秀的Android应用程序。

索依娜,毕业于燕山大学,从业于计算机软件领域9年,在软件开发和计算机教学方面有着丰富的经验。工作期间曾参与省级科研项目2项、市级科研项目1项、发表论文多篇;同时为多个厂矿,企事业单位设计、开发了信息管理系统;从2008年开始关注Android平台下应用的开发,参与开发了多款手机娱乐应用。

另外,昊燃、方振宇、陈冠佐、傅奎、陈勤、梁洋洋、毕梦飞、陈庆、柴相花、陈非凡、陈华、陈嵩、承卓也参与了本书的编写。在此表示感谢!

本书在编写过程中得到了唐山百纳科技有限公司Java培训中心的大力支持,同时于庭龙、魏鹏飞、王海峰及作者的家人为本书的编写提供了很多帮助,在此表示衷心感谢!

由于编者的水平和学识有限,且书中涉及的知识较多,难免有疏漏之处,敬请广大读者朋友批评指正。

二、如何设计Android App测试用例

一般安卓开发者在其日常工作中面临的最大挑战之一是:终端设备和[url=]操作系统[/url]版本的范围太广。OpenSignal进行的一项研究表明,2013年7月市场上有超过11,828的不同安卓终端设备,所有设备在类型/大小/屏幕分辨率以及特定配置方面有所不同。考虑到前一年的调查仅记录有3,997款不同设备,这实在是一个越来越大的挑战障碍。

从一个移动APP开发角度出发,定义终端设备有四个基本特征:

1.操作系统:由“API指标”( 1~18)专业定义的安卓操作系统版本( 1.1~ 4.3),。

2.显示器:屏幕主要是由屏幕分辨率(以像素为单位),屏幕像素密度(以DPI为单位),和/或屏幕尺寸(以英寸为单位)定义的。

3.CPU:该“应用程序二进制接口”(ABI)定义CPU的指令集。这里的主要区别是ARM和基于Intel的CPU。

4.内存:一个设备包括内存储器( RAM)和Dalvik虚拟存储器( VM堆)的预定义的堆内存。

这是前两个特点,操作系统和显示器,都需要特别注意,因为他们是直接由最终用户明显感受,且应该不断严格地被测试覆盖。至于安卓的版本, 2013年7月市场上有八个同时运行导致不可避免的碎片的不同版本。七月,近90%这些设备中的34.1%正在运行Gingerbread版本( 2.3.3-2.3.7),32.3%正在运行Jelly Bean( 4.1.x版),23.3%正在运行Ice Cream Sandwich( 4.0.3- 4.0.4)。

考虑设备显示器,一项TechCrunch从2013年4月进行的研究显示,绝大多数(79.9%)有效设备正在使用尺寸为3和4.5英寸的“正常”屏幕。这些设备的屏幕密度在“MDPI”(~160 DPI),“hdpi”(~240 DPI)和“xhdpi”(~320 DPI)之间变化。也有例外,一种只占9.5%的设备屏幕密度低“hdpi”(~120 DPI)且屏幕小。

如果这种多样性在质量保证过程中被忽略了,那么绝对可以预见:bugs会潜入应用程序,然后是bug报告的风暴,最后Google Play Store中出现负面用户评论。因此,目前的问题是:你怎么使用合理水平的测试工作切实解决这一挑战?定义测试用例及一个伴随测试过程是一个应付这一挑战的有效武器。

用例—“在哪测试”、“测试什么”、“怎么测试”、“何时测试”?

为了节省你测试工作上所花的昂贵时间,我们建议首先要减少之前所提到的32个安卓版本组合及代表市场上在用的领先设备屏的5-10个版本的显示屏。选择参考设备时,你应该确保覆盖了足够广范围的版本和屏幕类型。作为参考,您可以使用OpenSignal的调查或使用手机检测的信息图[3],来帮助选择使用最广的设备。

为了满足好奇心,可以从安卓文件[5]将屏幕的尺寸和分辨率映射到上面数据的密度(“ldpi”,“mdpi”等)及分辨率(“小的”,“标准的”,等等)上。

有了2013手机检测研究的帮助,很容易就找到了代表性的一系列设备。有一件有趣的琐事:30%印度安卓用户的设备分辨率很低只有240×320像素,如上面列表中看到的,三星Galaxy Y S5360也在其中。另外,480×800分辨率像素现在最常用(上表中三星Galaxy S II中可见)。

移动APP必须提供最佳用户体验,以及在不同尺寸和分辨率(关键字“响应式设计”)的各种智能手机和平板电脑上被正确显示(UI测试)。与此同时,apps必须是功能性的和兼容的(兼容性测试),有尽可能多的设备规格(内存,CPU,传感器等)。加上先前获得的“直接”碎片化问题(关于安卓的版本和屏幕的特性),“环境相关的”碎片化有着举足轻重的作用。这种作用涉及到多种不同的情况或环境,其中用户正在自己的环境中使用的终端设备。作为一个例子,如果网络连接不稳定,来电中断,屏幕锁定等情况出现,你应该慎重考虑压力测试[4]和探索性测试以确保完美无错。

有必要提前准备覆盖app最常用功能的所有可能的测试场景。早期bug检测和源代码中的简单修改,只能通过不断的测试才能实现。

将这种广泛的多样性考虑在内的一种务实方法是,安卓模拟器-提供了一个可调节的工具,该工具几乎可以模仿标准PC上安卓的终端用户设备。简而言之,安卓模拟器是QA流程中用各种设备配置(兼容性测试)进行连续回归测试(用户界面,单元和集成测试)的理想工具。探索性测试中,模拟器可以被配置到一个范围广泛的不同场景中。例如,模拟器可以用一种能模拟连接速度或质量中变化的方式来设定。然而,真实设备上的QA是不可缺少的。实践中,用作参考的虚拟设备依然可以在一些小的(但对于某些应用程序来说非常重要)方面有所不同,比如安卓操作系统中没有提供程序特定的调整或不支持耳机和蓝牙。真实硬件上的性能在评价过程中发挥了自身的显著作用,它还应该在考虑了触摸硬件支持和设备物理形式等方面的所有可能终端设备上进行测试(可用性测试)。

既然我们已经定义了在哪里(参考设备)测试,测试什么(测试场景),以及如何(安卓模拟器和真实设备)测试,简述一个过程并确定何时执行哪一个测试场景就至关重要了。因此,我们建议下面的两级流程:

这包括虚拟参考设备上用来在早期识别出基本错误的连续自动化回归测试。这里的理念是快速地、成本高效地识别bugs。

这涉及到:“策划推广”期间将之发布到Google Play Store前在真实设备上的密集测试(主要是手动测试),(例如,Google Play[ 5 ]中的 alpha和beta测试组)。

在第一阶段,测试自动化极大地有助于以经济实惠的方式实现这一策略。在这一阶段,只有能轻易被自动化(即可以每日执行)的测试用例才能包含在内。

在一个app的持续开发过程中,这种自动化测试为开发人员和测试人员提供了一个安全网。日常测试运行确保了核心功能正常工作,app的整体稳定性和质量由测试数据透明地反映出来,认证回归可以轻易地与最近的变化关联。这种测试可以很轻易地被设计并使用SaaS解决方案(如云中的TestObject的UI移动app测试)从测试人员电脑上被记录下来。

当且仅当这个阶段已被成功执行了,这个过程才会在第二阶段继续劳动密集测试。这里的想法是:如果核心功能通过自动测试就只投入测试资源,使测试人员能够专注于先进场景。这个阶段可能包括测试用例,例如性能测试,可用性测试,或兼容性测试。这两种方法相结合产生了一个强大的移动apps质量保证策略[ 7 ]。

用正确的方式使用,测试可以在对抗零散的安卓的斗争中成为一个有力的工具。一个有效的测试策略的关键之处在于定义手头app的定制测试用例,并定义一个简化测试的工作流程或过程。测试一个移动app是一个重大的挑战,但它可以用一个结构化的方法和正确的工具集合以及专业知识被有效解决掉。

三、【译】Android材质组件的动手实践:Dialogs

1、这篇文章将介绍 Dialogs组件的功能和API。要了解如何处理Android的Material Components的初始设置(包括Gradle依赖关系和创建应用程序主题),请参阅我的原始文章:

2、为Android设置Material Components主题

3、对话框是组件,通常带有模式窗口,显示在应用程序内容的前面。它们用于告知用户可能包含关键信息和/或需要做出决定的任务。它们有目的地打断电流,并一直显示在屏幕上,直到被解散或采取措施为止,因此应谨慎使用。

4、从设计的角度来看,可以在不同的场景中使用三种主要类型的对话框:

5、上面所有这些都具有共同的特征:遮盖应用程序内容的背景稀松布(可以选择轻按以关闭对话框)和表面容器。

6、注意:存在第四种类型:全屏对话框。为此,官方文档建议使用*DialogFragment*和资源限定符一起确定其显示方式。这不在本文的讨论范围之内,因此不会涉及。

7、可以使用来实现所有上述对话框类型 MaterialAlertDialogBuilder。该构建器类 AlertDialog使用Material Design规范和主题来配置和实例化。

8、配置更改(例如设备旋转)后,上述方法将不会保留对话框。为了实现这一点,我们需要花一段 DialogFragment时间使用 MaterialAlertDialogBuilder来提供 Dialog:

9、 DialogFragment可以使用导航体系结构组件显示,也可以通过 Fragment或 Activity通过以下方式手动显示:

10、可以通过将参数传递给来实现上面(和更多)三种对话框中列出的所有特征 MaterialAlertDialogBuilder。下面列出了其中一些。

11、注意:在以下大多数情况下,将使用硬编码值。该构建器还提供资源ID的重载。

12、注意:对话框的中间区域可以被支持文本或一组特定类型的项目占用。这些不能合并。

13、存在几个主题叠加层,用于更改对话框的总体布局。这些主题覆盖变体继承自 ThemeOverlay.MaterialComponents.MaterialAlertDialog,每个都有一个可选的后缀:

14、实施全局自定义Material AlertDialog主题叠加层时,请在您的应用程序主题中使用 materialAlertDialogTheme属性引用它。

15、另外,还有一个辅助 MaterialAlertDialogBuilder构造函数,它接受覆盖的主题资源ID:

16、可以使用三个“材料主题”子系统为主题设置“材料警报”对话框:颜色,版式和形状。我们已经在上面的“选择主题叠加层”部分中显示了要使用的主题叠加层。除此之外, AlertDialog可以通过扩展样式并使用属性在主题叠加层中引用自定义样式。 MaterialAlertDialog.MaterialComponents``alertDialogStyle

17、有没有具体的属性自定义在一个对话框中使用的颜色,但 colorPrimary, colorSecondary, colorSurface和各自的“关于”在您的应用程序使用的主题会自动调整对话框颜色颜色改变时。

18、对话框文本元素将采用 fontFamily您在应用程序主题中定义的属性。操作按钮的样式将根据 textAppearanceButton您在应用主题中设置的样式进行设置。

19、在主题叠加层中,您还可以使用 materialAlertDialogBodyTextStyle属性为正文文本专门设置样式。

20、可以使用该 shapeAppearance属性自定义对话框背景的形状。默认为 shapeAppearanceMediumComponent。

21、我希望这篇文章对对话框以及如何在您的Android应用中使用对话框提供了一些见识。如果您有任何疑问,想法或建议,那么我很乐意收到您的来信!