android编程权威指南美斯图尔特汀马诺_第1页
android编程权威指南美斯图尔特汀马诺_第2页
android编程权威指南美斯图尔特汀马诺_第3页
android编程权威指南美斯图尔特汀马诺_第4页
android编程权威指南美斯图尔特汀马诺_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BigNerdRanch是一家专业的移动开发技术培训机构。本书主要以其Android教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程指南。全书共36章,详细介绍了8个Android应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开第3版较之前版本增加了对数据绑定等新工具的介绍,同时新增了针对单元测试、辅助功能和MVVM架构等的章节。如果你熟悉Java语言,或者了解面向对象编程,那就立刻开始Android编程之 [美]BillPhillipsChrisStewartKristin 责任编辑责任印制人民邮 市丰台区成寿寺路11100164 电子邮件 http 印刷开本:800×1000印张 彩插字数:884千 2017年6月第3印数:38501—42000 2017年6月第1次印著作权合同登记号图字:01-2017-3139

献给我的DaveVadas,他激励并支持我投身计算机行业。献给我的JoanVadas,在 力量:合作者、责任编辑和支持者。没有他们,想抓住重点并撰写出这么多的素材肯定不感谢我们Android开发团队的同事AndrewLunsfordBolotKerimbaevBrianGardnerDavidGreenhalgh、JoshSkeen、MattCompton、PaulTurner和RashadCureton。他们一直用这些有才的团队一起工作,此生无憾。在BigNerdRanch工作的日子,每一天都是享受。特别感谢Andrew。他为本书同步更新了一大批AndroidStudio截图。他很细心,不放过任ZackSimon,说起话来轻声细语,是我们BigNerdRanch了不起的天才设计师。他不声不感谢KarLoongWong,他重新设计了crime应用列表屏。只要他多伸手,本书的应用肯定感谢MarkDalrymple,他审阅了constraintlayout这部分内容,使之更加准确、完善。凑巧碰到他的话,如果你也在搞constraintlayout,千万记得请他把关,他可是这方面的专家。感谢我们的编辑ElizabethHoladay。据说,著名的“垮掉的一代”文学作家WilliamS.要不是Liz,在遇到困惑、一时冲动时,相信我们也会这么做。在指导下,我们才能 的ChrisLoper。他设计并制作了本书的纸质版和。 有这个反馈环,就没有这本书,即便有,也不会越来越完善。如果说BigNerdRanch公司的如何学习Android学习ndri开发对每新手是一很大好像在国他学会存一。即阅读第3版有哪些新binding 部分还包含一块名为“深入学习”的内容。这些内容针对相应章节的知识点,提供深编码这纯属个人偏好。我们认为,使用内部类,代码可以更简练,器实现方法更一目了然。尽管在高性能要求的场景下或大型应用中,内部类可能会有一些问题,但我们有理由坚持这一点。相信我们,使用得当的话,fet就是nrd开发人员手中aiy,an版式有关此试读版的说本人可以帮助你找到你要的PDF,计算机类,文学,艺术,设计,医学,理学,经质量都很清晰,为方便读者阅读,每本100°/。都带可跳转的书签索引和 一般情况下,半年左右就会有PDF极个别的书出PDF时间要长一些如看到试读版信息.说明已经有完整版,需求完整版即可。请添加 或扫 添大家如果在网上不到的话,可以或 因PDF都有,请不要随意,如果您有经济能力,请尽量正版 若以 :本人只提供代找服务,每本100%索弓|书签和 PDF publicvoidonClick(Viewv)Toast.makeText(QuizActivity.this,R.string.incorrect_toast,}AndroidAndroid4.4之前的系统版本,请参考本书第2版(Android4.1及以上版本)和第1版(Android2.3及以上版本)的相关内容。, 开始学习前,你需要安装AndroidStudio。基于流行的InliJIDEA创建,AndroidStudio是用Android Studio的与安可以从Android开发者AndroidStudio:dev 早期版本的项目的话,可在Android开发向导界面,在QuickStart区域,选择ConfigureSDKManager来启图0-1AndriodSDK管理硬件 第1章Android开发初体 Android开发基 创建Android项 AndroidStudio使用导 组件属 预览布

练习:为TextView添加 第3章activity的生命周 日志理解activity生命周 使用 activity生命周期实例解 设备旋转与activity生命周 1.10关于练 练习:定制toast消 第2章Android与MVC设计模 Android与MVC设计模 连接设 在XML文件中资

第4章Android应用的调 从布局XML到视图对从布局XML到视图对 再探activity生命周 组 深入学习:activity内存清理现 1.6.2设置 练习:一题多 深入学习:Android编译过 记录栈日 设置断 Android特有的调试工 使用Android R类的问 练习:探索内存分配第5章第二个 创建新的 创建新的activity子 manifest配置文件 为QuizActivity添加按 启动 activity间的数据传 使用intent 从子activity获取返回结 activity的使用与管 练习:堵住第6章AndroidSDK版本与兼 AndroidSDK版 Android编程与兼容性问 SDK最低版 SDK目标版 SDK编译版 安全添加新版本API中的代 使用Android开发者文 练习:限制次 7章UIfragment管理 UI设计的灵活性需 引入 着手开发 两类 AndroidStudio关 创建Crime 托管UI fragment的生命周 创建UI

定义CrimeFragment的布 创建CrimeFragment FragmentManager添UI fragment事 FragmentManager生命周 采用fragment的应用架 深入学习:fragment与支持 8章使用RecyclerView列 升级CriminalIntent应用的模型 使用抽象activity托管 通用型fragment托管布 抽象activity RecyclerView、ViewHolder ViewHolder和 使用 ViewHolderAdapter 练习:RecyclerView 第9章使用布局与组件创建用户界 引入 使用 腾出空 添加组 约束的XML形 编辑属 dp、sp以及屏幕像素密 样式、及属 Android应用的设计原 第10章使用fragment

第12 创建 显示 设置框的显示内 fragment间的数据传 练习: 附加extra信 获取extra信 CrimeFragment视 直接获取extra信息的缺 fragment 附加argument给 获取 通过fragment获取返回结 深入学习:为何要用 刷 第11章使用

第13章 在XML文件中定义菜 深入学习:与操作 练习:删除crime记 ger

第14章数据 FragmentStatePagerAdapter 边 JumptoFirstJumptoLast按

定义 修改CrimeLab 使用 使用 深入学习:数据库高级介 练习:删除crime记 第15章隐式

第18章应用本地 默认资 18.2.1可用资源优先级排 使用隐式 隐式intent的组 发送消 第16章使用intent拍

第19章Android辅助功 点击浏 线性浏 置 258 19.2.2实现组件可聚 文件使用 指定存放位 使用相机 功能练习:优化显 第17章双版面主从用户界

练习:主动通 第20章数据绑定与 为何要用MVVM架 创建BeatBox应 导入

20.4处理 使用 fragment容 activity:fragment的托管

assets lambda表达 深入学习:什么是non- 第21章音频与单元测 创建 音 保留 深入学习:Espresso与整合测 练习:进度控 第22章样式与 样 添加颜 覆盖属 第23章XML shape statelist layerlist XML 深入学习:使用mipmap图 深入学习:使用9-patch图

第24章深入学习intent和任 创建NerdLauncher项 解析隐式 NerdLauncher应用作为设 深入学习:并 第25章HTTP与任 创建PhotoGallery应 k在线程运行代 从Flickr获取JSON数 从 清理 k的替代方 26章Looper、Handler 配置RecyclerView以显示批量缩略 创建并启动线 Message与message 剖析 剖析 使用 传递 第27章搜 搜索Flickr使用 sharedpreferences实现轻量数据 应 第28章服 创建 查找返回结 合理控务启动的频 PendingIntent管 练习:可穿戴设备上 non-sticky服 sticky服 绑定服 练习Lollipop设备上使 深入学习:sync 第29章broadcast

普通intent和broadcast 接收系统broadcast:重启后唤 创建并登记standalone 使用 发送broadcast 使用私限限 broadcast收数 receiver与长时运行任 深入学习:本地使用 使用 深入学习:探测fragment的状 第30章网页浏 最后一段Flickr数 深入学习:注入JavaScript对 网 练习:非HTTP支 第31章定制视图与触摸创建DragAndDraw项 处理触摸 第32章属性动 多个动 深入学习:其他动画 转 练 第33章地理位置 y服 创建Locatr项 y服务定位和模拟 创建Locatr应 配 y服 使 y服 基于地理位置的Flickr搜 寻找并显示 第34章使用地

Android上的地图服 获取MapsAPI 创建地 获取地理位置数 使用地 深入学习:团队开发和API 第35章material material elevation和Z statelist 动画工 circular sharedelement floatingaction 深入学习material 第36章编后 终极关于我 36.3致 1图1-1你是澳洲人Android开发基GeoQuiz是个简单应用,因此它只有一个名叫QuizActivityActivity子类。图1-2QuizActivity管理着activity_quizxml文件定义的用户界创建Android启动AndroidStudio程序,首次运行的话,会看到如图1-3所示的欢迎界面。 图1-3欢迎使用Androidproject次运行的话,选择File→New→NewProject…菜单项。name)处输入GeoQuiz。在公司( location图1-4创建新项部附加上应用名称。遵循此约定可以保证包名称的唯一性,这样,同一设备和y商店的图1-5设备支持配具有了重大更新。不要担心,请本书forum 图1-6选取activity类型(空图1-7配置AndroidStudio使用导window图1-8新的项目窗window(eito角的灰色方形区域或单击View→ToolButtons菜单项找到它。用户界面11代代 1-1默认的activity布局 oWorld!"/>ietvAndroidSDK内置了多种组件,通过配置各种组件可获得所需的用户界面及行为。每一个组图1-9显示在屏幕上的默认组图1-10布置并显示在屏幕上的组在项目工具窗口中找到app/res/layout,打开activity_quiz.xml文件。对照代码1-2,修代代 1-2在XML文件(activity_quiz.xml)中定义组 11 oWorld!"/><LinearLayoutxmlns:android="http://s android:orientation="vertical">android:orientation="horizontal">android:text="@string/true_button"/>android:text="@string/false_button"/>可以看到,有三行以android:text开头的代码出现了错误信息。暂时忽略它们,稍后会处理。hieracy图1-11布局组件的层级结从布局的视图层级结构可以看到,其根元素是一个LinearLayoutLinearLayout组件必须指定AndroidXML资源文件名空间属性,这里是若某个组件包含在一个ViewGroup中,该组件与ViewGroup即构成父子关系。根Linear-11density-independentpixel,指与密度无关的像素,详见第9)(trng.xl字内容放置在独立的字符串资源XML文件中,然后它们。这样会方便应用的本地化(支持在项目工具窗口中,找到app/res/values,展开,打开strings.xml代代 1-3添加字符串资源 <string<stringname="question_text">Canberraisthecapitalof<string<string有多个字符串文件。只要这些文件都放在res/values/下,含有一个resources根元素,以及多有相关文件并且无错误发生,然后回到itqml文件,点击代码编辑区右边的ee打11图1-12在图形布局工具中预览布局(activity_quiz1从布局XML到视图1在创建GeoQuiz项目的同时,向导也创建了一个名叫QuizActivity的Activity 代代 1-4默认QuizActivity类文件 packageimportandroid.sup importandroid.os.Bundle;publicclassQuizActivity p{protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);}} 旧版本系统提供兼容支持。第章会详细介 publicvoidsetContentView(int项目的所有资源文件都存放在 下。在项目工具窗口中可以看到,activity_quiz.xml布局资源文件存放在res/layout/ 下。strings.xml字符串资源文件存放在 可以使用资源ID在代码中获取相应的资源。activity_quiz.xml布局的资源ID为R.layout.查看GeoQuiz应用的资源ID需要切换项目视图。AndroidStudio默认使用Android项目视图, 图1-13切换项目视会显示出当前项目的所有文件和。展开app/build/generated/source/r/debug,找到项目包名称并打开其中的R.java文件,即可jaandridtui编译用的.ava隐藏文件。当前代码编辑区打开的.av文件仅在应用安装至设备或模拟器前产ndridui代代 1-5GeoQuiz应用当前的资源 /*AUTO-GENERATEDFILE.DONOT*Thisclasswasautomaticallygeneratedbyaapttoolfromtheresourcedataitfound.shouldnotbemodifiedbypackagecom.bignerdranch.android.geoquiz;publicfinalclassR{publicstaticfinalclassanim}publicstaticfinalclassid11}publicstaticfinalclasslayoutpublicstaticfinalint}publicstaticfinalclassmipmappublicstaticfinalint}publicstaticfinalclassstringpublicstaticfinalintapp_name=0x7f0a0010;publicstaticfinalintfalse_button=0x7f0a0012;publicstaticfinalintquestion_text=0x7f0a0014;publicstaticfinalinttrue_button=0x7f0a0015;}}代代 1-6为按钮添加资源 <LinearLayout...android:text="@string/true_button"/>android:text="@string/false_button"/>组件的实际代代 1-7添加成员变量 publicclassQuizActivity ptivityprivateButtonmTrueButton;privateButtonmFalseButton;protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);}}现在,将鼠标移至代码左边的错误提示处时,会看到两条同样的错误信息:Cannotresolvesymbol'Button'。import 11 publicViewfindViewById(int代代 publicclassQuizActivity ptivityprivateButtonmTrueButton;privateButtonmFalseButton;protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);mTrueButton=(Button)findViewById(R.id.true_button);mFalseButton=(Button)findViewById(R.id.false_button);}} 设置建的对象叫作器(listener。器会实现特定的器接口(listenerinterface)。无需自己动手,AndroidSDK已经为各种内置了很多器接口。当前应用需要用代代 1-9为TRUE按钮设 器 protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);mTrueButton=(Button)mTrueButton.setOnClickListener(new{publicvoidonClick(Viewv)//Doesnothingyet,but}mFalseButton=(Button)}}mTrueButton.setOnClickListener(new{publicvoidonClick(Viewv)//Doesnothingyet,but}代 1-10为FALSE按钮设 器代 1-10为FALSE按钮设 器 1mTrueButton.setOnClickListener(new1{publicvoidonClick(Viewv)//Doesnothingyet,but}mFalseButton=(Button)mFalseButton.setOnClickListener(new{publicvoidonClick(Viewv)//Doesnothingyet,but}}创建提示接下来要实现的是,分别点击两个按钮,弹出我们称之为toat的提示消息。ndroid的tatta11所示。图1-14toast消息反代代 1-11增加toast字符串 <string<stringname="question_text">Canberraisthecapitalof<string<string<string<stringpublicstaticToastmakeText(Contextcontext,intresId,int在QuizActivity代码里,分别调用makeText(...)方法,如代码1-12所示。在添在建议列表里,选择makeText(ContextcontextintresIDintduration)方法,代代代 1-12创建提示消息 mTrueButton.setOnClickListener(new{publicvoidonClick(Viewv)//Doesnothingyet,but}mFalseButton=(Button)findViewById(R.id.false_button);mFalseButton.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv) 11//Doesnothingyet,but}在x)里,传入y实例作为t的参数值。注意此处应输入的参数是vs,不要想当然地直接输入s。因为类的使用,这里的ts指是es。使用代码自动补全功能,自己也就不用导入Toast类了,因为AndroidStudio会自动导入相使用模拟器运行device择模拟运行Nexus5X设备,如图1-15所示。点击Next继续。图1-15创建新的图1-16选择系统镜图1-17模拟器参数调 1AVD创建成功后,我们用它运行GeoQuiz应用。点击AndroidStudio上的Run按钮,或(APK1假如启动时或在点击按钮时,GeoQuiz应用,可以在AndroidDDMS工具窗口的LogCat视图中看到有用的诊断信息。(如果LogCat没有自动打开,可点击AndroidStudio窗口底部的AndroidMonitor按钮打开它。)查看日志,可看到抢眼的红色异常信息,如图1-18所示。图1-18第21行代码处发生了NullPointerException异(在较早版本的Android中,它像一个U型箭头。需要调试变更时,再通过AndroidStudio重新运深入学习 编译过AndroidStudio无需指示便会自动进行编译。在整个编译过程中,Android开发工具将资源文件、 /tools/publishing/preparinghtml)一部分,at(dridtcaingo)pk中。然后,在uAity类的CtBd)方法调用Ctte方法时,QuizActivity使用LayoutInflater类实例化布局文件中定义的每一个View对象,如图1-19所示。图1-19activity_quizxml中的视图实例有时,出于某种原因,可能需要脱离AndroidStudio编译代码。最简单的方法是使用命令行要从命令行使用Gradle,请切换到项目并执行以下命令:$./gradlew >gradlew.bat11$./gradlew>gradlew.bat关于练解决,可本书forum 为避免当前项目,建议你在AndroidStudio中先当前项目,然后在的项目上做 练习:定制toast该方法所在网页为dev Android与MVC设计模2图2-1测试题创建新→2创建新 2图2-2创建Question publicclassQuestionprivateintmTextResId;privatebooleanmAnswerTrue;publicQuestion(inttextResId,boolean{mTextResId=textResId;mAnswerTrue=}}新增的两个变量需要getter方法与setter方法。为避免手工输入,可设置由AndroidStudio自动Settings菜单。依次展开Editor和CodeStyle选项,在Java选项下选择CodeGeneration选项页。图2-3设置Java代码风格首选刚才设置的前缀有何作用?那就是,需要AndroidStudio为mTextResId生成获取方法时,它代代 2-2生成getter方法与setter方法 publicclassQuestionprivateintmTextResId;privatebooleanmAnswerTrue;publicint{return}publicvoidsetTextResId(int{mTextResId=} publicboolean2{return2}publicvoidsetAnswerTrue(boolean{mAnswerTrue=}}图2-4GeoQuiz应用对象图AndroidMVC设计图2-5MVC数据控制流与用户交使用MVC设计模更新视图 22更新视图2-6新增代代 2-3新增按钮以及对文本视图的调整 <LinearLayout...<LinearLayout...android:text="@string/next_button"/>代代 2-4更新字符串资源定义 <string<stringname="question_text">Canberraisthecapitalof<stringname="question_australia">Canberraisthecapitalof<string<string<string<string代代 2-5新增问题字符串 <stringname="question_australia">Canberraisthecapitalof<stringname="question_oceans">ThePacificOceanislargerthantheAtlanticOcean.</string><stringname="question_mideast">TheSuezCconnectstheRedSeaandthenOcean.</string><stringname="question_africa">ThesourceoftheNileRiverisin<stringname="question_americas">TheAmazonRiveristhelongestriverintheAmericas.</string><stringname="question_asia">LakeBaikalistheworld\'soldestanddeepestfreshwaterlake.</string> 2更新控制2代代 2-6增加按钮变量及Question对象数组 publicclassQuizActivity tivityprivateButtonmTrueButton;privateButtonmFalseButton;privateButtonmNextButton;privateTextViewmQuestionTextView;privateQuestion[]mQuestionBank

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论