第1章 Android概述... 1
1.1 了解Android. 1
1.1.1 Android起源与发展... 1
1.1.2 开放手持设备联盟... 3
1.1.3 Android市场占有率... 3
1.2 Android版本... 4
1.2.1 Android版本简介... 5
1.2.2 Android各版本市场份额... 8
1.3 Android的特征... 9
1.4 Android系统架构... 10
1.4.1 应用程序层... 10
1.4.2 应用程序架构层... 11
1.4.3 系统运行时库层... 11<div> <h1></h1> </div> <p>第<b>1</b>章 <b> Android</b>概述... 1</p> <p>1.1 了解Android. 1</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.1.1 A</st1:chsdate>ndroid起源与发展... 1</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.1.2</st1:chsdate> 开放手持设备联盟... 3</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.1.3 A</st1:chsdate>ndroid市场占有率... 3</p> <p>1.2 Android版本... 4</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.2.1 A</st1:chsdate>ndroid版本简介... 5</p> <p><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.2.2 A</st1:chsdate>ndroid各版本市场份额... 8</p> <p>1.3 Android的特征... 9</p> <p>1.4 Android系统架构... 10</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.4.1</st1:chsdate> 应用程序层... 10</p> <p><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.4.2</st1:chsdate> 应用程序架构层... 11</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.4.3</st1:chsdate> 系统运行时库层... 11</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.4.4</st1:chsdate> Linux内核层... 13</p> <p>1.5 Android四大组件... 14</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.1 A</st1:chsdate>ctivity. 14</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.2</st1:chsdate> Service. 15</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.3</st1:chsdate> Broadcast Receiver 15</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.4</st1:chsdate> Content Provider 15</p> <p>1.6 Android程序生命周期... 15</p> <p>习题1. 17</p> <p>第<b>2</b>章 构建<b>Android</b>程序... 18</p> <p>2.1 Android项目创建... 18</p> <p>2.2 Android目录结构... 20</p> <p>2.3 Android项目资源... 24</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.3.1</st1:chsdate> 创建资源... 24</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.3.2</st1:chsdate> 使用资源... 25</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.3.3</st1:chsdate> 资源本地化... 27</p> <p>2.4 Gradle详解... 28</p> <p>2.5 项目调试与运行... 29</p> <p><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">2.5.1 A</st1:chsdate>ndroid项目运行... 29</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.5.2 A</st1:chsdate>ndroid项目调试... 31</p> <p>习题2. 33</p> <p>第<b>3</b>章 初级<b>UI</b> 34</p> <p>3.1 Android UI基本概念... 34</p> <p>3.2 基本控件... 35</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.2.1</st1:chsdate> TextView.. 35</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.2.2</st1:chsdate> Button和ImageButton. 37</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.2.3</st1:chsdate> EditText 40</p> <p>3.3 Layout组件... 43</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.3.1</st1:chsdate> FrameLayout 44</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.3.2</st1:chsdate> LinearLayout 45</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.3.3</st1:chsdate> RelativeLayout 47</p> <p><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">3.3.4</st1:chsdate> TableLayout 50</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.3.5</st1:chsdate> GridLayout 52</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.3.6</st1:chsdate> Layout布局小结... 54</p> <p>3.4 复合按钮... 55</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.4.1</st1:chsdate> CheckBox. 55</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.4.2</st1:chsdate> RadioButton. 56</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.4.3</st1:chsdate> ToggleButton. 56</p> <p>习题3. 57</p> <p>第<b>4</b>章 <b>Activity</b>与<b>Fragment</b> 58</p> <p>4.1 Activity详解... 58</p> <p>4.2 Activity的生命周期... 60</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">4.2.1 A</st1:chsdate>ctivity栈... 60</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">4.2.2 A</st1:chsdate>ctivity状态... 61</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">4.2.3 A</st1:chsdate>ctivity的生存期... 61</p> <p>4.3 Activity启动模式... 63</p> <p>4.4 Fragment详解... 66</p> <p>4.5 Fragment的生命周期... 69</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">4.5.1</st1:chsdate> Fragment的状态... 69</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">4.5.2</st1:chsdate> Fragment的生命周期方法... 70</p> <p>4.6 Fragment与Activity间通信... 71</p> <p>习题4. 73</p> <p>第<b>5</b>章 **<b>UI</b> 74</p> <p>5.1 Toast和Dialog. 74</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">5.1.1</st1:chsdate> Toast 74</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">5.1.2</st1:chsdate> Dialog. 77</p> <p>5.2 Spinner 83</p> <p>5.3 ListView.. 90</p> <p>5.4 Menu. 92</p> <p>5.5 Style和Theme. 102</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">5.5.1</st1:chsdate> 使用Style. 102</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">5.5.2</st1:chsdate> 继承Style. 103</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">5.5.3</st1:chsdate> 使用Theme. 104</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">5.5.4</st1:chsdate> 继承Theme. 105</p> <p>习题5. 106</p> <p>第<b>6</b>章 <b> Intent</b>与<b>Broadcast</b> 107</p> <p>6.1 使用Intent启动Activity. 107</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">6.1.1</st1:chsdate> 显式Intent 107</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">6.1.2</st1:chsdate> 隐式Intent 108</p> <p>6.2 使用Intent实现Activity间数据传递... 110</p> <p><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">6.2.1</st1:chsdate> 向下一个Activity传值... 110</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">6.2.2</st1:chsdate> 获取上一个Activity的返回值... 111</p> <p>6.3 使用Intent广播事件... 124</p> <p>6.4 监听广播... 125</p> <p>习题6. 127</p> <p>第<b>7</b>章 <b>Service</b>与多线程... 128</p> <p>7.1 创建Service. 128</p> <p>7.2 启动和停止服务... 129</p> <p>7.3 IntentService. 132</p> <p>7.4 Android多线程编程与消息机制... 134</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">7.4.1 A</st1:chsdate>ndroid多线程编程... 134</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">7.4.2 A</st1:chsdate>ndroid消息机制... 136</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">7.4.3</st1:chsdate> 使用AsyncTask. 139</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">7.4.4</st1:chsdate> 线程池... 142</p> <p>习题7. 146</p> <p>第<b>8</b>章 数据持久化技术和<b>ContentProvider</b>. 147</p> <p>8.1 SharedPreference. 147</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.1.1</st1:chsdate> 获取SharedPreferences对象方法... 147</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.1.2</st1:chsdate> 写入SharedPreferences 148</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.1.3</st1:chsdate> 从SharedPreferences读取信息... 148</p> <p>8.2 文件... 149</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.2.1</st1:chsdate> 内部存储... 149</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.2.2</st1:chsdate> 外部存储... 151</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.2.3</st1:chsdate> 资源文件的读取... 156</p> <p>8.3 SQLite. 159</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.3.1</st1:chsdate> 数据库创建... 160</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.3.2</st1:chsdate> 数据库操作... 161</p> <p>8.4 ContentProvider简介... 165</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.4.1</st1:chsdate> ContentProvider的角色... 166</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.4.2</st1:chsdate> ContentResolver 166</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.4.3</st1:chsdate> ContentProvider中的URI 167</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">8.4.4</st1:chsdate> 数据共享的实现... 168</p> <p>习题8. 176</p> <p>第<b>9</b>章 网络编程... 177</p> <p>9.1 基于Socket的网络编程... 178</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">9.1.1</st1:chsdate> UDP套接字... 179</p> <p><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">9.1.2</st1:chsdate> TCP套接字... 180</p> <p>9.2 基于HTTP的网络编程... 189</p> <p>9.3 WebView.. 193</p> <p>习题9. 197</p> <p>第<b>10</b>章 实战项目——<b>2048</b>游戏... 198</p> <p>10.1 创建项目并编写界面样式... 198</p> <p>10.2 定义方块样式与行为... 199</p> <p>10.3 编写MainActivity. 203</p> <p>附录<b>A</b>.. 212</p> <p>参考文献................................................................................................................ 221</p> <p> </p> <p> </p> <p> </p>显示全部信息前 言
前言
“这是*好的时代,这是*坏的时代”。
对如今的安卓开发界而言,两百年前,狄更斯说的这句话颇有道理。
这是*好的时代——互联网经济高速发展。雷军的一句“站在风口上,猪也会飞”,话粗理不粗,小米的成功也佐证了这一点。作为移动互联网*主要的载 体——智能手机如火山岩浆般喷涌,而安卓手机自然是当中*强势的**。Statista的统计数据显示,2016年第二季度全球手机出货量中,安卓手机占有86.2%的份额。此番强势表现,对众多的安卓***,无疑是*好的时代。<div> <h1></h1> </div> <p>前言</p> <p>“这是*好的时代,这是*坏的时代”。</p> <p>对如今的安卓开发界而言,两百年前,狄更斯说的这句话颇有道理。</p> <p>这是*好的时代——互联网经济高速发展。雷军的一句“站在风口上,猪也会飞”,话粗理不粗,小米的成功也佐证了这一点。作为移动互联网*主要的载 体——智能手机如火山岩浆般喷涌,而安卓手机自然是当中*强势的**。Statista的统计数据显示,2016年第二季度全球手机出货量中,安卓手机占有86.2%的份额。此番强势表现,对众多的安卓***,无疑是*好的时代。</p> <p>然而,这也是*坏的时代。开放性的发展造成安卓碎片化问题严重。2016年3月,Google正式发布Android 7.0。令人尴尬的是,调查显示,截至发布之日,Android 6.0的市场普及率只有2.3%,更不要说各个厂商安卓手机的硬件、系统都有着诸多差别。因此,***不得不花费大量时间适配不同机型,初学者面临这些问题时,往往不知所措;而市面上多数安卓教材仍沿用过时的理论,基于古老的安卓4.X,甚至还在使用着官方目前已由Android Studio代替的Eclipse和已经停止更新的ADT。</p> <p>本书旨在更好地解决上述问题,帮助初学者更加**地接触、了解和熟悉安卓开发。在参阅了许多大同小异的相关书籍后,我们力求能直击安卓的本质,以清晰合理的逻辑,让初学者明白安卓设计的初衷,以设计出**而不失优雅的安卓程序。对比其他安卓教材,本书具有以下优点:</p> <p>目标针对性强。本书针对国内计算机、软件相关专业已先修Java程序设计课程的学生,旨在为具备良好Java编程能力的学生提供一本能够快速熟悉Android平台的教材,熟练掌握Android开发过程中**的基础知识,为今后的课程学习和工作打下坚实的基础。</p> <p>内容与时俱进。计算机学科发展异常迅速,内容更新很快。作为教材,一方面要反映本领域基础性、普遍性的知识,保持内容的相对稳定性;另一方面,也需要不断跟踪科技的发展,本书坚持使用*新的Android版本和2013年Google新推出的Android Studio作为开发环境;**介绍使用新技术的案例,避免使用即将淘汰的设计方法。</p> <p>结构合理,习题精要。本书体系结构严谨,概念清晰,内容由浅入深,符合学生的认知规律,易学易懂,且配有许多难度适中、逻辑合理、适于初学者和进阶者开拓思路、深入了解Android基础理论和开发技巧的习题以及切合实际的参考答案和章末要点总结,适合教学和自学,是学生掌握Android开发的**书目。</p> <p>理论结合实践。本书用实例讲授知识点,不局限于枯燥的理论介绍。与许多课程的规律类似,实践对于Android学习而言也是强化和提**习效果的必由之途,否则无异于“入宝山而空返”。读者通过将书中代码手敲一遍或仿照书中实例自己编写小型应用进行练习,可切实强化编码能力,提高软件分析设计能力,真正领悟学习程序设计语言的真谛。</p> <p>着眼整体认识,体现特色内容。本书注重系统思维,首先展现Android基础知识体系的整体框架,然后深入细节,便于读者在脑海中清晰地构建知识网络,实现融会贯通。在具体内容上,力求突出Android开发理论中*精华的部分,避免面面俱到、缺少**,同时增加一些实际开发中可能会用到的高深知识和Android中的特色功能,以供读者进一步深入学习。</p> <p>本书的作者为吕云翔、杨婧、谢文彬,曾洪立、吕彼佳、姜彦华参与了素材整理及配套资源制作。</p> <p>由于我���的水平和能力有限,本书难免有疏漏之处。恳请各位同人和广大读</p> <p>者给予批评指正,也希望各位能将实践过程中的经验和心得与我们交流(<a href="mailto:yunxianglu@hotmail.com">yunxianglu@hotmail.com</a>)。</p> <p> </p> <p> 编 者</p> <p align="right">2017年12月于北航软件学院</p> <p align="right"> </p> <p align="right"> </p> <p align="right"> </p> <p align="right"> </p> <p align="right"> </p> <p align="right"> </p> <p align="right"> </p> <p align="right"> </p> <p align="right"> </p> <p align="right"> </p> <p align="center"> </p>显示全部信息免费在线读初级UI3.1 Android UI基本概念 用户界面(User Interface,UI)是用户与设备之间进行信息交流的直接媒介,是决定用户体验*重要的部分。相比于早期的计算机的主要交互界面——批处理界面和命令行界面,现在更为流行的是更简单直接的用户图形界面(Graphical User Interface, GUI)。GUI简单易用,受众面广,直接推动了个人计算机的发展。目前,主流大众的操作系统都采用了GUI,安卓也不例外。 通常GUI上会放置各种组件,这些组件通过巧妙的设计,便能组成灵活美观的界面。Android程序的UI组件分为widget控件和layout组件两大类,这两类的根类都是View类。* widget控件:UI的*基本单位,即不能在这类组件中放入其他UI组件。常见的widget组件有Button(按钮)、TextView(文本标签)、EditText(文字输入框)等。* layout组件:布局组件,像容器一般,其中可以加入其他layout组件或widget组件。常用的layout组件有LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(框架布局)、TableLayout(表格布局)、GridLayout(网格布局)等。 View类的常用xml文件元素属性如表3-1所示。表31 View类属性属 性对 应 方 法说 明android.idsetId(int id)设置组件的标识符android.background setBackGround(int color)设置背景颜色android.visibilitysetVisibility(int)设置组件的可见性android.clickablesetClickable(Boolean)设置组件是否响应单击事件android.alphasetAlpha(float)设置组件的透明度续表属 性对 应 方 法说 明android.layout_weightsetHeight(int)设置组件的宽度,一般有match_parent和wrap_content两个选项android.layout_heightsetWidth(int)设置组件的宽度,一般有match_parent和wrap_content两个选项