Android基础一
通讯制式
- 2g
- GSM CDMA
- 3g
- CDMA2000 中日韩 北美 电信
- WCDMA 世界大部分国家使用 联通
- TD-SCDMA 中国移动
- 4g
- FDD-LTE 欧洲研发 世界大部分地区使用
- TD-LTE 中国移动
Android系统架构
Android 的系统架构采用了分层的设计。从架构下图看,Android 分为四层,从低层到高层分 别是 Linux 内核层、系统运行库层、应用程序框架层和应用程序层。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-33JS9HD8-1685068767733)(null)]
-
Linux 内核层
- Android 的核心系统服务依赖于 Linux 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux 内核也同时作为硬件和软件栈之间的抽象层。
-
系统运行库层
1)程序库 Android 包含一些 C/C++库,这些库能被 Android 系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:
- SurfaceManager – 对显示子系统的管理,并且为应用程序提供了 2D 和 3D 图层的无缝融合。
- Media Framework – 该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括 MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。
- SQLite – 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
- OpenGL|ES – 该库可以使用硬件 3D 加速(如果可用)或者使用高度优化的 3D 软加速。
- FreeType – 位图(bitmap)和矢量(vector)字体显示。
- WebKit – 一个最新的 web 浏览器引擎,支持 Android 浏览器和一个可嵌入的 web 视图(WebView)。
- SGL – 底层的 2D 图形引擎
- SSL – SSL(Secure Sockets Layer 安全套接层),在传输层对网络连接进行加密,为网络通信提供安全及数据完整性的一种安全协议,。
- Libc - 一个标准 C 系统函数库(libc)。
2)AndroidRuntime 库
- CoreLibraries – 该核心库提供了 Java 编程语言核心库的大多数功能。
- Dalvik Virtual Machine – 每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。 Dalvik 虚拟机依赖于 linux 内核的一些功能,比如线程机制和底层内存管理机制。
-
应用程序框架层。Android 系统中的每个应用都依赖于该框架提供的一系列服务和系统,其中包括:
- 活动管理器(ActivityManager) 用来管理应用程序生命周期并提供常用的导航回退功能。
- 丰富而又可扩展的视图控件(Views),可以用来构建应用程序,它包括列表(ListView)、网格(GridView)、文本框(EditText)、按钮(Button)等,甚至可嵌入的 web 浏览器。
- 内容提供者(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
- 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件。
- 通知管理器 (NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息。
-
应用程序层
- 该层不仅包括系统内置的应用也包括用户自己安装的应用,比如 Email 客户端、SMS 短消息程序、日 历、地图、浏览器、联系人管理程序、QQ、微信、淘宝、美团等。
Java虚拟机与Dalvik虚拟机的区别
- Java虚拟机
- 生成多个.class文件
- Dalvik虚拟机
- 生成一个.dex文件
- 对字节码进行了优化
Dalvik虚拟机与ART虚拟机的区别
- Dalvik虚拟机
- 运行时再将字节码编译为机器码,每次都需要编译
- ART虚拟机
- 在安装后就将字节码编译为机器码,存储在本地,以后启动就不用每次都编译了
SDK目录结构
- add-ons
- 附属工具
- build-tools
- 构建工具、编译工具
- docs
- 开发文档
- extras
- 新API兼容低版本的支持库、Inter模拟器加速器
- platforms
- 各版本的SDK
- platform-tools
- 平台相关的工具,主要就是adb
- sources
- 各版本Android jar包的全部源码
- system-images
- 各版本模拟器镜像
- temp
- 临时文件夹
- tools
- 开发相关的辅助工具
创建项目
- 配置Android SDK路径,仅需配置一次
- Window --> Preferences --> Android --> SDK Location
- 创建项目
- 在Package Explorer内右键 --> Android Application Project
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NAwW7BJ6-1685068766890)(null)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xi5b4C4O-1685068767686)(null)]
- 创建模拟器
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HON8iUPJ-1685068767079)(null)]
- 运行项目
- 右键项目 --> Run as --> Android Application
ADB指令
adb:android debug bridge 安卓调试桥
- adb devices
- 查看链接到电脑上的所有的手机设备。(模拟器,真实的手机)
- adb kill-server
- 杀死adb的调试桥
- adb start-server
- 重新启动adb的调试桥
- adb install xxx.apk
- 把电脑上的一个文件安装到模拟器(真实的手机)
- adb uninstall 应用程序的包名
- 从手机卸载一个应用,参数是应用程序的包名,DDMS,查看应用程序的包名
DDMS(dalvik debug manager system)
- Devices 连接的模拟器或者手机
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QSk8POnQ-1685068767064)(null)]
- File Explorer 文件管理器
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dz0f9Zad-1685068767720)(null)]
- Emulator Control 手机控制器
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I938RpgD-1685068766874)(null)]
MainActivity
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xGg8VRsk-1685068767035)(null)]
Android工程目录结构
- src:java 源代码存放目录。
- gen:存放自动生成的文件,最重要的就是 R.java 文件,这个文件由 Android 开发工具自动生成,会根据你放入 res 目录的资源,同步更新修改 R.java 文件。
- bin:存放编译时产生的临时文件和apk文件
- res:资源(Resource)目录,存放各种各样的资源,如界面文件、图片或数据,该目录下包含多个子目录。
- res/drawable 存放 png、jpg 等图片文件。
- res/layout 存放界面文件,主要用于显示用户操作界面。
- res/values 存放各种类型数据,不同类型的数据存放在不同的文件中。比如:
- strings.xml 定义字符串和数值
- colors.xml 定义颜色和颜色字串数值
- dimens.xml 定义尺寸数据
- styles.xml 定义样式
- res/anim/ 存放动画的 XML 文件。
- res/xml/ 存放一些xml配置文件,在 Activity 中使用 getResources().getXML()读取该目录下的 XML 资源文件。
- res/raw/ 该目录用于存放应用使用到的原始文件,如音频文件等。编译软件时,这些数据不会被编译,它们被直接加入到程序安装包里。
- libs:支持库目录,程序开发时需要的一些三方的 jar 包可以放在这个目录,通常系统会自动把里面的 jar 包,添加到环境变量,如果自动添加不了那么就需要手动添加。
- assets:资源目录 Android 除了提供 res 资源文件外,在 assets 目录中可以存放资源文件,而且 assets 目录下的资源文件不会在 R.java 中生成 id。
- AndroidManifest.xml:项目清单文件 该文件用于配置四大组件、声明权限、配置应用版本等参数。
- project.properties:项目环境信息,一般是不需要修改此文件。
- proguard-project.txt:用于配置代码混淆参数。
电话拨号器
- 编写布局
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojTxnKlC-1685068766973)(null)]
- 编写代码
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AnwbH25o-1685068767696)(null)]
布局
Android 有 5 大布局,分别是 RelativeLayout、LinearLayout、FrameLayout、AbsoluteLayout、TableLayout。 不过前 3 种布局才是最常用的布局,AbsoluteLayout 已经被 Google 废除,TableLayout 也不太常用。
- 线性布局 LinearLayout
- orientation 朝向: horizontal(水平),vertical(竖直)
- weight 权重:控制控件在父窗体里面显示的比例
- 相对布局 RelateLayout
- 特点:以某个控件为参考,来放置其他控件的位置
- 给子节点提供了很多属性:
- layout_centerInParent=“true” 在父布局的中心
- layout_centerHorizontal=“true” 水平居中
- layout_centerVertical=“true” 竖直居中
- layout_alignParentTop=“true” 与父布局上边对齐
- layout_alignParentBottom=“true” 与父布局下边对齐
- layout_alignParentLeft=“true” 与父布局左边对齐
- layout_alignParentRight=“true” 与父布局右边对齐
- layout_above=“@id/xxx” 在…之上
- layout_below=“@id/xxx” 在…之下
- layout_toLeft=“@id/xxx” 在…之左
- layout_toRight=“@id/xxx” 在…之右
- layout_alignTop=“@id/xxx” 与…上边对齐
- layout_alignBottom=“@id/xxx” 与…下边对齐
- layout_alignLeft=“@id/xxx” 与…左边对齐
- layout_alignRight=“@id/xxx” 与…右边对齐
- 帧布局 FrameLayout
- 层叠显示
- 后面的可以覆盖前面的
- 表格布局 TableLayout
- 里面放标签代表一行,里面的子节点可以使用weight属性
- 绝对布局 AbsoluteLayout
- 废弃,不推荐使用。
Android 中的长度单位
- px:pixels 的意思,是屏幕的物理像素点,与密度相关,密度大了,单位面积上的 px 会比较多。不推 荐使用的单位。
- dp或dip:Density independentpixels 设备无关像素,简称 dip 也叫 dp。一般情况下,在不同分辨率下都不会有缩放的感觉。在运行时,Android 系统会根据使用的屏幕的实际密度,透明地处理任何所需 dp 单位的缩放。 推荐使用的单位。
- sp:与刻度无关的单位,同 dip/dp 相似,主要用于设置字体的大小。
控件
- TextView
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yPfMZCAz-1685068766997)(null)]
- EditText
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xclEYFKj-1685068767093)(null)]
- editText.getText() 获取输入框里面的文本
- ImageView
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-82BGEMG6-1685068767709)(null)]
发送短信的API
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9zCE5XSt-1685068766922)(null)]
点击事件的几种写法
- 内部类实现onClickListener的接口。太麻烦,真实开发不使用
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DOYgaslC-1685068767053)(null)]
- 匿名内部类实现onClickListener,new 的是接口的实现类。开发中偶尔使用,适用于点击事件较少的界面
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aUThLrkE-1685068766906)(null)]
- 让当前的Activity实现onClickListener的接口。开发中经常使用,适用于点击事件较多的界面
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-09gM5dF7-1685068767020)(null)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAOZmfko-1685068766953)(null)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UpnggziY-1685068767659)(null)]
- 在布局xml文件里面声明 onclick属性 =“方法名”。方便,但其他人读代码不方便,真实开发一般不使用
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GBVmTERU-1685068767008)(null)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P2BneY0w-1685068767675)(null)]
总结
- 了解 Android 操作系统
- Android 系统架构
- 搭建 Android 开发环境
- 使用 Android 模拟器
- 案例:HelloWorld、电话拨号器、qq大盗
- 点击事件的四种实现方式
- Android 中的布局
- Android 中的单位