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也是一臉懵逼,時間久了就行了,仍是要有信心的,畢竟我是即將會寫小程序的人哈哈哈哈✺◟(∗❛ัᴗ❛ั∗)◞✺

參考:

相關文章
相關標籤/搜索