1. 程式人生 > >AndroidManifest.xml 不同變數的作用(持續更新)

AndroidManifest.xml 不同變數的作用(持續更新)

android:exported=”true” or “false”

1.如果是activity,表示是否能被別的程式呼叫
2.如果是service,表示service不能跨程序呼叫

android:taskAffinity屬性

參考[這裡寫連結內容](http://blog.csdn.net/way_ping_li/article/details/8680359)

supports-screens

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="false" />

語法(SYNTAX):

<supports-screensandroid:resizeable=["true"|"false"]
                  android:smallScreens=["true" | "false"]
                  android:normalScreens=["true" | "false"]
                  android:largeScreens=["true" | "false"]
                  android:xlargeScreens=["true" | "false"]
                  android:anyDensity=["true" | "false"]
                  android:requiresSmallestWidthDp="integer"
                  android:compatibleWidthLimitDp="integer"
                  android:largestWidthLimitDp="integer"/>

被包含於(CONTAINED IN):

說明(DESCRIPTION):

這個元素用於指定應用程式所支援的螢幕尺寸,並針對比應用程式所支援的螢幕還要大螢幕,啟用螢幕相容模式。在應用程式中使用這個元素指定應用程式所支援的螢幕尺寸是至關重要的。

如果應用程式調整尺寸屬性來填充整個螢幕,那麼應用程式就要支援這個給定的尺寸。通常對於大多數應用程式,系統可以很好的完成這種調整工作,並且為了讓應用程式在比一個手持裝置大的螢幕上工作,你不需要做任何額外的工作。但是,針對不同的螢幕尺寸,通過提供可選的佈局資源來優化應用程式的UI經常是很重要的。例如,一個執行在手持裝置上的Activity佈局,如果想要執行在平板電腦上,就需要修改這個Activity的佈局。

但是,如果為了適應不同的螢幕尺寸而調整了尺寸,但應用程式也不能很好的工作,就可以使用元素的屬性來控制應用程式是否應該釋出給螢幕較小的裝置,或者使用系統的螢幕相容模式,讓UI放大以適應較大螢幕的要求。在沒有針對較大螢幕尺寸的設計,並且普通的尺寸不能達到合適結果時,螢幕的相容模式會通過模擬普通尺寸的螢幕和中等密度來縮放UI,以便它能夠填充整個螢幕,這樣會導致UI模糊,因此針對大螢幕的優化是比較好的。

注意:Android3.2引入了新的屬性:android:requiresSmallestWidthDp、android:compatibleWidthLimitDp和android:largestWidthLimitDp。如果正在開發Android3.2或更高版本的應用程式,應該使用這些屬性來宣告應用程式所支援的螢幕尺寸,而不是基於一般的螢幕尺寸屬性。

有關如何正確的支援不同的螢幕尺寸,以便避免給應用程式使用螢幕相容模式的更多資訊,請閱讀“Supporting Multiple Screens”

屬性(ATTRIBUTES):

android:resizeable

這個屬性用於指示針對不同的螢幕尺寸,應用程式是否可以調整尺寸。預設值是true。如果這個屬性設定了false,在大的螢幕上,系統會在螢幕相容模式中執行該應用程式。

這個屬性被廢棄了,引入這個屬性主要是為了幫助應用程式從1.5過渡到1.6。當多螢幕支援被引入時,就不應該在使用它了。

android:smallScreens

這個屬性用於指定應用程式是否支援較小外形的螢幕。一個small型別的螢幕被定義成一個比normal(傳統的HVGA)型別的螢幕還要小的螢幕。外部服務(如Google Play)不會把不支援小屏的應用程式提供給小屏裝置,因為很少有能夠確保該應用程式在小螢幕的裝置上正常工作的平臺。這個屬性的預設值是true。

android:normalScreens

這個屬性用於指示應用程式是否支援普通外形的螢幕。典型的是HVGA中等密度的螢幕,但是WQVGA低密度和WVGA高密度螢幕也被認為是普通螢幕。這個屬性的預設值是true。

android:largeScreens

這個屬性用於指示應用程式是否支援較大外形的螢幕。一個large型別的螢幕被定義成一個比normal型別的手持裝置的螢幕明顯還要大的螢幕,並且為了讓應用程式能夠良好的使用,使用這個屬性時要特別小心,儘管可以依賴系統來調整尺寸,以便能夠填充螢幕。

這個屬性的預設值實際上在某些版本之間是不同的,因此最好在任何時候都明確的宣告這個屬性。如果設定為false,系統會啟用螢幕相容模式,這時要格外的小心。

android:xlargeScreens

這個屬性用於指示應用程式是否支援超大外形的螢幕。一個xlarge螢幕被定義成一個比large螢幕還要大的螢幕,如平板電腦,為了能夠讓應用程式良好的使用,需要特別小心的使用這個屬性,儘管可以依賴系統來UI的尺寸來填充螢幕。

android:anyDensity

這個屬性指明應用程式是否包含了能夠適用於任何螢幕密度的資源。

對於支援Android1.6(API Level 4)和更高版本的應用程式,這個屬性的預設值是true,並且除非絕對的確認這是應用程式正常工作所必須的,否則不應該把它設定為false。只是在應用程式直接操作點陣圖時才需要禁止這個屬性。

android:requiresSmallestWidthDp

這個屬性用於指定smallestWidth的最小需求。smallestWidth是螢幕空間的最短尺寸(以dp為單位),它必須是對應用程式的UI是有效的。也就是說它是有效的螢幕的兩個維度的尺寸中最短的那個。因此為了考慮裝置跟應用程式的相容性,裝置的smallestWidth的值必須要大於等於這個屬性所設定的值。通常這個屬性值是針對佈局所支援的最小寬度,而不是螢幕當前的方向。

例如,典型的手持裝置螢幕smallestWidth是320dp;7英寸的平板電腦的smallestWidth是600dp;10英寸的平板電腦的smallestWidth是720dp。這些值一般都是最小的寬度,因為它們是螢幕可用空間中最短的那個尺寸。

這對這個尺寸值的比較,需要考慮螢幕的裝飾和系統UI部分。例如,如果系統有一些固定的UI元素要顯示,那麼系統宣告的裝置的最小寬度(smallestWidth)要比實際的螢幕尺寸要小,因為被系統UI佔用的螢幕畫素對於應用的UI是無效的。因此,這個值應該是應用佈局所使用的最小寬度需求,而不管螢幕的當前方向。

如果應用程式能夠針對較小螢幕尺寸進行正確的調整(small尺寸或最小寬度是320dp以下的螢幕),那麼就不需要這個屬性。否則就應該使用這個屬性值跟應用程式所使用的最小螢幕寬度限定符的值(swdp)相匹配。

警告:Android系統不會關注這個屬性,因此它不會影響應用程式在執行時的行為。相反,它被服務(如Google Play)用於過濾應用程式。但是,當前Google Play不支援用這個屬性來過濾(在Android3.2上),因此如果應用程式不支援小螢幕裝置,就應該繼續使用其他的尺寸屬性。
這個屬性在API Level 13中被引入。

android:compatibleWidthLimitDp

這個屬性允許在設計應用程式時,通過指定最大的“smallest screen width”來啟用螢幕相容模式,作為一個使用者可選的功能。如果裝置的有效螢幕的最小邊比這個屬性值大,那麼使用者依然能夠安裝該應用程式,但是在執行時要使用螢幕相容模式。預設情況下,螢幕相容模式似乎被禁止的,並且通過會調整佈局的尺寸來填充螢幕,但是在系統欄中會有一個按鈕,讓使用者選擇螢幕相容模式的開啟和關閉。

如果應用程式跟所有的螢幕尺寸都相容,並且它的佈局能夠被正確的調整尺寸,就不需要使用這個屬性。

注意:當前,螢幕相容模式只能模擬320dp寬度的手持裝置螢幕,因此如果android:compatibleWidthLimitDp的值比320大,那麼螢幕相容模式就不被適用。

這個在API Level 13中被引入。

android:largestWidthLimitDp

這個屬性允許再設計應用程式時,通過指定最大的“smallest screen width”來強制啟用螢幕相容模式。如果裝置有效螢幕的最小邊比這個屬性值大,應用程式就會執行在螢幕相容模式中,而使用者沒有辦法禁止這種模式。

如果應用程式跟所有的螢幕尺寸都相容,並且能夠被正確的調整尺寸,就不需使用這個屬性。否則首先要考慮使用android:compatibleWidthLimitDp屬性。只有在因大螢幕尺寸調整而導致破壞了應用程式的功能的時候,並且使用螢幕相容模式是唯一的方法的時候,才應該使用這個屬性。

注意:當前,螢幕相容模式只能模擬320dp寬度的手持裝置螢幕,因此如果android:compatibleWidthLimitDp的值比320大,那麼螢幕相容模式就不被適用。

這個在API Level 13中被引入。

android:hardwareAccelerated=”true”

是否啟動view的硬體加速

android:largeHeap=”true

是否預設應用為使用最大記憶體的應用。
adb shell getprop

dalvik.vm.heapsize=128m

dalvik.vm.heapgrowthlimit=64m

heapgrowthlimit是一個普通應用的記憶體限制,用ActivityManager.getLargeMemoryClass()獲得的值。
heapsize是在AndroidManifest.xml中設定largeHeap=true之後,可以使用的最大記憶體。

預設應用使用64m android:largeHeap=true,預設使用128m

android:restoreAnyVersion=”true”

這個屬性是指允許恢復任意版本的備份資料來恢復應用程式的資料。將該屬性設定為true,則將允許備份管理器嘗試恢復操作,有的時候版本不匹配表明資料是不相容的,這個時候如果可以恢復到不同版本的資料,那麼應用程式將承受很大的風險,所以請謹慎使用此屬性!
這個屬性必須是布林值,true或者false!
下面舉個例子:
我們寫一個應用程式名為project,在Androidmanifest中versionCode寫2,說明project的版本號是2.並且我們設定其restoreAnyVersion為false(或者不配置該屬性,因為預設為false)。
接下來安裝project.apk並執行一次備份工作,至此係統已經對應用程式完成了一次備份。備份之後,我們將project解除安裝,再修改AndroidManifest中versionCode的值為1,再重新將project安裝到手機上。這時候該應用程式版本為1(版本號降低了)。由於版本號降低會影響到恢復功能的執行。備份管理服務檢查到備份版本高於當前安裝版本,此時Android備份系統就跳過這個應用程式的恢復過程,在日誌中提示“no more packages to restore”。
接下來我們再次解除安裝project,並將AndroidManifest中的restoreAnyVersion的值設為true,再次重新安裝該應用程式,在日誌中我們可以看到android備份系統發現了原來備份的資料(版本為2),但是安裝的應用程式為1,這時備份系統會去檢查師傅哦設定了restoreAnyVersion=true,如果已經進行了這樣子的設定,那麼Android系統就依然進行一次恢復操作。

上述講的是從高版本到低版本的過程,會隨著restoreAnyVersion不同而改變。
但是如果是從低版本到高版本呢?
無論restoreAnyVersion設定為什麼,因為程式的版本不斷升高,Android備份系統都會為其進行一次備份恢復操作。

android:supportsRtl=”true”

宣告你的application是否願意支援從右到左(原來RTL就是right-to-left 的縮寫…)的佈局。預設為true

android:usesCleartextTraffic=”false”

預設為true
該屬性用於應用的NetworkSecurityPolicy,並且宣告是否允許未加密的網路流量。
當usesCleartextTraffic被設定為false,應用程式會在使用HTTP而不是HTTPS時崩潰。
你可以在John Kozyrakis的部落格文章中閱讀更多關於Android M加密連線的相關內容。

android:clearTaskOnLaunch的用法

比如你的應用裡有N個Activity,其中有個是設定頁面,你從主頁面進入到設定頁面設定了一些東西之後,突然,按了下Home鍵,回到了Android的Home,這時候你做了些別的事情,然後你再次點選你的應用程式圖示進入你的應用程式的時候,依舊是回到設定頁面,繼續先前的工作,這也是大多數應用的情況。
  但是,如果你把android:clearTaskOnLaunch的值設為true呢?顧名思義,它就在啟動的時候把Task給清空了,就是你再次點選應用程式圖示進入你的應用程式的時候是回到應用程式的第一個頁面,而不會回到先前的設定頁面。也就是說不儲存先前的設定狀態。
至於,什麼情況下要這麼用,我還沒想到,像谷歌的Zxing專案,也就是Android上的“條碼掃描器”,它就是這樣的,不管你什麼時候重新進入該應用,它顯示的都是掃描的介面。

android:windowSoftInputMode屬性詳解

android:windowSoftInputMode
activity主視窗與軟鍵盤的互動模式,可以用來避免輸入法面板遮擋問題,Android1.5後的一個新特性。
這個屬效能影響兩件事情:
【一】當有焦點產生時,軟鍵盤是隱藏還是顯示
【二】是否減少活動主視窗大小以便騰出空間放軟鍵盤
它的設定必須是下面列表中的一個值,或一個”state…”值加一個”adjust…”值的組合。在任一組設定多個值——多個”state…”values,例如&mdash有未定義的結果。各個值之間用|分開。例如:

在這設定的值(除”stateUnspecified”和”adjustUnspecified”以外)將覆蓋在主題中設定的值

各值的含義:
【A】stateUnspecified:軟鍵盤的狀態並沒有指定,系統將選擇一個合適的狀態或依賴於主題的設定
【B】stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity裡的狀態,無論是隱藏還是顯示
【C】stateHidden:使用者選擇activity時,軟鍵盤總是被隱藏
【D】stateAlwaysHidden:當該Activity主視窗獲取焦點時,軟鍵盤也總是被隱藏的
【E】stateVisible:軟鍵盤通常是可見的
【F】stateAlwaysVisible:使用者選擇activity時,軟鍵盤總是顯示的狀態
【G】adjustUnspecified:預設設定,通常由系統自行決定是隱藏還是顯示
【H】adjustResize:該Activity總是調整螢幕的大小以便留出軟鍵盤的空間
【I】adjustPan:當前視窗的內容將自動移動以便當前焦點從不被鍵盤覆蓋和使用者能總是看到輸入內容的部分

Android屬性之excludeFromRecents

Android:excludeFromRecents控制在不在recent列表中顯示。

true時不顯示;false顯示,預設。

執行如下activity後,不會顯示在recent列表中。