Ch 1. Android 基础入门

1.1 Android简介

1.1.1 通信技术

  • 1G

    • 最初的模拟技术,仅限语音的蜂窝电话标准。
    • 类似简单的无线电台,只能进行通话。
    • 通话锁定在一定频率上,即手机号码。
    • 很容易被窃听。
  • 2G
    • 9.6kbit/s。
    • 以数字语音传输技术为核心。
    • 增加接收数据功能。
    • 2G智能机支持一些简单的Java小程序。
  • 3G
    • 室内2Mbit/s,室外384kbit/s,行车144bit/s。
    • 将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。
  • 4G
    • 10~20Mbit/s,最高可达100Mbit/s。
    • 包含TD-LTE和FDD-LTE两种制式。

      LTE:Long Term Evolution.
      LTE为3.9G,未达到4G标准,升级版LTE Advanced满足国际电信联盟对4G的要求。

    • 集3G与WLAN于一体。
  • 5G
    • 据说可达10Gbit/s。
    • 尚未正式商用。

1.1.2 Android发展历史

时间 版本 代号
2009-4-30 1.5 Cupcake
2009-9-15 1.6 Donut
2009-10-26 2.0/2.1 Eclair
2010-5-20 2.2/2.2.1 Froyo
2010-12-7 2.3 Gingerbread
2011-2-2 3.0 Honeycomb
2011-5-11 3.1 Honeycomb
2011-7-13 3.2 Honeycomb
2011-10-19 4.0 Ice Cream Sandwich
2012-6-28 4.1 Jelly Bean
2012-10-30 4.2 Jelly Bean
2013-7-25 4.3 Jelly Bean
2013-9-4 4.4 Kitkat
2014-10-15 5.0 Lollipop
2015-9-30 6.0 Marshmallow
2016-8-22 7.0 Nougat
2017-8-22 8.0/8.1 Oreo

1.1.3 Android体系结构

  1. 应用程序层
    是一个核心应用程序的集合。
  2. 应用程序框架层
    主要提供了构建应用程序时用到的各种API 。
  3. 核心类库
    1. 系统库主要通过C/C++库来为Android系统提供主要的特性支持。
    2. Android运行时库主要提供一些核心库,还包括了Dalvik虚拟机。
  4. Linux内核
    为Android设备的各种硬件提供了底层的驱动。

Dalvik虚拟机

编译文件过程:

#mermaid-svg-aKURjn8Yx8ZKdwpz {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-aKURjn8Yx8ZKdwpz .error-icon{fill:#552222;}#mermaid-svg-aKURjn8Yx8ZKdwpz .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-aKURjn8Yx8ZKdwpz .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-aKURjn8Yx8ZKdwpz .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-aKURjn8Yx8ZKdwpz .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-aKURjn8Yx8ZKdwpz .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-aKURjn8Yx8ZKdwpz .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-aKURjn8Yx8ZKdwpz .marker{fill:#333333;stroke:#333333;}#mermaid-svg-aKURjn8Yx8ZKdwpz .marker.cross{stroke:#333333;}#mermaid-svg-aKURjn8Yx8ZKdwpz svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-aKURjn8Yx8ZKdwpz .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-aKURjn8Yx8ZKdwpz .cluster-label text{fill:#333;}#mermaid-svg-aKURjn8Yx8ZKdwpz .cluster-label span{color:#333;}#mermaid-svg-aKURjn8Yx8ZKdwpz .label text,#mermaid-svg-aKURjn8Yx8ZKdwpz span{fill:#333;color:#333;}#mermaid-svg-aKURjn8Yx8ZKdwpz .node rect,#mermaid-svg-aKURjn8Yx8ZKdwpz .node circle,#mermaid-svg-aKURjn8Yx8ZKdwpz .node ellipse,#mermaid-svg-aKURjn8Yx8ZKdwpz .node polygon,#mermaid-svg-aKURjn8Yx8ZKdwpz .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-aKURjn8Yx8ZKdwpz .node .label{text-align:center;}#mermaid-svg-aKURjn8Yx8ZKdwpz .node.clickable{cursor:pointer;}#mermaid-svg-aKURjn8Yx8ZKdwpz .arrowheadPath{fill:#333333;}#mermaid-svg-aKURjn8Yx8ZKdwpz .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-aKURjn8Yx8ZKdwpz .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-aKURjn8Yx8ZKdwpz .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-aKURjn8Yx8ZKdwpz .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-aKURjn8Yx8ZKdwpz .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-aKURjn8Yx8ZKdwpz .cluster text{fill:#333;}#mermaid-svg-aKURjn8Yx8ZKdwpz .cluster span{color:#333;}#mermaid-svg-aKURjn8Yx8ZKdwpz div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-aKURjn8Yx8ZKdwpz :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

Dalvik虚拟机
Android应用程序
JDK编译
部分文件
优化
class文件
dex文件
DX工具
odex文件
Java源代码

ART模式英文全称为Android runtime,是4.4新增的一种应用模式。在启动ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地

1.2 Android开发环境搭建

1.3 开发第一个Android程序

1.4 Android程序结构


文件和文件夹

1.5 资源的管理与使用

Android程序的资源都保存在res目录下。

res目录

1.5.1 图片资源

  • 应用图标资源:mipmap开头
  • 界面中使用图标资源:drawable开头
密度范围值(dpi) mipmap文件夹 drawable文件夹 图标大小(px)
120~160 _mdpi _mdpi 48x48
160~240 _hdpi _hdpi 72x72
240~320 _xdpi _xdpi 96x96
320~480 _xxxdpi _xxxdpi 144x144
480~640 _xxxdpi _xxxdpi 192x192
  1. Java调用图片资源
    Acitvity的方法中通过getResources().getDrawable()方法调用。
getResources().getDrawable(R.mipmap.ic_launcher);
getResources().getDrawable(R.drawable.icon);
  1. XML布局文件调用图片资源
@mipmap/ic_launcher
@drawable/icon

1.5.2 主题和样式资源

  1. 主题
    主题资源定义在res/values/styles.xml文件中。

    <style></style>标签定义主题,name指定主题名,parent指定系统父主题,<item></item>标签设置主题样式。
    根元素<resources></resources>中可以包含多个<style></style>,每个<style></style>可以包含多个<item></item>

    不是必须存在styles.xml文件中,有时候自动创建的是Theme.xml,而不是Styles.xml,扩展而言就是style只是属性,与文件名无关。

    1. AndroidManifest.xml中设置主题
       <application......android:theme ="@style/AppTheme"></application>
    
    1. 在Java代码中设置主题

      setTheme(R.style.AppTheme);
      
  2. 样式
    样式存放在res/values/styles.xml中,通过<style>标签中的name属性设置样式名称,通过<item>标签设置控件样式。

    在布局文件的View控件中通过style属性调用textViewStyle样式:

    <TextView......style="@style/textViewStyle"/>
    

1.5.3 布局资源

当创建一个Android程序时,默认会在res/layout文件夹中生成一个布局资源文件activity_main.xml,也可在res/layout文件夹中创建新的布局资源文件。

  1. 通过Java代码调用布局资源文件
    onCreat()方法中通过调用setContenView()方法来载入Activity对应布局资源文件:

    setContentView(R.layout.activity_Main);
    
  2. 在XML布局文件中调用布局资源文件
    在XML布局文件中通过<include>标签调用activity_main.xml布局资源文件:

    <include layout="@layout/activity_main">
    

1.5.4 字符串资源

res/values/strings.xml文件定义字符串:

<resources><string name="app_name">字符串</string>
</resources>

string.xml文件中只能有一个根元素,根元素中可以包含多个<string></string>标签

  1. 通过Java代码调用字符串资源
    ActivityonCreat()方法中调用getResources().getString()加载app_name字符串资源:

    getResources().getString(R.string.app_name);
    
  2. 在XML布局文件中调用字符串资源
    @string/app_name
    

1.5.5 颜色资源

颜色资源通常定义在res/values/colors.xml文件中。

<resources><color name="colorPrimary">#3F51B5</color>
</resources>

<color></color>标签用于定义颜色资源,name属性用于指定颜色资源的名称,两个标签中间设置的是颜色值。

  1. 通过Java代码调用颜色资源
    ActivityonCreat()方法中调用getResources().getColor()加载colorPrimary颜色资源:

    getResources().getColor(R.color.colorPrimary);
    
  2. **在XML布局文件中调用颜色资源
    @color/colorPrimary
    
    定义颜色值
    • #RGB: 使用一位十六进制数值表示红绿蓝
    • #ARGB: 使用一位十六进制数值表示透明度、红绿蓝
    • #RRGGBB: 使用二位十六进制数值表示红绿蓝
    • #AARRGGBB: 使用二位十六进制数值表示透明度、红绿蓝
      颜色的小写字母可以换成大写

1.5.6 尺寸资源

Android界面中View的宽高和View之间的间距值是通过尺寸资源设置的。
尺寸资源通常定义在res/values/dimens.xml文件中。
Android Studio3.2版本中没有默认创建dimen.xml文件,需要手动创建。
<dimen></dimen>标签用于定义尺寸资源,name属性指定尺寸资源名称,标签中间设置尺寸大小。

  1. 通过Java代码调用尺寸资源

       getResources().getDimension(R.dimen.activity_horizontal_margin);
    
  2. 通过XML布局文件中调用尺寸资源
    @dimen/activity_horizontal_margin
    
    Android支持的尺寸单位
    • px 像素:每个px对应屏幕上的一个点
    • dp 设备独立像素:dp与dip意义相同,是与屏幕密度无关的尺寸单位。每英寸160点的显示屏上,1dip=1px。dp按屏幕分辨率比例放大或缩小。
    • sp 比例像素:主要处理字体大小,sp与dp比较相似,能够跟随用户系统字体大小变化而变化。
    • in 英寸:屏幕对角线的长度单位
    • pt 磅:屏幕唔理察高度单位,1pt=1/72in
    • mm 毫米:屏幕物理长度单位

1.6 程序调试

暂略

《黑马程序员Android移动应用基础教程》学习笔记(1)相关推荐

  1. JavaScript高级程序设计第四版学习--第二十四章

    title: JavaScript高级程序设计第四版学习–第二十四章 date: 2021-5-31 10:46:01 author: Xilong88 tags: JavaScript 本章内容: ...

  2. JavaScript高级程序设计红宝书学习笔记第三章基本概念

    第三章 基本概念 本章内容 语法 数据类型 操作符 语句 函数 3.1 语法 3.1.1 区分大小写,ECMAScript中的一切(变量.函数名和操作符)都区分大小写. 3.1.2 标识符 标识符:变 ...

  3. javascript 高级程序设计(第4版)阅读笔记(三)

    第3章,内容很长,所以更得慢,主要讲的是ECMAScript   es的语言基础:语法.数据类型.基本操作符.流控制语句.理解函数,ECMAScript 的语法很大程度上借鉴了 C 语言和其他类 C  ...

  4. 阅读JavaScript高级程序设计(第二版)笔记

    第一章js简介 JavaScript诞生在1995年,当时负责进行输入型验证. JavaScript是一种专为与网页交互而设计的脚本语言,分为 : 1. ECMAScript核心语言功能. 2.文档对 ...

  5. JavaScript高级程序设计第三版.CHM【带实例】

    从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...

  6. JavaScript高级程序设计[第3版]

    JavaScript高级程序设计[第3版] package xyz.huning.toolkit.pdf;import java.io.FileOutputStream; import java.io ...

  7. Js高级程序设计第三版学习(十二章)

                                  Js高级程序设计第三版学习(十二章) 第十二章 DOM2和DOM3   1.样式: 访问样式属性 任何支持style特性的HTML元素都有一 ...

  8. JavaScript高级程序设计 第4版----String

    JavaScript高级程序设计 第4版----String 文章目录 JavaScript高级程序设计 第4版----String 1.JavaScript 字符 2.字符串操作方法 1.conca ...

  9. 《JavaScript高级程序设计 第3版》-学习笔记-1

    P1-P30页 1.<script>标签的属性 async:async(html)  | async="async"(xhtml),表示立即下载脚本,但不马上执行(执行 ...

  10. 新书-JavaScript高级程序设计:第2版(预订中,估价)

    http://www.china-pub.com/196857 JavaScript的应用在广度和深度上日益扩大和加深,前端开发亟待掌握的JavaScript技能也越来越具有挑战性. 这个新版本几乎全 ...

最新文章

  1. python主要运用于-python主要用于
  2. python基础教程怎么样-怎样学习Python?Python入门必看
  3. 模拟退火算法解决TSP(python实现 110+行代码)【gif生成】
  4. java 对象数据 搜索,java – 使用反射检索对象的数据类型
  5. 从产品经理到创业者如何拿到第一个1000万融资
  6. -i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译
  7. 产品经理须知 | API接口知识小结
  8. Linux系统:Centos7搭建Redis单台和集群环境
  9. 多大的计算机科学,科学网—大家计算机的屏幕尺寸都是多大的? - 刘洋的博文...
  10. “中文编程”会是解决中国程序员编程效率的秘密武器,成为中国软件工程的“银弹”么?...
  11. 如果战斗机飞行员弹出,自动驾驶仪会接管飞机安全降落么?
  12. 我的Android进阶之旅------Android图片处理(Matrix,ColorMatrix)
  13. java 6789的10000次方,用MSSQL计算2的10000次方
  14. ASPNetCore MVC ModelValidation-ajax
  15. Kafka高可用机制入门
  16. BGP AS过滤列表
  17. 具体案例 快速原型模型_3D快速成型技术需要传统加工方法30%~50%的工时和20%~35%的成本,可以如此地降低成本?...
  18. mac matlab 模糊,MATLAB 2014a 在Mac OS X yosemite 10.10 Retina显示模糊的解决办法
  19. CNN图像识别_算法篇
  20. for循环 批处理 查找文件 详细信息 文件名

热门文章

  1. echarts柱状堆积图
  2. JUCE小白求教VS2019-C1083无法打开包括文件
  3. 图片复印如何去除黑底_我告诉你照片打印如何去除黑底
  4. 学习iOS逆向有什么用?
  5. 图像二值化——最大类间方差法(Ostu,大津法)
  6. pb与java_Java中使用PB教程
  7. 论文翻译:2020_Demucs:Real Time Speech Enhancement in the Waveform Domain
  8. html实训大作业《基于HTML+CSS+JavaScript红色文化传媒网站(20页)》
  9. mysql调查问卷数据库设计_客服-问卷调查-问题答案表 - 数据库设计 - 数据库表结构 - 果创云...
  10. 《缠中说禅108课》99:走势结构的两重表里关系 3