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是)
- 從一個活動啟動另一個活動,可以通過調用startActivity方法。例如:
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到底是指什麽
問題一解決:
專業解釋:
Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化建構工具。它使用一種基於Groovy的特定領域語言來聲明項目設置,而不是傳統的XML。當前其支持的語言限於Java、Groovy和Scala,計劃未來將支持更多的語言。
較好地解釋:
軟件開發講究代碼復用,通過復用可以使工程更易維護,代碼量更少..... 開發者可以通過繼承,組合,函數模塊等實現不同程度上的代碼復用.但不知你有沒有想過,軟件開發也是一種工程作業,絕不僅僅是寫代碼,還涉及到工程的各種管理(依賴,打包,部署,發布,各種渠道的差異管理.....),你每天都在build,clean,簽名,打包,發布,有沒有想過這種過程,也可以像代碼一樣被描述出來, 也可以被復用.
總結地說:
1、Gradle是一種構建工具,它可以幫你管理項目中的差異,依賴,編譯,打包,部署......,你可以定義滿足自己需要的構建邏輯,寫入到build.gradle中供日後復用.
2、Gradle不是一種編程語言,它不能幫你實現軟件中的任何實際功能
引自Android Studio中的Gradle是幹什麽的
- 問題二:經常出錯的R文件是指什麽
問題二解決:android studio的R文件是會自動生成,可以從以下路徑查看到: 有時候由於代碼中存在錯誤,R文件是不會自動生成,當修改了錯誤之後,編譯器就會自動生成R文件。要想找到R文件:
1、首先創建一個新的項目,項目的目錄如下:
2、在這個項目列表中是沒看到R.java文件的,要切換項目列表試圖為project。
3、依次,打開
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分
點評過的同學博客和代碼
- 本周結對學習情況
- 20172305
- 20172323
- 結對學習內容
- 學習教材第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也是一臉懵逼,時間久了就好了,還是要有信心的,畢竟我是即將會寫小程序的人哈哈哈哈??(???????)??
參考:
- Android Studio中的Gradle是幹什麽的
20172314 2017-2018-2《程序設計與數據結構》第十一周學習總結