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

教材学习内容总结

23章Android简介

  • 概览
    • Android操做系统是一种多用户的Linux系统,每一个应用程序做为一个不一样的用户而运行,并和其余的app隔开运行。
    • Android使用Java做为编程语言,但它并不会在Java虚拟机上运行,Android原代码最终时用一个叫作ART的新的运行时来编译为机器代码和应用程序。
    • APK表示应用程序包,apk文件是一个基本的zip文件,他是一个部署App的方式,只要有该文件的一个版本就能够在本身的Android设备上运行它,apk文件能够在一台物理设备或模拟器上运行。
  • 应用程序开发简介
    • 开始项目前,肯定选择的Android设备,而后要肯定要支持哪一个版本的Android。
    • 4种Android应用程序组件:
      • 活动:包含用户交互组件的一个窗口。
      • 服务:在后台长时间运行的操做。
      • 广播接收者:一个监听器,负责对系统或应用程序声明做出响应。
      • 内容提供者:管理要和其余应用程序分享的一组数据的一个组件。
    • 意图:意图是一条消息,发送给系统或另外一个应用程序,以要求执行一个动做。一般用来启动一个活动或启动一个服务。
    • 清单:描述该应用程序,并以XML文件的形式给出。其中包含:
      • 运行该应用程序所须要的最小的API Level
      • 应用程序的名称
      • 触碰该应用程序图标时,打开的第一个活动
      • 是否容许其余应用程序调用
      • 安装应用程序所保证的许可
  • Android版本
    • 每个新的版本都增添新功能,旧的设备不必定能使用新功能,Google提供一个支持库,容许在旧的设备中使用最新的功能。

24章初识Android

  • 要开发测试和调试应用程序,须要Android软件开发工具包(SDK)。它包含一个能够测试应用程序的模拟器。
  • 还须要一个集成开发环境,以加速开发效率,有了IDE后就能够编写Android应用程序。目前两个可用的IDE:
    • Android Studio
    • Android Developer Tools(ADT)Bundle
  • 找JDK位置:File>Project Structure>SDK Location
  • 应用程序结构
    • build:该目录包含了自动生成的文件,这些文件包括了编译设置项、R类等
    • src:该目录存放了应用的源代码.java文件。默认状况下,它包含了MainActivity.java文件,这个源代码j有一部分是执行了你点击应用图标时启动应用所须要功能
    • manifests:描述应用程序
    • java:包含全部Java应用程序和测试类
    • res:该目录存放了全部的资源文件
    • drawable:该目录存放了项目的drawable对象和一些图片资源
    • layout:该目录存放了各个界面的布局文件
    • menu:该目录存放了应用中设计的菜单对象
    • mipmap:该目录存放了应用的主要图片资源
    • values:该目录存放了字符串、颜色等定义的资源集合
  • AndroidManifest.xml:是清单文件,该文件是描述应用基础特性的文件,定义每一个组件。
  • apk文件:为Android应用程序打包。同时可使程序能够调试
    • apk文件结构:

  • 调试:Run->Debug app
  • 设置断点:Run->Toggle Line Breakpoint
  • 删除支持的库
    • 在app的build.gradle文件中,经过删除相应的行,删除对appcompat-v7的依赖
    • 保存build.gradle文件
    • 在res/values/styles.xml文件中,将android:Theme.Holo.Light赋值给parent属性
    • 将每个活动类中的ActionBarActivity修改成Activity,并删除import语句(快捷键Ctrl+Alt+O)
    • 在全部menu.xml文件中,用android:showAsAction替换app:showAsAction
    • 选择菜单Project>Rebuild Project,从新构建项目

25章活动

  • 活动是包含用户界面组件的一个窗口,启动一个活动至关于显示一个窗口。
  • 应用程序所建立的第一个窗口,叫作主活动(main Activity),充当程序入口点。主活动必须包含MAIN的action和LAUNCHER的category。
  • Activity的生命周期法
    • onCreate():这是第一个回调方法。当Activity首次被建立时会调用它
    • onStart:当Activity对于用户来讲变为可视状态时会回调此方法
    • onResume():当用户开始与应用交互时会调用此方法
    • onPause():当前的Activity正在暂停中,而且先前的Activity正在恢复时,被暂停的这个Activity不会再接收用户的输入,也再也不执行任何代码和调用
    • onStop():当Activity再也不为可视状态时会调用该回调方法
    • onDestroy():该方法会在Activity被系统销毁前被调用
    • onRestart():当Activity在被中止后从新启动时,会调用该回调方法

  • 修改应用程序图标
    • 在res/drawable中保存一个jepg文件或png文件
    • 编辑清单文件的android:icon属性,以指向新的图像,使用@drawable/fileName
  • 启动另外一个活动
    • 从一个活动启动另外一个活动,能够经过调用startActivity方法。例如:startActivity(intent);(intent是android.content.Intent类的一个实例)
  • 活动的意图
    • 想要获得调用活动的一个结果,还能够调用startActivityForResult方法。
      激活一个活动:
      Intent intent = new Intent(this, SecondActivity.class); startActivity(intent);html

    • 要给调用的活动传递额外的信息,能够经过给意图附加信息来实现。能够经过调用Intent的putExtra方法来作到这一点:
      Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("message", "Message from First Screen"}; startActivity(intent);java

26章UI组件

  • 概览
    • SDK提供了叫作微件的众多简单的和复杂的组件。
    • 组件类型:
      • TextView:文本标签,该控件用于显示文本
      • EditText:文本框,是预约义好的TextView的一个子类,有富文本编辑能力
      • AutoCompleteTextView:自动完成的文本标签,相似于EditText。当用户在输入的时候会自动给出一些完整的建议
      • Button:按钮,能够按压、点击,由用户完成一个动做
      • ImageButton:图片按钮,顾名思义
      • CheckBox:复选框,能够做为用户使用的一个开关。当有一系列可供选择的选项时,建议使用该控件
      • ToggleButton:带有一个“灯泡”效果的开关按钮
      • RadioButton:单选按钮,只有选中和未选中状态
      • RadioGroup:是RadioButton的集合,在同组内只能选中一个单选按钮
      • Spinner:下拉列表,容许用户在多个选项中选择一个
      • TimePicker:时间选择器,能让用户输入时间,有12小时和24小时模式
      • DatePicker:日期选择器,能让用户输入日期
      • ProgressBar:进度条,为用户提供某项工做的进度,好比后台正在作的事情
  • Toast
    • 是一个气泡,到了预先定义的时间之后才会消失。
    • 建立Toast实例的两种方法:
      • public static Toast maketext (android content. Context context, int resourceid, int duration)
      • public static Toast maketext (android content. Context context java. lang Charsequence text, int duration)
    • 在活动类中建立并显示一个Toast:
      Toast. maketext (this, "Downloading .",Toast. LENGTH LONG). show()

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

  • 问题一:从一开始下载Android Studio就报错,以后总提到的Gradle究竟是指什么
  • 问题一解决:android

    专业解释:编程

    Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划将来将支持更多的语言。小程序

    较好地解释:数组

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

    总结地说:app

    一、Gradle是一种构建工具,它能够帮你管理项目中的差别,依赖,编译,打包,部署......,你能够定义知足本身须要的构建逻辑,写入到build.gradle中供往后复用.编程语言

    二、Gradle不是一种编程语言,它不能帮你实现软件中的任何实际功能ide

    引自Android Studio中的Gradle是干什么的

  • 问题二:常常出错的R文件是指什么
  • 问题二解决:android studio的R文件是会自动生成,能够从如下路径查看到: 有时候因为代码中存在错误,R文件是不会自动生成,当修改了错误以后,编译器就会自动生成R文件。要想找到R文件:

    一、首先建立一个新的项目,项目的目录以下:

    二、在这个项目列表中是没看到R.java文件的,要切换项目列表试图为project。

    三、依次,打开app-->build-->generated-->source-->r-->debug,在debug中的两个选项的子文件中分别有有一个R文件,既就是R.java文件。

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

  • 问题一:如何在一个活动里启动另外一个活动
  • 问题一解决:要启动活动就必需要新建一个Intent类的对象,传递的参数分别是启动活动的语句所在活动的名字和被启动的活动的名字,代码为
Intent intent = new Intent(this, SecondActivity.class);
  startActivity(intent);//启动活动
  • 问题二:如何设置一个气泡
  • 问题二解决:具体的代码为
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toast.makeText(this, "*********", Toast.LENGTH_LONG).show();
}
  • 问题三:在运行书上相关代码时,R文件变红
  • 问题三解决:在网上查找问题

    之前用studio是R文件是不报错的。当你从其余程序拷过一些代码是会发现R文件会变红而且应用程序不能运行。除了R文件其余地方没有报错,只有app运行时会报错 。
    这是由于当你从其余程序拷过一些代码。你的r文件中没有自动加载,这时你须要把那些报错的代码删除并从新在android studio中输入,这样你的应用程序就能够运行了。也能够试着用rebuild project

代码托管

上周考试错题总结

  • 错题一:

  • 错题一解析:抽象数据类型包含一个数据结构和访问数据结构的方法。数组没有方法,而引用变量和原始类型是数据,而不是数据结构。
  • 错题二:

  • 错题二解析:抽象数据类型封装了数据结构和操做数据结构的方法,从而保留了信息隐藏。
  • 错题三:

  • 错题三解析:我认为是使用链表,就能够扩展,由于他没有固定的容量,可是我理解的题意是错误的,实际上是让选须要实现这个方法的,而不是有这个方法的。因此选阵列,他被填满后就须要这样的操做。
  • 错题四:

  • 错题四解析:参考解析理解:在链表中,连接是对下一个节点的引用。经过检查参考资料的内容,经过“取消引用”来跟踪连接。节点对象。对象是类的实例。节点的数据部分极可能是int,以及其余类型的数据。
  • 错题五:

  • 错题五解析:二者均可以添加元素,但堆栈在顶部添加,队列在后面添加。
  • 错题六:

  • 错题六解析:参考错题一,数组是一种数据结构,没有已经实现的操做来执行列表操做。
  • 错题七:

  • 错题七解析:参照错题一,若是实例数据被公开,那么就不须要实现操纵这些实例数据的方法,它们能够直接从其余类进行修改。所以,仅仅由于一个类存在并不意味着该类是一个ADT。
  • 错题八:

  • 错题八解析:使用man 3 printf命令能够查看C语言中的printf函数的帮助文档。
  • 错题九:

  • 错题九解析:没有想到是这样子的错误:题目中拼写错误,应该是chmod 777 pdds
  • 错题十:

  • 错题十解析:应该是apt-cache search tree
  • 错题十一:

  • 错题十一解析:我认为是将前者改名为后者,事实上只有后者不存在的时候是改名,题目中明确指出二者都存在,因此是表示文件移动。
  • 错题十二:

  • 错题十二解析:应该是tar –cf dky.tar dky
  • 错题十三:

  • 错题十三解析:应该是grep –rn main /src

结对及互评

点评:

  • 博客中值得学习的或问题:
    * 王禹涵的博客在教材知识总结的地方有图表,有图片,总结认真
    * 谭鑫的博客在代码中的问题过程记录仔细,感悟很真实天然,对课本内容总结条理清晰
  • 基于评分标准,我给谭鑫的博客打分:7分。得分状况以下:
    • 错题学习深刻的加1分
    • 结对学习状况真实可信的加1分
    • 问题加分4分
    • 感悟不假大空加一分
  • 基于评分标准,我给王禹涵的博客打分:10分。得分状况以下:
    • 排版精美的加1分
    • 有动手写新代码的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深刻的加1分
    • 结对学习状况真实可信的加1分
    • 问题加分5分

点评过的同窗博客和代码

  • 本周结对学习状况
  • 结对学习内容
  • 学习教材第23-26章(Java和Android开发学习指南)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90
第五周 795/2407 1/6 30/120
第六周 1117/2921 1/7 30/150
第七周 703/3511 1/8 40/190
第八周 1139/4701 2/10 40/230
第九周 681/5382 2/12 40/270
第十周 1977/7359 2/14 30/300
第十一周 0/7359 3/17 30/330

其余

这部份内容颇有趣,除了看书的时候一脸懵逼,作实验的时候一脸懵逼...就是没有深刻理解,慢慢来吧,最开始学java也是一脸懵逼,时间久了就行了,仍是要有信心的,毕竟我是即将会写小程序的人哈哈哈哈✺◟(∗❛ัᴗ❛ั∗)◞✺

参考:

相关文章
相关标签/搜索