Android基础一

本文介绍了Android的基础知识,包括系统架构的四层设计(Linux内核层、系统运行库层、应用程序框架层和应用程序层),通讯制式,以及关键组件如Dalvik和ART虚拟机的区别。此外,还涉及了AndroidSDK的目录结构,创建项目和模拟器的过程,以及常见的ADB命令。文章还讲解了Android布局(如LinearLayout、RelativeLayout)和常见控件的使用,以及点击事件的不同实现方式。
摘要由CSDN通过智能技术生成

Android基础一

通讯制式

  1. 2g
    • GSM CDMA
  2. 3g
    • CDMA2000 中日韩 北美 电信
    • WCDMA 世界大部分国家使用 联通
    • TD-SCDMA 中国移动
  3. 4g
    • FDD-LTE 欧洲研发 世界大部分地区使用
    • TD-LTE 中国移动

Android系统架构

Android 的系统架构采用了分层的设计。从架构下图看,Android 分为四层,从低层到高层分 别是 Linux 内核层、系统运行库层、应用程序框架层和应用程序层。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-33JS9HD8-1685068767733)(null)]

  1. Linux 内核层

    • Android 的核心系统服务依赖于 Linux 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux 内核也同时作为硬件和软件栈之间的抽象层。
  2. 系统运行库层

    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 内核的一些功能,比如线程机制和底层内存管理机制。
  3. 应用程序框架层。Android 系统中的每个应用都依赖于该框架提供的一系列服务和系统,其中包括:

    • 活动管理器(ActivityManager) 用来管理应用程序生命周期并提供常用的导航回退功能。
    • 丰富而又可扩展的视图控件(Views),可以用来构建应用程序,它包括列表(ListView)、网格(GridView)、文本框(EditText)、按钮(Button)等,甚至可嵌入的 web 浏览器。
    • 内容提供者(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
    • 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件。
    • 通知管理器 (NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息。
  4. 应用程序层

    • 该层不仅包括系统内置的应用也包括用户自己安装的应用,比如 Email 客户端、SMS 短消息程序、日 历、地图、浏览器、联系人管理程序、QQ、微信、淘宝、美团等。

Java虚拟机与Dalvik虚拟机的区别

  1. Java虚拟机
    • 生成多个.class文件
  2. Dalvik虚拟机
    • 生成一个.dex文件
    • 对字节码进行了优化

Dalvik虚拟机与ART虚拟机的区别

  1. Dalvik虚拟机
    • 运行时再将字节码编译为机器码,每次都需要编译
  2. ART虚拟机
    • 在安装后就将字节码编译为机器码,存储在本地,以后启动就不用每次都编译了

SDK目录结构

  1. add-ons
    • 附属工具
  2. build-tools
    • 构建工具、编译工具
  3. docs
    • 开发文档
  4. extras
    • 新API兼容低版本的支持库、Inter模拟器加速器
  5. platforms
    • 各版本的SDK
  6. platform-tools
    • 平台相关的工具,主要就是adb
  7. sources
    • 各版本Android jar包的全部源码
  8. system-images
    • 各版本模拟器镜像
  9. temp
    • 临时文件夹
  10. tools
    • 开发相关的辅助工具

创建项目

  1. 配置Android SDK路径,仅需配置一次
    • Window --> Preferences --> Android --> SDK Location
  2. 创建项目
    • 在Package Explorer内右键 --> Android Application Project
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NAwW7BJ6-1685068766890)(null)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xi5b4C4O-1685068767686)(null)]
  3. 创建模拟器
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HON8iUPJ-1685068767079)(null)]
  4. 运行项目
    • 右键项目 --> Run as --> Android Application

ADB指令

adb:android debug bridge 安卓调试桥

  1. adb devices
    • 查看链接到电脑上的所有的手机设备。(模拟器,真实的手机)
  2. adb kill-server
    • 杀死adb的调试桥
  3. adb start-server
    • 重新启动adb的调试桥
  4. adb install xxx.apk
    • 把电脑上的一个文件安装到模拟器(真实的手机)
  5. adb uninstall 应用程序的包名
    • 从手机卸载一个应用,参数是应用程序的包名,DDMS,查看应用程序的包名

DDMS(dalvik debug manager system)

  1. Devices 连接的模拟器或者手机
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QSk8POnQ-1685068767064)(null)]
  2. File Explorer 文件管理器
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dz0f9Zad-1685068767720)(null)]
  3. Emulator Control 手机控制器
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I938RpgD-1685068766874)(null)]

MainActivity

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xGg8VRsk-1685068767035)(null)]

Android工程目录结构

  1. src:java 源代码存放目录。
  2. gen:存放自动生成的文件,最重要的就是 R.java 文件,这个文件由 Android 开发工具自动生成,会根据你放入 res 目录的资源,同步更新修改 R.java 文件。
  3. bin:存放编译时产生的临时文件和apk文件
  4. 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/ 该目录用于存放应用使用到的原始文件,如音频文件等。编译软件时,这些数据不会被编译,它们被直接加入到程序安装包里。
  5. libs:支持库目录,程序开发时需要的一些三方的 jar 包可以放在这个目录,通常系统会自动把里面的 jar 包,添加到环境变量,如果自动添加不了那么就需要手动添加。
  6. assets:资源目录 Android 除了提供 res 资源文件外,在 assets 目录中可以存放资源文件,而且 assets 目录下的资源文件不会在 R.java 中生成 id。
  7. AndroidManifest.xml:项目清单文件 该文件用于配置四大组件、声明权限、配置应用版本等参数。
  8. project.properties:项目环境信息,一般是不需要修改此文件。
  9. proguard-project.txt:用于配置代码混淆参数。

电话拨号器

  1. 编写布局
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojTxnKlC-1685068766973)(null)]
  2. 编写代码
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AnwbH25o-1685068767696)(null)]

布局

Android 有 5 大布局,分别是 RelativeLayout、LinearLayout、FrameLayout、AbsoluteLayout、TableLayout。 不过前 3 种布局才是最常用的布局,AbsoluteLayout 已经被 Google 废除,TableLayout 也不太常用。

  1. 线性布局 LinearLayout
    • orientation 朝向: horizontal(水平),vertical(竖直)
    • weight 权重:控制控件在父窗体里面显示的比例
  2. 相对布局 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” 与…右边对齐
  3. 帧布局 FrameLayout
    • 层叠显示
    • 后面的可以覆盖前面的
  4. 表格布局 TableLayout
    • 里面放标签代表一行,里面的子节点可以使用weight属性
  5. 绝对布局 AbsoluteLayout
    • 废弃,不推荐使用。

Android 中的长度单位

  1. px:pixels 的意思,是屏幕的物理像素点,与密度相关,密度大了,单位面积上的 px 会比较多。不推 荐使用的单位。
  2. dp或dip:Density independentpixels 设备无关像素,简称 dip 也叫 dp。一般情况下,在不同分辨率下都不会有缩放的感觉。在运行时,Android 系统会根据使用的屏幕的实际密度,透明地处理任何所需 dp 单位的缩放。 推荐使用的单位。
  3. sp:与刻度无关的单位,同 dip/dp 相似,主要用于设置字体的大小。

控件

  1. TextView
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yPfMZCAz-1685068766997)(null)]
  2. EditText
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xclEYFKj-1685068767093)(null)]
    • editText.getText() 获取输入框里面的文本
  3. ImageView
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-82BGEMG6-1685068767709)(null)]

发送短信的API

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9zCE5XSt-1685068766922)(null)]

点击事件的几种写法

  1. 内部类实现onClickListener的接口。太麻烦,真实开发不使用
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DOYgaslC-1685068767053)(null)]
  2. 匿名内部类实现onClickListener,new 的是接口的实现类。开发中偶尔使用,适用于点击事件较少的界面
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aUThLrkE-1685068766906)(null)]
  3. 让当前的Activity实现onClickListener的接口。开发中经常使用,适用于点击事件较多的界面
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-09gM5dF7-1685068767020)(null)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAOZmfko-1685068766953)(null)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UpnggziY-1685068767659)(null)]
  4. 在布局xml文件里面声明 onclick属性 =“方法名”。方便,但其他人读代码不方便,真实开发一般不使用
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GBVmTERU-1685068767008)(null)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P2BneY0w-1685068767675)(null)]

总结

  1. 了解 Android 操作系统
  2. Android 系统架构
  3. 搭建 Android 开发环境
  4. 使用 Android 模拟器
  5. 案例:HelloWorld、电话拨号器、qq大盗
  6. 点击事件的四种实现方式
  7. Android 中的布局
  8. Android 中的单位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

paterWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值