Time of Update: 2018-12-07
對話方塊提供了一個簡單的輕量級的螢幕顯示技巧,但有時你需要對對話方塊中的內容有更多控制和能控制其生命週期。 解決方案是像完整的Activity一樣實現它。通過建立一個Activity,你會丟失對話方塊類的輕量級屬性,但你獲得了實現任何想要的螢幕的能力以及對Activity生命週期事件處理函數的完全控制。 所以,什麼時候是Activity,什麼時候是對話方塊呢?最簡單的方式是讓一個Activity看起來像對話方塊,通過在manifest中添加android:style/Theme.Dialo
Time of Update: 2018-12-07
和Android UI layout一樣,我們也可以在XML中定義應用程式的菜單。通過在菜單的onCreateOptionsMenu方法中膨脹菜單layout。這樣做會使我們的程式碼簡單多了,而且儘可能的將更多的介面設計部分放到XML,便於瀏覽。 1. 在工程的/res/檔案夾下建立menu檔案夾,用來儲存你為應用程式定義的菜單XML檔案。在菜單XML
Time of Update: 2018-12-07
在這一章,你將學習使用Android的P2P文本和資料的通訊協定,特別是,立即訊息和SMS(短Message Service)。使用這些技術,你可以建立在裝置間通訊的應用程式,包括多使用者遊戲和移動交際的應用程式。 這章在寫的時候,Android SDK包含一個易於理解的立即訊息(IM)服務(最能體現的是GTalk),它提供對立即訊息架構的訪問。遺憾的是,基於安全的考慮,IM
Time of Update: 2018-12-07
Intent Filter匹配後的響應 當一個應用程式的組件通過一個隱式Intent啟動後,它需要找到它要執行的動作以及執行動作需要的資料。 調用getIntent方法(一般在onCreate方法裡)來釋放Intent,從而啟動一個組件,如下: @Overridepublic void onCreate(Bundle icicle) {super.onCreate(icicle);setContentView(R.layout.main);Intent intent = getIntent(
Time of Update: 2018-12-07
為了建立和修改一個Shared Preference,在程式上下文中調用getSharedPreferences方法,傳入你要變更的Shared Preference的名字。Shared Preference可以在程式的組件間共用,但對其它應用程式來說不可獲得的。 修改一個Shared
Time of Update: 2018-12-07
你已經瞭解了為Android應用程式建立富於直觀的UI的基礎,並學習了關於View、layout和Android菜單系統。 通過Layout管理器來擺放View成為Activity的螢幕,它們既可以在代碼中建立還可以作為資源檔。你學習了如何擴充、組合以及建立新的基於View的控制項來提供定製的外觀和行為。 在這一章,你: ❑ 學習了Android SDK中提供的部分控制項和widget。 ❑ 學習了如何在Activity中使用定製的控制項。 ❑
Time of Update: 2018-12-07
ContentValue對象用於在資料庫表(和Content Provider)中插入新的行。每個ContentValue對象代表單一行,包含列名稱映射的值。 在Android中的查詢會得到一個Cursor對象。不是提取和返回結果值的一個拷貝,Cursor實際上指向底層資料的子集。Cursor是一種託管的方式控制在資料庫查詢的結果集中的位置(行)。 Cursor類包含一些用於導航查詢結果的函數,包括但不限於以下的: ❑ moveToFirst移動Cursor到查詢結果的第一行。 ❑
Time of Update: 2018-12-07
Android提供一些基本的檔案管理工具來協助你處理檔案系統。許多功能都放在標準java.io.File包中。 對Java檔案管理功能的完整描述不在本書的範圍內,但Android確實提供了一些特定的檔案管理功能,通過應用程式的上下文就能操作。 ❑ deleteFile允許你移除當前應用程式建立的檔案。 ❑ fileList返回一個字串數組,指示由當前應用程式建立的所有檔案。
Time of Update: 2018-12-07
訪問儲存的Shared Preference同樣還是用getSharedPreferences方法。傳入你要訪問的Shared Preference的名字,然後使用型別安全的get<type>方法來提取儲存的值。 每一個get<type>方法要帶一個索引值和預設值(當索引值沒有可獲得的值時使用),如下面的架構代碼所示: public void loadPreferences() {// Get the stored preferencesint mode =
Time of Update: 2018-12-07
用Shared Preference和資料庫來儲存應用程式的資料是個很好的習慣。但也存在有時候你需要直接用檔案來儲存,而不想依賴於Android的託管機制。 和標準的Java I/O類與方法一樣,Android提供了openFileInput和openFileOutput來簡化從本地檔案讀取或寫入流,如下面的程式碼片段所示: String FILE_NAME = “tempfile.tmp”; // Create a new output file stream that’s
Time of Update: 2018-12-07
Intent的最常用的用途是繫結應用程式組件。Intent用來在應用程式的Activity間啟動、停止和傳輸。 這一章節中關於啟動新的Activity的提示,也同樣適用於Service。第8章可以瞭解到關於啟動(和建立)Service的細節。 為了開啟應用程式中不同的畫面(Activity),調用startActivity,傳入一個Intent,如下面的片段所示: startActivity(myIntent); Intent既可以顯式的指定類去開啟,也可以包含目標需要執行的動作。在後者的
Time of Update: 2018-12-07
Dialog類實現為一個簡單的漂浮視窗,完全在Activity中建立。使用基本的Dialog類,你可以建立一個新的執行個體並設定標題和布局,如下所示: Dialog d = new Dialog(MyActivity.this);// Have the new window tint and blur the window it// obscures.Window window =
Time of Update: 2018-12-07
這章的焦點是繫結應用程式的組件。 Intent提供了一種通用的訊息系統,它允許你在你的應用程式與其它的應用程式間傳遞意圖來執行動作和產生事件。你學習了如何使用隱式的和顯式的Intent來啟動新的Activity,並且學習了如何通過Activity的Intent
Time of Update: 2018-12-07
如果一個Intent請求在一片資料上執行一個動作,Android如何知道哪個應用程式(和組件)能用來響應這個請求呢?Intent Filter就是用來註冊Activity、Service和Broadcast Receiver具有能在某種資料上執行一個動作的能力。 使用Intent
Time of Update: 2018-12-07
對於Android應用程式來說,這裡有兩種輕量級的儲存簡單資料的技巧——Shared Preference和一對用於儲存Activity執行個體細節的事件處理函數。兩種機制都使用名/值(NVP)機制來儲存簡單的基本類型的值。 使用Shared Preference,你可以在你的應用程式裡建立key/value對的命名表,它可以在運行在相同的內容相關的組件間共用。 Shared
Time of Update: 2018-12-07
如果你的應用程式需要外部的檔案資源,你可以在你的分發包裡包含它們,將其安置在工程結構的/res/raw檔案夾中。 為了訪問這些唯讀檔案資源,調用應用程式的Resource對象的openRawResource方法來得到指定資源的InputStream。傳入R.raw類中的檔案變數名(不需要尾碼),如下面的架構代碼所示: Resources myResources = getResources();InputStream myFile =
Time of Update: 2018-12-07
到目前為止,你已經學會了如何顯式地建立隱式Intent,但這隻是故事的一半。Android允許後來的包為已有的應用程式提供新的功能,在運行時使用Intent Filter動態地填入菜單。 這為你的Activity提供了外掛程式模型,使它們可以利用目前還未構想到的新應用程式組件的功能性,而不需要修改或重新編譯你的工程。 Menu類的addIntentOptions方法允許你指定一個Intent,它描述了這個Menu要作用的資料。Android解析這個Intent並返回每個在Intent
Time of Update: 2018-12-07
Content Provider代表的檔案是完全符合URI的,而不是raw檔案資料。為了插入一個檔案到Content Provider或者訪問一個儲存了的檔案,使用ContentResolver的openOutputStream或openInputStream方法。儲存檔案的過程如下面的程式碼片段所示: // Insert a new row into your provider, returning its unique URI.Uri uri = getContentResolver(
Time of Update: 2018-12-07
操作功能表的顯示,和圖4‐5 中顯示的子功能表相同,使用漂浮的視窗。雖然它們的外觀一樣,但這兩種菜單類型的填入不同。建立子功能表子功能表和正常的功能表項目一樣顯示,當選擇時,會顯示更多的項目。傳統的子功能表以層次樹布局進行顯示。Android 系統為小螢幕裝置使用了不同的方法來簡化菜單導航。與其用一個樹型結構,不如在選擇子功能表時顯示一個漂浮的視窗來顯示所有的功能表項目。你可以使用addSubMenu
Time of Update: 2018-12-07
這一章,你將學習Android中三種最通用的資料儲存技巧——preference、本地檔案和SQLite資料庫。之後會學習Content Provider。 儲存和載入資料是多數應用程式最基本的需求。從小的來說,Activity應該在每次它們移出前台時儲存它們的UI狀態。這確保了下一次呈現時有著相同的UI狀態,甚至在進程被殺死重啟的時候。 還有一種可能是你應該儲存個人設定項,來允許使用者定製應用程式和存留輸入或錄入的資料。一樣重要的一種能力是負載檔案、資料和Content