第一章 讲师:张晓飞 微信 : zxf_zxy_rxf Android 快速入门
1. 介绍 Android 2. 完成第一个 Android 应用 3. 三个开发调试工具 4. 应用练习 1.1 Android 相关基础知识 1.2 Android 系统架构 2.1 搭建开发环境 2.2 开发第一个应用 HelloAndroid 3.1 ADB 3.2 DDMS 3.3 Log 4.1 简单模拟下载
Android 是一种基于 Linux 的 开源 的操作系统 主要使用于 智能设备 ,如智能手机、平板电脑和智能电视等 由 Google 公司领头开发并推广, 2008 年推出第一个版本。 Google 此系统最初由 ” 安卓之父 " Andy Rubin ( 安迪 - 鲁宾 ) 开发 (2003 年 ) Andy Rubin 1.1 Android 相关基础知识 Android 是什么 ? Android 百度百科 Android 百度百科
Android 能做什么 ? 1.1 Android 相关基础知识
智能手机市场份额分布情况 ? 1.1 Android 相关基础知识
1.5 Cupcake( 纸杯蛋糕 ) --API Donut( 甜甜圈 ) --API Éclair( 闪电泡芙 ) --API Froyo( 冻酸奶 ) --API Gingerbread( 姜饼 ) –API Honeycomb( 蜂巢 ) –API Icecream SandWich( 三明治 ) –API Jelly Bean ( 果冻豆 ) --API Jelly Bean ( 果冻豆 ) --API Jelly Bean ( 果冻豆 ) --API KitKat : ( 奇巧巧克力棒 ) --API Lollipop ( 棒棒糖 )--API Lollipop ( 棒棒糖 ) --API Android 相关基础知识 Android 的各个版本 ? 友盟统计
Android 的开发工作好找吗 ? 1.1 Android 相关基础知识
Android 的开发工作薪水高吗 ? 1.1 Android 相关基础知识
Android 与 IOS 操作系统区别 ? 1.1 Android 相关基础知识 >> No 比较 IOS ( Iphone 手机) Android(Android 手机 ) 1 开发平台 Apple Mac OS 不局限于操作系统 2 开发工具 XcodeEclipse/Android Studio 3 开发语言 Objective – C Java 4 兼容性 封闭操作系统,由 Apple 制定,兼容性高 开源操作系统, Google 规定出 硬件标准,由不同的厂商进行 手机的研发,由于厂商众多, 所以兼容性低 5 UI 交互界面主要依靠触屏完成主要依靠触屏和按键 6 显示风格统一的视觉规范和分辨率 视觉规范由厂商决定,各具特 色, 但也有部分质量不高
1.2 Android 系统架构 整体结构图
1. 首要差别 Dalvik: 基于寄存器,编译和运行都会更快些 JVM: 基于栈, 编译和运行都会慢些 2. 字节码的区别 Dalvik: 执行.dex 格式的字节码,是对.class 文件进行压缩后产生的, 文件变小 JVM: 执行.class 格式的字节码 3. 运行环境的区别 Dalvik : 一个应用启动都运行一个单独的虚拟机运行在一个单独的进程中 JVM: 只能运行一个实例, 也就是所有应用都运行在同一个 JVM 中 区别 DVM 与 JVM 1.2 Android 系统架构 >>
2.1 搭建开发环境 下载地址 : 重要资源说明 : android-sdk-windows android 软件开发包, 作用相当于 JDK =jre+ 工具 eclipse Anroid 应用开发工具 此 Eclipse 已经内置了支持 Android 开发的插件 (ADT) 下载必要的资源
2.1 搭建开发环境 下载各版本 SDK 我们提供的 SDK 包中已经包含了可能用到的几个重要版本 如果想下载其它版本, 可以启动
2.1 搭建开发环境 配置 path 环境变量 path= …\sdk\platform-tools; …\sdk\tools
创建并启动模拟器 2.1 搭建开发环境 AVD Name : 虚拟设备名称 Device : 设备型号 Target : 系统 SDK 的版本 CPU/ABI : 处理器 Keyboard : 是否用硬键盘 ( 不选用软键盘 ) Skin : 不同型号皮肤外形不相同 Memory Otions : 内存选项设置 RAM : 设备的运行内存 VM Heap : 虚拟机堆空间内存 Internal Storage : 设备内部存储空间大小 SD Card : SD 卡内存的大小
创建并启动模拟器 2.1 搭建开发环境
解决模拟器创建或启动的问题 描述 : 在部分电脑上会出现模拟器不能创建或不能启动的问题 原因 : 默认的路径包含中文目录 解决办法 : – 删除.android 文件夹 (C:\Users\Administrator\) – 配置环境变量 : ANDROID_SDK_HOME=D:\android-sdk-windows
解决模拟器运行慢的问题 2.1 搭建开发环境 >> 模拟器如果是用的 Intel 的 CPU, 可以安装加速器来提高运行速度 但有些电脑安装报错, 需要进入 BIOS 设置开启 CPU 虚拟化后即可安装 问题 : – 部分电脑不能设置 – 部分电脑安装后会容易蓝屏 解决 : – 使用 ARM 的 CPU, 不用加速器
2.2 开发第一个应用 HelloAndroid 创建并运行 HelloAndroid
配置 Eclipse 的字体 2.2 开发第一个应用 HelloAndroid
配置 Eclipse 的编码字符集 2.2 开发第一个应用 HelloAndroid >>
编写的 Java 源码代码包 自动生成的 Java 源码代码包 图片资源 布局资源 一些常量资源 ( 尺寸, 字符串, 样式 ) 一些常量资源 ( 尺寸, 字符串, 样式 ) 应用的功能清单配置文件 项目的组成结构 资源文件夹 资产目录 包含编译生成文件 的目录 ( 如 APK) 依赖的 jar 包目录 2.2 开发第一个应用 HelloAndroid
APK 安装文件的组成结构 res: 项目中的资源文件夹 功能清单文件 包含所有 class 文件的供 DVM 执行的文件 2.2 开发第一个应用 HelloAndroid APK 本质上就是一个压缩包
应用编译打包过程 src/.. MainActivity.java gen/.. R.java res/.. main.xml strings.xml AndroidMenifest.xml 将资源和清单文件 进行编译处理 编译生成多个.class 文件 只 JVM 能执行 再次编译压缩生成一个 classes.dex 文件 Dalvik 能执行 打包成一个 apk 文件 xxx.apk 安装运行 2.2 开发第一个应用 HelloAndroid
/ 代表系统的根目录 /data/app/ 存放着第三方的 apk 文件 /system/app/ 其中是系统中的应用安装文件 /data/data/packagename/ 与应用对应的文件, 在应用安装时自动生成, 应用卸载时自动删除 /storage/sdcard / sd 卡的文件夹 Android 系统文件目录结构 2.2 开发第一个应用 HelloAndroid
/docs 文档目录 index.html /platforms 包含这个版本运行所需要的 jar 包 /platform-tools 包含一些开发工具, 如 adb.exe, sqlite3.exe /samples 包含一些 google 提供的样例项目工程, 如 : APIDemos /source 包含系统的部分源码 /tools 包含一些开发工具, 如 : draw9patch.bat, hierarchyviewer.bat SDK 的文件目录结构 2.2 开发第一个应用 HelloAndroid
3.1 ADB adb 是什么 Android 调试桥 (Android Debug Bridge) 是多种用途的调试工具 帮助你管理设备或模拟器的状态 adb 常用命令 adb [help] -show this help message devices -list all connected devices adb shell -run remote shell interactively adb push -copy file/dir to device adb pull [ ] -copy file/dir from device adb install –r apkPath -push this package file to the device install adb uninstall packageName -remove this app package from the device adb start-server -ensure that there is a server running adb kill-server - kill the server if it is running ctrl+c - 退出 shell close cls - 清空屏幕 clears 理解
3.2 DDMS DDMS 是什么 ? 全称是 Dalvik Debug Monitor Service Android 开发环境中的 Dalvik 虚拟机调试监控服务 Eclipse 中提供的 Android 应用开发的调试工具 DDMS 的四个重要的视窗 Logcat : 查看日志输出: File Explorer :查看系统内部文件 Devices :显示关联的 Android 设备 Emulator Control :操作控制关联的 Android 设备 注意 : 在 Eclipse 中打开这四个视窗便于调试 理解
3.2 DDMS Logcat 视窗
3.2 DDMS File Explorer 视窗
3.2 DDMS Devices 视窗
3.2 DDMS Emulator Control 视窗
3.3 Log Log 类方法级别作用颜色 v(tag, message)Verbose 显示全部信息 黑色 d(tag, message)Debug 显示调试信息 蓝色 i(tag, message)Info 显示一般信息 绿色 w(tag, message)Warming 显示警告信息 橙色 e(tag, message)Error 显示错误信息 红色 为了便于开发调试, Android 提供了用于日志打印输出的工具类 : Log 日志工具类 : Log
3.3 Log Log 提供了多个级别的打印输出方法, 在 LogCat 窗口中显示的颜色不同 Log 打印时必须指定 TAG, 在 LogCat 中可以通过添加 TAG 过滤查看 LogCat 中可以通过两种方式过滤 : – TAG 名 : 显示所有此标签名的输出 – 应用包名 : 显示指定包名应用的所有输出 比较 Log 与 System.out
4 应用练习 简单模拟下载 功能描述 : 1). 点击下载按钮显示 " 开始下载 " 的小提示 2). 点击下载按钮后, 按钮的文本改为 : 正在下载中 主要技术点 : 1). 应用的创建与运行 2). 界面布局的定义与加载 3). 点击事件监听 4). Toast 文本小提示
相关 API Activity: 四大应用组件之一 onCreate(): 自动调用的方法, 在其中加载布局显示 setContentView(int layoutId): 加载布局 View findViewById(int id): 根据 id 找到对应的视图对象 R: 应用的资源类 R.drawable: 包含所有图片资源标识的内部类 R.layout: 包含所有布局资源标识的内部类 R.id: 包含所有视图 id 标识的内部类 R.string: 包含所有字符串标识的内部类 View/Button: 视图 / 按钮 setonClickListener(listener): 给视图设置点击监听 View.OnClickListener : 内部接口 void onClick(View v) : 点击事件的回调方法 Toast: 用来显示短时间提示文本的类 static Toast makeText(...) : 创建一个 toast 对象 show(): 显示小提示 4 应用练习
补充 手机的尺寸 : 屏幕对角线的长度, 单位为英寸 (2.54cm) 手机的分辨率 : 屏幕能显示的像素的数量, 一般用在长方向上数量 * 宽方 向上数量来表达 手机的像素密度 : pixels per inch ,也称 PPi ,即每英寸屏幕能显示的像素 数,像素密度越大,显示画面细节就越丰富。 计算 : 像素密度 ={1+√[( 长度像素数 -1)^2+( 宽度像素数 -1)^2]}/ 屏幕尺寸 DPI: Dots Per Inch (每英寸所打印的点数或线数)的缩写,用来表示打印 机打印分辨率, 但有时也会用 dpi 来代指 ppi 手机的密度 : Density, 以 160ppi 为基准, 即像素密度为 160 时 Density 为 1 ldpi 120ppi 0.75 mdpi 160dpi 1.0 hdpi 240dpi 1.5 xhdpi 320dpi 2.0 手机尺寸相关的概念
常见手机的尺寸参数 品牌尺寸像素像素密度 三星 GALAXY S x1080 像素 432ppi 三星 GALAXY Note x1440 像素 515ppi 小米 M x1080 像素 441ppi 魅族 MX4 pro x1536 像素 543ppi Nexus x1440 像素 493ppi 苹果 iphone x750 像素 326ppi 苹果 iphone6 plus x1080 像素 401ppi 补充
px: pixels( 像素 ) 1px 就的长度就对应屏幕一个像素点的大小 dp/dip: device-independent pixels( 设备无关像素 ) 1dp = (dpi / 160) px 1dp = density px 160- 1px 120 2px 1px = 1/density dp sp : scaled pixels( 可缩放像素 ) 与 dp 类似,但是可以根据用户的字体大小首选项进行缩放 注意 : Android 在运行时会自动将 dp/dip/sp 为单位的尺寸转换为像素单位的值 尺寸单位 补充
尺寸单位的比较 补充 dp 与 px 的比较 ? 以 px 为单位的长度, 在差手机上会变大, 在好手机上变小 以 dp 为单位则不会变化 dp 与 sp 的比较 ? 用户可以在系统设置中设置文本的大小 如果字体大小使用 sp 为单位, 设置有效果 如果字体大小使用 dp 为单位, 设置没有效果 在布局文件视图的宽高尽量用 match_parent/wrap_content 如果必须指定特定值, 使用 dp/dip 做单位 文本大小使用 sp 做单位
关于颜色 在 Android 中字体颜色或背景颜色使用 RGB 来表达 R : red 红色 G : green 绿色 B : blue 蓝色 每个色相用一个 2 位的十六进制的数来表达 颜色值的前面为带一个字符 : # 例子 红色 : #ff0000 绿色 : #00ff00 白色 : #ffffff 黑色 : # 具体需要什么颜色可以查颜色表 补充
课堂内容 讲解的知识 应用练习 Android SDK docs API Guides : API 使用向导 Reference : API 文档 Android SDK APIDemos SDK 提供的常用 API 使用的测试应用, 平时多把玩这个应用 Baidu+ 技术 Blog 学习或工作中有疑惑或解决不了的问题, 多百度 平时学习可以看一些 ” 前辈们 ” 写的 blog 开源框架与项目 在网上有很多相当不错的开源框架和项目, 可以拿来使用或学习 站在巨人的肩膀上学习和工作 开源框架集中营 : 如何学习 Android 应用开发 补充