第一行代码笔记

第一章

Android的系统架构有四层:Linux内核层、系统运⾏库

层、应⽤框架层和应⽤层

Linux内核层:Android系统是基于Linux内核的,这⼀层为Android设备的各种硬件提供了底层的驱动

系统运⾏库层

这⼀层通过⼀些C/C++库为Android系统提供了主要的特性⽀持。

应⽤框架层

这⼀层主要提供了构建应⽤程序时可能⽤到的各种API

应⽤层

所有安装在⼿机上的应⽤程序都是属于这⼀层的

Android已发布的版本

20089⽉,Google正式发布了Android 1.0系统,这也是Android系统最早的版本

2014Google推出了号称史上版本改动最⼤的Android 5.0系统,使⽤ART运⾏环境替代了 Dalvik虚拟机,⼤⼤提升了应⽤的运⾏速度,还提出Material Design的概念来优化应⽤的界⾯设计。除此之外,还推出了Android WearAndroid AutoAndroid TV系统

Android系统版本及其详细信息,可以通过访问http://developer.android.google.cn/about/dashboards

Android系统提供的优秀应用程序

  1. 四大组件

Android系统四⼤组件分别是ActivityServiceBroadcastReceiver ContentProvider。其中Activity是所有Android应⽤程序的门⾯,

凡是在应⽤中你看得到的东⻄,都是放在Activity中的。

Service你⽆法看到它,是在后台默默地运⾏,即使⽤户退出了应⽤,Service仍然是可以继续运⾏的。BroadcastReceiver允许你的应⽤接收来⾃各处的⼴播消息也可以向外发出⼴播消息。ContentProvider则为应⽤程序之间共享数据提供了可能,⽐如你想要读取系统通讯录中的联系⼈,就需要通过ContentProvider来实现。

2. 丰富的系统控件

Android系统为开发者提供了丰富的系统控件,也可以编写出我们想要的界⾯。

3.SQLite数据库

Android系统自带的数据库具有轻量级、运算速度快⽀持标准的SQL语法,还可以通过Android封装好的API进⾏操作,让存储和读取数据变得⾮常⽅便。

  1. 提供多媒体服务

例如⾳乐、视频、录⾳、拍照等

开发Android程序需要准备的⼯具

JDKJDKJava语⾔的软件开发⼯具包,它包含了Java的运⾏环境、⼯具集合、基础类库等内容。

Android SDKAndroid SDKGoogle提供的Android开发⼯具

包,在开发Android程序时,我们需要通过引⼊该⼯具包来使⽤Android相关的API

Android Studio

搭建开发环境:Android官网可以下载https://developer.android.google.cn/studio。不过,Android官⽹有时访问会不太稳定,如果你⽆法访问上述⽹址,也可以到⼀些国内的代理站点进⾏下载,⽐如:http://www.android-studio.org。

下载下来的将是⼀个安装包,安装的过程也很简单,基本上⼀直点

“Next”就可以了弹出来的⽆法访问add-on list的警告对话框

点cancel就可以了之后⼀直点击“Next”,直到完成安装,然后启动Android Studio。⾸次启动会让你选择是否导⼊之前Android Studio版本的配置,由于这是我们⾸次安装,选择不导⼊即可

Android Studio的配置界⾯然后点击“Next”开始进⾏具体的配置

选择安装类型

这⾥我们可以选择Android Studio的安装类型,有StandardCustom两种。Standard表⽰⼀切都使⽤默认的配置,⽐较⽅便;Custom则可以根据⽤户的特殊需求进⾏⾃定义。

选择Android Studio的主题⻛格Android Studio内置了深⾊和浅⾊两种⻛格的主题

现在点击“Finish”按钮,配置⼯作就全部完成了。然后Android Studio会尝试联⽹下载⼀些更新,等待更新完成后再点击“Finish”按钮,就会进⼊Android Studio的欢迎界⾯

接下来创建HelloWorld项⽬

Android Studio的欢迎界⾯点击“Start a new Android Studio

project”,选择empty activity就可以了,点next会进入配置界面。这里在name上填helloworld就可以了

Package name表⽰项⽬的包名,Android系统就是通过包名来区分不同 应⽤程序的,因此包名⼀定要具有唯⼀性。Android Studio会根据应⽤名称来⾃动帮我们⽣成合适的包名。如果不想可自行修改。

Save location表⽰项⽬代码存放的位置,如果没有特殊要求的话,这⾥也保持默认即可。接下来的Language就很重要了,这⾥默认选择了KotlinMinimum API level可以设置项⽬的最低兼容版本。将Minimum SDK指定成API 21就可以了。最后俩个复选框选择Android X然后点击finish。

项目建立成功然后启动模拟器就可以了。

点击顶部工具栏图标,创建模拟器点击“Create Virtual Device”按钮就可以⽴刻开始创建了

选择要创建的模拟器设备

这⾥有很多种设备可供我们选择,不仅能创建⼿机模拟器,还可以创建平板、⼿表、电视等模拟器。 可以选择创建Pixel这台设备的模拟器

然后点next。

接下来要下载镜像。然后确认模拟器配置,可以指定模拟器的名

字、分辨率、横竖屏等信息。然后点击finish

模拟器列表

Actions栏⽬中最左边的三⾓形按钮即可启动模拟器。

启动后的模拟器界⾯是Android界面。模拟器启动后将helloworld项⽬运⾏到模拟器上。点击Android标志隔壁的三角就可以了。点击之后模拟器就会运行项目。

Android项目结构切换Project模式的项⽬结构

res⽬录下的结构

所有以“drawable”开头的⽬录都是⽤来放图⽚的,所有以“mipmap”开头的⽬录都是⽤来放应⽤图标的,所有以“values”开头的⽬录都是⽤来放字符串、样式、颜⾊等配置的,所有以“layout”开头的⽬录都是⽤来放布局⽂件的。

“mipmap”开头的⽬录,其实主要是为了让程序能够更好地兼容各种设备。drawable⽬录也是相同的道理

是我们应该⾃⼰创建drawable-hdpidrawable

xhdpidrawable-xxhdpi等⽬录。在制作程序的时候,最好能够给同⼀张图⽚提供⼏个不同分辨率的版本,分别放在这些⽬录下,然后程序运⾏的时候,会⾃动根据当前运⾏设备分辨率的⾼低选择加载哪个⽬录下的图⽚。

drawable-xxhdpi⽬录是最主流的设备分辨率⽬录。

打开res/values/strings.xml⽂件,内容如下。

<resources>

<string name="app_name">HelloWorld</string>

</resources>

可以看到,这⾥定义了⼀个应⽤程序名的字符串,有俩种方法引用:

在代码中通过R.string.app_name可以获得该字符串的引⽤。

XML中通过@string/app_name可以获得该字符串的引⽤。

引用图片就把string换成drawable

如果是图标就把string换成mipmap

如果是文件就把string换成layout

com.android.application表⽰这是⼀个应⽤程序模块,

com.android.library表⽰这是⼀个库模块。

应⽤程序模块是可以直接运⾏的,库模块只能作为代码库依附于别的应⽤程序模块来运⾏。

Android Studio项⽬⼀共有3种依赖⽅式:本地依赖、库依赖和远程依赖。

Android的日记工具:Log.v()Log.d()Log.i()Log.w()Log.e()

快捷键Shift + F10Mac系统是control + R

点击Android Studio底部⼯具栏的“Android Monitor”,在Logcat中就可以看到打印信息

Logcat中的过滤器有Show onl

第二章

编程语言⼤致可以分为两类:编译型语言和解释型语言。

Kotlin和java 100%兼容

Kotlin中定义⼀个变量,只允许在变量前声明两种关键字:val(不可变)var(可变)

KotlinInt变成了⼀个类,它拥有⾃⼰的⽅法和继承结构。

永远优先使⽤val来声明⼀个变量,⽽当val没有办法满⾜你的需求时再使⽤var

函数和⽅法就是同⼀个概念

函数是⽤来运⾏代码的载体

参数的声明参数括号后⾯的那部分是可选的,⽤于声明该函数会返回什么类型的数据格式是参数名: 参数类型

使⽤代码补全功能后Android Studio不仅会帮我们补全代码,还会帮我们⾃动导包

当⼀个函数中只有⼀⾏代码时,Kotlin允许我们不必编写函数体,可以直接将唯⼀的⼀⾏代码写在函数定义的尾部,中间⽤等号连接即可。

程序的执⾏语句主要分为3种:顺序语句、条件语句和循环语句。

Kotlin中的条件语句主要有两种实现⽅式:ifwhen

Kotlin中的if语句相⽐于Java有⼀个额外的功能,它是可以有返回值的返回值就是if语句每⼀个条件中最后⼀⾏代码的返回值。

switch只能传⼊整型或短于整型的变量作为条件

is关键字就是类型匹配的核⼼,它相当于Java中的

instanceof关键字。由于checkNumber()函数接收⼀个Number类型的参数

Kotlin中可以使⽤until关键字来创建⼀个左闭右开的区间

Step关键字可以跳过一些元素。downTo关键字可以创建一个降序的区间

⾯向对象的语⾔是可以创建类的。类就是对事物的⼀种封装

通过这种类的封装,我们就可以在适当的时候创建该类的对象,然后调⽤对象中的字段和函数来满⾜实际编程的需求,这就是⾯向对象编程最基本的思想

Kotlin默认所有⾮抽象类都是不可以被继承的

Person类的前⾯加上open关键字就可以了

Kotlin将构造函数分成了两种:主构造函数和次构造函数。

主构造函数的特点是没有函数体,直接定义在类名的后⾯即可。

调⽤⽗类的构造函数:括号

Study接⼝的readBooks()

doHomework()函数,这种就叫作⾯向接⼝编程,也可以称为多态。

Kotlin中特有的功能——单例类最常⽤、最基础的设计模式之⼀,它

可以⽤于避免创建重复的对象

Kotlin中创建⼀个单例类的⽅式极其简单,只需要将class关键字改成object关键字即可

listOf()函数创建的是⼀个不可变的集合。

不可变的集合指的就是该集合只能⽤于读取,我们⽆法对集合进⾏添加、修改或删除操作。

使⽤mutableListOf()函数创建可变集合。

Set集合中是不可以存放重复元素的,如果存放了多个相同的元

素,只会保留其中⼀份,这是和List集合最⼤的不同之处。

Map是⼀种键值对形式的数据结构

Lambda就是⼀⼩段可以作为参数传递的代码。

Lambda表达式的语法结构:{参数名1: 参数类型, 参数名2: 参数类型 -> 函数体}

集合中的map函数是最常⽤的⼀种函数式API,它⽤于将集合中的每个元素都映射成⼀个另外的值,映射的规则在Lambda表达式中指定,最终⽣成⼀个新的集合。

filter函数是⽤来过滤集合中的数据的,它可以单独使⽤,也可

以配合函数一起用。

Kotlin默认所有的参数和变量都不可为空

doStudy()函数进⾏优化借助?.操作符将if判断语句去掉了

?:操作符这个操作符的左右两边都接收⼀个表达式,如果左边表达式的结果不为空就返回左边表达式的结果,否则就返回右边表达式的结果。

let既不是操作符,也不是什么关键字,⽽是⼀个函数。这个函数提供了函数式API的编程接⼝,并将原始调⽤对象作为参数传递到Lambda表达式中。

Lambda表达式的参数列表 中只有⼀个参数时,可以不⽤声明参数名,直接使⽤it关键字来代替即可

let函数是可以处理全局变量的判空问题的,⽽if判断语句则⽆法做到这⼀点。

因为全局变量的值随时都有可能被其他线程所修改,即使做了判空处理,仍然⽆法保证if语句中的study变量没有空指针⻛险。

类型不匹配错误提⽰不过不⽤担⼼,Kotlin提供了另外⼀种神奇的机制,就是可以通过键值对的⽅式来传参,从⽽不必像传统写法那样按照参数定义的顺序来传参。

y selected application、Firebase、No Filters。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值