20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
教材学习内容总结
第二十三章 Android简介
- Android一词英文本义指“机器人”,它是由Google公司于2007年11月推出的基于Linux平台的开源手机操作系统,依靠Google公司的强大开发和媒体资源,Android成为众多手机厂商竞相追逐的对象,逐渐发展成为当下流行的手机开发平台。
- Android是一个包括操作系统、中间件、用户界面和关键应用软件的移动设备软件堆。换言之,Android是基于Java并运行在Linux内核上的轻量级操作系统,其功能全面,包括一系列Google公司在其上内置的应用软件,如电话、短信等基本应用功能。
- 随着科技的发展,移动电话(Mobile Phone)正朝着智能化的方向发展,逐步成为多种工具的功能载体,而Android就是这样一个智能手机的平台、一个多种工具的功能载体。
- Android在技术上还具有以下几个方面的特性:
(1)全开放智能移动电话平台
(2)支持多硬件平台
(3)使用众多的标准化技术
(4)核心技术完整、统一
(5)完善的SDK和文档
(6)完善的辅助开发工具
第二十四章 初识Android
- 下载和安装Android Stutio。参照Android Studio 和 SDK 下载、安装和环境变量配置完成。
- 创建应用程序并在虚拟设备上运行。应用程序的运行需要虚拟设备。
- 应用程序的结构:
src 目录
是源代码目录,所有允许用户修改的java文件和用户自己添加的 java 文件都保存在这个目录中。
gen 目录
是 1.5 版本新增的目录,用来保存 ADT 自动生成的 java 文件,例如 R.java 或 AIDL 文件。注意:
R.java 文件(非常重要)
a) R.java 文件是 ADT 自动生成的文件,包含对 drawable、layout 和 values 目录内的资源的引用指针,Android 程序能够直接通过 R 类引用目录中的资源
b) R.java 文件不能手工修改,如果向资源目录中增加或删除了资源文件,则需要在工程名称上右击,选择 Refresh 来更新 R.java 文件中的代码
c) R 类包含的几个内部类,分别与资源类型相对应,资源 ID 便保存在这些内部类中。
android.jar 文件
是 Android 程序所能引用的函数库文件,Android 通过平台所支持 API 都包含在这个文件中
assets 目录
用来存放原始格式的文件,例如音频文件、视频文件等二进制格式文件。此目录中的资源不能被 R.java 文件索引,所以只能以资截流的形式读取。一般情况下为空
layout 目录
用来存放我们为每个界面写的布局文件
Strings.xml 文件
是程序中的一些字符串的引用
AndroidManifest.xml
是 XML 格式的 Android 程序声明文件,包含了 Android 系统运行Android程序前所必须掌握的重要信息,这些信息包含应用程序名称、图标、包名称、模块组成、授权和 SDK最低版本等,而且每个Android程序必须在根目录下包含一个AndroidManifest.xml文件
- 调试应用程序:设置断点,并通过Run > Debug app 调试程序。
第二十五章 活动
- 活动的状态:每个活动在生命周期中最多可能会有四种状态:
1) 运行状态:当一个活动位于返回栈的栈顶时,活动处于运行状态
2) 暂停状态:当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态,处于暂停状态的活动仍然是完全存活着的
3) 停止状态:当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。
4) 销毁状态:当一个活动从返回栈中移除后就变成了销毁状态
- 活动的生存期:
1) 完整生存期:活动在onCreate()方法和onDestroy()方法之间所经历的,就是完整生存期
2) 可见生存期:活动在onStart()方法和onStop()方法之间所经历的,就是可见生存期。在可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互
3) 前台生存期:活动在onResume()方法和onPause()方法之间所经历的,就是前台生存期。在前台生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行相互的
- 活动生命周期图解:
第二十六章 UI组件
- 在活动中使用Toast:Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,在一段时间后自动消失。findViewById()方法返回的是一个View对象,我们需要向下转型将它转成Button对象。
Android中常用的的UI组件:
-
TextView文本显示组件:
TextView组件的主要功能是向用户显示文本内容。 TextView组件在功能上可以有选择的让用户编辑文本。 TextView组件自身被设置为不允许编辑。
-
EditView文本编辑组件:
EditView组件继承自TextView组件。 EditView组件与TextView组件的不同之处是可以对文本内容进行编辑。 EditView组件可以设置监听器,用来检测用户输入是否合法等。
-
Button按钮组件:
Button组件继承自TextView组件。 Button组件主要用于监听按钮的点击事件。 Button组件可以通过修改背景来显示图片等Drawable资源。
-
CheckBox和RadioButton组件:
CheckBox和RadioButton组件都继承自Button组件。 CheckBox和RadioButton组件都只有选中和未选中两种状态。 RadioButton组件是单选按钮,必须编制到RadioGroup中。 同一时刻一个RadioGroup中只能有一个按钮处于选中状态。
-
ListView列表组件:
ListView组件是一种以垂直方式列出列表项的常用组件。 ListView组件的列表项通过适配器创建。 ListView组件可通过不同的适配器展现不同的列表内容,如数据、组件。
-
Spinner下拉列表组件:
Spinner组件是一种用来从多个选项中选择一个所需选项的常用组件。 Spinner组件每次只显示用户选中的元素。 Spinner组件选择项中的元素同样来自适配器。
教材学习中的问题和解决过程
问题一:不了解工程目录中各文件夹究竟有何作用
- 问题一解决方案:
通过查阅资料了解到:
1、.gradle和.idea
这两个目录下放置的都是Android Studio自动生成的一些文件,我们无须关心,也不要去手动 编辑。
2、app
项目中的代码、资源等内容几乎都是放置在这个目录下的,我们后面的开发工作也基本都是在这个目录下进行的, 待会儿还会对这个目录单独展开进行讲解。
3、build
这个目录你也不需要过多关心,它主要包含了一些在编译时自动生成的文件。
4、gradle
这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会 自动根据本地的缓存情况决定是否需要联网下载gradle。Android Studio默认没有启动gradle wrapper的方式,如 果需要打开,可以点击Android Studio导航栏 –> File –> Settings –> Build,Execution,Deployment –> Gradle,进行配置更改。
5、.gitignore
这个文件是用来将指定的目录或文件排除在版本控制之外的。
6、build.gradle
这是项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的。下面会详细分析gradle构建脚本中的具 体内容。
7、gradle.properties
这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。
8、gradlew和gradlew.bat
这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat 是在Windows系统中使用的。
9、HelloWorld.iml
iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(Android Studio是基于IntelliJ IDEA开发的),用于标识这 是一个IntelliJ IDEA项目,我们不需要修改这个文件中的任何内容。
10、local.properties
这个文件用于指定本机中的Android SDK路径,通常内容都是自动生成的,我们并不需要修改。除非你本机中的 Android SDK位置发生了变化,那么就将这个文件中的路径改成新的位置即可。
11、settings.gradle
这个文件用于指定项目中所有引入的模块。由于HelloWorld项目中就只有一个app模块,因此该文件中也就只引入 了app这一个模块。通常情况下模块的引入都是自动完成的,需要我们手动去修改这个文件的场景可能比较少。
- app目录结构 :
1、build
这个目录和外层的build目录类似,主要也是包含了一些在编译时自动生成的文件,不过它里面的内容会更多更 杂,我们不需要过多关系。
2、libs
如果你的项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包都会被自动 添加到构建路径里去。
3、AndroidTest
此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
4、java
毫无疑问,java目录是放置我们所有java代码的地方,展开该目录,你将看到我们刚才创建的HelloWorldActivity 文件就在里面。
5、res
这个目录下的内容就有点多了。简单点说,就是你在项目中使用到的所有图片,布局,字符串等资源都要存放在这 个目录下。当然这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在 values目录下,所以你不用担心会把整个res目录弄得乱糟糟的。
6、AndroidManifest.xml
这是你整个Android项目的配置文件,你在程序中定义的所以四大组件都需要在这个文件里注册,另外还可以在这 个文件中给应用程序添加权限声明。
7、test
此处是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。
8、.gitignore
这个文件用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似。
9、app.iml
IntelliJ IDEA项目自动生成的文件,我们不需要关心或修改这个文件中的内容。
10、build.gradle
这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置。
11、proguard-rules.pro这个文件用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被别人破解,通常会 将代码混淆,从而让破解者难以阅读。
- res目录结构:
1、drawable开头的文件夹都是用来放图片的。
2、mipmap开头的文件夹都是用来放应用图标的。
3、values开头的文件夹都是用来放字符串、样式、颜色等配置的。
4、layout文件夹是用来放布局文件的。
代码调试中的问题和解决过程
问题1:将课本的代码导入Android Stutio时出现错误
- 问题1解决方案:
通过询问同学,找到了一个比较方便的方法。以导入ActivityDemo为例:
1.新建moduleActivityDemo
2.按如下路径找到新建的 ActivityDemo
,并打开main
3.打开代码资源中的ActivityDemo
,并打开main
4.对main中的如下进行全部替换
(1)
(2)
(3)
代码托管
上周考试错题总结
错题1
理解:抽象数据类型包括数据结构和操作和访问数据结构的方法,向量就是这两者的结合。数组是一个数据结构,但没有方法;而引用变量和基本类型是数据,而不是数据结构。错题2
理解:在链表中,链接是对下一个节点的引用。错题3
理解:一个简单的线性列表就是一个退化树的例子。错题4
理解:push在堆栈的顶部(或前面)添加,而enqueue总是添加在队列的尾部。错题5
理解:抽象数据类型包括数据结构和操作和访问数据结构的方法。数组是一种数据结构,可以用来存储值列表,但是数组没有已经实现的操作来执行列表操作。错题6
理解:仅仅因为存在一个类并不意味着这个类就是ADT。- 错题7
理解:不是所有的类都必须是ADTs,但是所有的adt都被定义为类。 - 错题8
理解:是chmod 777 pdds,不是 chomd 777 pdds,注意细节。 错题9
理解:是apt-cache search tree而不是apt-get search tree。错题10
错因:手残!!- 错题11
理解:是tar –cf dky.tar dky而不是tar –c dky.tar dky 。 错题12
理解:是grep –rn main /src而不是grep –n main /src。- 错题13
理解:是tree -D src而不是tree -T src。 错题14
理解:man-k同命令apropos 将搜索whatis数据库,模糊查找关键字错题15
理解:是chmod a+w filel.txt 或者 chmod 666 file,注意 a+w 和 o+w 的区别
结对及互评
这周与结对伙伴主要对实验四 Android程序设计进行了共同的学习,期间我们共同解决了包括安装过程、文件导入和 运行时出现的一些问题。学习的效率得到了很大的提高!
点评过的同学博客和代码
- 本周结对学习情况
感悟
程序设计这门课就像一片海洋,而我们就好像漂泊在大海的*,看不到尽头!也许唯有向着一个方向竭力拼搏才能到达彼岸吧!!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 28/28 | 1/1 | 16/16 | |
第二周 | 710/738 | 1/2 | 20/36 | |
第三周 | 426/1164 | 1/3 | 16/52 | |
第四周 | 1068/2232 | 2/5 | 20/72 | |
第五周 | 604/2928 | 1/6 | 22/94 | |
第六周 | 609/3537 | 1/7 | 22/116 | |
第七周 | 599/4136 | 1/8 | 18/134 | |
第八周 | 1052/5188 | 3/11 | 20/154 | |
第九周 | 866/6054 | 1/12 | 20/174 | |
第十周 | 970/7024 | 1/13 | 20/194 | |
第十一周 | 0/7024 | 3/16 | 20/214 | 了解了Android方面内容以及Android Stutio 的使用 |
计划学习时间:22小时
实际学习时间:20小时
改进情况:继续努力努力努力!!!