01-01-Android平臺一日游
1,觀賞Android的全景地圖:
給出了Google官方發布的Android的4層結構圖。最底層為Linux Kernel(主要一些與硬件相關的最底層的操作,比如各種驅動,內存管理,進程管理等),第二層為Libraries和Android runtime(Library是一堆由C/C++編寫的基礎庫,Android主要包括一個Dalvik虛擬機和core libraries),第三層是application framework(顧名思義是各種的框架,用于對第四層的應用提供接口和進行管理),最高層是applications(就是平常呢些直接和手機用戶進行交互的東西)。
2,Android VS Iphone
大致地介紹了兩個手機操作系統平臺之間的差異和兩個公司之間的敵對關系。
3,Android常用組件(四大天王)
Activity:最漂亮,門面功夫要做足。
Intent:最牛力,運輸數據全賴他。
Service:最低調,后臺服務看不到。
Content Provider:最博學,數據存放集中地。
4,Android開發工具
常用IDE:Eclipse(配上插件ADT)
開發工具包:Android SDK(2010.12.06發布了2.3的版本)
5,參觀Android王國的金礦
大致介紹了通過Android的兩種賺錢的方法:賣應用和嵌入廣告。(Mars推薦第二種)
01-02-搭建Android開發環境
1,Android SDK的安裝
2,ADT的安裝與配置
3,Android的模擬器配置
/***官方給出了很詳細的安裝文檔,這里不詳細展開,步驟大致如下:
(1)安裝和配置JDK和JRE1.5(1.6更佳)
(2)安裝帶JavaSDK的Eclipse3.4或者3.5
(3)下載Android SDK(較為準確的說法是Android SDK download platform)
(4)在Eclipse中安裝ADT插件
(5)配置Android SDK的路徑
(6)下載虛擬機和相關文檔(和一些選用的功能)***/
01-03-say_hello_to_Android
1,創建一個Android應用程序的步驟
(略)
2,Android應用程序目錄結構
src:short for source,存放源代碼的地方。
gen:主要就是R.java文件存放的位置。
asset:存放資源文件的文件夾,不會在R.java中自動生成對應的數據。
res:short for resource,存放資源文件的文件夾,并在R.java里面有對應的數據。
3,AndroidManifest.xml文件的作用
每編寫一個活動都需要在這里注冊。
其中的<intent filter>是區分應用啟動時優先啟動哪個Activity的標記。
4,Android相關文件資源的作用
提到了一個名為“鍵值對”的概念(XML的?要查閱相關資料了)
01-04-Activity初步
1,Activity的主要作用
2,創建一個Activity的方法
3,在AndroidManifest.xml文件當中注冊應用Activity的方法
4,在Android當中添加控件的方法
/***按作者的說法是:Activity不好翻譯,反正就是理解成一個與用戶進行交互的界面,但是一個Activity本身只是一個近乎空白容器,要實現交互界面就需要在上面放入各種適用的控件。
一個Activity要繼承Activity類,而且至少要實現onCreate()的方法。并且記得要在AndroidManifest.xml中進行注冊
每個Activity一般都對應著一個layout,在layout中定義和放置控件,控件內容可以直接在xml中編寫,但Mars的做法是添加id,然后在源代碼中用findViewById()方法來進行引用和寫入內容。(感覺在xml里面寫比較方便,用著順手就是了)***/
01-05-Activity和Intent
1,多個Activity之間的關系
2,Intent的基本作用
3,在一個Activity中啟動另一個Activity的方法
4,使用Intent在Activity中傳遞數據的基本方法
/***可以用Intent對多個Activity之間切換(這些Activity可以在同一個應用程序當中也可以不再同一個應用程序當中)。Intent可以在Activity之間進行切換和傳輸數據(data或者Extras鍵值對)。Intent的作用不限于啟動活動,Intent可以啟動很多component,比如broadcast等。Mars認為Intent雖然一般被翻譯成意圖但確實不是太好的翻譯,他目前也沒有想到較好的就暫時先吧Intent看成一種請求。
原ppt:
一個Intent對象包含了一組信息:
1,Component name 啟動組件的名稱(組件可以是活動啊廣播啊很多)
2,Action 要求組件執行的動作(系統給除了很多參數,參看documentation)
3,Data 由原組件到新組件傳輸的數據
4,Category 沒講
5,Extras 也是數據,不過是鍵值對(什么是鍵值對?理解成兩個字符串?)
6,Flags 沒講
***/
01-06-Android當中的常見控件
1,TextView的使用方法(顯示類型文本框)
2,EditText的使用方法(可輸入類型文本框)
3,Button的使用方法(按鈕)
4,Menu的使用方法(菜單)
/***我在Mars操作中所注意到的東西:
(1)為所以顯示類型文本框中,setText()方法中最好是在string中建立鍵值對并進行引用,這樣有助與實現應用簡化了各種語言的的翻譯問題。(當然目前不認為寫的應用會被翻譯,不過好習慣是要提前養成的)
(2)Mars老師好會善用Eclipse強大的編輯功能,強大的快捷鍵比如Ctrl+Shift+O ; Alt+. ; Ctrl+1要多多使用之
(3)關于OptionsMenu的兩個方法:onCreateOptionsMenus()和OnOptionsMenuSelected()
***/
01-07-Activity生命周期(一)
七個生命周期:
(1)onCreate()在Activity第一次啟動的時候執行;在這里編寫實現Activity的layout的代碼,并添加對應的監聽器。
(2)onStart()在Activity能被用戶看到的時候執行
(3)onResume()在Activity能獲得用戶焦點的時候執行(能與用戶進行交互的時候)
(4)onPause()在Activity當中啟動另一個Activity的時候執行
(5)onStop()在Activity不能被用戶看到的時候執行(被另外一個Activity完全覆蓋)
(6)onRestart()在處于stop()狀態的Activity重新啟動的時候(區別于onCreate()的初次啟動)
(7)onDestroy()在Activity被銷毀的時候(兩種情況:用戶明確調用了finish()方法,或者在系統資源不足的時候系統自動清理處于后臺狀態的Activity)
01-08-Activity的生命周期(二)
1,Task的基本概念
2,Activity與Task之間的關系
3,對話框風格Activity的使用方法
/***
(1)Task is a stack of Activity.所以Task只能進行push和pop操作,內部不能進行重新排序。Android顯示的始終時Task最上面的Activity。Task的一個重要意義:使Task中所以Activity成為一個整體,給用戶較好的體驗。
(2)如果在調用另一個Activity的時候調用原Activity的finish()方法,原Activity會被銷毀(即不再在棧中)
(3)Android在系統資源不夠用的時候會自動清理一些Activity,當Activity處于onPause(),onStop,onDestroy()的狀態時,則有可能會被kill掉
(4)一個Activity在AndroidManifest中注冊的時候,可以通過設置theme為theme.dialog的方法顯示為對話框風格(就是不會完全遮擋住原Activity的那種,在實際手機應用中相當常用)***/
01-09-Activity布局初步(一)
1,LinearLayout的使用方法
2,TableLayout的使用方法
/***
大致介紹了線性和表格兩種常用布局和它們在xml中的一些屬性比如gravity,padding,orientation,weight,singleLine等,詳細可以參看documentation
***/
01-10-Activity布局初步(二)
大致介紹了Layout的相互嵌套。(相互嵌套能夠構造更加復雜和華麗的布局)
01-11-Activity的布局初步(三)
1,相對布局的基本概念
2,相對布局與其他布局的區別
3,相對布局的常用屬性介紹
/***相對布局用的是跟線性或表格布局不同的布局方式,它布局采用控件的相對位置來進行設置。具體參數參看SDK或者視頻***/
01-12-Android常見控件(二)
1,RadioGroup和RadioButton的使用方法
2,CheckBox的使用方法
3,Toast的基本用法
/***
大致介紹了三種控件:
RadioGroup&&RadioButton 單選框
CheckBox 復選框
toast:(吐司?感覺就是小型提示框)
A toast is a view containing a quick little message for the user.
***/
01-13-常用控件(三)
1,ProgressBar的使用方法
2,ListView的使用方法
/***
介紹了進度條和列表視圖的實現方法,這兩個是比較復雜的控件,其中ListView涉及Adaptor,在使用之前要好好參看視頻和SDK Documentation
***/
01-14-Handler的使用(一)
1,Handler的基本概念
2,Handler的基本使用方法
3,使用Handler更新ProgressBar
/***
(1)A
Handler allows you to send and process Message
and Runnable objects associated with a thread's MessageQueue
.
Each Handler instance is associated with a single thread and that
thread's message queue. When you create a new Handler, it is bound to
the thread / message queue of the thread that is creating it -- from
that point on, it will deliver messages and runnables to that message
queue and execute them as they come out of the message queue.
一個Handler允許你送出或者處理Message和關聯著一個線程消息隊列的Runnable對象。每一個Handler實力都聯系唯一一個線程和它的消息隊列。當你創建一個Handler的時候,他必須綁定到那個創建它的線程的或者他的消息隊列上面——從那之后,他會傳遞信息和Runnable到消息隊列和在他們從消息對列出來的時候執行他們。(目前我理解成Handler是一個操作臺,而且只能唯一綁定一個線程和它的消息隊列的。)
(2)Mars老師給出的參考代碼時用Handler操作一條進度條,中間涉及到了Runnable和消息隊列的通信問題。通信的時候有arg1,arg2兩個int類型的變量,可以減少系統的消耗。
***/
01-15-Handler的使用(二)
1,Handler與線程
2,Bundle的用法
3,在新線程當中處理小的的方法
/***
(1)在之前的例子中,如果直接用handler.post(Runnable)方法啟動Runnable對象,Android默認不會創建新的線程。而是直接把Runnable的run()方法放入到主線程的之星隊列當中去。
(2)如果想真正實現兩個線程的并行運行,Mars老師演示了兩種方法,第一種是在Java中用Thread t = new Thread(Runnable)和t.start()來啟動新的線程。不知道出于什么樣的原因(估計是這樣做比較消耗內存),所以Mars老師推薦的是另外一種方法——looper,但一般不會直接創建Looper,而是使用用HandlerThread(Looper)來創建一個與Lopper關聯的HandlerThread實例,然后使HandlerThread.start(),那么Looper就啟動起來了,然后使用sendToTarget來觸發Handler中間的handleMessage方法就可以實現線程了。(思路有點亂,具體再看視頻吧)
(3)Bundle,目前理解成是一個簡化的map就可以了(簡化是指Bundle的鍵只能是字符串而且對應的值一般是primitive,而map的鍵值都是Object),常用于傳遞一捆數據。
***/
01-16-SQLite使用方法
1,SQLite介紹
2,SQLiteOpenHelper的用法
3,使用adb訪問SQLite
4,增,刪,改,查
/***
由于本人對數據庫不太了解,而且暫時也拍不上什么用場,這節視頻先跳過。
***/
01-17-調試程序
1,DDSM(Dalvik Debug Monitor Service)的使用
2,常用程序調試方法
/***
大致學習了如何利用logcat和DDSM調試程序,DDSM視圖中可以重啟失去鏈接之后的虛擬機,以及對虛擬機進行數據導入導出工作,最牛掰的是當虛擬機連接斷掉之后可以在這里重啟adb來解決問題。利用logcat可以提取應用運行過程中的信息(根據重要程度分成五個檔位而且向下兼容)。使用Android提供的Log.d()方法結合適當的filter可以處理條是信息。
***/