1. 程式人生 > >20172310 2017-2018-2 《程序設計與數據結構》第十一周學習總結

20172310 2017-2018-2 《程序設計與數據結構》第十一周學習總結

一個 star 派生 令行 保留 不同的 原始類型 1.0 img

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清單文件示例:























    . . .



    . . .



    . . .









  • 還了解了一些Android的版本信息,現在仍在更新。Android系統版本號和Android API level對應表

    第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。

結對及互評

點評過的同學博客和代碼

  • 本周結對學習情況
    • 結對同學學號1
    • 結對照片
    • 結對學習內容
      • XXXX
      • XXXX
      • ...
  • 上周博客互評情況
    • 學號1
    • 學號2
    • 學號3
    • 學號4
    • ...

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

這學期的學習接近尾聲,可以說在本學期的學習中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

參考資料

  • Java和Android開發學習指南

  • Android系統版本號和Android API level對應表

20172310 2017-2018-2 《程序設計與數據結構》第十一周學習總結