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

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

作业要求

1.教材第23-26章(Java和Android开发学习指南)

  • 代码托管到git@OSC,参考一下使用开源中国托管代码
  • 有问题去蓝墨云班课或者答疑论坛提问,尽量不在微信群和QQ群解答学习问题

教材学习内容总结

第23章 Android简介

  • 通过这章,我学习到的是一些Android的基础知识
  • Android操作系统是一种多用户的Linux系统,每个应用程序作为单独的Linux进程中的一个不同的用户而运行。
  • 有4种 Android应用程序组件
    • 活动(Activity):包含用户组件的一个窗口
    • 服务( Service):在后台长时问运行的操作
    • 广播接收者( Broadcast receiver):一个监听器,负责对系统或应用程序声明做出响应
    • 内容提供者( Cantent provider):管理要和其他应用程序分享的一组数据的一个组件
  • 每个应用程序都必须有一个应用清单,描述该程序,以XML的文件形式给出,使用mainfest作为其根元素。
    Android清单文件示例:
<uses-permission />  
<permission />  
<permission-tree />  
<permission-group />  
<instrumentation />  
<uses-sdk />  
<uses-configuration />    
<uses-feature />    
<supports-screens />    
<compatible-screens />    
<supports-gl-texture />    

<application>  

    <activity>  
        <intent-filter>  
            <action />  
            <category />  
            <data />  
        </intent-filter>  
        <meta-data />  
    </activity>  

    <activity-alias>  
        <intent-filter> . . . </intent-filter>  
        <meta-data />  
    </activity-alias>  

    <service>  
        <intent-filter> . . . </intent-filter>  
        <meta-data/>  
    </service>  

    <receiver>  
        <intent-filter> . . . </intent-filter>  
        <meta-data />  
    </receiver>  

    <provider>  
        <grant-uri-permission />  
        <meta-data />  
        <path-permission />  
    </provider>  

    <uses-library />  

</application>  

Android基础知识点-Manifest清单文件

第24章 初始Android

  • app :包含应用程序中所有的组件,有三个节点 manifests、java、res。
    • manifests:包含了一个AndroidManifests.xml文件,它描述了应用程序。
    • java:包含了所有的Java应用程序和测试类。
    • res:包含了资源文件。在这个目录下还有一些目录:drawable(包含了用于各种屏幕分辨率的图像)、
      layout(包含了布局文件)、menu(包含了菜单文件)、mipmap(包含了用于各种屏幕分辨率的app图标)、还有value(包含了字符串和其他值)
  • 在实验中我也碰到过R文件出bug的问题,它其实是一个看不见的通用的Java类,其包含了所有的资源的资源ID,
    每次你添加、修改或删除资源的时候,都会重新生成R;R的作用是让你能够引用代码中的一个资源。
  • Android的调试和IDEA中的调试很像,都是先要设置断点。

第25章 活动

  • 掌握活动的生命周期非常重要,因为一个正常的android应用,会有很多的活动,如何在这些活动之间进行切换、数据的交互等,
    就经常会用到活动的生命周期这一块的知识。可以说,只要掌握了活动的生命周期,才能更流畅的写android的程序。

从上面说的可以看出,活动分为;
完整生存期:onCreate()方法和onDestroy()之间,总共调用了6个方法。
可见生存期:活动在onStart()方法和onStop()之间,总共4个方法,再加上重新运行的onRestart()方法,总共5个。
前台生存期:活动在onResume()方法和onPause()方法,总共2个方法。

  • 修改应用程序图标 :
    1.在res/drawable中保存jepg文件或者png文件,png首选,其支持透明度。
    2.编辑清单文件manifests的android:icon属性,以指向新的图像,可以使用如下格式修改引用图像文件:@drawable/filename,
    其中,filename不带扩展名的图像文件名称。
  • 启动另一个活动:可以通过调用startActivity方法直接做到。如startActivity(intent),其中intent是Android.content.Intent类的一个实例。
  • 通过传递给意图一个活动类而构造的意图,叫做显式意图。也可以创作一个隐式意图,在这种情况下我们没有指定一个意图类,相反,我们给Intent类的构造方法传递一个动作,让系统来决定启动哪一活动,如果有多个活动可以处理,系统会让用户来进行选择。

第26章 UI组件

  • 使用Android Stutio 创建UI只需打开一个活动的布局文件,并将其拖拽到布局上即可。活动的布局文件位于应用程序的res/layout目录中。
    工具窗口分为三个:左边是微件,分别为Layout、Widgets、Text Fields和Containers等不同种类。每个微件和布局都有一组属性,这些属
    性派生自View类或者添加到实现类。使用UI工具所做的事,都会反应到布局文件中去,以XML元素的形式体现出来。

  • Toast:是Android中用来显示显示信息的一种机制,Toast是Android中用来显示显示信息的一种机制,Toast是没有焦点的,而且Toast显
    示的时间有限,过一定的时间就会自动消失。而且Toast主要用于向用户显示提示消息。anroid.wedget.Toast类是创建Toast的模板,要创建
    一个Toast,调用它的构造方法,接收Context作为一个参数。Toast还提供了两个静态的makeText方法来创建Toast实例。

  • 通知:通知是出现在状态栏里的一条消息,和Toast不同,通知是持久的,并且将保持显示,直到关闭它或者是关闭设备。

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

  • 问题1: Andriod中的布局文件是什么?怎么创建一个新的布局文件?这是在学习课本修改页面布局时想的问题,
    因为代码是直接导入的(因为那些代码实在有些看不懂),所以也不知道怎么创建一个布局文件。

  • 问题1解决方案:

在4.0以前版本中一共有五种布局,都是ViewGroup的子类。分别是AbsoluteLayout、RelativeLayout、LinearLayout、(FrameLayout)、TableLayout。而TableLayout是LinearLayout的子类。(中文分别是:绝对布局、相对布局、线性布局、帧布局、表格布局)。
2、在2.2操作系统中将AbsoluteLayout过期。而目前TableLayout也逐渐少用。
3、在4.0之后又新增GridLayout。(GridLayout最经典的案例是计算器界面)
总之,Android中一共有六种布局。

在Android Studio中layout下的文件都是布局文件,创建一个布局文件

  • 问题2:UI组件是什么?
  • 问题2解决方案:UI是指为主活动构建用户交互

对上面两个问题,有一篇很好的参考资料android六大布局和UI组件

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

  • 问题1:因为文件是导入的,所以遇到了这样一个问题R.menu出错
  • 问题1解决方案:但我的工程的res目录下已有menu文件夹,为什么电脑给出的是找不到对应的文件?同学给出了clean的建议,结果成功了。
    clean我之前以为是要清除文件,但其实

1.Make Project:编译Project下所有Module,一般是自上次编译后Project下有更新的文件,不生成apk。
2.Make Selected Modules:编译指定的Module,一般是自上次编译后Module下有更新的文件,不生成apk。
3.Clean Project:删除之前编译后的编译文件,并重新编译整个Project,比较花费时间,不生成apk。
4.Rebuild Project:先执行Clean操作,删除之前编译的编译文件和可执行文件,然后重新编译新的编译文件,不生成apk,这里效果其实跟Clean Project是一致的,这个不知道Google搞什么鬼~~
5.Build APK:前面4个选项都是编译,没有生成apk文件,如果想生成apk,需要点击Build APK。
6.Generate Signed APK:生成有签名的apk。

代码托管

上周考试错题总结

  • 错题1及原因,理解情况(3)

  • 解析:一个抽象的数据类型包含一个数据结构和操作和访问数据结构的方法。在这些列表中,只有向量结合了这两个方面。虽然数组是一个数据结构,但是没有方法(例如插入方法或搜索方法),而引用变量和原始类型是数据,不是数据结构。

  • 错题2及原因,理解情况(4)

  • 解析:其实上述答案都是面向对象特性的类型。但在这里抽象数据类型封装了数据结构和操作数据结构的方法,从而保留了信息隐藏。因此,所有的ADT
    都使用隐藏的信息,这样数据结构就不能直接从ADT外部操纵,其他面向对象的特性就不是关键。

  • 错题3及原因,理解情况(16)

  • 解析:一个简单的线性列表被定向,从它的起始节点到它的结束节点。
    图和图都没有起始节点,但是树确实有树的根。所以,一个简单的线性列表就是一个退化树的例子,它有一个分支因子,
    每个节点都有一个单独的继承者,从根开始,到单个叶子(结束节点)结束。

  • 错题4及原因,理解情况(20)

  • 解析:数组是一种数据结构,可以用来存储一系列值,但是数组中没有已经实现的操作来执行列表操作,比如添加到末尾,或者删除给定的值。
    和第三题的错误原因是一样的。

  • 错题5及原因,理解情况(21)

  • 错题6及原因,理解情况(26)

  • 解析:在Java中,所有的数据都是原始类型或类。ADT是一种数据结构,因此它不仅仅是一种原始类型,而是一种不同类型的结构。因此,
    ADT必须在类中定义。并不是所有的类都是ADTs,但是所有的ADTs都被定义为类。

  • 错题7及原因,理解情况(36)

  • 解析:chmod 777 pdds,不是 chomd 777 pdds。emmm,好吧,确实有点坑。

  • 错题8及原因,理解情况(39、40、41)

  • 这几道题目会错全是因为对Linux的命令行操作大都不记得了。
    39:用rm –f /dky/D*强制删除/dky目录下所有D开头的文件。
    41:用tar –cf dky.tar dky把文件dky打包成dky.tar。

  • 错题9及原因,理解情况

  • 我只想说题目出的真的有点坑,和36题一样,但是还是因为自己做题太粗心,一看到hjkl就认为是对的,没有去考虑他们是不是对应好的,
    其实上下左右顺序依次应该是kjhl。

结对及互评

点评过的同学博客和代码

  • 本周结对学习情况

  • 博客中值得学习的或问题:

    • 除了老师要求的,还总结了27和28章。
    • 能从教材的细微的地方发现自己的知识漏洞,并进行理解,还给同伴带来了帮助(让我学到了新知识٩(๑>◡<๑)۶ )
  • 结对学习内容

    • Andriod的开发,课本23-26章的学习。
    • 实验四的完成。
  • 上周博客互评情况

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

这学期的学习接近尾声,可以说在本学期的学习中Java占去了我大部分的时间。这周的学习内容里我们有接触了一个全新的东西Android,也不能说完全的陌生,但我确实从没有以开发者的角度去使用Android,刚开始接触新东西的时候肯定是困难重重的,就像当初的虚拟机和IDEA,装新软件的过程中总是有这样那样的问题,不过这次的Android还是很有趣的。
眼看考试周就要到了,我们Java的学习强度也稍有下降,但是我们仍旧在解锁新的知识,所以说学习Java的脚步不能停止,我要继续加油。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 127/127 1/1 25/25
第二周 278/405 1/2 20/45
第三周 442/847 1/3 20/65
第四周 1063/1910 2/5 30/95
第五周 840/2750 1/6 27/122
第六周 631/3381 1/7 20/142
第七周 914/4295 1/8 20/162
第八周 2534/6829 2/10 30/192
第九周 252/7081 3/13 26/218
第十周 630/7711 1/14 27/245
第十一周 0/7711 2/16 20/265

参考资料

原文地址:https://www.cnblogs.com/Qiuxia2017/p/9105040.html