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

教材学习内容总结

Android简介

  • 概览:android操作系统是一种多用户的Linux系统,每个应用程序作为单独的Linux进程中的一个不同的用户而运行。Android使用Java语言但是不在Java虚拟机上运行。如果想了解更多的内容,可以看看Android的构建过程
  • 应用程序开发简介:

4种Android应用程序组件
(1) 活动(Activity):包含用户交互组件的一个窗口。
(2) 服务(Service):在后台长时间运行的操作。
(3) 广播接收者(Broadcast receiver):一个监听器,负责对系统或应用程序声明做出响应。
(4) 内容提供者(Content provider):管理要和其他应用程序分享的一组数据的一个组件。

Android编程中另一重要概念是意图和清单(以xml文件的形式给出)

  • Android版本:都是以好吃的命的名

  • 在线资源(略)

  • 应该使用哪个版本的Java(略)

初始Android

  • 下载和安装Andriod Studio
  • 创建应用程序
    如果as找不到JDK的正确位置,单击File>Project Structure>SDK Location,然后浏览以找到JDK的位置。
  • 在模拟器上运行应用程序
  • 应用程序结构:project窗口有两个主要的节点,app和Gradle Scripts。app节点包含了应用程序中所有的组件。Gradle Scripts节点包含Gradle构建脚本,以供构建Android项目。
    app的三个节点分别是AndroidManifest.xml文件(AndroidMainfest.xml的清单文件用来描述应用程序,是必不可缺的。),Java应用程序和测试文件,res资源文件。

R文件

  • 调试应用程序:最简单的是日志方法,任何异常的抛出包括栈轨迹都会显示在LogCat中;设置断点,在任意一行上单击,选择run>toggle line breakpoint,即可在代码中添加一行断点,然后择run>debug app
  • 删除支持的库

活动

  • 活动的含义:活动是包含了用户界面组件的一个窗口,用户可以和这些用户界面组件交互,启动一个活动,往往意味着要显示一个窗口。一个典型的Android应用程序,都是从启动一个活动开始的,也就是说启动一个活动就意味着显示一个窗口。
  • 修改应用程序图标
  • 启动另一个活动:用户从主屏幕选择APP图标时,祝活动通过系统自身而启动,再拥有多个活动的应用程序中,很有可能需要启动另一活动,这时便可以通过调用startActivity方法直接做到。如
startActivity(intent)

,其中intent是Android.content.Intent类的一个实例。

@Override
public boolean onTouch(View arg0, MotionEvent event) {
    Intent intent = new Intent(this, SecondActivity.class);
    intent.putExtra("message", "Message from First Screen");
    startActivity(intent);
    return true;
}

启动另外的活动(Activity)

UI组件

  • 使用Android Stutio UI工具:使用UI工具所做的事,都会反应到布局文件中去,以XML元素的形式体现出来。
  • 使用基本组件,OnCreate方法是一个生命周期方法,当创建应用程序的时候会调用它,onCreateOptionsMenu方法初始化了活动的选项菜单的内容。要让菜单显示,他必须返回为true。
  • Toast:Toast是一个小的弹出对话框,用于显示一条消息作为给用户的反馈,是暂时的。通过静态方法makeText()创建出一个Toast对象,然后调用show()将Toast显示出来

makeshow()方法需要传入三个参数。
第一个参数是Context,也就是Toast要求的上下文,由于活动本身就是一个Context对象,因此直接传入FirstActivity.this即可
第二个参数是Toast显示的文本内容
第三个参数是Toast显示的时长,有两个内置常量可以选择Toast.LENGTH_SHORT和Toast.LENGTH_LONG

  • 通知:通知是出现在状态栏里的一条消息,和Toast不同,通知是持久的,并且将保持显示,直到关闭它或者是关闭设备。创建通知
NSNotification *notification = [NSNotificationnotificationWithName:@"refresh" object:niluserInfo:dictplist];

可以这样理解:当你想在A activity中启动另一个B activity,那么你可以选择两种情况[立即启动或延时启动]:
1.通过intent配置需要启动的B activity,然后调用startActivity()方法,让他立即执行启动操作,跳转过去
2.另一种情况是,你虽然想启动另一个B activity,可是你并不想马上跳转到Bactivity页面,你想静等5分钟之后再跳转到Bactivity,那么你可以通过PendingIntent来实现,PendingIntent可以包装第1步中的intent,然后通过AlarmManager这个定时器,定制5分钟之后启PendingIntent,实现这种延时操作

可以看看这个博客写了很多关于PendingIntent的解释PendingIntent详解

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

  • 问题1:当我直接将包复制粘贴到文件中后,Android里有文件,但是不能运行,右小角没有又可以运行的绿色提示

  • 问题1解决方案:不能把整个安装包复制粘贴,正确的方式是现在Android中new一个project,然后打开路径中的文件包,先导入AndroidManifest.xml文件,然后是src文件中的mainactivity文件,最后是res布局文件。

  • 问题2:menu文件报红,R文件报红

  • 问题2解决方案:menu文件主要是因为没有导入,但是如果想自己新建的话要注意menu布局文件要在menu文件夹地下创建才行,应该先在res文件夹右键,然后选择New>Android resource directory,出现界面后在Resource type下拉栏选择menu。接着在menu文件夹下右键,New>Menu resource file之后输入文件名就可以了 R文件报红的话主要是因为刚刚导入的xml文件导致的,大多都是图片的命名,一定要注意的图片的格式,不要将图片的名字改为xx.png,实际上还是没有改变图片的格式。解决办法是

build-rebuild project不行的话再试试clean project

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

  • 问题1:不能git到码云上,在张昊然同学发的第12步就出现了请求被拒绝的error,我到底做错了什么,idea和as都喜欢拒绝我

    此处错误提示

androidstudio can’t start git.exe
  • 解决方案1:

这种问题可能是有两种:git.exe路径设置错误,或者没有安装git

然而我安装了的,于是我换了一个博客 Push rejected: Push to origin/master was rejected打开Git Bash,然后进入相应的目录,然后敲git命令

git pull origin master --allow-unrelated-histories

你就可以将本地仓库中的推送到github中,使用如下的git命令

git push -u origin master
  • 问题2:
error running:please select Andriod SDK
  • 问题2解决方法:说是由于Android Studio异常关闭,使得某些配置文件损坏,因此需要在线更新SDK才能恢复被损坏的文件。解决办法如下:
    首先依次选择主菜单“File”——“Settings”,然后依次展开“Appearance & Behavior”——“System Settings”——“Android SDK”,在右边的设置界面编辑SDK的路径。如下图所示,单击SDK目录输入框右边的“Edit”链接(红框标注):

    单击“Edit”链接之后打开SDK的设置界面后目录保持不动,点击next》next后等待Android Studio下载成功后回到Android Studio的主界面,等待重编完成,即可正常执行Run app的操作了。

代码托管

上周考试错题总结

  1. 下列哪一种被认为是抽象数据类型?
    A . array
    B . reference variable
    C . any of the primitive types (e.g., int, double, char)
    D . vector
    E . all of the above
    抽象数据类型包括数据结构和操作和访问数据结构的方法。在这些列表中,只有向量将这两者结合起来。该数组是一个数据结构,但没有方法(例如插入方法或搜索方法),而引用变量和基本类型是数据,而不是数据结构。

  2. 抽象数据类型具有以下面向对象的特性?
    A . information hiding
    B . inheritance
    C . polymorphism
    D . message passing
    E . all of the above
    抽象数据类型封装数据结构和操作数据结构的方法,以便保留信息隐藏。

  3. 一个简单的线性表
    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. 数组是一种列表抽象数据类型
    A . true
    B . false
    数组是一种数据结构,可以用来存储值列表,但是数组没有已经实现的操作来执行列表操作,如添加到末尾或删除给定值

  5. 所有抽象数据类型都定义为Java类
    A . true
    B . false

  6. Linux Bash中,可以使用chomd 777 pdds命令修改文件pdds的权限,并使得其拥有者、拥有者所在的组和其他用户都拥有全部权限。
    A . true
    B . false
    chmod 777 pdds,不是 chomd 777 pdds………..????????好吧

  7. Linux Bash中,使用rm –r /dky/D命令强制删除/dky目录下所有D开头的文件。
    A . true
    B . false
    rm –f /dky/D

  8. Linux Bash中,查找五天之内src目录中删除的文件的命令是find /src/ -ctime -5。
    A . true
    B . false
    Linux find命令

  9. Linux Bash中,使用tar命令把文件dky打包成dky.tar的命令是tar –c dky.tar dky 。
    A . true
    B . false
    tar –cf dky.tar dky

  10. 在Ubuntu中,使用vim编辑器时,想要移动光标,除方向键之外,还可以依次使用hjkl键进行上下左右的移动。
    A . true
    B . false
    上下左右顺序依次是kjhl

结对及互评

写在评论里

点评过的同学博客和代码

  • 本周结对学习情况
    • 21我们两个的Android都崩了好巧好巧,最后都好了好巧好巧

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


是的

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 1/2 20/20
第二周 329/500 2/3 18/38
第三周 619/1000 2/5 22/60
第四周 817/1734 2/7 38/98
第五周 674/2408 1/9 30/128
第六周 1136/2870 2/10 30/158
第七周 1000/3791 1/11 32/190
第八周 2662/6453 2/13 48/238
第九周 782/7573 2/15 48/238
第十周 201/7773 1/17 48/238
第十一周 idea崩了....代码量回到之前的一半了�哭 2/18 48/238

参考资料

posted @ 2018-06-03 14:47  amberR  阅读(292)  评论(1编辑  收藏  举报
/*头部导航栏*/ #navigator { font-size:15px; border-bottom: 1px solid #ededed; border-top: 1px solid #ededed; height: 60px;/*导航栏高度,原始50*/ clear: both; margin-top: 25px; } /*导航栏设置,可以自定义导航栏的目录*/ #navList { min-height: 35px; float: left; } #navList li { /*每一个栏目节点*/ float: left; margin: 0 5px 0 0; /*这里原来是0 40px 0 0 */ } #navList a { /*栏目文字的格式*/ display: block; width: 5em; height: 22px; float: left; text-align: center; padding-top: 19px; }