Microsoft Word - 1 扉页

Size: px
Start display at page:

Download "Microsoft Word - 1 扉页"

Transcription

1 普通高等教育应用型规划教材 计算机类 Android 程序开发入门教程 俞成海宋瑾钰 舒挺郭家军 编著 北京

2 内容简介 本书共分 9 章 第 1 章讲述 Android 起源 概述 环境搭建及 Android Studio 的一些使用技巧 ; 第 2 章讲述 Android 程序的基本构成 生命周期及程序中的几大常用布局 ; 第 3 章介绍 Android 中的基础通用控件, 包括常用的文本控件 编辑控件 按钮控件等 ; 第 4 章介绍用来显示与绑定数据列表的数据适配器和列表视图, 以及一些相对较复杂的控件 ; 第 5 章介绍 Android 应用程序中的四大基本组件, 其中详细介绍了 Activity Service 和 BroadcastReceiver, 以及参数传递和 EventBus 框架 ; 第 6 章为 Android 程序中的资源文件介绍, 包含 Drawable 和动画等 ; 第 7 章介绍 Android 程序中媒体资源的使用 ; 第 8 章介绍 Android 中几种最常用的数据存储方式, 包括轻量存储 内外部存储和 SQLite 存储 ; 第 9 章介绍 Android 的 HTTP 通信的基本实现方式, 以及 Volley 框架的使用方法 本书可作为计算机 数字媒体等相关专业的教材, 也可作为相关领域技术人员的参考用书 图书在版编目 (CIP) 数据 Android 程序开发入门教程 / 俞成海等编著. 北京 :, 普通高等教育应用型规划教材 计算机类 ISBN Ⅰ. 1A Ⅱ. 1 俞 Ⅲ. 1 移动终端 - 应用程序 - 程序设计 - 高等学校 - 教材 Ⅳ. 1TN 中国版本图书馆 CIP 数据核字 (2018) 第 号 责任编辑 : 赵丽欣吴超莉 / 责任校对 : 王万红责任印制 : 吕春珉 / 封面设计 : 曹来 出版北京东黄城根北街 16 号邮政编码 : 北京双青印刷厂印刷发行各地新华书店经销 * 2018 年 6 月第一版开本 : / 年 6 月第一次印刷印张 :17 1/2 字数 : 定价 :43.00 元 ( 如有印装质量问题, 我社负责调换 双青 ) 销售部电话 编辑部电话 版权所有, 侵权必究举报电话 : ; ;

3 前 言 Android 系统下移动开发书籍在市面上比较常见, 但良莠不齐, 内容的侧重点也不尽相同, 适合大中专院校的图书不多 ; 一些院校的 Android 开发课程采用的教材还停留在使用早期的 Eclipse+ADT+SDK 的环境下, 这与社会实际使用的场景严重脱节 本书由从事 Android 移动应用开发多年教学的教师团队, 以及有 Android 开发丰富经验的研究生一起完成, 采用 Android Studio 2.3 开发环境, 并且已经在移动应用相关课程的教学过程中验证, 得到了教师和学生的一致肯定 本书在知识点编排上采用的是由浅入深 循序渐进的方式 本书首先介绍 Android 结构与环境 程序结构 控件等基础知识, 学生能第一时间初步掌握移动应用开发的构成, 触发他们的学习兴趣性 ; 进而展开组件及其交互 多媒体技术 图像与图形绘制等知识讲授, 学生对移动应用的交互技术有进一步的理解, 巩固和加强他们的编程意识和思想 ; 最后讲授数据存储技术和网络通信技术, 学生能实现从 孤独 应用向 互联 应用转换 通过本书的学习, 学生容易建立起一个统一 连贯的学习体系, 有利于增进他们学习编程的系统性和全局感 本书引入了大量的实例, 学生能在学习知识体系的过程中感受程序的魅力, 促进他们上机操作的欲望 同时, 我们也准备了丰富的教学资源, 可供师生参考学习 本书在编写过程中得到了很多帮助, 在此特别感谢郭奕亿 曾焕凯 余红情 汪秀娟 黄小凤等老师和同学的大力支持 由于编者能力和水平有限, 书中难免存在疏漏之处, 恳请广大读者批评指正 编者 2018 年 2 月

4

5 目 录 第 1 章 Android 结构和开发环境配置 Android 概述 Android 的起源 Android 特性 Android 发展历程 Android 系统基本架构 Android 开发环境配置 Java 环境的搭建 Android Studio 介绍与使用 安装 Android SDK 一个简单例子 HelloWorld Android 调试及测试 断点调试 LogCat 日志监视 ADB 介绍 Android Studio 的常用快捷键 23 本章小结 24 习题 24 第 2 章 Android 程序结构与布局 Android 应用程序框架 Android 程序基本组成结构 AndroidManifest.xml 结构 界面布局文件与 Activity Activity 的生命周期 生命周期的意义 Android 的生命周期结构 生命周期追踪实例 界面布局 单帧布局 线性布局 相对布局 表格布局 绝对布局 44

6 iv Android 程序开发入门教程 本章小结 45 习题 46 第 3 章 Android 常用基本控件 Android 控件基础 View 类介绍 控件通用行为和属性 静态文本与编辑框的功能和使用 静态文本的用法 输入文本框的用法 按钮控件的功能和使用 Button 控件用法 ImageButton 控件用法 RadioButton 控件用法 CheckBox 控件用法 Toast 的功能和使用 滚动视图的功能和使用 进度条的功能和使用 综合示例 75 本章小结 81 习题 81 第 4 章 Android 常用高级控件 数据适配器的工作原理 列表视图 ListView 简介 ListView 采用 ArrayAdapter 方式 ListView 采用 SimpleAdapter 方式 ListView 采用 BaseAdapter 方式 下拉列表控件容器 Spinner 简介 Spinner 的继承关系 Spinner 的基本属性 Spinner 的代码示例 栅格视图 GridView 简介 GridView 的继承关系 GridView 的基本属性 GridView 的代码示例 99

7 目录 v 4.5 自动提示文本框 自动提示文本框简介 自动提示文本框的继承关系 自动提示文本框的基本属性 自动提示文本框的代码示例 日期 / 时间选择器 日期 / 时间选择器简介 主要成员方法及说明 日期选择器的代码示例 时间选择器的代码示例 对话框 普通对话框 列表对话框示例 多选对话框示例 进度条对话框示例 自定义对话框布局 115 本章小结 116 习题 117 第 5 章 Android 组件及其交互 Android 应用程序的四大基本组件 Activity 组件 Service 组件 BroadcastReceiver 组件 ContentProvider 组件 Fragment 简介 Intent 简介 Activity 之间的跳转及参数传递 Service 示例 Broadcast 示例 Android 事件总线机制 EventBus 简介 147 本章小结 150 习题 150 第 6 章 Android 图像与图形变换 Drawable 简介 Bitmap File Nine-Patch File State List 159

8 vi Android 程序开发入门教程 6.5 Transition Drawable Clip Drawable Scale Drawable Rotate Drawable Android 动画基础 Animations 简介 渐变动画 帧动画 176 本章小结 178 习题 178 第 7 章 Android 多媒体开发 播放音频 使用 SoundPool 播放游戏音效 使用 MediaPlayer 播放游戏音乐 视频播放 用 VideoView 播放 用 SurfaceView 播放 Camera 的使用 使用系统相机 使用自定义相机 199 本章小结 205 习题 206 第 8 章 Android 数据存储技术 Android 数据存储方式 轻量存储 使用内部存储 使用外部存储 保存可与其他应用共享的文件 保存应用私有文件 使用 SQLite 数据库 插入数据 查询数据 更新数据 删除数据 每日记 App 程序 使用 SQLiteExpert 软件查看生成的数据库 239 本章小结 241 习题 241

9 目录 vii 第 9 章 Android 网络技术 JSON JSON 的数据格式 对象 JSON 的数据格式 值 JSON 的数据格式 数组 Gson 框架 Android Http 通信 HttpURLConnection Volley 通信框架 StringRequest 字符串请求 ImageRequest 图片请求 JSON 请求 自定义请求 Volley 单例模式示例 261 本章小结 269 习题 269

10 viii Android 程序开发入门教程

11 第 D 章 Android 结构和开发环境配置 本章导读本章主要介绍 Android 系统的发展历程和基本特性, 让读者对 Android 系统有初步了解 ; 然后介绍 Android 内部基本构造与分层结构 ; 开发环境配置中详细叙述开发 Android 程序所需要的基本环境的构建过程 ; 通过一个简单例子叙述 Android 程序的基本构建过程 ; 本章最后叙述了 Android 程序开发的调试功能 本章要点 Android 概述 ; Android 开发环境配置 ; 第一个例子 HelloWorld; Android 调试及 ADB 的使用 1.1 Android 概述 本节介绍 Android 平台起源 特点 发展历程和 Android 系统基本架构, 使读者对 Android 开发平台有一个初步的感性认识 Android 的起源 Android 是 Andy Rubin 在 2003 年提出并创建的一家手机操作系统公司, 后来以 4 千万美元卖给了 Google 公司 Google 公司于 2007 年 11 月 5 日宣布了基于 Linux 平台的开源移动操 作系统 Android 它是一个开放式的手机软件平台, 主要由操作系统 中间件 用户界面和应用软件组成 它采用软件堆层 (Software Stack, 又 名软件叠层 ) 的架构, 主要分为三部分 : 底层以 Linux 内核工作为基础, 由

12 2 Android 程序开发入门教程 C 语言开发, 只提供基本功能 ; 中间层包括函数库 Library 和虚拟机 Virtual Machine, 由 C++ 开发 ; 最上层是各种应用软件, 包括通话程序 短信程序等, 应用软件则由各公司自行开发, 以 Java 作为编写程序的一部分 Android 特性 Android 平台具有 5 大特性, 如图 1-1 所示 1. 开放性 图 1-1 Android 特性 提到 Android 的优势, 首先想到的一定是其真正的开放, 其开放性包含底层的操作系统以及上层的应用程序等,Google 与开放手机联盟合作开发 Android 的目的就是建立标准化 开放式的移动单机软件平台, 在移动产业 内形成一个开放式的生态系统 Android 的开放性也同样会使大量的程序开发人员投入到 Android 程序 的开发中, 这为 Android 平台带来了大量新的应用 2. 平等性 对用户来说, 在 Android 系统上, 所有的应用程序完全平等 系统默认 自带的程序与用户自己开发的程序没有任何区别, 程序开发人员可以开发 个人喜爱的应用程序来替代系统程序, 构建个性化的 Android 手机系统, 这 些功能在其他手机平台是没有的 Android 系统挣脱了运营商的束缚, 以往手机应用往往受到运营商制 约, 使用什么功能 接入什么网络, 几乎都受到运营商的控制 Android 终 端具有很好的网络特色, 让用户离互联网更近, 用户可以更加方便地连接 网络, 减少了运营商的制约

13 第 1 章 Android 结构和开发环境配置 3 对开发者来说,Android 平台提供给第三方开发商一个十分宽泛 自由的 环境, 不会受到各种条件和规则的阻挠, 极大地促进了丰富多彩的软件诞生 3. 无界性 Android 平台的无界性表现在应用程序之间的无界, 开发人员可以很轻 松地将自己开发的程序与其他程序进行交互, 比如应用程序需要播放声音的模块, 而正好你的手机中已经有一个成熟的音乐播放器, 此时你就不需要再重复开发音乐播放功能, 只需要简单地加几行代码即可将成熟的音乐播放功能添加到自己的程序中 4. 方便性 在 Android 平台中开发应用程序是非常方便的, 如果你对 Android 平台比较熟悉的话, 想自己开发一个功能全面的应用程序并不是什么难事 Android 平台为开发人员提供了大量的应用库及方便的工具, 同时也将 Google Map 等强大功能集成进来, 只需要简单的几行调用代码即可将强大的地图功能添加到自己的程序中 5. 硬件的丰富性 由于平台的开放, 众多的硬件制造商推出了各种各样 千奇百怪的产品, 但这些产品功能上的差异并不影响数据的同步与软件的兼容, 例如原来在诺基亚手机上的应用程序, 可以很轻松地被移植到摩托罗拉手机上使用, 且联系人 短信等资料更是可以方便地转移 Android 发展历程 提到 Android 系统的发展历史, 首先就要说说 Android 系统这个名字的来历 Android 一词最先出现在法国作家利尔 亚当在 1886 年发表的科幻小说 未来夏娃 中, 作者将外表像人类的机器起名为 Android, 这也就是 Android 小机器人名字的由来 知道了 Android 名字的来历, 我们再来看一下 Android 系统的来历 Android 系统一开始并不是由 Google 研发出来的,Android 系统原来的公司名字就叫作 Android,Google 公司在 2005 年收购了这个成立仅 22 月的高科技企业 Android 系统也开始由 Google 接手研发,Android 系统的负责人以及 Android 公司的 CEO 安迪 鲁宾成为 Google 公司的工程部副总裁, 继续负责 Android 项目的研发工作 现在 Android 已经成为目前最受欢迎的移动操作系统之一, 是目前唯一可以与 ios 系统抗衡的手机操作系统, 在全球范围内有着广泛的用户 下面简单介绍一下 Android 版本的更新历程 Android 1.1 操作系统是 Google 发布的第一款 Android 系统, 发布时间为 2008 年 9 月 ;

14 4 Android 程序开发入门教程 Android 1.5 操作系统的代号是 Cupcake( 纸杯蛋糕 ), 发布时间为 2009 年 4 月 30 日 ; Android 1.6 操作系统的代号是 Donut( 甜甜圈 ), 发布时间为 2009 年 9 月 15 日 ; Android 2.0/2.0.1/2.1 操作系统的代号均为 Eclair( 松饼 ), 发布时间为 2009 年 10 月 26 日 ; Android 2.2/2.2.1 操作系统的代号为 Froyo( 冻酸奶 ), 发布时间为 2010 年 5 月 20 日 ; Android 2.3 操作系统的代号为 Gingerbread( 姜饼 ), 发布时间为 2010 年 12 月 7 日 ; 随后 Android 系统开始进入平板设备,Google 在 2011 年中发布了 Android 3.0/3.1/3.2 操作系统, 这三个版本统称为 Honeycomb( 蜂巢 ); Android 4.0 操作系统的代号为 Ice Cream Sandwich( 冰激凌三明治 ), 发布时间为 2011 年 10 月 19 日 ; Android 4.1 操作系统的代号为 Jelly Bean( 果冻豆 ), 发布时间为 2012 年 6 月 28 日 ; Android 4.2 操作系统的代号为 Jelly Bean( 果冻豆 ), 发布时间为 2012 年 10 月 30 日 ; Android 4.4 操作系统的代号为 KitKat( 奇巧 ), 发布时间为 2013 年 9 月 3 日 ; Android 5.0 操作系统的代号为 Lollipop(Android L), 发布时间为 2014 年 6 月 25 日 ; Android 6.0 操作系统的代号为 Marshmallow(Android M), 在 Google 2015 年的 I/O 大会上被正式发布 ; Android 7.0 操作系统的代号为 Nougat( 牛轧糖, 也称 Android N), 在 2016 年 5 月 18 日 ~20 日的 Google I/O 开发者大会上发布 ; Android 7.1 于 2016 年 12 月 5 日正式发布 ; Android 8.0 于 2017 年 8 月 22 发布, 代号为 Oreo( 奥利奥 ) Android 系统基本架构 Android 是由 5 部分组成的, 分别是 Linux Kernel Android Runtime Libraries Application Framework Applications, 如图 1-2 所示 1.Linux Kernel Android 基于 Linux 2.6 提供核心系统服务, 如安全 内存管理 进程 管理 网络堆栈 驱动模型 Linux Kernel 作为硬件和软件之间的抽象层, 隐藏具体硬件细节而为上层提供统一的服务 如果你学过计算机网络知道 OSI 模型, 就会知道分层的好处就是使用下层提供的服务而为上层提供统一

15 第 1 章 Android 结构和开发环境配置 5 的服务, 屏蔽本层及以下层的差异, 当本层及以下层发生了变化不会影响到上层 也就是说, 各层各尽其职, 各层提供固定的 SAP(Service Access Point), 专业点可以说是高内聚 低耦合 如果你只是做应用开发, 就不需要深入了解 Linux Kernel 层 2.Android Runtime 图 1-2 Android 系统基本架构 Android 包含一个核心库的集合, 提供大部分在 Java 编程语言核心类库中可用的功能 每一个 Android 应用程序都是 Dalvik 虚拟机中的实例, 运 行在自己的进程中 Dalvik 虚拟机可执行文件格式是.dex,.dex 格式是专为 Dalvik 设计的一种压缩格式, 适合内存和处理器速度有限的系统 大多数虚拟机包括 JVM 都是基于栈的, 而 Dalvik 虚拟机则是基于寄存器的 两种架构各有优劣, 一般而言, 基于栈的机器需要更多指令, 而基于寄存器的 机器指令更大 dx 是一套工具, 可以将 Java.class 转换成.dex 格式 一个 dex 文件通常会有多个.class 由于 dex 有时必须进行最佳化, 会使文件大小增加 1~4 倍, 以 ODEX 结尾 Dalvik 虚拟机依赖于 Linux 内核提供基本功能, 如线程和底层内存管理 3.Libraries Android 包含一个 C/C++ 库的集合, 供 Android 系统的各个组件使用 这些功能通过 Android 的应用程序框架 (Application Framework) 暴露给开 发者 下面列出一些核心库 1 系统 C 库 Linux 设备 标准 C 系统库 (libc) 的 BSD 衍生, 调整为基于嵌入式

16 6 Android 程序开发入门教程 2 媒体库基于 PacketVideo 的 OpenCORE 这些库支持播放和录制许多流行的音频和视频格式, 以及静态图像文件, 包括 MPEG4 H.264 MP3 AAC AMR JPG PNG 3 界面管理管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层 4 LibWebCore 新式的 Web 浏览器引擎, 驱动 Android 浏览器和内嵌的 Web 视图 5 SGL 基本的 2D 图形引擎 6 3D 库基于 OpenGL ES 1.0 APIs 的实现 库使用硬件 3D 加速或包含高度优化的 3D 软件光栅 7 FreeType 位图和矢量字体渲染 8 SQLite 所有应用程序都可以使用的强大而轻量级的关系数据库引擎 4.Application Framework 通过 Application Framework 提供开放的开发平台,Android 使开发者能够编制极其丰富和新颖的应用程序 开发者可以自由地利用设备硬件优势 访问位置信息 运行后台服务 设置闹钟 向状态栏添加通知等, 开发者可以完全使用核心应用程序所使用的框架 APIs 应用程序的体系结构旨在简化组件的重用, 任何应用程序都能发布它的功能且任何其他应用程序都可以使用这些功能 ( 需要服从框架执行的安全限制 ) 这一机制允许用户替换组件 所有的应用程序其实是一组服务和系统, 包括以下内容 1 视图 (View) 丰富的 可扩展的视图集合, 可用于构建一个应用 程序 包括列表 网格 文本框 按钮, 甚至是内嵌的网页浏览器 2 内容提供者 (Content Providers) 使应用程序能访问其他应用程序 ( 如通讯录 ) 的数据, 或共享自己的数据 3 资源管理器 (Resource Manager) 提供访问非代码资源, 如本地 化字符串 图形和布局文件 4 通知管理器 (Notification Manager) 使所有的应用程序能够在状 态栏显示自定义警告 5 活动管理器 (Activity Manager) 管理应用程序生命周期, 提供通用的导航回退功能 5.Applications Android 装配一个核心应用程序集合, 包括电子邮件客户端 SMS 程序 日历 地图 浏览器 联系人和其他设置, 所有应用程序都是用 Java 编程 语言写的 更加丰富的应用程序有待我们去开发 从上面知道 Android 的架构是分层的, 非常清晰, 分工很明确 Android

17 第 1 章 Android 结构和开发环境配置 7 本身是一套软件堆层 (Software Stack), 或称为软件叠层架构, 叠层主要分 成三层 : 操作系统 中间件 应用程序 1.2 Android 开发环境配置 本节将具体介绍 Android 开发环境的搭建与使用, 主要包括 Java 环境 的搭建 AndroidStudio 开发工具的安装, 以及 Android SDK 的安装 Java 环境的搭建 Android 支持 Windows XP 以上操作系统 要想运行 Android, 首先要配置 Java 环境 Java 环境配置比较简单, 可按如下步骤进行 1) 从 网页下载最新版的 JDK( 要注意计算机为 32/64 位操作系统 ) 自从 Sun 被 Oracle 收购之后, 几乎所有曾经指向 sun.com 的 URL 都指向了 oracle.com 各位读者在访问以前地址时可以稍微注意一下 2) 安装 JDK JDK 包中包含 JDK 和 JRE 两部分, 双击已经下载好的 JDK, 然后根据安装向导即可完成 ( 最好选择默认的安装地址 ) 3)Java 安装环境测试 完成以上步骤后, 就进入到调试阶段, 对环境配置的检查 单击 开始 运行, 输入 cmd, 按 <Enter> 键, 就出现了一个 Windows 控制台, 在终端中输入 java-version 命令, 如果出现类似图 1-3 所示的信息, 说明 Java 环境已经配置成功 ; 否则需重新检查配置过程有无纰漏 图 1-3 检查 Java 环境 如果下载的是解压缩包 (.zip), 则需要配置环境变量 首先右键单击 我的电脑, 在弹出的快捷菜单中选择 属性 然后在弹出的 对话框中, 单击 高级 选项卡里面的 环境变量 按钮, 在弹出 的 环境变量 对话框中的系统变量需要设置三个属性 JAVA_HOME Path CLASSPATH, 在没安装过 JDK 的环境下, Path 属性是本来存在的 而 JAVA_HOME 和 CLASSPATH 是不存在 的 单击 新建 按钮, 然后在 变量名 文本框中输入 JAVA_HOME, 顾名思意该变量的含义就是 Java 的安装路径, 然后在 变量值 文 本框中输入刚才安装的路径 C:\jdk1.7 其次在系统变量里面找到

18 8 Android 程序开发入门教程 Path, 然后单击 编辑 按钮,Path 变量的含义就是系统在任何路径下都可以识别 Java 命令, 则变量值为.;%JAVA_HOME%\bin, 再单击 新建 按钮, 然后在 变量名 文本框中输入 CLASSPATH, 该变量的含义是为 Java 加载类 (class or lib) 路径, 只有类在 CLASSPATH 中,Java 命令才能识别 其值为.;%JAVA_HOME% \lib\dt.jar;%java_home%\lib\toos.jar Android Studio 介绍与使用 Android Studio 是官方集成开发环境 (IDE), 用于开发 Android 应用程序 ; 它基于 IntelliJ IDEA, 是一款强大的代码编辑器和开发工具 1. 智能代码编辑器 Android Studio 的核心是一个智能代码编辑器, 可进行高级代码完成 重构和代码分析 这款功能强大的代码编辑器可帮助用户成为更高产的 Android 应用开发者, 界面如图 1-4 所示 2. 代码模板和 GitHub 集成 图 1-4 Android Studio 编辑器 新项目向导让开始一个新项目变得前所未有的简单 可使用适用于不 同模式 ( 如抽屉式导航栏和视图分页器 ) 的模板代码开始项目, 甚至可以 从 GitHub 导入 Google 代码示例, 界面如图 1-5 所示

19 第 1 章 Android 结构和开发环境配置 9 图 1-5 GitHub 代码导入 3. 多屏幕应用开发 构建适用于 Android 手机 平板电脑 Android Wear Android TV Android Auto 以及 Google Glass 的应用 Android Studio 内全新的 Android 项目视图和模块支持让应用项目和资源管理变得更加轻松, 界面如图 1-6 所示 图 1-6 Android 项目视图

20 10 Android 程序开发入门教程 4. 用于模拟所有形状和尺寸的虚拟设备 Android Studio 预先配置了经过优化的模拟器映像 经过更新和精简的虚拟设备管理器可为常见 Android 设备提供预定义设备配置文件 5.Android 版本借助 Gradle 演进 ( 图 1-7) 借助 Gradle 可以在同一项目工程中创建多个具有不同功能的应用 通过使用 Maven 更加方便管理应用依赖项, 同时允许用户使用 Android Studio 或命令行构建 APK 图 1-7 Gradle 配置 有关 Android Studio 所提供功能的更多详细信息, 请阅读 Android Studio 基础知识指南, 网址为 Android Studio 的安装比较简单 安装完 JDK, 从 com/studio/index.html 下载最新的 Android Studio 版本 ( 若下载失败, 请到 Android Studio 中文网站下载, 下载网址 : studio/index.html), 下载完成后双击运行安装即可, 安装界面如图 1-8 所示 没有安装 JDK 时,Android Studio 安装会报 JDK 不存在错误, 因此 在安装 Android Studio 前, 首先确认 JDK 是否安装正确

21 第 1 章 Android 结构和开发环境配置 11 图 1-8 Android Studio 安装界面 单击 Next 按钮后, 界面如图 1-9 所示 图 1-9 Android Studio 选择界面 在此界面中, 若以前安装过 Android 的 SDK, 可以不选择 Android SDK 选项, 在单击 Next 按钮后选择本地存储的 SDK 路径 单击 Next 按钮后, 界面如图 1-10 所示 第一个路径为 Android Studio 的安装路径, 第二个路径为 Android SDK 的安装路径, 请自行选择安装 路径

22 12 Android 程序开发入门教程 图 1-10 Android Studio 安装路径界面 安装完成后, 首次运行 Android Studio 会提示更新 SDK, 可以默认, 也可选择 SDK 的更新路径, 单击 Next 按钮即可 效果如图 1-11 所示 图 1-11 Android Studio SDK 首次更新界面在这里简要说一下安装 HAXM 的作用 英特尔的硬件加速执行管理器 (Intel HAXM) 是一种硬件辅助虚拟化引擎 ( 虚拟机管理程序 ), 利用英特尔虚拟化技术 (Intel VT) 加速主机上的安卓应用模拟 简单来说, 就是

23 第 1 章 Android 结构和开发环境配置 13 可以利用它来提高安卓虚拟机的运行速度, 但 AMD 系列的 CPU 不能安装 运行 若因为其他问题下载失败, 可以去此网站下载最新版本的 HAXM: ution-manager 另外, 若出现安装失败的情况, 请读者查阅网络等其他资料, 在此不再详细介绍 安装 Android SDK 有时需要用到不同版本的 SDK, 因此需要下载几个常用的 SDK 在 Android SDK 首次更新完成后, 单击 Configure 中的 SDK Manager 选项 ( 图 1-12), 出现如图 1-13 所示的界面 图 1-12 Android Studio 欢迎界面 图 1-13 Android SDK 管理界面

24 14 Android 程序开发入门教程 读者至少需要下载 SDK Tools SDK Platform tools 和 SDK Platform 来进行开发, 还有 documentation( 文档 ) samples( 子程序 ) 和 USB Driver (USB 驱动 ),Google APIs 和其他平台 SDK( 如三星平板 ), 读者可根据需要下载 下载安装过程比较慢, 请读者耐心等待 如果使用 Android 中的 adb 命令, 最好要配置环境变量 在计算机高级系统设置的环境变量中, 选择系统变量的 Path 进行编辑, 在最后添加 Android 中 adb.exe 文件的路径 ( 用英文输入法下的分号隔开 ) 1.3 一个简单例子 HelloWorld 现在, 我们就可以创建第一个 Android 应用程序了 1) 第一次创建应用程序时, 请读者在 Android Studio 的欢迎界面, 单击 Start a new Android Studio project 选项, 单击后的显示界面如图 1-14 所示 可以在此界面中分别设置 Application name( 应用名称 ) Company Domain ( 公司域名 ) Package name( 包名 ) Project location( 项目存放路径 ) 图 1-14 新建项目 Package name 需要输入两层或以上包名, 如 com.example.helloworld 如果不是第一次建立项目, 可以选择 File New New Project 来新 建项目

25 第 1 章 Android 结构和开发环境配置 15 2) 单击 Next 按钮后, 显示如图 1-15 所示 可以选择应用程序在何种 设备上运行, 在这里选择 Phone and Tablet 复选框, 并设置最小运行版本 如无特殊要求, 选择默认设置即可 图 1-15 选择运行设备 3) 单击 Next 按钮, 显示如图 1-16 所示 可以选择在手机上创建何种 活动, 在此选择一个 Empty Activity( 空活动 ) 图 1-16 创建活动

26 16 Android 程序开发入门教程 4) 单击 Next 按钮, 显示如图 1-17 所示 在此界面中, 可以自定义 Activity Name( 活动名 ) 以及 Layout Name( 所引用的布局文件名 ) 最后单击 Finish 按钮来完成新建项目 创建好后的 Java 代码如下 图 1-17 自定义活动 package com.example.helloworld; import android.support.v7.app.appcompatactivity; import android.os.bundle; public class MainActivity extends AppCompatActivity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } } 创建后的 XML 代码如下 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin"

27 第 1 章 Android 结构和开发环境配置 17 android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context="com.example.helloworld.mainactivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello World!" /> </RelativeLayout> 5) 单击菜单栏中的运行按钮运行第一个项目 ( 图 1-18), 会弹出选择运行设备界面 ( 图 1-19), 单击 Create New Emulator 按钮, 之后一直选择默认就可以创建一个新的虚拟机 创建完成后单击 OK 按钮启动此虚拟机 图 1-18 运行项目 图 1-19 选择运行设备 6) 项目的运行结果 ( 图 1-20) 例子中的程序结构和相关说明请参阅第 2 章的相关内容, 在此不作分 析说明 程序的运行目标可以是模拟器或者真机 ; 真机运行需要进行必要 的设置, 步骤如下 1) 将手机通过数据线连接到计算机上 2) 设置 Android 手机为 USB 调试模式 方法 : 在 设置 开发者 选项 中, 选择 USB 调试

28 18 Android 程序开发入门教程 3) 如果是 Windows 系统, 系统会提示安装驱动 安装驱动程序后, 再 次运行程序时, 在选择设备界面 ( 图 1-21) 会出现设备信息, 单击 OK 按 钮即可在真机上运行程序 图 1-20 运行结果 图 1-21 真机选择 真机的运行结果与虚拟机相同, 在此不再赘述

29 第 1 章 Android 结构和开发环境配置 Android 调试及测试 断点调试用 Android Studio 开发 Android 程序时, 跟其他可视化程序一样, 可以进行断点单步调试, 步骤如下 1) 设置断点 : 在编码窗体的左边框上用鼠标单击, 会出现一个小圆点 ( 图 1-22) 图 1-22 设置断点 2) 在 Debug 模式下运行程序, 进入调试状态 : 通过单击工具栏上的小虫按钮 ( 图 1-23) 启动程序的调试模式 ; 当程序运行到断点处时就会停下, 这时可以按照下面的功能键按需求进行调试 图 1-23 启动调试 Step Over( 快捷键 F8 ) 在单步执行时, 在函数内遇到子函数时 不会进入子函数内单步执行, 而是直接执行完子函数, 并移动到 下一条语句 ; Step Into( 快捷键 F7 ) 单步执行, 遇到子函数继续单步执行 ; Step Out( 快捷键 Shift+F8 ) 单步执行到子函数内时, 可直接执行完子函数余下部分, 并返回到上一层函数 3) 查看断点时变量当前值, 如图 1-24 所示 图 1-24 调试窗口

30 20 Android 程序开发入门教程 LogCat 日志监视 LogCat 是 Android SDK 中的一个通用日志工具 在程序的运行过程中可以通过 LogCat 打印状态信息和错误信息等 LogCat 另外一个重要的用途是, 在程序启动和初始化的过程中向开发者报告进展状况 当应用程序在模拟器中加载并启动时,Android Studio 会自动显示底部菜单布局, 关于程序运行状态的各种信息就会出现在底部的 LogCat 视图中 ( 图 1-25) LogCat 视图中出现的信息, 按照消息产生的顺序, 最开始是关于模拟器启动的消息, 接着是 Android 操作系统启动的消息, 然后是各种应用程序启动的消息, 最后才是与加载程序启动相关的消息 在 LogCat 视图的工具栏中可以看到内容为 Verbose 等的下拉列表, 它们的作用是对消息进行过滤 图 1-25 LogCat 视图窗口 Verbose 显示所有类型的消息 ; Debug 显示 Debug Information Warning 和 Error 消息 ; Info 只显示 Information Warning 和 Error 消息 ; Warn 只显示 Warning 和 Error 消息 ; Error 只显示 Error 消息 ; Assert 只显示 Assert( 断言 ) 消息 LogCat 过滤器设置 在 LogCat 视图的右方单击 Show only selected application 下拉菜单, 选择 Edit Filter Configuration( 图 1-26), 进入添加过滤器设置界面 ( 图 1-27), 在 Filter Name 文本框中可定义一个过滤器名字, Log Tag Log Message 等表示通过不同的方式过滤, 常见通过设置 Log Tag 和 Log Level 来过滤 图 1-26 LogCat 过滤选择

31 第 1 章 Android 结构和开发环境配置 21 图 1-27 LogCat 过滤器设置 在代码的声明中添加 import android.util.log;, 在日志输出位置, 添 加日志输出语句, 代码如下 package com.example.helloworld; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.util.log; public class MainActivity extends AppCompatActivity { public static final String protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // 日志的第一个参数与设置的 Log Tag 相匹配 // 推荐读者使用全局变量 Log.i(TAG, " 测试 LogCat1"); Log.w(TAG, " 测试 LogCat2"); Log.e(TAG, " 测试 LogCat3"); } } 日志输出结果如图 1-28 所示 图 1-28 LogCat 输出结果

32 22 Android 程序开发入门教程 ADB 介绍 ADB 是用来管理模拟器或者真机的一个通用调试工具, 该工具功能强大 首次使用需配置环境变量, 步骤如下 : 打开 控制面板 系统和安全 系统 高级系统设置 环境变量, 打开系统变量中的 Path 变量, 在最后添加 ;D:\WorkSpace\ASSDK\platform-tools ( 请读者将 AndroidSDK 路径替换为自己安装的 SDK 路径 ), 保存后打开 CMD 就可以使用 ADB 命令了 ADB 主要有以下 4 项功能 : 运行设备的 Shell( 命令行 ); 管理模拟器或设备的端口映射 ; 计算机和设备之间上传 / 下载文件 ; 将本地 apk 软件安装至模拟器或 Android 设备 下面介绍常见命令 (1) 查看当前模拟器或 Android 设备实例 ADB devices 一般在使用前都会先使用这个命令来查看模拟器状态 通过这个命令, 可以得到 ADB 的回应信息, 如图 1-29 所示 图 1-29 Android 模拟器设备可以看到 ADB 作为回应, 为每个实例都制订了相关信息 1) 序列号本例中为 emulator ) 实例连接状态 Offiline: 此实例没有与 ADB 连接或者无法响应 Device: 此实例正与 ADB 连接 (2) 从本机上复制文件到模拟器或 Android 设备 adb push < 本地路径 >< 远程路径 > (3) 从模拟器复制文件到模拟器或 Android 设备 adb pull < 远程路径 >< 本地路径 > 在这些命令中,< 本地路径 > 和 < 远程路径 > 分别为直通向自己的机器和模拟器 / 设备实例 ( 远程 ) 上的目标文件 / 目录的路径 下面是一个例子 : adb push android.txt /sdcard/android.txt (4) 安装 apk 应用程序 可以从计算机上复制一个 apk 应用到模拟器或 Android 设备上, 通过

33 第 1 章 Android 结构和开发环境配置 23 adb install <path_to_apk> 命令安装 (5) 使用 Shell 命令输入 adb shell 就可以进入 Shell 命令行 可以使用一些常用的 Shell 命令, 如通过 ls 命令列出文件, 用 cd 命令改变路径等, 使用 exit 可以退出 Shell 命令, 如图 1-30 所示 图 1-30 adb shell 命令下的操作 Android Studio 的常用快捷键 Android Studio 的常用快捷键见表 1-1 表 1-1 常用快捷键快捷键说明 Alt+Enter 导入包, 自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码 ( 如 get set 方法 构造函数等 ) Ctrl+E 或者 Alt+Shift+C 最近更改的代码 Ctrl+R 替换文本 Ctrl+F 查找文本 Ctrl+Shift+Space 自动补全代码 Ctrl+ 空格 代码提示 Ctrl+Alt+Space 类名或接口名提示 Ctrl+P 方法参数提示 Ctrl+Shift+Alt+N 查找类中的方法或变量 Alt+Shift+C 对比最近修改的代码 Shift+F6 重构 - 重命名 Ctrl+X 删除行 Ctrl+D 复制行 Ctrl+/ 或 Ctrl+Shift+/ 注释 Ctrl+J 自动代码

34 24 Android 程序开发入门教程 快捷键 说 明 Ctrl+E 最近打开的文件 Ctrl+H 显示类结构图 Ctrl+Q 显示注释文档 Alt+F1 查找代码所在位置 Alt+1 快速打开或隐藏工程面板 Ctrl+Alt+ Left/Right 返回至上次浏览的位置 Alt+ Left/Right 切换代码视图 Alt+ Up/Down 在方法间快速移动定位 Ctrl+Shift+Up/Down 代码向上 / 下移动 F2 或 Shift+F2 高亮错误或警告快速定位 Ctrl+W 选中代码, 连续按会有其他效果 Ctrl+Up/Down 光标跳转到第一行 / 最后一行 Ctrl+B 快速打开光标处的类或方法 续表 本章小结 本章是 Android 程序开发入门章节, 让初学者对 Android 手机应用开发环境有了初步的了解 主要介绍了 Android 概述, 开发环境的配置过程, 并通过一个简单的例子说明了 Android 项目的创建过程, 最后叙述了常用的 Android 测试调试方法 一 简答题 习题 1. 简单描述 Android 的起源与发展过程 2. 试举例说明至少 3 种目前流行的手机操作系统, 并比较它们的优缺点 3. 叙述 Android 开发环境配置基本过程 二 实训题编写程序, 第一个变量值为 3, 第二个变量值为 0, 计算 3/0 的值, 要求 : 1 日志标签 MYFIRST 2 输出日志 : a) 第一个变量值为 3, 类型为 Information b) 第二个变量值为 0, 类型为 Warn c) 计算结果错误, 除数不能为 0, 类型为 Error

35 第 E 章 Android 程序结构与布局 本章导读通过第 1 章的学习, 读者已经对 Android 的发展历程 搭建 Android 开发环境有了一个初步的了解, 并了解了第一个 Android 程序的创建过程和程序调试和日志 本章将使读者更加深入接触 Android, 从而掌握应用程序的相关框架以及 Activity 的生命周期等内容, 本章还将介绍界面布局, 使读者对 Android 程序的布局有一定的了解 本章要点 Android 应用程序框架 ; Activity 生命周期 ; 界面布局 Android 程序基本组成结构 2.1 Android 应用程序框架 在第 1 章中我们已经创建了第一个 Android 程序 HelloWorld, 其程序的 Android 视图组成结构如图 2-1 所示 1 manifests 该目录主要存放本工程的配置文件 其中 AndroidManifest. xml 是项目清单文件, 这个文件主要包含程序启动入口 资源声明 权限控 制 用户应用库 运行版本信息等, 此文件列出了应用程序所提供的功能, 以后读者开发好的各种组件需要在该文件中进行配置 如果应用使用到了 系统内置的应用 ( 如电话服务 互联网服务 短信服务 GPS 服务等 ), 读 者还需在该文件中声明使用权限 后面将会详细介绍此文件

36 26 Android 程序开发入门教程 图 2-1 Android 视图结构 2 java 该目录主要存放源代码文件和测试代码文件 3 res 该目录中可以存放程序使用到的图片 界面布局文件及 XML 格式的描述文件等各种资源 存放在这个目录下的资源文件格式有严格的定义, 会相应在 R.java 中自动生成 ID 该目录下包含以下子目录 drawable: 用来放置位图文件 (PNG JPEG GIF), 点九图片文件 (.9.png 屏幕长宽变化时不会失真 ), 以及一些绘制按钮单击等效果的 XML 文件 此目录可以放置不同分辨率的图片, 以适应不同的手机屏幕 ; layout: 该目录下存放的是手机界面显示的布局文件 ; values: 主要存放一些资源变量值的配置文件 ; mipmap: 放置原生图片, 常见的像应用的图标文件 (ic_launcher. png) 此外, 还有其他目录用来存放相应的文件, 比如 menu 目录存放菜单文 件 raw 目录存放音频或其他文件等 下面我们看一下它的 Project 的视图结构 首先单击内容为 Android 的 下拉列表, 然后选择 Project 选项 ( 图 2-2), 结构如图 2-3 和图 2-4 所示 图 2-2 切换 Project 视图

37 第 2 章 Android 程序结构与布局 27 图 2-3 Project 视图的项目 图 2-4 Project 视图引用的类库 1 app/build 该目录包含项目生成的文件及目录, 生成的 apk 文件在 此目录的 outputs 目录下 2 libs 该目录包含项目引用的第三方 jar 包或 os 包 若需要引用第三 方 jar 包或 os 包, 请读者将其复制到此目录下 3 src 该目录包含项目的所有源代码 其中 main 为项目的主要代码, test 为测试代码,androidTest 为测试包

38 28 Android 程序开发入门教程 4 app/build.gradle 该文件用来声明项目的一些设置, 比如 SDK 的最高最低版本 构建工具版本 依赖的包等 在 res 资源目录下所有资源的命名首字母为小写英文字母, 后续可以由小写英文字母 数字. 或 _ 组成 AndroidManifest.xml 结构每个 Android 的应用程序都必须包含一个 AndroidManifest.xml, 且文件名是固定的, 不能修改 应用程序需要通过它向 Android 系统提供一些必需的信息, 且需要在应用程序运行前提供给系统, 如图 2-5 所示 这些信息包括 Activities Services BroadcastReceivers 和 ContentProviders 等, 所以, 这些信息需要在 AndroidManifest.xml 文件中注册后才能使用 图 2-5 AndroidManifest.xml 结构 1.AndroidManifest.xml 的功能 AndroidManifest.xml 主要包含以下功能 说明应用程序的 Java 数据包, 数据包名是应用程序的唯一标识 ; 描述应用程序所具有的组件, 以及组件执行的过滤器 ; 声明应用程序所必须具备的权限, 用以访问受保护的部分 API, 以 及与其他应用程序的交互 ; 列举应用程序运行时需要的环境配置信息, 这些声明信息只在程 序开发和测试时存在, 发布前将被删除 2.AndroidManifest.xml 的结构和规则 AndroidManifest.xml 文件的结构 元素, 以及元素的属性, 可以在 Android SDK 文档中查看详细说明 而在查看这些众多的元素以及元素的属 性前, 需要先了解这些元素在命名 结构等方面的规则 1 元素在所有的元素中, 只有 <manifest> 和 <application> 是必需的, 且只能出现一次 如果一个元素包含有其他子元素, 必须通过子元素的属 性来设置其值 处于同一层次的元素的说明是没有顺序优先关系的

39 第 2 章 Android 程序结构与布局 29 2 属性按照常理, 所有的属性都是可选的, 但是有些属性是必须设置的 那些真正可选的属性, 即使不存在, 其也有默认的数值项说明 除了根元素 <manifest> 的属性外, 所有其他元素属性的名字都是以 android: 为前缀的 3 定义类名所有的元素名都对应其在 SDK 中的类名, 如果用户自己定义类名, 则必须包含类的数据包名, 如果类与 application 处于同一数据包中, 可以直接简写为. 4 资源项说明当需要引用某个资源时, 其采用如下格式 :@[package:] type/name 例如 <activity android:icon="@drawable/icon"... > 在 HelloWorld 的例子中产生的 AndroidManifest.xml 文件如下 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android=" 3 package="com.example.helloworld"> 4 <application 5 android:allowbackup="true" 6 android:icon="@mipmap/ic_launcher" 7 android:label="@string/app_name" 8 android:supportsrtl="true" 9 android:theme="@style/apptheme"> 10 <activity android:name=".mainactivity"> 11 <intent-filter> 12 <action android:name="android.intent.action.main" /> 13 <category android:name="android.intent.category.launcher" /> 14 </intent-filter> 15 </activity> 16 </application> 17 </manifest> 第 1 行为头部 XML 信息说明 ; 第 2 行开始是 manifest 项 根节点, 其属性包括 schemas URL 地址 包名, 以及程序的版本说明 ; 第 4 行开始是 manifest 的子节点 application, 其属性包括程序图标 程序名称 程序主题 表示引用资源, launcher 表示引用的是 mipmap 资源中的 ic_launcher, 可以在其源工程的 res/mipmap 中找到 ; 第 10 行开始是 application 的子节点 activity, 其属性包括 activity 的名称等, 其子节点 intent-filter 则是对 activity 的说明 ; intent-filter 中,action android:name="android.intent.action.main" 和 category android:name="android.intent.category.launcher" 说明该 activity 为程序入口

40 30 Android 程序开发入门教程 界面布局文件与 Activity 在生成的资源文件中包含一个 activity_main.xml 文件, 该文件为界面布局文件, 提供给用户良好的 UI 交互, 代码如下 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout 3 xmlns:android=" 4 xmlns:tools=" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:paddingbottom="@dimen/activity_vertical_margin" 8 android:paddingleft="@dimen/activity_horizontal_margin" 9 android:paddingright="@dimen/activity_horizontal_margin" 10 android:paddingtop="@dimen/activity_vertical_margin" 11 tools:context="com.example.helloworld.mainactivity"> 12 <TextView 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:text="hello World!" /> 16 </RelativeLayout> 此布局的第 2 行到第 11 行为相对布局 ( 有关布局的详细描述, 参见 2.3 节 ), 相关的属性见表 2-1; 第 12 行到第 15 行表示在该布局中有一个 TextView 控件, 宽度和高度随内容的变动而变动, 显示的内容为 Hello World!, 相关属性见表 2-2 表 2-1 布局相关属性 属 性 值 含 义 layout_width match_parent 宽度与父布局相匹配 layout_height match_parent 高度与父布局相匹配 底部留空隙 16dp( 定义在 res/values/dimen.xml 中, 下同 ) 左边留空隙 16dp 右边留空隙 16dp 顶部留空隙 16dp tools/context com.example.helloworld.mainactivity 根据引用的当前值渲染此布局 ( 例如引用的类中使用 了主题, 在此布局中会显示出主题效果 )

41 第 2 章 Android 程序结构与布局 31 表 2-2 控件相关属性 属性值含义 layout_width wrap_content 宽度适应控件大小 layout_height wrap_content 高度适应控件大小 text Hello World! 显示的文本 该文件通过 java 目录下的 MainActivity.java 加载运行显示 MainActivity. java 文件内容如下 public class MainActivity extends AppCompatActivity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main) } } 通过 Activity 中 oncreate 的 setcontentview 方法加载 activity_main.xml, 实现界面显示 R.layout.activity_main 是由 Android 系统自动对 res 目录下的 activity_main.xml 文件转成的资源 ID 号, 与 activity_main.xml 文件一一对应 ;activity_main.xml 文件中如果有控件有属性 android:id= "@+id/textview1", 也将有 R.id.textview1 的资源 ID 号与该控件建立一一对应关系 生命周期的意义 2.2 Activity 的生命周期 在 Android 应用程序中, 所有的 Android 组件都有它自己的生命周期, 代表这一组件从创建到销毁的整个过程 维护一个 Activity 的生命周期非常重要, 因为 Activity 随时会被系统回 收掉 Android 是一个支持多任务的操作系统, 给用户带来了极大便利, 不 过这也有很大的隐患 如果在后台运行的程序太多, 会导致内存不足, 使 得有些程序的 Activity 被系统销毁 Android 针对 Activity 的管理使用的是栈的方式 就是说某一个时刻只 有一个 Activity 处在栈顶, 当这个 Activity 被销毁后, 下面的 Activity 才有 可能浮到栈顶 ; 或者有一个新的 Activity 被创建出来, 则旧的 Activity 就被 压栈下去了 只有处于栈顶的 Activity 是处于前台状态的 当启动一个新的 Activity

42 32 Android 程序开发入门教程 时, 系统会将它置于栈顶, 同时使其运行, 这个时候先前处于栈顶的 Activity 则被压栈, 只有当栈顶的 Activity 退出时先前的 Activity 才可能重新处于栈顶 Android 的生命周期结构首先来观察下 Activity 的生命周期结构图, 如图 2-6 所示 图 2-6 Activity 的生命周期结构图 通过对图 2-6 的观察, 可以看到有 3 个重要的循环 1) 全生命周期, 从 oncreate() 开始到 ondestroy() 结束 Activity 在 oncreate() 设置所有的 全局 状态, 在 ondestory() 释放所有的资源

43 第 2 章 Android 程序结构与布局 33 2) 可视的生命周期, 从 onstart() 开始到 onstop() 结束 在这段时间, 可以看到 Activity 在屏幕上, 但有可能不在前台, 不能和用户交互, 也就是说该 Activity 处于隐藏状态 在这两个接口之间, 需要保持显示给用户的 UI 数据和资源等 onstart() onstop() 都可以被多次调用, 因为 Activity 随时可以在可见和隐藏之间转换 3) 前台的生命周期, 从 onresume() 开始到 onpause() 结束 在这段时间里, 该 Activity 处于所有 Activity 的最前面, 可以和用户进行交互 Activity 可以经常性地在 resumed( 恢复 ) 和 paused( 暂停 ) 状态之间切换 Android 生命周期中的 4 种状态如下 1 开始 Activity 在这个阶段依次执行 3 个生命周期方法 oncreate onstart 和 onresume 2 Activity 失去焦点如果在 Activity 获得焦点的情况下进入其他的 Activity 或应用程序, 这时当前的 Activity 就会失去焦点 在这一阶段, 会依次执行 onpause 和 onstop 方法 3 Activity 重新获得焦点如果 Activity 重新获得焦点, 会依次执行 3 个生命周期方法 onrestart onstart 和 onresume 4 关闭 Activity 当 Activity 被关闭时, 系统会依次执行 3 个生命周期方法 onpause onstop 和 ondestroy Activity 的生命周期中的 7 个方法, 分别如下所示 1 void oncreate(bundle savedinstancestate) 当 Activity 被第一次加载时执行 新启动一个程序的时候, 其主窗体的 oncreate 事件就会被执行 2 void onstart() Activity 变为在屏幕上对用户可见时调用 oncreate 事件之后执行 或者当前窗体被交换到后台后, 在用户重新查看窗体前已经过去了一段时间, 窗体已经执行了 onstop 事件, 但是窗体和其所在进程并没有被销毁, 用户再次重新查看窗体时会执行 onrestart 事件, 之后会跳 过 oncreate 事件, 直接执行窗体的 onstart 事件 3 void onresume() Activity 开始与用户交互时调用 onstart 事件之 后执行或者当前窗体被交换到后台后, 在用户重新查看窗体时, 窗体还没有被销毁, 也没有执行过 onstop 事件, 则会跳过窗体的 oncreate 和 onstart 事件, 直接执行 onresume 事件 4 void onpause() Activity 被暂停时调用 该方法用于保存活动状态, 也是保护现场 5 void onstop() Activity 被停止并转为不可见阶段及后续的生命周 期事件时调用 onpause 事件之后执行, 如果一段时间内用户还没有重新查 看该窗体, 则该窗体的 onstop 事件将会被执行 ; 或者用户直接按了 Back 键, 将该窗体从当前 Task 中移除, 也会执行该窗体的 onstop 事件

44 34 Android 程序开发入门教程 6 void onrestart() 重新启动 Activity 时调用 该活动仍在栈中, 而不是启动新的活动,onStop 事件执行后, 如果窗体和其所在的进程没有被系统销毁, 此时用户又重新查看该窗体, 则会执行窗体的 onrestart 事件, onrestart 事件后会跳过窗体的 oncreate 事件直接执行 onstart 事件 7 void ondestroy() Activity 被完全从系统内存中移除时调用 该方法被调用可能是因为有人直接调用 onfinish() 方法或者系统决定停止该活动以释放资源, 在窗体的 onstop 事件之后, 如果没有再次查看该窗体,Activity 则会被销毁 这 7 个事件回调方法表示了一个 Activity 完整的生命周期, 可以通过实现这些方法来追踪 Activity 的生命周期 生命周期追踪实例下面将通过代码来演示 Activity 的生命周期 1 public class MainActivity extends AppCompatActivity { 2 private static final String TAG = "ActivityLife"; 4 public void oncreate(bundle savedinstancestate) { 5 super.oncreate(savedinstancestate); 6 setcontentview(r.layout.activity_main); 7 Log.e(TAG, "oncreate"); 8 // 正在创建活动 9 } 11 protected void onstart() { 12 super.onstart(); 13 Log.e(TAG, "onstart"); 14 // 活动即将变得可见 15 } 17 protected void onresume() { 18 super.onresume(); 19 Log.e(TAG, "onresume"); 20 // 活动已经可见 21 } 23 protected void onpause() { 24 super.onpause(); 25 Log.e(TAG, "onpause"); 26 // 另一个活动是焦点 ( 这个活动将被暂停 ) 27 }

45 第 2 章 Android 程序结构与布局 protected void onstop() { 30 super.onstop(); 31 Log.e(TAG, "onstop"); 32 // 这个活动不再可见 33 } 35 protected void onrestart() { 36 super.onrestart(); 37 Log.e(TAG, "onrestart"); 38 // 活动即将再次启动 39 } 41 protected void ondestroy() { 42 super.ondestroy(); 43 Log.e(TAG, "ondestroy"); 44 // 活动已销毁 45 } 46 } 47 当打开应用程序后, 先调用了 oncreate() onstart() onresume() 这 3 个方法, 如图 2-7 所示 图 2-7 LogCat 日志信息 (1) 按下 Back 键后, 该页面将结束, 这时 Activity 将先后调用 onpause() onstop() ondestroy() 这 3 个方法, 如图 2-8 所示 图 2-8 LogCat 日志信息 (2) 按下 Home 键,Activity 将先后调用 onpause() onstop() 这两个方法, 保存 Activity 的一些信息, 如图 2-9 所示 图 2-9 LogCat 日志信息 (3) 当我们再启动时,Activity 将先后调用 onrestart() onstart() onresume() 这 3 个方法, 如图 2-10 所示

46 36 Android 程序开发入门教程 图 2-10 LogCat 日志信息 (4) 2.3 界面布局 布局 (Layout) 是用户界面结构的描述, 定义了界面中所有的元素 结构和相互依存关系 Android 定义了 5 大布局, 分别是单帧布局 (FrameLayout) 线性布局 (LinearLayout) 相对布局(RelativeLayout) 表格布局(TableLayout) 和绝对布局 (AbsoluteLayout) 下面将逐一介绍这 5 大布局 单帧布局单帧布局 (FrameLayout) 是 5 大布局中最简单的一个布局 ; 它在屏幕上开辟了一块区域, 在这块区域中可以添加多个子控件, 但是所有的子控件都会被对齐到屏幕的左上角 FrameLayout 的大小由其下属子控件中尺寸最大的那个子控件来控制 如果子控件的大小都一样, 同一时刻只能看到最上面的子控件, 其他的则被其遮挡 FrameLayout 继承自 ViewGroup 类, 除了继承自父类的属性和方法, FrameLayout 类中也包含了自己特有的一些属性和方法, 见表 2-3 表 2-3 FrameLayout 类特有的属性和方法 XML 属性相关方法说明 android:foreground setforeground(drawable) 设置绘制在所有子控件之上的内容 android:foregroundgravity setforegroundgravity(int) 设置绘制在所有子控件之上内容的 gravity 属性 下面就来看一个 FrameLayout 的例子, 代码如下 1 <?xml version="1.0" encoding="utf-8"?> 2 <FrameLayout 3 xmlns:android=" 4 xmlns:tools=" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context="com.example.framelayout.mainactivity"> 8 <TextView 9 android:layout_width="300dp" 10 android:layout_height="300dp" 11 android:layout_gravity="center" 12 android:background="#ffffff" /> 13 <TextView

47 第 2 章 Android 程序结构与布局 android:layout_width="250dp" 15 android:layout_height="250dp" 16 android:layout_gravity="center" 17 android:background="#ffc1c1" /> 18 <TextView 19 android:layout_width="200dp" 20 android:layout_height="200dp" 21 android:layout_gravity="center" 22 android:background="#ff83fa" /> 23 <TextView 24 android:layout_width="150dp" 25 android:layout_height="150dp" 26 android:layout_gravity="center" 27 android:background="#ff00ff" /> 28 <TextView 29 android:layout_width="100dp" 30 android:layout_height="100dp" 31 android:layout_gravity="center" 32 android:background="#ee00ee" /> 33 <TextView 34 android:layout_width="50dp" 35 android:layout_height="50dp" 36 android:layout_gravity="center" 37 android:background="#cd00cd"/> 38 </FrameLayout> 效果如图 2-11 所示 图 2-11 FrameLayout

48 38 Android 程序开发入门教程 线性布局线性布局 (LinearLayout) 是一种重要的界面布局, 也是经常使用到的一种界面布局 ; 它将自己包含的子元素按照一个方向排列 方向的设置通过 Android:orientation="vertical"( 竖直 ) 或者 Android:orientation="horizontal" ( 水平 ) 来实现 如果垂直排列, 则每行仅包含一个界面元素 ; 如果水平排列, 则每列仅包含一个界面元素 ;LinearLayout 的常用 XML 属性及相关方法的说明见表 2-4 表 2-4 LinearLayout 的 XML 属性及相关方法的说明 XML 属性 相关方法 说 明 android:gravity setgravity (int) 设置布局管理器内组件的对齐方式 android:orientation setorientation (int) 设置布局管理器内组件的排列方式 android:weightsum setweightsum (float) 设置子控件的总比例值 LinearLayout 中使用 gravity 属性来设置其内部子控件的对齐方式, 当要为 gravity 设置多个值时, 用 来分隔 gravity 属性值及其说明见表 2-5 表 2-5 gravity 属性值及其说明 属性值 说 明 top 不改变控件大小, 对齐到容器顶部 bottom 不改变控件大小, 对齐到容器底部 left 不改变控件大小, 对齐到容器左侧 right 不改变控件大小, 对齐到容器右侧 center_vertical 不改变控件大小, 对齐到容器纵向中央位置 center_horizontal 不改变控件大小, 对齐到容器横向中央位置 center 不改变控件大小, 对齐到容器中央位置 fill_vertical 若有可能, 纵向拉伸以填满容器 fill_horizontal 若有可能, 横向拉伸以填满容器 fill 若有可能, 纵向横向同时拉伸以填满容器 下面是一个 LinearLayout 的例子, 代码如下 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android=" 4 xmlns:tools=" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:orientation="vertical" 8 tools:context="com.example.linearlayout.mainactivity"> 9 <TextView 10 android:layout_width="match_parent" 11 android:layout_height="80dp" 12 android:text="linearlayout"

49 第 2 章 Android 程序结构与布局 android:background="@android:color/holo_blue_bright" 14 android:gravity="left center" 15 android:textsize="24sp" 16 /> 17 <TextView 18 android:layout_width="match_parent" 19 android:layout_height="80dp" 20 android:text="linearlayout" 21 android:textsize="24sp" 22 android:background="@android:color/holo_red_light" 23 android:layout_gravity="center" 24 /> 25 <TextView 26 android:layout_width="wrap_content" 27 android:layout_height="80dp" 28 android:text="linearlayout" 29 android:background="@android:color/holo_green_light" 30 android:textsize="24sp" 31 android:layout_gravity="center" 32 /> 33 </LinearLayout> 效果如图 2-12 所示 图 2-12 LinearLayout

50 40 Android 程序开发入门教程 相对布局相对布局 (RelativeLayout) 是一种非常灵活的布局方式, 能够通过指定界面元素与其他元素的相对位置关系, 确定界面中所有元素的布局位置, 比较适合一些复杂界面的布局 其特点是能够最大程度保证在各种屏幕类型的手机上正确显示界面布局 RelativeLayout 里常用的位置属性如下 android:layout_toleftof 该控件位于引用控件的左方 ; android:layout_torightof 该控件位于引用控件的右方 ; android:layout_above 该控件位于引用控件的上方 ; android:layout_below 该控件位于引用控件的下方 ; android:layout_alignparentleft 该控件是否对齐父控件的左端 ; android:layout_alignparentright 该控件是否对齐父控件的右端 ; android:layout_alignparenttop 该控件是否对齐父控件的顶部 ; android:layout_alignparentbottom 该控件是否对齐父控件的底部 ; android:layout_centerinparent 该控件是否相对于父控件居中 ; android:layout_centerhorizontal 该控件是否横向居中 ; android:layout_centervertical 该控件是否垂直居中 RelativeLayout 中取值为像素的属性见表 2-6 表 2-6 RelativeLayout 中取值为像素的属性 属性说明 android:layout_marginleft android:layout_marginright android:layout_margintop android:layout_marginbottom android:layout_margin android:paddingleft android:paddingright android:paddingtop android:paddingbottom RelativeLayout 例子的代码如下 当前控件左侧的留白 当前控件右侧的留白 当前控件上方的留白 当前控件下方的留白 当前控件上下左右四个方向的留白 当前控件中内容距离控件左边留白 当前控件中内容距离控件右边留白 当前控件中内容距离控件顶部留白 当前控件中内容距离控件底部留白 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout 3 xmlns:android=" 4 xmlns:tools=" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context="com.example.relativelayout.mainactivity">

51 第 2 章 Android 程序结构与布局 41 8 <TextView 9 android:layout_width="200dp" 10 android:layout_height="200dp" 11 android:text=" 居中控件 " 12 android:textsize="24sp" 13 android:gravity="center center" 14 android:background="@android:color/holo_red_light" 15 android:layout_centervertical="true" 16 android:layout_centerhorizontal="true" 17 android:id="@+id/textview" /> 18 <TextView 19 android:layout_width="50dp" 20 android:layout_height="50dp" 21 android:text=" 控件左上 " 22 android:textsize="20sp" 23 android:gravity="center center" 24 android:background="@android:color/holo_blue_bright" 25 android:layout_above="@+id/textview" 26 android:layout_toleftof="@+id/textview" 27 android:id="@+id/textview2" /> 28 <TextView 29 android:layout_width="50dp" 30 android:layout_height="50dp" 31 android:text=" 控件右下 " 32 android:textsize="20sp" 33 android:gravity="center center" 34 android:background="@android:color/holo_orange_dark" 35 android:layout_aligntop="@+id/textview3" 36 android:layout_torightof="@+id/textview" /> 37 <TextView 38 android:layout_width="50dp" 39 android:layout_height="50dp" 40 android:text=" 控件左下 " 41 android:textsize="20sp" 42 android:gravity="center center" 43 android:background="@android:color/holo_green_light" 44 android:layout_below="@+id/textview" 45 android:layout_alignleft="@+id/textview2" 46 android:id="@+id/textview3" /> 47 <TextView 48 android:layout_width="50dp" 49 android:layout_height="50dp" 50 android:text=" 控件右上 " 51 android:textsize="20sp" 52 android:gravity="center center"

52 42 Android 程序开发入门教程 /> 56 </RelativeLayout> 效果如图 2-13 所示 图 2-13 RelativeLayout 表格布局 表格布局 (TableLayout) 也是一种常用的界面布局 ; 它将屏幕划分网 格, 通过指定行和列可以将界面元素添加到网格中, 网格的边界对用户是不可见的 TableLayout 并不需要明确地声明包含多少行 列, 而是通过添 加 TableRow, 每一行为一个 TableRow 对象 ; 在 TableRow 中可以添加子控 件, 每添加一个子控件即为一列 在 TableLayout 中, 一个列的宽度由该列中最宽的那个单元格指定, 而 表格的宽度是由父容器指定的 在 TableLayout 中, 可以为列设置 3 种属性 1 Shrinkable 如果一个列被标识为 Shrinkable, 则该列的宽度可以进 行收缩, 以使表格能够适应其父容器的大小 2 Stretchable 如果一个列被标识为 Stretchable, 则该列的宽度可以进 行拉伸, 以填满表格中的空闲空间 3 Collapsed 如果一个列被标识为 Collapsed, 则该列会被隐藏

53 第 2 章 Android 程序结构与布局 43 TableLayout 的常用 XML 属性及相关方法的说明见表 2-7 表 2-7 TableLayout 的常用 XML 属性及相关方法的说明 XML 属性 相关方法 说 明 android:collapsecolumns setcolumncollapsed (int,boolean) 设置需要被隐藏的列的列序号 android:shrinkcolumns setshrinkakllcolumns (boolean) 设置允许被收缩的列的列序号 android:stretchcolumns setstretchallcolumns (boolean) 设置允许被拉伸的列的列序号 一个列可以同时具有 Shrinkable 属性和 Stretchable 属性 ; 在这种情况下, 该列的宽度将任意拉伸或收缩以适应父容器 若要设置多个列的收缩拉伸状态, 可以用逗号分隔, 例如设置第 0 列和第 1 列可拉伸, 设置如下 :android:stretchcolumns="0,1" TableLayout 例子的代码如下 1 <?xml version="1.0" encoding="utf-8"?> 2 <TableLayout 3 xmlns:android=" 4 xmlns:tools=" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:stretchcolumns="0,1" 8 tools:context="com.example.tablelayout.mainactivity"> 9 <TableRow 10 android:layout_width="match_parent" 11 android:layout_height="wrap_content"> 12 <TextView 13 android:layout_width="150dp" 14 android:layout_height="60dp" 15 android:text=" 第一行第一列 " 16 android:gravity="center center" 17 android:background="@android:color/holo_orange_dark" /> 18 <TextView 19 android:layout_width="150dp" 20 android:layout_height="60dp" 21 android:text=" 第一行第二列 " 22 android:gravity="center center" 23 android:background="@android:color/holo_blue_bright" /> 24 </TableRow> 25 <TableRow 26 android:layout_width="match_parent" 27 android:layout_height="wrap_content"> 28 <TextView 29 android:layout_width="150dp" 30 android:layout_height="60dp"

54 44 Android 程序开发入门教程 31 android:text=" 第二行第一列 " 32 android:gravity="center center" 33 /> 34 <TextView 35 android:layout_width="150dp" 36 android:layout_height="60dp" 37 android:text=" 第二行第二列 " 38 android:gravity="center center" 39 /> 40 </TableRow> 41 </TableLayout> 效果如图 2-14 所示 图 绝对布局 TableLayout 绝对布局 (AbsoluteLayout) 能通过指定界面元素的坐标位置, 来确定 用户界面的整体布局 因为通过 X 轴和 Y 轴确定界面元素位置后,Android 系统不能根据不同屏幕对界面元素的位置进行调整, 降低了界面布局对不同类型和尺寸屏幕的适应能力, 所以在 Android 1.5 及之后的版本中官方已经弃用此布局, 请读者改用其他布局方法, 这里只简单介绍一下 AbsoluteLayout 例子的代码如下 1 <?xml version="1.0" encoding="utf-8"?> 2 <AbsoluteLayout xmlns:android=" 3 android:layout_width="match_parent"

55 第 2 章 Android 程序结构与布局 45 4 android:layout_height="match_parent" > 5 <TextView 6 android:layout_width="100dp" 7 android:layout_height="80dp" 8 android:layout_x="50px" 9 android:layout_y="50px" 10 android:background="#ffff00" 11 android:text="(50,50)" /> 12 <TextView 13 android:layout_width="100dp" 14 android:layout_height="80dp" 15 android:layout_x="200px" 16 android:layout_y="200px" 17 android:background="#ff0000" 18 android:text="(200,200)" /> 19 </AbsoluteLayout> 效果如图 2-15 所示 图 2-15 AbsoluteLayout 本章小结 本章主要介绍 Android 应用程序的基本结构,Activity 的生命周期和程 序的 5 种界面布局 本章内容是 Android 应用程序的基础, 要求读者对 Android 应用程序的组成结构 Activity 生命周期能初步理解和掌握, 能了 解 5 种界面布局的使用, 熟练掌握线性布局 相对布局的使用过程

56 46 Android 程序开发入门教程 习 题 一 简答题 1. 简述 Android 应用程序的基本文件结构, 说明 AndroidManifest.xml 的基本组成元素 2. 简述 Activity 的生命周期 可视周期和前台周期之间的区别, Activity 生命周期的 7 个基本方法的含义和作用 3. 简述 5 种界面布局的差别和使用方法 二 程序题 1. 通过 LogCat 日志方式, 测试 Activity 生命周期的 7 个方法的执行过程 2. 编写代码实现如图 2-16 所示布局 图 2-16 布局

57 第 F 章 Android 常用基本控件 本章导读 Android 应用开发中重要的一项内容就是用户界面开发 一个友好的图形用户界面, 可以吸引大批的用户 相反, 一个不友好的界面则会导致应用失去用户 作为一个程序设计者, 必须优先考虑用户的体验感受, 一定要让用户使用起来感到舒适 方便, 程序才能更有价值 Android 提供了大量功能丰富的 UI 组件, 开发者只需要按照一定的规律把这些 UI 组件组合起来, 就可以开发出优秀的图形用户界面 通过学习本章, 读者可以比较全面地了解 UI 的组件 第 3 章代码 本章要点 常见 UI 控件的功能 ; 常用 UI 控件的使用 View 类介绍 3.1 Android 控件基础 android.view.view 类 ( 视图类 ) 表示用户接口组件的基本构造块, 是 Android 中所有控件类的基类 一个视图占用屏幕上的一块矩形区域, 负责 绘制和事件处理 View 用于创建交互式 UI 组件 ( 按钮 文本字段等 ) 的 基类 View 有众多的扩展者, 它们大部分是在 android.widget 包中, 这些继 承者实际上就是 Android 系统中的 控件 View 的直接继承者包括文本视 图 (TextView) 图像视图 (ImageView) 进度条 (ProgressBar) 等 它们 各自又有众多的继承者 每个控件除了继承父类功能之外, 一般还具有自 己的公有方法 保护方法 属性等

58 48 Android 程序开发入门教程 在 Android 中使用各种控件的一般情况是在布局文件中实现 UI 的外观, 然后在 Java 文件中实现对各种控件的控制动作 控件类的名称也是它们在布局文件 XML 中使用的标签名称 控件通用行为和属性 View 作为所有控件类的基类, 它所具有的行为和属性是所有控件类都具有的通用行为和属性 由于 Java 语言不支持多重继承, 因此 Android 控件不可能以基本功能的 排列组合 的方式实现 在这种情况下, 为了实现功能的复用, 基类的功能往往做得较强, 作为控件的祖先类,View 所实现的功能也是最多的 控件类经常在布局文件中使用, 因此可以使用 XML 属性 (XMLAttributes), 和 Java 代码通常具有对应关系 View 作为各种控件的基类, 其 XML 属性所有控件通用,XML 属性及其对应的方法见表 3-1 表 3-1 View 中的 XML 属性及其对应的方法 XML 属性相关方法说明 android:id setid(int) 为 View 设置标识符, 可通过 findviewbyid 方法获取 android:background setbackgroundresource(int) 设置背景 android:visibility setvisibility(int) 控制 View 的可见性 android:clickable setclickable(boolean) 设置 View 是否响应单击事件 android:longclickable setlongclickable(boolean) 设置 View 是否响应长单击事件 android:soundeffectsenabled setsoundeffectsenabled(boolean) 设置当 View 触发单击等事件时是否播放音效 如果未作设置或 false, 当 View 被冻结时将不会保 android:saveenabled setsaveenabled(boolean) 存其状态 android:focusable setfocusable(boolean) 控制 View 是否可以获取焦点 android:nextfocusdown setnextfocusdownid(int) 定义当向下搜索时应该获取焦点的 View; 如果该 View 不存在或不可见, 则会抛出 RuntimeException 异常 android:nextfocusleft setnextfocusleftid(int) 定义当向左搜索时应该获取焦点的 View android:nextfocusright setnextfocusrightid(int) 定义当向右搜索时应该获取焦点的 View android:nextfocusup setnextfocusupid(int) 定义当向上搜索时应该获取焦点的 View 其中,android:id 表示控件的标识, 通常需要在布局文件中指定这个属性 View 中与控件标识相关的几个方法如下所示 public int getid() // 获得控件的 id(int 类型 ) public void setid(int id) // 设置控件的 id(int 类型 ) public Object gettag() // 获得控件的 tag(object 类型 ) public void settag(object tag) // 设置控件的 tag(object 类型 )

59 第 3 章 Android 常用基本控件 49 对于一个控件, 也就是 View 的继承者, 整数类型 id 是其主要的标识 其中,getId() 可以获得控件的 id, 而 setid() 可以将一个整数设置为控件的 id, 但是这个方法并不常用 View 的 id 通常可以在布局文件中获得 Object 类型的标识 tag 是控件的一个扩展标识, 由于使用了 Object 类型, 它可以接受大部分的 Java 类型 在一个 View 中根据 id 或者 tag 查找其孩子的方法如下所示 public final View findviewbyid(int id) public final View findviewwithtag(object tag) findviewbyid() 和 findviewwithtag() 的目的是返回这个 View 树中 id 和 tag 为某个数值的 View 的句柄 View 树包含 View 及其所有的孩子 值得注意的是,id 不是控件的唯一标识 例如, 多个布局文件中 id 是可以重复的 ( 但在一个布局中 id 不可重复 ), 在这种重复的情况下, findviewbyid() 的结果不能确保找到唯一的控件 作为控件的标识的 id 和 tag 可以配合使用 : 当 id 有重复的时候, 可以通过给控件设置不同的 tag, 对其进行区分 可见性的问题,android:visibility 在布局文件中有 3 个数值 :visible( 可见, 默认 ) invisible( 不可见 ) gone( 去除 ) 在 Java 代码中,setVisibility() 能使用的枚举值与其对应, 它们是 View.VISIBLE View.INVISIBLE View. GONE 下面是一个简单的可见性例子 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android=" 3 xmlns:tools=" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" 7 android:paddingbottom="@dimen/activity_vertical_margin" 8 android:paddingleft="@dimen/activity_horizontal_margin" 9 android:paddingright="@dimen/activity_horizontal_margin" 10 android:paddingtop="@dimen/activity_vertical_margin" 11 tools:context="com.example.visibility.mainactivity"> 12 <LinearLayout 13 android:layout_width="match_parent" 14 android:orientation="vertical" 15 android:layout_height="wrap_content"> 16 <View 17 android:id="@+id/first" 18 android:layout_width="match_parent" 19 android:layout_height="60dp"

60 50 Android 程序开发入门教程 android:text=" 第一行 " /> 22 <View android:layout_width="match_parent" 25 android:layout_height="60dp" android:text=" 第二行 " /> 28 <View android:layout_width="match_parent" 31 android:layout_height="60dp" 32 布局代码如下 33 android:text=" 第三行 " /> 34 </LinearLayout> 35 <LinearLayout 36 android:layout_width="match_parent" 37 android:layout_height="wrap_content" 38 android:orientation="horizontal"> 39 <Button android:layout_width="0dp" 42 android:layout_height="60dp" 43 android:layout_weight="1" 44 android:text=" 第二行显示 "/> 45 <Button android:layout_width="0dp" 48 android:layout_height="60dp" 49 android:layout_weight="1" 50 android:text=" 第二行不显示 "/> 51 <Button android:layout_width="0dp" 54 android:layout_height="60dp" 55 android:layout_weight="1" 56 android:text=" 第二行移除 "/> 57 </LinearLayout> 58 </LinearLayout> Java 代码如下 1 package com.example.visibility; 2 import android.support.v7.app.appcompatactivity;

61 第 3 章 Android 常用基本控件 51 3 import android.os.bundle; 4 import android.view.view; 5 import android.widget.button; 6 public class MainActivity extends AppCompatActivity { 7 private Button visiblebtn,invisiblebtn,gonebtn; 8 private View secondview; 10 protected void oncreate(bundle savedinstancestate) { 11 super.oncreate(savedinstancestate); 12 setcontentview(r.layout.activity_main); 13 // 获取组件 id, 以便进行下一步操作 14 //findviewbyid( 参数 ) 方法返回的是 View 类型, 所以需要将它强制转化 15 // 为 Button 类型 16 visiblebtn = (Button)findViewById(R.id.visible_btn); 17 invisiblebtn = (Button)findViewById(R.id.invisible_btn); 18 gonebtn = (Button)findViewById(R.id.gone_btn); 19 secondview = findviewbyid(r.id.second); 20 // 设置按钮单击监听 21 visiblebtn.setonclicklistener(new View.OnClickListener() { 23 public void onclick(view view) { 24 // 设置第二行为可见 25 secondview.setvisibility(view.visible); 26 } 27 }); 28 // 设置按钮单击监听 29 invisiblebtn.setonclicklistener(new View.OnClickListener() { 31 public void onclick(view view) { 32 // 设置第二行为不可见 33 secondview.setvisibility(view.invisible); 34 } 35 }); 36 // 设置按钮单击监听 37 gonebtn.setonclicklistener(new View.OnClickListener() { 39 public void onclick(view view) { 40 // 移除第二行 41 secondview.setvisibility(view.gone); 42 } 43 }); 44 } 45 } 对于第二行的 View, 分别使用了 visible invisible 和 gone 设置, 如图 3-1 所示 invisible 和 gone 的区别在于 invisible 只是不可见, 但是依然占位 ; gone 表示将控件去除, 显示的效果就像没有这个控件存在一样

62 52 Android 程序开发入门教程 图 3-1 Visibility 程序 ( 左 : 可见 ; 中 : 不可见 ; 右 : 去除 ) 和 View 形态相关的几个方法如下所示 public void invalidate () // 使无效 ( 重新绘制 ) public void requestlayout () // 申请重新布局 public final boolean requestfocus () // 申请聚焦 这几个方法都和 View 的显示形态有关 :invalidate() 方法的功能是使得旧 View 无效, 重新绘制当前 View;requestLayout() 用于更新 View 树, 也就是由当前 View 的大小 位置变化, 更新与其相关的 View;requestFocus() 用于申请当前的聚焦 查找聚焦的 View 的方法如下所示 public View findfocus () // 找到聚焦的 View 在布局文件中, 如果在一个控件的标签中使用 <requestfocus /> 标签, 表示指定它在默认情况下被聚焦 当使用上 下 左 右按键的时候, 各个控件有着默认的聚焦顺序 其他聚焦的问题可以在布局文件中进一步处理, 一个处理的方法如下所示 <LinearLayout android:orientation="vertical"> <Button android:id="@+id/top" android:nextfocusup="@+id/bottom" /> <Button android:id="@+id/bottom"android:nextfocusdown="@+id/top" /> </LinearLayout> 这里 android:nextfocusup 和 android:nextfocusdown 分别是使用上 下按键的时候, 下一个聚焦的控件的 id

63 第 3 章 Android 常用基本控件 静态文本与编辑框的功能和使用 静态文本的用法静态文本 (TextView) 是 Android 中常用的组件之一 Textview 是一个典型的文本显示控件, 该控件只提供显示的功能, 就像一个标签一样, 也可以认为是 html 中的 span, 它不允许用户对文本进行编辑 Android 系统中的 TextView 相当于其他编程语言中的文本框 在程序中, 我们主要是通过 TextView 来显示文字信息 TextView 直接继承了 View, 直接子类包括 Button CheckedTextView DigitalClock EditText 等, 继承结构如图 3-2 所示 图 3-2 TextView 的继承结构关系 对于 TextView 我们最关心的应该是怎么设置显示的文本, 怎样设置字 体的大小 字体的颜色 字体的样式 ; 其实很简单,TextView 提供了大量可以在 XML 文件中设置的属性帮我们配置 TextView, 这些属性同样在 Java 代码中动态声明 TextView 常用属性及其对应的方法见表 3-2 表 3-2 TextView 常用属性及其对应的方法 XML 属性名称 Java 中的方法描述 android:gravity setgravity(int) 设置文本位置, 如设置成 center, 文本将居中显示 android:height setheight(int) 设置文本区域的高度, 支持度量单位 px( 像素 ) /dp/sp/in/mm android:minheight setminheight(int) 设置文本区域的最小高度 android:maxheight setmaxheight(int) 设置文本区域的最大高度

64 54 Android 程序开发入门教程 续表 XML 属性名称 Java 中的方法 描 述 android:width setwidth(int) 设置文本区域的宽度, 支持度量单位 px/dp/sp/in/mm android:minwidth setminwidth(int) 设置文本区域的最小宽度 android:maxwidth setmaxwidth(int) 设置文本区域的最大宽度 android:hint sethint(int) Text 为空时显示的文字提示信息 android:textcolor settextcolor(colorstatelist) 设置文本颜色 android:textsize settextsize(float) 设置文字大小, 推荐度量单位 sp android:autolink setautolinkmask(int) 设置是否当文本为 URL 链接 / / 电话号码 /map 时, 文本显示为可单击的链接 可选值有 none/web/ / phone/all android:autotext settext(charsequence) 为 TextView 设置显示的文本内容 TextView 提供了大量的属性, 可以通过这些 XML 属性来控制 TextView 的样式, 如例 3-1 所示 例 3-1 TextView 属性示例 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android=" 3 xmlns:tools=" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" 7 tools:context="com.example.textview.mainactivity"> 8 <!-- 设置文字大小及颜色 --> 9 <TextView 10 android:layout_width="match_parent" 11 android:layout_height="wrap_content" 12 android:text=" 文字大小和颜色改变 " 13 android:textsize="36sp" 14 android:textcolor="@android:color/holo_orange_dark" 15 /> 16 <!-- 当文字超出屏幕时显示为省略号效果 --> 17 <TextView 18 android:layout_width="match_parent" 19 android:layout_height="wrap_content" 20 android:text=" 这是一段长文字, 显示不开的地方在末尾显示为省略号 " 21 android:textsize="24sp" 22 android:maxlines="1" 23 android:ellipsize="end" 24 android:textcolor="@android:color/holo_blue_bright" 25 /> 26 // 设置文字为粗体 斜体 27 <TextView 28 android:layout_width="match_parent" 29 android:layout_height="wrap_content"

65 第 3 章 Android 常用基本控件 android:text=" 这段文字是粗体 + 斜体 " 31 android:textsize="24sp" 32 android:textstyle="bold italic" 33 /> 34 <!-- 给文字设置阴影 --> 35 <TextView 36 android:layout_width="match_parent" 37 android:layout_height="wrap_content" 38 android:text=" 文字阴影 " 39 android:textsize="50sp" 40 android:textcolor="@android:color/holo_green_light" 41 android:shadowdx="5.0" 42 android:shadowdy="5.0" 43 android:shadowradius="20.0" 44 android:shadowcolor="@android:color/holo_red_dark" 45 /> 46 </LinearLayout> 当使用 typeface 时只有 sans serif monospace 才能生效, 否 则需要使用自定义字体, 步骤如下 1) 将字体文件保存在 assets/fonts/ 目录下 2) 建 Typeface 对象 : Typeface typeface =Typeface.createFromAsset (getassets(),"fonts/self.ttf"); 3) 使用字体 : textview.settypeface (typeface); 显示效果如图 3-3 所示 上面的界面布局文件定义了 4 个 TextView, 它们的含义如下 1 第一个 TextView 指定 android:textsize="36sp": 设置字号为 36sp; 指定 android:textcolor="@android:color/holo_orange_dark": 设 置字体颜色为 android 系统自带的颜色资源 ( 这里是橘黄色 ) 2 第二个 TextView 指定 android:maxlines="1": 设置文本的最大行数为 1 行 ; 指定 android:ellipsize="end": 设置若一行无法显 示全部文字, 则在最后使用省略号代替 3 第三个 TextView 指定 android:textstyle="bold italic": 设置 字体为粗体和斜体 4 第四个 TextView 指定 android:shadowdx="5.0": 设置 x 方 向的阴影偏移距离 ; 指定 android:shadowdy="5.0": 设置 y 轴方向的 阴影偏移 ; 指定 android:shadowradius="20.0": 设置阴影的半径 ; 指 定 android:shadowcolor="@android:color/holo _red_dark": 设置阴影 的颜色 图 3-3 TextView 属性

66 56 Android 程序开发入门教程 输入文本框的用法输入文本框 (EditText) 是一个非常重要的组件, 可以说它是用户和 Android 应用进行数据传输的窗户 通过它用户可以把数据传给 Android 应用, 然后得到我们想要的数据 EditText 继承自 TextView EditText 具有直接子类 AutoCompleteTextView ( 见第 4 章 ) ExtractEditText TextView 的方法和特性同样存在于 EditText 中, 但 EditText 和 TextView 最大的不同就是, 用户可以对 EditText 控件进行编辑, 同时还可以为 EditText 控件设置监听器, 用来检测用户的输入是否合法等 EditText 也具有自身的一些常用属性及对应方法, 见表 3-3 表 3-3 EditText 常用属性及对应方法 XML 属性名称 Java 中的方法描述 android:cursorvisible setcursorvisible(boolean) 设置光标是否可见, 默认可见 android:lines setlines(int) 通过设置固定的行数来决定 EditText 的高度 android:maxlines setmaxlines(int) 设置最大的行数 android:minlines setminlines(int) 设置最小的行数 android:password settransformationmethod(transformation) 设置文本框中的内容是否显示为密码 android:phonenumber setkeylistener(keylistener) 设置文本框中的内容只能是电话号码 android:scorllhorizontally sethorizontallyscorlling(boolean) 设置文本框是否可以进行水平滚动 android:selectallonfocus setselectallonfocus(boolean) 如果文本是可选择的, 让它获取焦点而不是 将光标移动到文本的开始位置或者末尾位置 android:shadowcolor setshadowlayer(float,float,float,int) 为文本框设置指定颜色的阴影 android:shadowdx setshadowlayer(float,float,float,int) 为文本框设置阴影的水平偏移, 为浮点数 android:shadowdy setshadowlayer(float,float,float,int) 为文本框设置阴影的垂直偏移, 为浮点数 android:shadowradius setshadowlayer(float,float,float,int) 为文本框设置阴影的半径, 为浮点数 android:maxlength setfilters(inputfiler) 设置最大显示长度 android:drawableleft android:drawablepadding 在输入框的左边输出一个图片 设置输入框与图片的间隔, 与 drawable Left drawableright drawabletop drawable Bottom 一起使用, 可设置为负数, 单独使用 没有效果 接下来通过一个示例来对前面输入文本框的属性使用方法进行具体说明, 如例 3-2 所示 例 3-2 EditView 属性示例 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android=" 3 xmlns:tools=" 4 android:layout_width="match_parent" 5 android:orientation="vertical"

67 第 3 章 Android 常用基本控件 57 6 android:layout_height="match_parent" 7 android:paddingbottom="@dimen/activity_vertical_margin" 8 android:paddingleft="@dimen/activity_horizontal_margin" 9 android:paddingright="@dimen/activity_horizontal_margin" 10 android:paddingtop="@dimen/activity_vertical_margin" 11 tools:context="com.example.editview.mainactivity"> 12 <EditText 13 android:layout_width="match_parent" 14 android:layout_height="60dp" 15 android:hint=" 请输入用户名或邮箱 " 16 android:gravity="center left" 17 android:textsize="24sp" 18 android:drawableleft="@drawable/icon_account_edit_left" 19 android:drawablepadding="12dp" 20 android:textcolorhint="@android:color/darker_gray" /> 21 <EditText 22 android:layout_width="match_parent" 23 android:layout_height="60dp" 24 android:hint=" 请输入密码 " 25 android:gravity="center left" 26 android:textsize="24sp" 27 android:inputtype="textpassword" 28 android:drawableleft="@drawable/icon_pass_edit_left" 29 android:drawablepadding="12dp" 30 android:textcolorhint="@android:color/darker_gray" /> 31 <EditText 32 android:layout_width="match_parent" 33 android:layout_height="60dp" 34 android:hint=" 请输入电话号码 " 35 android:gravity="center left" 36 android:textsize="24sp" 37 android:inputtype="phone" 38 android:drawableleft="@drawable/icon_phone_edit_left" 39 android:drawablepadding="12dp" 40 android:textcolorhint="@android:color/darker_gray" /> 41 </LinearLayout> 显示效果如图 3-4 所示 上面的界面布局文件定义了 3 个 EditView, 它们的含义如下 1 第一个 EditText, 指定 android:hint=" 请输入用户名或邮箱 " 设置 EditText 的提示文本 ; 指定 android:textcolorhint="@android:color/ darker_ gray": 设置提示文本的颜色 ; 指定 android:drawableleft="@ drawable/icon_ account_edit_left": 在文本框的左边显示一张图片 ; 指定 android:drawable Padding="12dp": 设置文本框与图片的距离

68 58 Android 程序开发入门教程 2 第二个 EditText, 指定 android:inputtype="textpassword" 设置输入类型为文本密码, 用户实际看到的是代替的圆点 3 第三个 EditText, 指定 android:inputtype="phone" 设置输入类型为电话号码, 输入法会自动跳转到相应的模式 图 3-4 EditView 属性 除了上述的属性之外,android:inputType 还有许多输入类型, 如 date time number text 等 读者可以在练习时自行测试, 也可查阅官方 文档 3.3 按钮控件的功能和使用 按钮 (Button) 控件是各种 UI 中最常用的控件之一, 也是 Android 开 发中最受欢迎的控件之一 用户可以通过单击它来触发一系列事件,Android SDK 包含布局中可以使用的简单按钮控件 :Button 控件 ImageButton 控件 ToggleButton 控件 RadioButton 控件和 CheckBox 控件 Button 的继承结构 如图 3-2 所示,ImageButton 的继承结构如图 3-5 所示 这些控件的功能很 相似, 因此我们几乎可以一并介绍它们 图 3-5 ImageButton 的继承结构关系

69 第 3 章 Android 常用基本控件 Button 控件用法 Button 控件继承自 TextView 类, 直接子类 CompoundButton, 间接子类 CheckBox RadioButton ToggleButton 控件有一个文本标签, 执行操作包括单击和按下, 通过设置 setonclicklistener 和 setonlongclicklistener 分别触发单击和长按事件 用户通过按下按钮, 或者单击按钮来执行一个动作, 如图 3-6 所示 例 3-3 是一个单击按钮和长按按钮分别打印日志信息的示例 例 3-3 Button 示例程序 activity_main.xml 代码如下 图 3-6 普通 Button 控件 1 <Button 2 android:id="@+id/normal_btn" 3 android:layout_width="match_parent" 4 android:layout_height="60dp" 5 android:text=" 普通按钮 " /> MainActivity.java 代码如下 public class MainActivity extends AppCompatActivity { 8 private Button normalbtn; 9 private static final String TAG="ButtonTest"; 11 protected void oncreate(bundle savedinstancestate) { 12 super.oncreate(savedinstancestate); 13 setcontentview(r.layout.activity_main); 14 normalbtn = (Button)findViewById(R.id.normal_btn); 15 // 按钮单击事件 16 normalbtn.setonclicklistener(new View.OnClickListener() { 18 public void onclick(view view) { 19 Log.i(TAG, "onclick: 单击了一下按钮 "); 20 } 21 }); 22 // 按钮长按事件 23 normalbtn.setonlongclicklistener(new View.OnLongClickListener() { 25 public boolean onlongclick(view view) {

70 60 Android 程序开发入门教程 26 Log.i(TAG, "onlongclick: 长按了一下按钮 "); 27 // 返回 true, 指当前已经处理完事件 28 // 返回 false, 指当前未处理完事件, 这里 29 // 处理完长按事件后会触发单击事件 30 return true; 31 } 32 }); 33 } 34 } 当分别单击一下按钮和长按一下按钮时, 结果如图 3-7 所示 ImageButton 控件用法 图 3-7 日志信息 ImageButton 控件继承自 ImageView 类, 直接子类 ZoomButton 按钮显示的是图片, 图片资源通过 android:src 属性或者 setimageresource 方法指定一个可绘制的图像资源 ImageButton 显示一个可以被用户单击的图片按钮, 默认情况下, ImageButton 看起来像一个普通的按钮, 在不同状态 ( 如按下 ) 下改变背景颜色 按钮的图片可用通过 <ImageButton> XML 元素的 android:src 属性或 setimageresource(int) 方法指定 要删除按钮的背景, 可以定义自己的背 景图片或设置背景为透明 图 3-8 中分别为原图和图片按钮, 图片按钮周围有按钮的背景 (a) 原图 (b) 图片按钮 图 3-8 ImageButton 控件 为了表示不同的按钮状态 ( 焦点 选择等 ), 可以为各种状态定义不同 的图片 例如, 定义 img_button_normal 图片为默认图片,img_button_pressed 图片为获取焦点时显示的图片,img_button_pressed 图片为按钮被按下时显 示的图片 一个简单的方法可以做到这点 通过 XML 配置实现, 构建 img_button_style.xml 文件如下

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

Microsoft Word - 第1章 Android基本概念.docx

Microsoft Word - 第1章 Android基本概念.docx Android 系 统 下 Java 编 程 详 解 作 者 : 华 清 远 见 第 1 章 Android 基 本 概 念 本 章 简 介 本 章 主 要 介 绍 Android 基 本 概 念 方 面 的 内 容, 包 括 Android 平 台 特 性 Android 系 统 架 构 Android 开 发 框 架 和 Android 开 发 环 境 搭 建 1.1 Android 简 介 Android

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年秋北京 Android是什么 Android不仅仅是一个操作系统 它更是一个完整的软件框 架 Android基于Linux内核 2005年Google公司收购了Android公司 Google公司选择使用Apache许可证开放Android源码

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

Microsoft Word zw

Microsoft Word zw 第 1 章 Android 概述 学习目标 : Android Android Android Studio Android Android APK 1.1 1. 智能手机的定义 Smartphone 2. 智能手机的发展 1973 4 3 PC IBM 1994 IBM Simon PDA PDA Zaurus OS 1996 Nokia 9000 Communicator Nokia 9000

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一八年秋北京 Android 是什么 Android 不仅仅是一个操作系统, 它更是一个完整的软件框架 Android 基于 Linux 内核 2005 年 Google 公司收购了 Android 公司 Google 公司选择使用 Apache

More information

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21 Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21 Outlines for Today Future Planning Review System Architecture Dev. Tools & Making the First App Project Structure & File Details Application

More information

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464>

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464> 第 1 章 进入 Photoshop 的全新世界 本章导读 Photoshop 1 1.1 Photoshop CS6 Photoshop Photoshop 1.1.1 Photoshop POP 1-1 图 1-1 平面广告效果 1.1.2 Photoshop 1-2 Photoshop CS6 Photoshop CS6 Photoshop CS6 Extended 3D 3 Photoshop

More information

FJXBQ

FJXBQ 高等医学院校选用教材 ( 供成人教育中医药专业 中西医结合专业使用 ) 方剂学 闫润红 主编 2 0 0 1 内容简介本书是供成人教育中医药专业 中西医结合专业使用的教材 全书分总论和各论两部分, 总论部分对中医方剂的基本理论, 如治法 君臣佐使 剂型 剂量等及其现代研究进展进行了介绍 各论部分对常用方剂的主治病证 配伍意义 临床应用 加减变化规律及现代研究概况等内容, 按分类进行了系统阐述 在保证方剂学学科知识结构完整性的前提下,

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 章.1 Android UI 基本概念 用户界面 (User Interface,UI) 是用户与设备之间进行信息交流的直接媒介, 是决定用户体验最重要的部分 相比于早期的计算机的主要交互界面 批处理界面和命令行界面, 现在更为流行的是更简单直接的用户图形界面 (Graphical User Interface, GUI) GUI 简单易用, 受众面广, 直接推动了个人计算机的发展 目前, 主流大众的操作系统都采用了

More information

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 : EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java

More information

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63> 基 于 Android 平 台 的 电 子 拍 卖 系 统 摘 要 本 电 子 拍 卖 系 统 其 实 就 是 一 个 电 子 商 务 平 台, 只 要 将 该 系 统 部 署 到 互 联 网 上, 客 户 都 可 以 在 该 系 统 上 发 布 想 出 售 的 商 品, 也 可 以 对 拍 卖 中 的 商 品 参 与 竞 价 整 个 过 程 无 须 人 工 干 预, 由 系 统 自 动 完 成 本

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

第一章 Android 简介与开发环境搭建

第一章 Android 简介与开发环境搭建 安卓开发环境与常用布局 第一章 Android 简介与开发环境搭建 本章目标 3G 的概念 Android 的改变 Android 开发环境的搭建编写第一个 Android 程序 Android 程序的目录结构 手机发展史 1. 3G 的概念 3G 全称为 :3rd Generation, 中文含义即为第三代数字通信, 是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统 2. 符合 3G

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

图书在版编目穴 CIP 雪数据做事细节全书 / 赵彦锋编著郾 北京 : 企业管理出版社, ISBN Ⅰ 郾做... Ⅱ 郾赵... Ⅲ 郾工作方法 通俗读物 Ⅳ 郾 B 中国版本图书馆 CIP 数据核字 (2005) 第 号 书

图书在版编目穴 CIP 雪数据做事细节全书 / 赵彦锋编著郾 北京 : 企业管理出版社, ISBN Ⅰ 郾做... Ⅱ 郾赵... Ⅲ 郾工作方法 通俗读物 Ⅳ 郾 B 中国版本图书馆 CIP 数据核字 (2005) 第 号 书 做事细节全书 赵彦锋著 企业管理出版社 图书在版编目穴 CIP 雪数据做事细节全书 / 赵彦锋编著郾 北京 : 企业管理出版社, 2005.11 ISBN 7-80197-338-0 Ⅰ 郾做... Ⅱ 郾赵... Ⅲ 郾工作方法 通俗读物 Ⅳ 郾 B026-49 中国版本图书馆 CIP 数据核字 (2005) 第 136676 号 书 名 : 做事细节全书 作 者 : 赵彦锋 责任编辑 : 吴太刚

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

幻灯片 1

幻灯片 1 Delivering accurate maps to Chinese Android users 为中国安卓用户提供准确的地图服务 Work at Mapbox includes: Android apps, demos, starter kits, documentation, support, syncing Android team with other departments, etc.

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

Microsoft Word - 实验一Android开发环境搭建.doc

Microsoft Word - 实验一Android开发环境搭建.doc 实验 1:Android 开发环境搭建 实验目的 : 搭建 Android 开发环境, 为后续的开发做好充分准备 实验内容 : n 搭建 Android 开发环境 n 创建 HelloWorld 程序实验步骤一 下载与安装 JDK n JDK 下载地址 :http://www.oracle.com/technetwork/java/javase/downloads/index.html 考虑到稳定性,

More information

Android Fragment

Android Fragment Android Fragment 建國科技大學資管系饒瑞佶 2017/10 V1 Android 3.0 後才支援 Fragment 解決部分 App 適應螢幕大小的問題 它類似於 Activity, 可以像 Activity 可以擁有自己的版面設計, 也和 Activity 一樣有自己的生命週期 ( 具備 oncreate() oncreateview() 與 onpause() 方法 ) LifeCycle

More information

题目

题目 开发 Android 应用 目的 : 帮助大家了解 Android 平台开发 作者 : 王威威 技术爱好 : linux,qt, 嵌入式开发 MSN : wangweiweicdma@hotmail.com Email : wang.weiwei1@ztenc.com.cn wangjiecdma@126.com 下载开发资源 1 下载最新的 Android SDK http://code.google.com/android/download.html

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

Photoshop CS6 艺术设计案例教程 ( 第二版 ) 1.1 Photoshop 的应用领域 Photoshop,,, Photoshop Photoshop 的用途 Photoshop CIS ( ) ( ) 案例展现 ~ 1

Photoshop CS6 艺术设计案例教程 ( 第二版 ) 1.1 Photoshop 的应用领域 Photoshop,,, Photoshop Photoshop 的用途 Photoshop CIS ( ) ( ) 案例展现 ~ 1 Chapter 01 Photoshop CS6 的基本操作 本章内容 1.1 Photoshop 的应用领域 1.6 控制面板的显示与隐藏 1.2 位图和矢量图的特性 1.7 新建 打开与保存文件 1.3 像素和分辨率的关系 1.8 图像的缩放 1.4 色彩模式 1.9 屏幕显示模式 1.5 Photoshop CS6 界面 1.10 计算机图形图像常用的色彩模式 Photoshop CS6 艺术设计案例教程

More information

Android Android Android SDK iv

Android Android Android SDK iv Android Market Google Android SDK Apple Google Microsoft b2c b 2010 Internet Android how why iii Android 240... Android Android SDK iv Android Market Google Android SDK Visual C++ Java N-tier J2EE Unix/Linux

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品 Autodesk Product Design Suite Standard 20122 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品设计 Autodesk Product Design Suite Standard 版本包包括以下软件产产品

More information

X713_CS_Book.book

X713_CS_Book.book / / /USB ) ; ; C D ; ; B B 1 >> 2 3 B 1 ( > > ) 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 GSM GPS ( ) 手机已连接到 GSM 网络 指示条越多, 接收质量越好 GPS 2 ...........................4.............................. 4 Micro SD (

More information

图书在版编目 (CIP) 数据 满堂花醉 / 沈胜衣著. 南京 : 江苏教育出版社, ( 沈郎文字 ) ISBN Ⅰ. 满... Ⅱ. 沈... Ⅲ. 作家 - 人物研究 - 世界 Ⅳ.K815.6 中国版本图书馆 CIP 数据核字 (2005) 第 041

图书在版编目 (CIP) 数据 满堂花醉 / 沈胜衣著. 南京 : 江苏教育出版社, ( 沈郎文字 ) ISBN Ⅰ. 满... Ⅱ. 沈... Ⅲ. 作家 - 人物研究 - 世界 Ⅳ.K815.6 中国版本图书馆 CIP 数据核字 (2005) 第 041 图书在版编目 (CIP) 数据 满堂花醉 / 沈胜衣著. 南京 : 江苏教育出版社, 2005.4 ( 沈郎文字 ) ISBN 7-5343-6512-0 Ⅰ. 满... Ⅱ. 沈... Ⅲ. 作家 - 人物研究 - 世界 Ⅳ.K815.6 中国版本图书馆 CIP 数据核字 (2005) 第 041843 号 出版者社址网址出版人 南京市马家街 31 号邮编 :210009 http://www.1088.com.cn

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1 科 技 部 自 由 軟 體 專 案 原 始 程 式 碼 使 用 手 冊 Source Code Manual of NSC Open Source Project 可 信 賴 的 App 安 全 應 用 框 架 -App 應 用 服 務 可 移 轉 性 驗 證 Trusted App Framework -Transferability Verification on App MOST 102-2218-E-011-012

More information

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 导 你 搭 建 Linux 平 台 下 的 JAVA 开 发 环 境, 包 括 JDK 以 及 集

More information

Dynamic Layout in Android

Dynamic Layout in Android Dynamic Layout in Android 建國科技大學資管系 饒瑞佶 2013/5 V1 Layout 多半都透過 res/layout/xml 格式設定來達成 Android 是 OOP, 所以可以動態產生 Layout 重點是 Layout 的階層關係 (Hierarchy) 需要處理對應事件 最後一樣用 setcontentview 加入 Layout 一 加入現有 Layout 中

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

Java 1 Java String Date

Java 1 Java String Date JAVA SCJP Java 1 Java String Date 1Java 01 Java Java 1995 Java Java 21 Java Java 5 1-1 Java Java 1990 12 Patrick Naughton C++ C (Application Programming Interface API Library) Patrick Naughton NeXT Stealth

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

2 第 章 绪 论 Internet 2.0 使 得 消 费 型 电 子 产 品 用 户 可 以 通 过 多 种 不 同 的 数 据 网 络 访 问 互 联 网 内 容 用 户 可 以 使 用 便 携 式 消 费 型 电 子 设 备, 如 智 能 手 机 触 屏 平 板 电 脑 电 子 书, 甚 至

2 第 章 绪 论 Internet 2.0 使 得 消 费 型 电 子 产 品 用 户 可 以 通 过 多 种 不 同 的 数 据 网 络 访 问 互 联 网 内 容 用 户 可 以 使 用 便 携 式 消 费 型 电 子 设 备, 如 智 能 手 机 触 屏 平 板 电 脑 电 子 书, 甚 至 . Android 是 什 么 第 章 绪 论 2 3 本 章 将 主 要 介 绍 Android 操 作 系 统, 这 些 背 景 知 识 可 以 帮 你 更 好 地 理 解 本 书 的 内 容 你 将 了 解 到, 这 一 平 台 在 如 今 以 便 携 式 消 费 型 电 子 设 备 为 基 础 的 Internet 2.0 环 境 下 是 如 何 大 显 身 手 的 这 里 所 说 的 Internet

More information

Microsoft PowerPoint - 05.Android 介面元件-RelativeLayout、Button、TextVeiw、EditText

Microsoft PowerPoint - 05.Android 介面元件-RelativeLayout、Button、TextVeiw、EditText 計劃名稱 : 104 年度教育部資通訊軟體創新人才推升推廣計畫跨校資源中心 : 雲端運算 ( 國立中山大學 ) 課程名稱 : 網路及平台服務 Part1- 課程教材 教材名稱 :Android 介面元件 -RelativeLayout Button TextVeiw EditText 國立高雄大學資訊工程學系張保榮教授 大綱 RelativeLayout 版面配置 Button 版面配置 TextView

More information

教案模板4-2

教案模板4-2 移动终端开发技术 电子教案 第三单元 ListView 的功能和用法 章节名称 : 第二章 软件要美观 UI 开发的点点滴滴 所属专业 ( 教研室 ): 计算机软件技术 制定人 : 陈媛媛 合作人 : 制定时间 : 2018 年 2 月 日照职业技术学院 单元标题 ListView 的功能和用法 单元教学学时 在整体设计中的位置 4 课时 第 7 次 授课班级上课地点一体化教室 上课时间周月日第节

More information

01_Service

01_Service 移动平台应用软件开发 Service 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年 什么是 Service 与 Activity 一样, 同属 Android 基本组件 后台运行, 不与用户交互, 没有可视化界面 最常见的 Service 如 : 在后台播放歌曲 后台执行文件的下载 同样需在 AndroidManifest.xml

More information

untitled

untitled How to using M-Power Report API M-Power Report API 力 了 M-Power Report -- Java (Library) M-Power Report API 行 Java M-Power Report M-Power Report API ( 30 ) PDF/HTML/CSV/XLS JPEG/PNG/SVG 料 料 OutputStream

More information

Microsoft PowerPoint - 03 开发入门.ppt [兼容模式]

Microsoft PowerPoint - 03 开发入门.ppt [兼容模式] 手 机 应 用 平 台 软 件 开 发 3 开 发 入 门 刘 宁 Email:liuning2@mail.sysu.edu.cn 课 程 简 介 课 程 目 标 Android 开 发 准 备 工 作 开 发 包 及 工 具 安 装 创 建 HelloWorld Android 程 序 设 计 基 础 创 意 移 动 应 用 创 意 移 动 应 用 创 意 移 动 应 用 创 意 移 动 应 用

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

1

1 内 容 提 要 作 为 Google 开 发 的 全 新 开 源 手 机 平 台,Android 发 展 如 火 如 荼 本 书 通 过 大 量 代 码 秘 诀 全 面 详 尽 地 讲 述 了 Android 开 发 技 术 从 activity 和 intent 基 础 知 识 开 始, 到 线 程 服 务 broadcast receiver 以 及 alert 警 告 框, 再 到 用 户 界

More information

Microsoft Word 杨超-spinner实现省市县的三级联动.docx

Microsoft Word 杨超-spinner实现省市县的三级联动.docx Spinner 实现省市县的三级联动 1801210908- 杨超 下拉框 Spinner 控件 : 常用属性 属性 说明 android:prompt 下拉提示信息 android:spinnermode 下拉显示方法 android:entries 配置下拉框数据源 android:dropdownwidth 下拉框显示模式下的显示项宽度 常用方法 方法 说明 getdropdownwidth()

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

!"# $ %&'!"#$

!# $ %&'!#$ !"# $ %&'!"#$ 内容简介本书是在作者已经出版的 XilinxAlProgrammableZynq-7000SoC 设计指南 一书的基础上进行大幅度修订而成的 本书的一大特色就是更加突出 ARMCortex-A9 双核处理器的使用 此外, 在修订本书时采用了 Xilinx 最新的 Vivado2015 4 集成开发环境 通过本书的修订, 能反映最新的 ARM 嵌入式设计技术和实现方法, 同时也能更加凸显采用异构架构的

More information

图书在版编目 (CIP) 数据 文学与现代性批判 / 邵建著. 南京 : 江苏教育出版社, ISBN Ⅰ. 文... Ⅱ. 邵... Ⅲ. 当代文学 - 文学研究 - 中国 Ⅳ.I206.7 中国版本图书馆 CIP 数据核字 ( 2005 ) 第 04185

图书在版编目 (CIP) 数据 文学与现代性批判 / 邵建著. 南京 : 江苏教育出版社, ISBN Ⅰ. 文... Ⅱ. 邵... Ⅲ. 当代文学 - 文学研究 - 中国 Ⅳ.I206.7 中国版本图书馆 CIP 数据核字 ( 2005 ) 第 04185 图书在版编目 (CIP) 数据 文学与现代性批判 / 邵建著. 南京 : 江苏教育出版社, 2005.4 ISBN 7-5343-6528-7 Ⅰ. 文... Ⅱ. 邵... Ⅲ. 当代文学 - 文学研究 - 中国 Ⅳ.I206.7 中国版本图书馆 CIP 数据核字 ( 2005 ) 第 041850 号 出版者社址网址出版人 南京市马家街 31 号邮编 :210009 http://www.1088.com.cn

More information

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc 在 VMWare-5.5+RedHat-9 下建立 本机 QTopia-2.1.1 虚拟平台 张大海 2008-5-9 一 资源下载 1. 需要以下安装包 : tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qt-x11-free-3.3.4.tar.gz

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

RecyclerView and CardVew

RecyclerView and CardVew RecyclerView and CardView 建國科技大學資管系饒瑞佶 2017/10 V1 CardView CardView A CardView is a ViewGroup. Like any other ViewGroup, it can be added to youractivity or Fragment using a layout XML file. To create an

More information

03 开发入门.key

03 开发入门.key #3 手机应用开发入门 刘宁 Email:liuning2@mail.sysu.edu.cn 大纲» Android 基本概念» 开发包及 工具安装» 创建 HelloWorld» Android 程序设计基础 2 Android 开发基本概念» Activities» Intents» 视图与控件 ( 界 面元素 )» 异步调 用 ( 多线程 支持 )» 后台服务 3 Activities Android

More information

Microsoft Word - 第1章

Microsoft Word - 第1章 1 单元单元 1 Android Android 是 Google 公司推出的移动设备开发平台, 从 2007 年 11 月 5 日发布以来, 短短几年的时间便成为全球最受欢迎的智能手机平台 应用 Android 不仅可以开发在手机或平板电脑等移动设备上运行的应用程序, 而且可以开发 2D(2 Dimensions, 平面游戏 ) 甚至 3D(3 Dimensions, 三维游戏 ) 游戏 Android

More information

* 4 6 R P r p . 1 2 3 4 7 89bk 6 5 1 2 3 4 5 6 7 8 9 0 bk r bl bm bn^ bo bl br bq bpbo bn bm [ ] [ ] [ ] bp 8 2 4 6 bq p [ ] [SET] br clckbt bs bs bt ck cl. 1 2 1 2+- 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30 0 配置 Host MIB 设备 V 1.1.2 ( 简体版 ) 0 Update: 2016/1/30 前言 N-Reporter 支持 Host Resource MIB 监控主机 (Host) 状态, 本文件描述 N-Reporter 用户如何配置 Host MIB 设备 文件章节如下 : 1. 配置 Windows Server 2003... 2 1-1.Windows Server 2003

More information

Linux服务器构建与运维管理

Linux服务器构建与运维管理 1 Linux 服务器构建与运维管理 第 2 章 :Linux 基本命令 阮晓龙 13938213680 / rxl@hactcm.edu.cn http://linux.xg.hactcm.edu.cn http://www.51xueweb.cn 河南中医药大学管理科学与工程学科 2018.3 2 提纲 目录与文件的操作 mkdir touch mv cp rm rmdir file tree

More information

内文-2.indd

内文-2.indd 客户端服务端音乐资源信息 : 1. 项目需求从本项目开始, 我们一起开发一个简单的在线音乐播放器, 它具有以下功能 (1) 程序启动时显示一个启动画面, 如图 1-1 所示 (2) 在程序主页面显示服务器上的歌曲列表, 包括歌手名与歌曲名, 单击列表条目可实现在线音乐播放, 单击 播放 暂停 上一曲 下一曲 按钮可实现对应的功能, 进度条可以显示歌曲播放进度, 如图 1-2 所示 图 1-1 程序启动画面

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

Android + NFC

Android + NFC Android + NFC 建國科技大學資管系饒瑞佶 2017/3 v1 讀取 Tag UUID Android 2.3.3 (API Level 10) 才有支援完整的 NFC 功能 只要 NFC 相容都讀的到 (NFC 或 Mifare) 建立新專案修改 AndroidManifest.xml 加入 , 如果有 NFC Tag 進入感測範圍, 本 App 也會變成可處理的

More information

Android 开发教程

Android 开发教程 封面 1 GUI 可视化设计器 DroidDraw DroidDraw 是一个基于 Java Swing 的 Android 界面设计器, 可以通过它来生成复杂的 Android Layout XML 文 件,Android 的 Layout 和 Swing Layout 中有很好的对应, 设计器的代码编写起来比较容易 2 AnDroidDraw AnDroidDraw 是一个与 DroidDraw

More information

小应用 Magic8

小应用 Magic8 胡家威 计研135班 http://hujiaweibujidao.github.io/ 小应用 Magic8 Android 系统简介 Android 应用结构 Android 四大组件 Activity 生命周期 Android 资源管理 UI 组件和容器组件 内容概要 ( 上 ) Android 系统简介 Android 市场份额 Android 是如何诞生的? Android 之父 :Andy

More information

ltu

ltu 資 訊 管 理 系 學 齡 前 自 主 學 習 之 行 動 裝 置 輔 助 系 統 指 導 教 授 : 李 靜 怡 教 授 組 員 名 單 : 蔡 承 育 988C012 黃 佳 誼 988C026 鄭 亦 琦 988C060 廖 曼 伶 988C108 中 華 民 國 1 0 2 年 5 月 嶺 東 科 技 大 學 資 訊 管 理 系 學 齡 前 自 主 學 習 之 行 動 裝 置 輔 助 系 統

More information

Microsoft Word - 第3章 Activity.doc

Microsoft Word - 第3章 Activity.doc 第 3 章 Activity 学习目标 u 掌握 Activity 的生命周期 u 掌握 Activity 的四种启动模式 u 掌握显式意图和隐式意图的使用 u 学会使用 Intent 传递数据在现实生活中, 经常会使用手机进行打电话 发短信 玩游戏等, 这就需要与手机界面进行交互 在 Android 系统中, 用户与程序的交互是通过 Activity 完成的 同时 Activity 也是 Android

More information

单击以编辑母片 Content 标题样式 LinearLayout 排版模式 TableLayout 排版模式 RelativeLayout 排版模式 AbsoluteLayout 排版模式 FrameLayout 排版模式 GridLayout 排版模式 TabWidget 切換卡 Lab 5 2

单击以编辑母片 Content 标题样式 LinearLayout 排版模式 TableLayout 排版模式 RelativeLayout 排版模式 AbsoluteLayout 排版模式 FrameLayout 排版模式 GridLayout 排版模式 TabWidget 切換卡 Lab 5 2 单击以编辑母片标题样式 安卓系统 Android 的排版 授课老师 : 谢兆贤 2016/4/18 1 单击以编辑母片 Content 标题样式 LinearLayout 排版模式 TableLayout 排版模式 RelativeLayout 排版模式 AbsoluteLayout 排版模式 FrameLayout 排版模式 GridLayout 排版模式 TabWidget 切換卡 Lab 5

More information

1. 2. Flex Adobe 3.

1. 2. Flex Adobe 3. 1. 2. Flex Adobe 3. Flex Adobe Flex Flex Web Flex Flex Flex Adobe Flash Player 9 /rich Internet applications/ria Flex 1. 2. 3. 4. 5. 6. SWF Flash Player Flex 1. Flex framework Adobe Flex 2 framework RIA

More information

人民邮电

人民邮电 第 2 章 布 局 布 局 是 所 有 带 界 面 的 Android 程 序 的 开 端 布 局 应 用 得 好 坏 直 接 决 定 了 程 序 的 用 户 体 验 虽 然 布 局 看 似 没 有 组 件 复 杂, 但 也 涉 及 到 了 很 多 技 巧 在 各 大 公 司 的 面 试 题 中 也 会 经 常 遇 到 关 于 布 局 的 一 些 问 题 通 过 这 些 问 题 可 以 考 查 应

More information

Android 编程基础 Android 开发教程 & 笔记 1

Android 编程基础 Android 开发教程 & 笔记 1 Android 开发教程 & 笔记 1 多式样 ProgressBar 撰写 : 地狱怒兽 联系 :zyf19870302@126.com 普通圆形 ProgressBar 该类型进度条也就是一个表示运转的过程, 例如发送短信, 连接网络等等, 表示一个过程正 在执行中 一般只要在 XML 布局中定义就可以了

More information

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android= 第 6 章广播接收者 应用案例 案例 6-1 CallRecord( 通话记录 ) 一 案例描述 1 考核知识点 030006001: 广播接收者简介 030006002: 广播接收者的创建 2 练习目标 广播的静态注册和使用 使用广播处理处理事件 3 需求分析手机最重要的功能就是通话功能, 同样储存通话记录也是必不可少的 该案例使用广 播接收者自己实现通话记录的功能 包括呼出电话 已接来电 未接来电以及通话产生的

More information

<4D F736F F D20B5DA32D5C2A1A2416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA8>

<4D F736F F D20B5DA32D5C2A1A2416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA8> 2 Android Windows Android JDK Java Eclipse Android SDK ADT Android 2.1 Android Android 应用软件开发需要的开发环境如表 2-1 所示 表 2-1 所需项 版本需求 说明 备注 操作系统 Windows XP/Vista/7 Mac OS X10..8+ 选择自己最熟悉的操作系统 Linux Ubuntu Drapper

More information

* r p . 4 6 12 3 5 7 8 9bk bm btbsbrbqbp bo bn bl [ ] [ ] [ ] [ ] [SET] 1 2 3 4 5 6 7. cmcl ck 8 9 0 bk bl bm bn bo 1 2 1 2+ - bp bq 8 2 4 6 br r bs p bt ck cl cm 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

0511-Android程式之GPS應用_專題週記4

0511-Android程式之GPS應用_專題週記4 逢甲大學通訊工程學系專題研究 Android 程式之 GPS 應用 專題週記 0511 學生姓名 陳彥儒 D0035131 廖元譽 D0077791 指導老師 楊豐瑞老師繳交日期 2014.05.11 1 匯入 GoogleMap 1.1 取得授權步驟 目前進度 取得 Google 授權鑰匙 實作程式尚未成功 1.1.1 建立個人的 keystore 1.1.2 由個人的 keystore 查詢 SHA1

More information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

图书在版编目 (CIP) 数据程序员的数学. 3, 线性代数 /( 日 ) 平冈和幸, ( 日 ) 堀玄著 ; 卢晓南译. 北京 : 人民邮电出版社, ( 图灵程序设计丛书 ) ISBN Ⅰ. 1 程 Ⅱ. 1 平 2 堀 3 卢 Ⅲ. 1 电子计算

图书在版编目 (CIP) 数据程序员的数学. 3, 线性代数 /( 日 ) 平冈和幸, ( 日 ) 堀玄著 ; 卢晓南译. 北京 : 人民邮电出版社, ( 图灵程序设计丛书 ) ISBN Ⅰ. 1 程 Ⅱ. 1 平 2 堀 3 卢 Ⅲ. 1 电子计算 图灵程序设计丛书 程序员的数学 3: 线性代数 [ 日 ] 平冈和幸堀玄著 卢晓南译 图书在版编目 (CIP) 数据程序员的数学. 3, 线性代数 /( 日 ) 平冈和幸, ( 日 ) 堀玄著 ; 卢晓南译. 北京 : 人民邮电出版社, 2016.3 ( 图灵程序设计丛书 ) ISBN 978-7-115-41774-9 Ⅰ. 1 程 Ⅱ. 1 平 2 堀 3 卢 Ⅲ. 1 电子计算机 数学基础 2

More information

111

111 修 平 科 技 大 學 資 訊 網 路 技 術 系 貪 食 蛇 組 長 :BN99017 賴 冠 諻 組 員 :BN99001 楊 欣 樺 BN99008 楊 典 瑾 BN99041 陳 宥 瑞 BN99043 張 州 凱 指 導 老 師 : 口 試 老 師 : 口 試 老 師 : 口 試 老 師 : 中 華 民 國 1 0 3 年 6 月 目 錄 目 錄 1 摘 要 3 第 一 章 緒 論 4 (

More information

Eclipse C C++, or

Eclipse C C++,  or Eclipse C C++, Emailctchen@pl.csie.ntut.edu.tw or s1669021@ntut.edu.tw, s2598003@ntut.edu.tw http://pl.csie.ntut.edu.tw/~ctchen, http://www.ntut.edu.tw/~s2598003/ 2004/9/10 (0.02 ) Eclipse http://www.eclipse.org

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

第 1 章.indd

第 1 章.indd 第 01 章 Android 风暴已经登陆 智能手机的迅速发展, 不得不感谢 Google 公司开发的开放 Android 系统, 现在市面上 80% 左右的智能手机采用的是 Android 系统 本章就从 Android 的进化论开始讲起, 详细介绍 Android 手机入手常识及刷机技巧, 让您拥有智能手机后不再有后顾之忧 1.1 Android 就在你身边 Android Linux Google

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech - OfficeCoder 1 2 3 4 1,2,3,4 xingjiarong@mail.sdu.edu.cn 1 xuchongyang@mail.sdu.edu.cn 2 sun.mc@outlook.com 3 luoyuanhang@mail.sdu.edu.cn 4 Abstract. Microsoft Word 2013 Word 2013 Office Keywords:,, HTML5,

More information

基于UML建模的管理管理信息系统项目案例导航——VB篇

基于UML建模的管理管理信息系统项目案例导航——VB篇 PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com

More information

专注于做最好的嵌入式计算机系统供应商

专注于做最好的嵌入式计算机系统供应商 专注于做最好的嵌入式计算机系统供应商 基于 ARMSYS2440/2410 开发应用程序 (EVC&VS2005) Rev 1.0 2008 年 3 月 24 日 杭州立宇泰电子有限公司 HangZhou LiYuTai Elec.Co.,Ltd 开发应用程序的过程一般分两步, 第一步在 PC 机开发环境下设计和编译应用程序, 第二步将它下载到 目标系统, 也就是我们的 ARMSYS2440 平台上运行

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

图书在版编目渊 CIP 冤数据速成财富课院成就富翁的圆缘条法则 / 石向前著援北京院蓝天出版社袁 2005 援员园 ISBN 愿怨 -1 玉援速... 域援石... 芋援商业经营要通俗读物郁援 F71 缘原源怨中国版本图书馆 CIP 数据核字渊 2005 冤第 0 愿怨猿猿员号

图书在版编目渊 CIP 冤数据速成财富课院成就富翁的圆缘条法则 / 石向前著援北京院蓝天出版社袁 2005 援员园 ISBN 愿怨 -1 玉援速... 域援石... 芋援商业经营要通俗读物郁援 F71 缘原源怨中国版本图书馆 CIP 数据核字渊 2005 冤第 0 愿怨猿猿员号 25 图书在版编目渊 CIP 冤数据速成财富课院成就富翁的圆缘条法则 / 石向前著援北京院蓝天出版社袁 2005 援员园 ISBN 7-80158-6 愿怨 -1 玉援速... 域援石... 芋援商业经营要通俗读物郁援 F71 缘原源怨中国版本图书馆 CIP 数据核字渊 2005 冤第 0 愿怨猿猿员号 蓝天出版社出版发行渊北京复兴路 14 号冤渊邮政编码院 100843 冤电话院 66983715

More information

的 汉 字, 再 选 择 格 式 中 文 版 式 拼 音 指 南 选 项, 在 拼 音 指 南 对 话 框 中 单 击 组 合 按 钮, 如 图 1-1 所 示, 则 将 拼 音 文 字 复 制 粘 贴 到 正 文 中, 同 时 还 可 删 除 不 需 要 的 基 准 文 字 图 1-1 拼 音 指

的 汉 字, 再 选 择 格 式 中 文 版 式 拼 音 指 南 选 项, 在 拼 音 指 南 对 话 框 中 单 击 组 合 按 钮, 如 图 1-1 所 示, 则 将 拼 音 文 字 复 制 粘 贴 到 正 文 中, 同 时 还 可 删 除 不 需 要 的 基 准 文 字 图 1-1 拼 音 指 文字处理实战正文 第 1 章 Word 篇 1.1 文字录入技巧 1.1.1 叠字轻松输入 在汉字中经常遇到重叠字 比如 爸爸 妈妈 欢欢喜喜 等 在 Word 中输 入时除了利用输入法自带的功能快速输入外 还有没有其他办法轻松进行输入呢 答 在 Word 中提供了一个这样的功能 只需通过组合键 Alt+Enter 便可轻松输 入 如在输入 爸 字后 按组合键 Alt+Enter 便可再输入一个 爸

More information

_banneradview.settest(true); _banneradview.setuserkeywords("swimming"); _banneradview.setusercategories("1,3,4"); _banneradview.setusergender(jdbanner

_banneradview.settest(true); _banneradview.setuserkeywords(swimming); _banneradview.setusercategories(1,3,4); _banneradview.setusergender(jdbanner 京东 APP 联盟 SDK Android 版接口说明文档 1.0 1. 嵌入 SDK 1.1 添加 SDK Android Studio 环境 : 菜单 New->New Module->Import.jar or.aar package, 然后选中 App 联盟 SDK 所带的 jar 文件 Eclipse+ADT 环境 : 将 App 联盟 SDK 所带的 jar 文件拷贝到 libs/ 目录下

More information

1 SQL Server 2005 SQL Server Microsoft Windows Server 2003NTFS NTFS SQL Server 2000 Randy Dyess DBA SQL Server SQL Server DBA SQL Server SQL Se

1 SQL Server 2005 SQL Server Microsoft Windows Server 2003NTFS NTFS SQL Server 2000 Randy Dyess DBA SQL Server SQL Server DBA SQL Server SQL Se 1 SQL Server 2005 DBA Microsoft SQL Server SQL ServerSQL Server SQL Server SQL Server SQL Server SQL Server 2005 SQL Server 2005 SQL Server 2005 o o o SQL Server 2005 1 SQL Server 2005... 3 2 SQL Server

More information