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

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

教材学习内容总结

  • 第23章 Android简介
  • 第24章 初识Android
    • Android Studio 是一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。
    • Project窗口中有两个主要的节点:app和Gradle Scripts。app则又包含三个节点:manifests(包含另一个AndroidManifest.xml文件,对应用程序进行描述),java(包含了所有的Java应用程序和测试类),res(包含了资源文件)。
    • 每个Android应用程序都必须有一个叫做AndroiManifest.xml的清单文件用来描述应用程序。
    • Log类带有以不同的日至级别进行日志消息的方法。d(debug)、i(info)、v(verbose)、w(warning)、e(error)、wtf(what a terrible failuer)。
  • 第25章 活动
    • Activity中有onPause, onStart, onResume, onDestory, onRestart和onStop这六个方法。如下图所示:
    • Intent代表了Android应用的启动”意图”,Android应用将会根据Intent来启动指定组件。

    在Android 帮助文档中,Intent的介绍为An intent is an abstract description of an operation to be performed,意思是一个Intent是对一个即将进行的操作的抽象,Intent的字面意识就是”意图”,Android应用程序中的三种其他应用程序基本组件——Activity, Service和Broadcast、Receiver,都是使用称为intent的消息来”激活”的。

  • 第26章 UI组件
    • 常使用以下组件。TextView、EditText、Button、RadioButton以及RadioGroup、CheckBox、ImageView。
      TextView的基本属性(android:text;android : textColor;android : textSize)。EditText的基本属性(android:inputType、android:hint、android:drawableLeft、android:drawablePadding)。各个控件之间相同的属性 (android:text,android:width,android:height、android:id)每个控件独有的属性(Button:onClick、EditText:hint,inputType、CheckBox:Checked、RadioButton:Checked)

    • Toast是一种消息提示框,会在屏幕中显示一个消息提示框,没任何按钮,也不会获得焦点、一段时间过后自动消失。

Toast是一种提供给用户简洁提示信息的视图。 不能获得焦点
显示一段时间后自动消失
Toast 是一个 View 视图,快速的为用户显示少量的信息。
不影响用户的输入等操作,主要用于 一些帮助 / 提示。
Toast.makeText(Mainthis, “提示的内容”, Toast.LENGTH_SHORT).show(); 第一个是上下文对象!对二个是显示的内容!第三个是显示的时间,只有LONG和SHORT两种 会生效,即时你定义了其他的值,最后调用的还是这两个!

  • 通知是出现在状态栏的一条消息。和Toast不同,通知是持久的,并且将保持显示,直到关闭它或者关闭设备。一个通知必须包含以下三项属性:小图标,对应 setSmallIcon();通知标题,对应setContentTitle();详细信息,对应 setContentText()。

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

  • 问题1:刚开始看教材的时候,了解到Android Studio 提供基于Gradle的构建支持,那么Gradle到底是个什么东西呢?
  • 问题1解决方案:

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。

软件开发讲究代码复用,通过复用可以使工程更易维护,代码量更少. 开发者可以通过继承,组合,函数模块等实现不同程度上的代码复用.但不知你有没有想过,软件开发也是一种工程作业,绝不仅仅是写代码,还涉及到工程的各种管理(依赖,打包,部署,发布,各种渠道的差异管理.....),你每天都在build,clean,签名,打包,发布,有没有想过这种过程,也可以像代码一样被描述出来, 也可以被复用.

  • 问题2:在刚接触AS中的监听器的用法的时候,不清楚监听器的用法和存在意义是什么。
  • 问题2解决方案:上网查询了资料,有了一个初步大致的了解。

1、监听器是个抽象类,它包含了一个事件触发时系统会去调用的函数
2、在子类中,根据您项目的需要重写这个函数
3、派生后的监听器需要绑定到按钮上,就像一个耳机可以发出声音,但您不去戴它,您是听不到它发出的声音的。一般的情况是这个按钮可能需要这个监听器,而另外一个按钮需要另外一个监听器,每个监听器各司其职,但功能相似时,也可以多个按钮共同绑定一个监听器。
4、各种控件,都有常用的事件,如点击按钮,拖动一个滚动条,切换一个ListView的选项等等,他的绑定监听器的函数命名规则是setOn****Listener

  • 问题3:在学习与活动相关的意图的时候,教材上说意图分为显式意图和隐式意图,不是很清楚他们到底代表的是什么。
  • 问题3解决方案:显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
    隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
    显示意图非常常用也非常简单一般用于应用程序内之间Activity的相互调用转换。
    隐式意图:
    简单概括就是: 意图包括:Action(动作),Category(附加信息),Data(数据,具体内容),Tpye(类型)等等,举个例子,说白了意图就是启动一个组件的的完整的动作信息,就像打人,打就是Action动作,人就是Data内容,而Type就是类型,打什么人呢?打坏人,type就是坏指的类型,只有这些信息全了才能执行一个完整的意图,当然还有一些信息,比如scheme就是URI类型的数据的前缀,就像这个例子当中的sms:,还有host主机名,path路径等。

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

  • 这周没有代码哦~

代码托管

  • 没有代码也就没有码云链接了吧()

上周考试错题总结

  • 错题1:One operation that we might want to implement on a Stack and a Queue is full, which determines if the data structure has room for another item to be added. This operation would be useful

A . only if the Queue or Stack is implemented using an array
B . only if the Queue or Stack is implemented using a linked list
C . only for a Queue
D . only for a Stack
E . none of the above, a full operation is not useful at all

  • 解析 由于该数组是一个静态大小的对象,因此如果它被填充,则应该阻止任何添加类型的操作,无论是List插入,队列入队还是堆栈推入。 这可以通过首先检查结构是否已满来确定。 如果数据结构是使用链表实现的,那么这是不必要的,因为(我们假设)总会有动态内存可用于添加新元素。
  • 原因 这道题是由于我理解错了题意,我的想法是堆栈和队列使用链表来实现的,而链表是动态的,所以检查结构是否已满是没有意义的。但我忘记了最最最重要的一点!!!那就是链表也是要由数组来实现的。
  • 错题2:In a linked list in Java

A . the link is an object
B . the link is a node
C . the link is a reference
D . the link is an int
E . the link is a class

  • 解析 在链接列表中,链接是对下一个节点的引用。 通过检查参考文献的内容,通过“取消参考”来链接链接。 节点是对象。 对象是类的实例。 一个节点的数据部分可能是一个int,以及任何其他类型的数据。
  • 原因 这道题错误就是对链表的定义理解不清了。
  • 错题3:A simple linear list

A . is an example of a degenerate tree
B . is an example of a degenerate graph
C . is an example of a degenerate digraph
D . cannot be represented as a degenerate tree, graph or digraph
E . none of the above

  • 解析 一个简单的线性列表从它的起始节点到它的结束节点。 图表和二元图都不具有起始节点,但是树具有:树的根。 因此,一个简单的线性列表就是一个退化树的例子,它具有一个分支因子,每个节点只有一个后继,从根开始,到单叶(结束节点)。
  • 原因 学习的时候不理解退化树代码的是什么。。。
  • 错题4:在Ubuntu中,使用vim编辑器时,想要移动光标,除方向键之外,还可以依次使用hjkl键进行上下左右的移动。

A . true
B . false

  • 解析 上下左右顺序依次是kjhl
  • 原因 这道题是防不胜防啊,完全就没注意到这里还能够有错误。

结对及互评

  • 博客中值得学习的或问题:
    • 排版精美,对于问题研究得很细致,解答也很周全。
  • 代码中值得学习的或问题:
    • 代码写的很规范,思路很清晰,继续加油!

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172332
    • 20172326
    • 结对学习内容
      • 第23章 Android简介
      • 第24章 初始Android
      • 第25章 活动
      • 第26章 UI组件

其他(感悟、思考等,可选)

这周学习的知识相比前几周来说是要难上不少的,毕竟接触的是新的东西,从Android studio的安装开始都困难不断,不是这儿出了毛病,就是那儿出了问题。在AS上进行Android的开发对我来说是很陌生的,通过这一周的学习也着实充实了自己,学习到了不少新的知识,尽管是一个很简单的APP,但由于是自己亲手编写的,看到它能够在手机上运行起来还是很开心的。这一周也更加让我意识到自己学缺乏的知识还多的多,希望自己能够在以后的学习生活中继续努力,看到自己一点点不断地进步。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 126 1/1 20/20
第二周 388/466 1/2 15/35
第三周 706/1162 1/3 17/52
第四周 1104/2266 1/4 20/72
第五周 1126/3392 1/5 15/87
第六周 906/4298 1/6 20/107
第七周 1233/5531 1/7 20/127
第八周 1091/6622 1/8 24/151
第九周 320/7042 1/9 20/171
第十周 335/7377 1/10 20/191
第十一周 0/7377 1/11 20/211
  • 计划学习时间:20小时

  • 实际学习时间:20小时

参考资料

posted @ 2018-06-01 21:50  银海、  阅读(176)  评论(0编辑  收藏  举报