自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android應(yīng)用程序生命周期中的活動與圖標(biāo)

移動開發(fā) Android
Activity 類是 Android 移動應(yīng)用程序的基礎(chǔ),您可以使用它來優(yōu)化應(yīng)用程序與用戶和移動設(shè)備的交互。讓應(yīng)用程序生命周期中的交互方式與您的期望完全一致,并使用圖標(biāo)與操作欄引導(dǎo)用戶使用 UI 導(dǎo)航與其他應(yīng)用程序功能。

為您的 Android 移動應(yīng)用程序添加導(dǎo)航風(fēng)格

Activity 類是 Android 移動應(yīng)用程序的基礎(chǔ),您可以使用它來優(yōu)化應(yīng)用程序與用戶和移動設(shè)備的交互。讓應(yīng)用程序生命周期中的交互方式與您的期望完全一致,并使用圖標(biāo)與操作欄引導(dǎo)用戶使用 UI 導(dǎo)航與其他應(yīng)用程序功能。

簡介

關(guān)于本系列

近年來,移動應(yīng)用程序發(fā)布呈爆炸式增長,移動開發(fā)技術(shù)市場亦是如此。本系列文章將向那些熟悉編程但對移動技術(shù)較為陌生的開發(fā)人員介紹移動應(yīng)用程序的發(fā)展情 況。先從使用 Java™ 代碼為本機應(yīng)用程序編碼開始介紹,然后擴展工具包,使其包含 JVM 語言、腳本框架、HTML5/CSS/JavaScript、第三方工具等。本系列文章將帶您逐步掌握這些必要技術(shù),實際應(yīng)對所有移動開發(fā)場景。

如今移動設(shè)備的功能已經(jīng)強大到難以置信,比眾多開發(fā)人員用來編寫首個程序的桌面計算機還要強大得多。因此,大家很容易忘記移動設(shè)備仍然屬于資源有限的環(huán)境。 開發(fā)移動應(yīng)用程序時,決不能忘記運行應(yīng)用程序的環(huán)境所具有的局限性。尤其是當(dāng)應(yīng)用程序要與其他應(yīng)用程序競爭系統(tǒng)資源時 — 其中有些應(yīng)用程序?qū)τ谟脩舻娜粘P袨槎员饶膽?yīng)用程序更加重要。

確保應(yīng)用程序廣受歡迎的途徑之一是保證它節(jié)省系統(tǒng)資源。在 Android 中,使用和保持系統(tǒng)資源的機制都是 Activity 類。您越了解這個基本類(與 Java Servlet 十分相似)的生命周期,調(diào)整 Android 移動應(yīng)用程序的資源使用與性能的能力就越強。

我們將從快速了解 Activity 類生命周期開始。通過一個示例應(yīng)用的演示,您將了解處理 Android 應(yīng)用程序生命周期內(nèi)每個階段的方法。掌握這些方法協(xié)同工作的原理之后,就能聰明地使用系統(tǒng)資源。然后更新演示應(yīng)用程序的導(dǎo)航系統(tǒng),使用 操作圖標(biāo) 代替菜單按鈕來實現(xiàn)用戶交互。圖標(biāo)在移動應(yīng)用程序 UI 中是十分標(biāo)準(zhǔn)的,而較新的 Android 設(shè)備(版本 4.2.2 及更高的版本)已經(jīng)棄用了選項菜單,而改用操作欄。掌握如何將這些特性與您的 Android 移動應(yīng)用程序集成在一起將使您受益無窮!

Activity 類生命周期

Activity 的生命周期直接對應(yīng)著 Android 移動應(yīng)用程序的生命周期。當(dāng)用戶與應(yīng)用程序或運行應(yīng)用程序的設(shè)備進行交互時,Android 平臺將在 Activity 實例上執(zhí)行回調(diào)。當(dāng)用戶啟動應(yīng)用程序時,初始的 Activity 將執(zhí)行一個已定義的生命周期。當(dāng)應(yīng)用程序轉(zhuǎn)入后臺時,它執(zhí)行生命周期的一個不同階段,而當(dāng)應(yīng)用程序關(guān)閉時則執(zhí)行另一個階段。圖 1 顯示了每個交互階段的 Android Activity 生命周期。

圖 1. Android 的 Activity 生命周期

圖展示了 Android 移動應(yīng)用程序的 Activity 生命周期。

Android 移動應(yīng)用程序生命周期包含四個階段:

  • 啟動
  • 暫停與恢復(fù)
  • 停止與重啟
  • 銷毀

后面的內(nèi)容將會講述每個階段及其回調(diào)方法(可在 Activity 實例內(nèi)部實現(xiàn))。

Activity 生命周期中的啟動

演示應(yīng)用程序

如果您一直關(guān)注本系列文章,那么在本系列的第一和第二篇文章中已經(jīng)創(chuàng)建了自己的演示應(yīng)用程序。如果沒有演示應(yīng)用程序,建議您在繼續(xù)之前創(chuàng)建一個。另外,您還可以復(fù)制我自己的 Overheard Word 演示應(yīng)用程序的 Git 庫。

在 前面的文章中,您已經(jīng)使用了對應(yīng)啟動 Activity 的回調(diào)方法,即 onCreate。您可能也熟悉 onStartonResume,啟動時也會調(diào)用這兩個方法?,F(xiàn)在,在 Activity 生命周期的上下文中考慮這些方法。

在 Eclipse Android 開發(fā)環(huán)境中,選擇 Override/Implement Methods... 選項即可輕松重寫方法,如 圖 2 中所示。

圖 2. 重寫 Activity 生命周期回調(diào)方法

在 Eclipse 中重寫 actvity 生命周期回調(diào)方法的屏幕截圖。

接下來,選擇 onStartonResume 方法:

圖 3. 選擇回調(diào)

在 Eclipse 中選擇回調(diào)的屏幕截圖。

現(xiàn)在使用 Android 的 Log 類加入一些跟蹤語句,就像我在 清單 1 中所做的那樣。

清單 1. 實現(xiàn) Android Activity 回調(diào)

  1. @Override 
  2. protected void onResume() { 
  3.     super.onResume(); 
  4.     Log.d("overheardword""onResume Invoked"); 
  5.  
  6. @Override 
  7. protected void onStart() { 
  8.     super.onStart(); 
  9.     Log.d("overheardword""onStart Invoked"); 

啟動應(yīng)用程序的一個實例并通過 LogCat 查看日志,對結(jié)果進行檢查,如 圖 4 中所示。

圖 4. LogCat 的調(diào)試語句

Logcat 的調(diào)試語句屏幕截圖。

Android 使用 LogCat 記錄日志

Android 擁有自己的日志記錄系統(tǒng) android.util.Log。借助這個方便的類,您可以記錄各種水平(比如 info、warndebug 等)的日志,然后通過 Android SDK 自帶的 logcat 工具查看日志。在 Eclipse 中,您應(yīng)該將 LogCat 看作一個選項卡,可以使用它過濾標(biāo)簽和應(yīng)用程序?qū)嵗?。LogCat 還支持在設(shè)備上訪問日志,只要將設(shè)備插入臺式機或筆記本電腦的 USB 插口即可。

您很可能已經(jīng)猜到,首次加載應(yīng)用程序時將調(diào)用 onCreate,而在其他階段的上下文中使用 onStartonResume 更加方便,比如當(dāng)應(yīng)用程序轉(zhuǎn)入后臺和重啟時。

Activity 生命周期中的暫停與恢復(fù)

因 為移動設(shè)備通常會運行多個應(yīng)用程序,而它們會以各種方式來吸引用戶的注意力,因此您的應(yīng)用程序應(yīng)該知道何時讓另一個應(yīng)用程序占據(jù)設(shè)備屏幕并使用更多資源。 有時,用戶在使用應(yīng)用程序時需要接電話,或者是應(yīng)用程序可能會彈出一個對話框,比如信息請求或錯誤消息。上述每種操作都將部分地阻斷當(dāng)前的 Activity。

當(dāng)一個 Activity 被部分阻斷時,將調(diào)用 onPause 方法。當(dāng)暫停的 Activity 重新獲得焦點時,將調(diào)用 onResume。暫停與恢復(fù)表示受影響的活動被部分阻斷,而非完全隱藏。

當(dāng)應(yīng)用程序完全隱藏時,例如用戶打電話,還會調(diào)用 onPause,但在這種情況下還會繼續(xù)調(diào)用 onStop。當(dāng)應(yīng)用程序再次轉(zhuǎn)入前臺時,將先調(diào)用 onRestart,再調(diào)用 onStart,最后調(diào)用 onResume。

下面解釋實現(xiàn) onPauseonRestartonStop 時發(fā)生的事情。如果您已經(jīng)有了本系列文章中使用的 Android 應(yīng)用程序,那么在代碼中添加一些日志語句,然后運行應(yīng)用程序。按下 Home 按鈕完全隱藏實例,然后單擊它的圖標(biāo)再次運行。您應(yīng)該看到調(diào)用了一系列方法。首先看到的是 onPause,然后是 onStop。 單擊圖標(biāo)重新運行應(yīng)用程序時,調(diào)用的方法依次是 onRestart、onStartonResume

銷毀 Activity 也是運行應(yīng)用程序的常規(guī)過程中會發(fā)生的事情。例如,可以調(diào)用 Activity 實例的 finish 方法來終止該實例。這里的關(guān)鍵在于,因為關(guān)閉了一個 Activity,所以它將遵循與被隱藏相同的生命周期,但它最后會回調(diào) onDestroy

在 清單 2 中,我使用自己的 Overheard Word 應(yīng)用程序演示了這個過程,具體做法是在向上劃動手勢時調(diào)用了 finish 方法。

清單 2. 銷毀 Activity 實例

  1. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
  2.    try { 
  3.        final SwipeDetector detector = new SwipeDetector(e1, e2, velocityX, velocityY); 
  4.        if (detector.isDownSwipe()) { 
  5.         return false
  6.        }else if (detector.isUpSwipe()) { 
  7.         finish(); 
  8.        }else if (detector.isLeftSwipe()) { 
  9.         Toast.makeText(getApplicationContext(), "Left Swipe", Toast.LENGTH_SHORT).show(); 
  10.        }else if (detector.isRightSwipe()) { 
  11.         Toast.makeText(getApplicationContext(), "Right Swipe", Toast.LENGTH_SHORT).show(); 
  12.        } 
  13.    } catch (Exception e) { 
  14.        // nothing 
  15.    } 
  16.    return false

最常用的 Activity 生命周期方法是 onCreate、onRestartonDestroy。例如,我使用了 onRestart 來刷新應(yīng)用程序 UI 視圖的眾多方面之一,并使用 onDestroy 釋放到數(shù)據(jù)庫的連接,比如 Android 設(shè)備上本地運行的 SQLite。

現(xiàn)在可能還不明顯,但一旦開始與外部資源協(xié)作 — 比如外部 Web 服務(wù)或設(shè)備的文件系統(tǒng)或數(shù)據(jù)庫 — 這些生命周期階段將變得十分重要。

接下來解釋如何使用兩個 Activity hook 方法 —onCreateOptionsMenuonOptionsItemSelected— 實現(xiàn)應(yīng)用程序菜單行為。讓這兩個方法同步后,我們將把它們的功能連接到圖標(biāo),以實現(xiàn)額外的 UI 效果。

使用菜單與動作進行導(dǎo)航

當(dāng)我在 Eclipse 中創(chuàng)建 Overheard Word 項目時,定義的第一個 Activity 有一個存根方法 onCreateOptionsMenu。正如您猜想的那樣,此方法用于創(chuàng)建一個選項菜單。在老式的 Android 設(shè)備上,選項菜單由 Menu 按鈕表示。在較新的設(shè)備上,它被表示為一系列垂直的點,顯示在應(yīng)用程序本身之中。較新的 Android 設(shè)備不一定有菜單按鈕。

在表示老式設(shè)備的模擬器實例中,有一個名為 "Menu" 的按鈕。只要單擊它,應(yīng)用程序?qū)嵗蜁@示選項菜單。在這個例子中,我們將看到用于導(dǎo)航的選項。例如,如果用戶按下 Home 按鈕,就會看到如 圖 5 中所示的內(nèi)容。

圖 5. 一個未實現(xiàn)的菜單項

一個屏幕截圖,表示 Android 模擬器中顯示的未實現(xiàn)的菜單項。

平板電腦上沒有菜單按鈕。用戶無法從 菜單 中選擇項目,而是被要求發(fā)起各種 操作。這個較新的 UI 欄稱為 操作欄,如 圖 6 中所示。

圖 6. Android 的新操作欄

Android 模擬器中的 Android 新操作欄。

盡 管菜單按鈕與操作欄的行為方式很類似,但操作欄只在較新的設(shè)備上能實現(xiàn)。由于我們的目標(biāo)是老版本的 Android 系統(tǒng)(記住,約有 50% 的 Android 設(shè)備運行 Gingerbread?。?,因此我將使用更加熟悉的菜單按鈕進行演示。稍后,我將說明如何更新導(dǎo)航代碼以實現(xiàn)操作欄,滿足您以較新版本的 Android 及對應(yīng)設(shè)備為目標(biāo)的愿望。

創(chuàng)建一個選項菜單

為了翻新 Overheard Word 以提高用戶交互的效率,第一步最好是實現(xiàn)選項菜單,讓用戶能退出應(yīng)用程序。退出應(yīng)用程序是 Activity 生命周期的階段之一,因此我們將使用 Activity 方法實現(xiàn)這個功能。

記住,在 Android 應(yīng)用程序中,所有與 UI 相關(guān)的業(yè)務(wù)都對應(yīng)一個 XML 文件,因此定義 UI 的方法就是編輯布局的 XML 文件。Android 應(yīng)用程序的 XML 文件位于項目的 res 文件夾的特定目錄中(例如,布局文件位于 layout 目錄中)。

為了快速進行練習(xí),可以看一看 Overheard Word 主活動中 onCreateOptionsMenu 方法的默認實現(xiàn)方法 — 您看出了什么門道?

  1. public boolean onCreateOptionsMenu(Menu menu) { 
  2.   getMenuInflater().inflate(R.menu.overheard_word, menu); 
  3.   return true
  4.  } 

如果您正在考慮查找 menu 資源目錄中一個名為 overheard_word.xml 的 XML 文件,那么您就離成為一名 Android 專家不遠了!

我... 退出!

接下來,我們將編輯菜單資源 XML 文件,添加一個名為 quit 的菜單項。一開始需要在您的 res/values 目錄中找到 strings.xml 文件。找到之后,創(chuàng)建一個如下所示的新項:

<string name="quit_menu">Quit</string>

這個標(biāo)記定義了單詞 Quit,可以通過標(biāo)識符 quit_menu 來引用它(順便說一句,這對于應(yīng)用程序的國際化很有好處)。接下來,打開 menu 目錄中的 overheard_word.xml 文件。 在這個文件中,將標(biāo)題修改為 @string/quit_menu,從而將單詞 Quit 鏈接到菜單項。

現(xiàn)在,啟動模擬器并按下 Menu 按鈕。應(yīng)該看到一個菜單出現(xiàn)在屏幕下方,其中有一個選項:Quit。但選擇它什么效果也沒有,因為目前還沒有實現(xiàn)它。

我們將在一分鐘內(nèi)為 Quit 選項添加實現(xiàn)代碼。但首先,我們要考慮移動應(yīng)用程序的任意功能部分的另一重要元素,即它的外觀。您可能已經(jīng)注意到,如今大量移動 UI(甚至越來越多的 Web 應(yīng)用程序 UI)都使用圖標(biāo)進行導(dǎo)航。下面將說明如何使用免費圖標(biāo)替換通用詞按鈕。

移動 UI 設(shè)計中的圖標(biāo)

在進入移動開發(fā)領(lǐng)域之前,我對圖標(biāo)也有涉獵,但很少在我的企業(yè)應(yīng)用程序中使用它們。當(dāng) Web 應(yīng)用程序的交互性開始變得更加突出時,我發(fā)現(xiàn)自己使用圖標(biāo)的次數(shù)也在增加。但直到我開始從事移動開發(fā),圖標(biāo)才真正成為我的工作重點。

我的圖標(biāo)在哪里?

如今,要尋找在開源與商業(yè)應(yīng)用中使用的免費圖標(biāo)是件很容易的事。您還可以支付一點點費用,購買某些圖標(biāo)的使用權(quán)。我個人喜歡一個名為 Glyphish 的包,其中包含數(shù)百個圖標(biāo)可供選擇,而且許可費用非常合理。Glyphish 還提供一個免費的許可證。建議您快速搜索和查找希望在本文中用于演示的圖標(biāo)。

如 果在 Android 移動 UI 設(shè)計中使用圖標(biāo),需要充分了解設(shè)備的分辨率。Android 設(shè)備生態(tài)系統(tǒng)非常龐大,您的應(yīng)用程序可能需要在各種設(shè)備上運行,從低分辨率的小屏設(shè)備一直到配備 7 英寸大屏的高分辨率平板電腦。一個在手持設(shè)備上顯示效果良好的圖標(biāo),在平板電腦上可能顯得十分粗糙。

幸運的是,您可以控制應(yīng)用程序圖標(biāo)在不同設(shè)備上的外觀??焖僭L問 Android 移動應(yīng)用程序的 res 目錄。您應(yīng)該可以看到一些名為 drawable-something-pdi 的目錄(這里的 "something" 是任意字母序列)。這些目錄對應(yīng)各種設(shè)備屏幕的分辨率。在這些目錄中放置大小正確的圖標(biāo)與其他圖像文件,可以確保您的圖標(biāo)在不同類型的設(shè)備上正確顯示。

例如,對于分辨率超高的設(shè)備,Android 將使用 drawable-xxhdpi 目錄中的圖標(biāo)。此目錄中的啟動圖標(biāo)應(yīng)該為 96 x 96 像素,并且至少為 320 dpi。drawable-ldpi 目錄中的啟動圖標(biāo)應(yīng)該為 36 x 26 像素和 120 dpi。您也可以選擇創(chuàng)建一個默認的 drawable 目錄,當(dāng) Android 無法找到指定圖標(biāo)分辨率對應(yīng)的文件時,將使用此目錄下的圖標(biāo)。

為了簡單起見,我將為我的 Overheard Word 應(yīng)用程序創(chuàng)建一個 drawable 目錄。我在此目錄中放置一個 26 x 26 的圖標(biāo)文件(.png 格式),用于退出選項。

圖 7. 為 drawable 目錄添加一個圖標(biāo)

Eclipse 中 drawable 目錄的屏幕截圖。

我的下一個步驟是在選項菜單中引用該圖標(biāo),具體做法是在我的 overheard_word.xml 文件中更新 menu 項,如下所示:

  1. android:icon="@drawable/quit_icon" 

如果您嚴(yán)格遵循我的步驟,則應(yīng)更新同一元素的 id。為它指定一個描述性的字符串值,如下所示:

  1. android:id="@+id/quit_item" 

進行下一個步驟,即在 onOptionsItemSelected 方法內(nèi)部實現(xiàn)退出行為時,使用一個描述性的、易于理解的字符串值是很有幫助的。我們將能夠通過 quit_item 的 ID 在選擇事件中引用菜單項。現(xiàn)在啟動模擬器并按下 Menu 按鈕。我認為您會喜歡所看到的情景!

圖 8. 好圖標(biāo)!(由 Glyphish 提供)

一個屏幕截圖,表示 Android 模擬器中 Overheard Word 的新 Quit 圖標(biāo)

實現(xiàn)菜單行為

現(xiàn)在我有一個外觀漂亮的圖標(biāo),可以用于 Quit 菜單項(我希望您也有一個圖標(biāo)用于自己的應(yīng)用程序),但我仍然需要添加代碼,從而告訴應(yīng)用程序當(dāng)按鈕被按下時應(yīng)該做什么。

實現(xiàn)選項菜單中的任意行為都要從重寫 onOptionsItemSelected 方法開始。因此重寫該方法,然后更新代碼,使其看起來像下面這樣(但記住要針對您自己的應(yīng)用程序調(diào)整菜單項 ID):

清單 3. 處理菜單項選擇

  1. public boolean onOptionsItemSelected(MenuItem item) { 
  2.     switch (item.getItemId()) { 
  3.     case R.id.quit_item: 
  4.         this.finish(); 
  5.         return true
  6.     default
  7.         return super.onOptionsItemSelected(item); 
  8.     } 

注意,這只是一條簡單的 switch 語句。如果選擇 quit_itemid,將調(diào)用 finish 方法來關(guān)閉應(yīng)用程序。

在模擬器中試用這段新代碼:按 Menu 按鈕,選擇退出(X)選項,并觀察 LogCat 上出現(xiàn)的內(nèi)容。您應(yīng)該看到一個完整的 Activity 生命周期,依次分為如下幾個階段:onPause、onStoponDestroy。

Android 3.x 中的操作欄

如前所述,較新版本的 Android(Honeycomb 及更高版本)使用操作欄取代了選項菜單。較新的設(shè)備甚至不一定有 Menu 按鈕,因此了解應(yīng)用程序的導(dǎo)航(或其他功能)也能用在操作欄中。

確保通過為選項菜單編碼而實現(xiàn)的導(dǎo)航功能也能用在操作欄中,并不需要做很多工作。您已經(jīng)實現(xiàn)了所有需要的方法,剩下的工作只是對 XML 源文件進行一些修改。

首先需要創(chuàng)建一個模擬器實例,用于模擬使用操作欄而非菜單按鈕的設(shè)備。最簡單的做法是模擬一臺平板電腦。在 Android SDK 安裝中啟動 Android SDK Manager 命令行應(yīng)用程序(是位于 tools 目錄中的 android 命令)。SDK Manager 啟動并運行后,從 Tools 菜單選擇 Manage AVDs... 選項。這將顯示一個對話框,在其中可以定義一個新的模擬器或 Android Virtual Device(或 AVD)。選擇 7.0'' WSVGA (Tablet) (1024 x 600: mdpi),然后將模擬器的目標(biāo)設(shè)定為至少 Android 4.2.2。完成后,您就有了一個不響應(yīng)菜單按鈕的模擬器,如 圖 9 中所示。

圖 9. 創(chuàng)建一個平板電腦模擬器

一個屏幕截圖,表示模擬平板設(shè)備的選項。

接 下來,在該平板電腦實例中啟動您的應(yīng)用程序。您應(yīng)該在右下角看到一條由三個點組成的垂直線。它看起來很棒,對嗎?默認情況下,Android 將保留菜單行為,甚至在較新的顯示設(shè)備中也是這樣。通過更新應(yīng)用程序的 XML 資源,您可以升級操作欄的外觀與行為,讓它變得更加自然。

從應(yīng)用程序的 AndroidManifest.xml 文件開始,您將在該文件中更新 SDK 目標(biāo):

  1. <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="17" /> 

接下來,在 Eclipse 中進入您項目的 Properties 頁面,并將 Project Build Target 更新為高于 Android 4.2.2 的任意 Android 版本。單擊 OK 并讓項目重新編譯。然后在 menu 目錄中找到菜單 XML 文件。更新它的內(nèi)容,如下所示,這將保留 Quit 的 item 定義。

  1. android:showAsAction="always" 

最后,如果您的項目在 res 目錄下沒有兩個名為 values-v11values-v14 的子目錄,那么創(chuàng)建它們。接下來,在 values-v11 目錄中添加以下 XML 文件:

  1. <resources> 
  2.  <style name="AppBaseTheme" parent="android:Theme.Holo.Light"></style> 
  3. </resources> 

values-v14 目錄中,添加此文件:

  1. <resources> 
  2.  <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar"></style> 
  3. </resources> 

現(xiàn)在重啟模擬器,您的新圖標(biāo)應(yīng)該出現(xiàn)在右上角:

圖 10. 一個帶圖標(biāo)的操作欄

新圖標(biāo)綠色機器人的屏幕截圖。

現(xiàn)在回到 menu 目錄中的菜單文件(其中定義了 quit 項),將 showAsAction 更改為 never。重新運行您的應(yīng)用程序,應(yīng)該可以在右上角看到這三個垂直的點。

不要忘記重新設(shè)定

注意,如果希望將應(yīng)用程序目標(biāo)保持為 Gingerbread,您需要重新設(shè)定項目的編譯目標(biāo)并撤消本節(jié)內(nèi)容中對 XML 文件所做的更改。這些更改無法做到向后兼容!

圖標(biāo)的更多樂趣

迄今為止,您已經(jīng)為以 Gingerbread 為目標(biāo)的應(yīng)用程序添加了一個菜單選項,看到它被十分完美地轉(zhuǎn)換到實現(xiàn)操作欄的新設(shè)備上,并了解如何通過對應(yīng)用程序的 XML 文件進行一些更新來升級該功能(如果您選擇這樣做)。

現(xiàn)在,讓我們總結(jié)一下您學(xué)到的關(guān)于圖標(biāo)的內(nèi)容。您已經(jīng)完成了為應(yīng)用程序的導(dǎo)航菜單添加一個圖標(biāo)的主要工作,因此更新它的 main 圖標(biāo)應(yīng)該沒什么問題。對用戶而言,這個圖標(biāo)就代表著您的應(yīng)用程序,因此必須知道如何更新和定制它。

我將更新 Overheard Word 的圖標(biāo),您也可以對自己的應(yīng)用程序這樣做。再說一遍,在 Internet 上進行快速搜索可以找到大量的圖標(biāo)站點。在這些站點中,我發(fā)現(xiàn)了一個有趣的圖標(biāo)集合,其中有一個圖標(biāo)確實深受我的喜愛:

圖 11. 一個漂亮的新圖標(biāo)

[[120663]]

回想一下,這個圖標(biāo)在不同的設(shè)備配置文件上呈現(xiàn)不同的效果。我希望確保用戶對 Overheard Word 產(chǎn)生良好的第一印象,因此讓圖標(biāo)分辨率適合我的目標(biāo)設(shè)備范圍是很有必要的。幸運的是,我知道一個真正好用的站點,可以幫我實現(xiàn)這個目標(biāo)。

投資圖標(biāo)

使用免費圖標(biāo)達到演示目的沒有問題,但為了專業(yè)應(yīng)用程序而投資定制圖標(biāo)是絕對有必要的。圖標(biāo)(或圖標(biāo)集)體現(xiàn)了您應(yīng)用程序的品牌,您希望它是獨一無二的。如果它很一般,或者看起來明顯很業(yè)余,用戶會對您的應(yīng)用程序做出什么結(jié)論呢?

Android Asset Studio是一個 Google Code 項目,擁有大量可為 Android 開發(fā)人員提供助力的實用工具。我使用頻率很高的一個工具是 Launcher Icons。我要做的就是單擊 Launcher Icons 鏈接,然后上傳我的圖標(biāo)。該實用工具會針對各種設(shè)備配置文件生成正確尺寸的圖標(biāo)文件,然后我可以 zip 文件的格式下載它。該文件包含四個目錄,每個目錄下都包含一個我上傳文件的特定分辨率與尺寸的版本。

圖 12. Launcher Icons 為 Android 制作尺寸正確的圖標(biāo)

Launcher Icons 為四臺不同的 Android 設(shè)備提供大小正確的圖標(biāo)。

接下來,我將每個目錄中的 ic_launcher.png 文件復(fù)制到我應(yīng)用程序的 res 文件夾的相同子目錄中。注意,在此過程中,我可能會替換 Eclipse 生成的原始圖標(biāo)文件。

最后,我再次運行應(yīng)用程序,并等它出現(xiàn)在我的模擬器實例中。我單擊 Home 按鈕,然后查看結(jié)果:一個漂亮的應(yīng)用程序圖標(biāo)(對我而言)標(biāo)志著 OverHeard Word 是所有用戶設(shè)備上最有趣的應(yīng)用程序!

圖 13. 現(xiàn)在變得很形象!

Overheard Word 的新主要圖標(biāo)在設(shè)備的應(yīng)用程序菜單中看起來非常引人注目。

結(jié)束語

在本文中,您了解了 Activity 的生命周期,并知道如何使用它來改進應(yīng)用程序?qū)υO(shè)備資源的利用。您還學(xué)會了如何使用菜單和操作欄定義與實現(xiàn)導(dǎo)航構(gòu)件,以及如何使用圖標(biāo)替換單詞按鈕。

您 在本文中學(xué)到的所有內(nèi)容對于構(gòu)建 Android 應(yīng)用程序都是至關(guān)重要的。Android 上的移動開發(fā)很容易上手,當(dāng)然也樂趣無窮,但我希望您也要明白它與您所熟悉的 Java 開發(fā)屬于不同范式。Google Play 與其他應(yīng)用程序商店中存在著成千上萬個應(yīng)用程序,因此通常只有規(guī)劃良好、設(shè)計用心和編碼精妙的應(yīng)用程序才能名列前茅。要學(xué)的地方還有很多!

責(zé)任編輯:閆佳明 來源: ibm
相關(guān)推薦

2015-07-09 15:42:48

ios應(yīng)用生命周期

2009-06-24 10:34:39

JSF生命周期JSF應(yīng)用程序

2013-07-31 14:50:32

Windows PhoWP應(yīng)用程序生命周期

2011-07-20 15:58:58

iPhone 應(yīng)用程序 生命周期

2014-07-11 11:09:10

App應(yīng)用程序生命周期

2011-08-10 16:50:10

iPhone生命周期

2013-09-26 11:20:34

Informatica

2012-05-28 15:37:20

WP程序生命周期

2012-08-16 09:38:38

ASP.NET

2010-08-01 15:29:04

AndroidDalvik

2014-02-24 10:50:32

DevOps云應(yīng)用

2025-04-28 01:22:00

2023-12-21 08:00:00

ChatGPT人工智能大型語言模型

2010-04-02 09:02:02

ASP.NET MVC

2013-05-03 16:37:25

網(wǎng)絡(luò)設(shè)備生命周期品質(zhì)

2020-04-02 14:29:21

云安全派拓網(wǎng)絡(luò)Palo Alto N

2012-06-20 10:29:16

敏捷開發(fā)

2011-06-16 09:31:21

ActivityAndroid

2014-07-16 13:39:30

Windows Pho

2015-07-08 16:28:23

weak生命周期
點贊
收藏

51CTO技術(shù)棧公眾號