20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结

时间:2021-05-25 10:29:06

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

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()方法之间所经历的,就是前台生存期。在前台生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行相互的

  • 活动生命周期图解:
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结

第二十六章 UI组件

  • 在活动中使用Toast:Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,在一段时间后自动消失。findViewById()方法返回的是一个View对象,我们需要向下转型将它转成Button对象。
  • Android中常用的的UI组件:
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结

  • 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组件选择项中的元素同样来自适配器。

教材学习中的问题和解决过程


问题一:不了解工程目录中各文件夹究竟有何作用

20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结

  • 问题一解决方案:
    通过查阅资料了解到:

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目录结构 :
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结

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目录结构:
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结

1、drawable开头的文件夹都是用来放图片的。

2、mipmap开头的文件夹都是用来放应用图标的。

3、values开头的文件夹都是用来放字符串、样式、颜色等配置的。

4、layout文件夹是用来放布局文件的。


代码调试中的问题和解决过程

问题1:将课本的代码导入Android Stutio时出现错误

  • 问题1解决方案:
    通过询问同学,找到了一个比较方便的方法。以导入ActivityDemo为例:
    1.新建module ActivityDemo
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结

2.按如下路径找到新建的 ActivityDemo,并打开main

20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结

3.打开代码资源中的ActivityDemo,并打开main

20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结

4.对main中的如下进行全部替换
(1)
20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
(2)
20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
(3)
20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结


代码托管

上周考试错题总结

  • 错题1
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:抽象数据类型包括数据结构和操作和访问数据结构的方法,向量就是这两者的结合。数组是一个数据结构,但没有方法;而引用变量和基本类型是数据,而不是数据结构。

  • 错题2
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:在链表中,链接是对下一个节点的引用。

  • 错题3
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:一个简单的线性列表就是一个退化树的例子。

  • 错题4
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:push在堆栈的顶部(或前面)添加,而enqueue总是添加在队列的尾部。

  • 错题5
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:抽象数据类型包括数据结构和操作和访问数据结构的方法。数组是一种数据结构,可以用来存储值列表,但是数组没有已经实现的操作来执行列表操作。

  • 错题6
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:仅仅因为存在一个类并不意味着这个类就是ADT。

  • 错题7
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:不是所有的类都必须是ADTs,但是所有的adt都被定义为类。
  • 错题8
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:是chmod 777 pdds,不是 chomd 777 pdds,注意细节。
  • 错题9
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:是apt-cache search tree而不是apt-get search tree。

  • 错题10
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    错因:手残!!

  • 错题11
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:是tar –cf dky.tar dky而不是tar –c dky.tar dky 。
  • 错题12
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:是grep –rn main /src而不是grep –n main /src。

  • 错题13
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:是tree -D src而不是tree -T src。
  • 错题14
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:man-k同命令apropos 将搜索whatis数据库,模糊查找关键字

  • 错题15
    20172311 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    理解:是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小时

  • 改进情况:继续努力努力努力!!!

参考资料