20172319 《程序设计与数据结构》第11周学习总结
20172319 2018.05.09-05.21
《Java程序设计教程》第11周学习总结
目录
教材学习内容总结
第23章 Android简介:
-
23.1 概览:
1.Android操作系统是一种多用户的Linux系统,每个应用程序作为单独的Linux进程中的一个不同的用户运行。2.java是开发Android应用程序的默认语言,所有Android应用程序在Dalvik虚拟机上运行(Android4.4之前),在Android5.0之后,Android的源代码使用ART编译成机器代码和应用程序。3.APK表示应用程序包,是一个基本的zip文件;apk文件是部署APP的方式,该文件的任一版本可在Android设备上安装和运行。 -
23.2 应用程序开发简介:
4种Android应用程序组件:
活动(Activity):包含用户交互组件的一个窗口
服务(Service):在后台长时间运行的操作
广播接收者(Broadcast receiver):一个监听器,负责对系统或应用程序声明做出响应
内容提供者(Content provider):管理要和其他应用程序分享的一组数据的一个组件。
意图(intent): 一条消息,发送给系统或另一个应用程序,以要求执行一个动作,可以做很多不同的事,当通常用于启动一个活动、服务或发送一条广播。
清单(manifest): 描述该应用程序,以XML文件的形式给出,包含的内容有:
1.运行该应用程序所需的最小API Level;
2.应用程序的名称;(将会显示在设备上)
3.当用户在其设备主屏幕上触碰该应用程序图标时,将会打开的第一个活动(窗口);
4.是否允许从其他应用程序调用你的应用程序组件;(促进代码复用)
5.对于在目标设备上安装的应用程序,用户必须保证一组什么样的许可。 -
23.3 Android版本:
第24章 初识Android:
开发、调试和测试应用程序所需:Android软件开发工具包(SDK),集成开发环境(IDE)——加快开发速率,当前可以IDE:Android Studio;Android Developer Tools(ADT)Bundle。
-
24.1、2、3 Android Studio的下载安装及配置:
实验四博客里有安装教程,此处不再复述。 -
24.4 应用程序结构:
项目组件的树视图:
Project窗口包括两个主要的节点:app和Gradle Scripts。app节点包含了应用程序中所有的组件。Gradle Scripts节点包含Gradle构建脚本,供Android Studio构建你的项目。
App节点有如下的3个节点:
manifest : 包含一个AndroidManifest.xml文件,描述了应用程序;
java :包含了所有Java应用程序和测试类;
res : 包含了资源文件。
res 目录下的其他目录:
drawable : 包含了用于各种屏幕分辨率的图像;
layout : 包含布局文件;
menu : 包含了菜单文件;
mipmap : 包含了用于各种屏幕分辨率的App图标;
values : 包含了字符串及其他值.
R类
在Android Studio中看不见的,一个名为R的通用的java类,可以在项目的app/build/generated/source目录下找到它
;
其包含了嵌套的类,该类反过来包含你所有的资源的资源ID。
每次添加、修改或删除资源,会重新生成R。 -
24.4.1 Android清单:
清单文件是一个XML文档,使用mainfest作为其根元素。mainfest元素的package属性为应用程序指定一个唯一的标识符。Android工具使用这一信息来生成相应的java类,以便写java资源的时候使用。
在manifest之下,是一个application元素,它描述了应用程序。包含一个或多个activity元素,描述APP中的活动。应用程序通常有一个主活动,充当应用程序的入口点。
activity元素的name属性,指定了一个活动类,它可以是一个完全限定名称或只是类名。 -
24.4.2 apk文件:
在Android Studio运行一个应用程序时,一个apk文件将会自动构建和签名。
这个文件将会自动命名为app-debug.apk,且存储在项目目录下的app/build/outputs/apk目录。
Android Studio会将该位置告知模拟器和目标设备,以便能找到并执行apk文件。
apk文件结构:
里面有清单文件、资源文集。AndroidManifest.xml文件也进行了编译,所以无法用文本编译器去读取它。
classes.dex文件包含了java类到Dalvik可执行文件的二进制翻译,即使应用程序有多个java文件,也只有一个classes.dex文件。 -
24.5 调试应用程序:
设置断点,通过Run>Debug app来调试应用程序。
后面的基本内容在实验四的过程中已实现,此处不再重复说明。
第25章 活动:
- 活动:包含用户界面组件的一个窗口,用户可以和这些用户界面组件交互。启动一个活动,意味着显示一个窗口。
- 主活动:应用程序所创建的第一个窗口,充当应用程序的入口点;要让一个活动成为一个主活动,其intent-filter元素必须包含MAIN的action和LAUNCHER的category。
- Activity生命周期方法:
- 修改应用程序图标:
- 使用Android资源:在Android stutio打开应用程序清单,输入“@Android:”,后面跟着Ctrl+space组合键,从而填入属性值,便会显示出资源的列表。eg:
- 启动另一个活动:
Android应用程序的主活动,是当用户从主屏幕选择APP图标时,通过系统自身而启动。而在拥有多个活动的应用程序中,很有可能需要启动另一活动,这时便可以通过调用startActivity
方法直接做到。如startActivity(intent)
,其中intent是Android.content.Intent类的一个实例。 - 活动相关的意图:
显式意图:通过传递给意图一个活动类而构造的意图:
也可以创作一个隐式意图,在这种情况下,我们没有指定一个意图类。相反,我们给Intent类的构造方法传递一个动作,让系统来决定启动哪一活动。如果有多个活动可以处理,系统会让用户来进行选择。
并非所有的意图都可用于启动活动。确保一个Intent能启动一个活动,需在将其传递给startActivity之前,调用其resolveActivity方法;不能解析为一个动作的意图,如果传递给了startActivity,将会抛出一个异常。
if(intent.resolveActivity(getPackageManager())!=null){
startActivity(intent);
}
第26章 UI组件:
- 概览:.Android SDK提供了叫作微件(widget)的众多简单的和复杂的组件。微件有很多例子,比如按钮、文本字段、进度条等。此外,还需选择一个布局来放置UI组件。微件和布局,都在android.view.View里实现。
- 使用Android Studio UI工具:
打开一个活动的布局文件,并将UI组件拖曳到布局上即可。活动的布局文件位于应用程序的res/layout目录中。
工具窗口划分为3个主要的区域。左边是微件,分为Layouts、Widgets、Text Fields和Containers等不同种类。每个微件和布局都有一组属性,这些属性派生自View类或者添加到实现类。
使用UI工具所做的事,都会反应到布局文件中去,以XML元素的形式体现出来。 - Toast:
Toast是一个小的弹出对话框,用于显示一条消息作为给用户的反馈。Toast并不会代替当前的活动,并且只是占据了一条消息那么大的空间。
android.widget.Toast类是创建Toast的模板。要创建一个Toast,调用它唯一的构造方法,接受Context作为一个参数:
public Toast(android.content.Context context)
Toast还提供两个静态的makeTes方法来创建Toast的实例。该方法的两种重载形式的签名如下:
public static Toast makeTest(android.content.Context context,int resourceId,int duration)
public static Toast makeTest(android.content.Context context,java.lang.CharSequence text,int duration)
这两种重载形式都需传入一个Context(即可能的激活活动)作为第一个参数。此外,两种重载形式都接受一个字符串(可能来自一个strings.xml文件或一个String对象),还接受显示Toast的时间长度(有效值为Toast中的静态final变量LENGTH_LONG
和LENGTH_SHORT
),要显示一个Toast,调用其show方法,该方法不接受参数。
默认情况下,一个Toast会显示在靠近激活活动的底部。可在调用show方法前调用setGravity方法修改位置。 - 通知:
通知是出现在状态栏里的一条消息,和Toast不同,通知是持久的,并且将保持显示,直到关闭它或者是关闭设备。
通知是android.app.Notification的实例,创建通知最简便的方法:使用Builder的嵌套类,通过传递一个Context来实例化该类,然后调用build方法创建一个Notification:
Notification n = new Notification.Builder(context).build();
发布通知:
取消通知:
代码调试中的问题和解决过程
- 问题1:Error while Installing APKs
- 解决:好像是因为机型的原因导致软件没安装上,重新创建新设备?内存怕不是要爆炸。。。 为了避免这种愚蠢的法子:
File->Settings->Build,Execuion,Deployment->Instant Run
然后把Enable Instant Run to...那一项的勾去掉就好了
代码托管
- 无
上周考试错题总结
-
错题1:
-
理解:抽象数据类型封装数据结构和处理数据结构的方法,以便保留信息隐藏。因此,所有ADT都使用了信息隐藏,因此不能直接从ADT外部操作数据结构,而不需要其他面向对象的特性。。
-
错题2:
-
理解:数组的大小是静态的,链表可动态变化。
-
错题3:
-
理解:一个简单的线性列表是定向的,从它的起始节点到它的结束节点。图和图表都没有一个开始节点,但是树有根。因此,一个简单的线性列表就是一个退化树的例子,它有一个分支因子,每个节点只有一个继承,从根开始,到单叶结束(结束节点)。
-
错题4:
-
理解:队列和堆栈都是抽象的数据类型,它们的实现方法是无关紧要的,定义它们的是操作(入队列、退队列、push、pop)。因此,这两个ADT都可以使用数组或链表来实现。
-
错题5:
-
错题6
-
理解:tar -cf dky.tar dky。
-
错题7
-
理解:grep -rn main / src
-
错题8
-
理解:上下左右顺序依次是kjhl
-
错题9
-
理解:chmod a+w filel.txt 或者 chmod 666 file,注意 a+w 和 o+w 的区别。
结对及互评
点评过的同学博客和代码
- 本周结对学习情况:
- 20172316赵乾宸
- 博客中值得学习的或存在问题:
1.markdown格式有误
2.问题的解决较为详细
3.尽管本次博客简单,但该有的还是得有,不能偷懒。 - 20172329王文彬
- **博客中值得学习的或存在问题: **
1.问题解决详细,但貌似与实验四博客重复
2.错题别直接翻译
其他(感悟、思考等,可选)
- 对于Android,很多东西都是新的,给我感觉像刚开始学java的时候,虽然有点难上手,但却比java又多了一丝乐趣,所学的东西也离生活更进了一步;成功并不是一蹴而就的,总不能刚接触就能开发游戏了哈 那还要腾讯干嘛 ,慢慢来吧,相信随着学习的深入会逐渐掌握关于Android的知识,最终开发出好玩的东西。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 202/202 | 1/2 | 15/15 | 积极主动敲代码 |
第二周 | 490/692 | 1/3 | 18/33 | 善于思考 |
第三周 | 581/1273 | 1/4 | 15/48 | 善于完善 |
第四周 | 1857/3130 | 1/6 | 33/81 | 累 |
第五周 | 655/3787 | 1/7 | 22/103 | |
第六周 | 531/4318 | 1/8 | 18/121 | |
第七周 | 810/5128 | 1/9 | 23/ 144 | |
第八周 | 698/5826 | 1/13 | 21/ 165 | |
第九周 | 756/6582 | 1/15 | 54/ 219 | |
第十周 | 1289/7871 | 1/16 | 56/ 275 | |
第十一周 | 0/7871 | 1/19 | 75/ 350 | |
返回目录 |