Android xml activity屬性詳解

例子:java

<activity android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:clearTaskOnLaunch=["true" | "false"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "orientation", "screenLayout",
                                 "fontScale", "uiMode"]
          android:enabled=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:launchMode=["multiple" | "singleTop" |
                              "singleTask" | "singleInstance"]
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:permission="string"
          android:process="string"
          android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "sensor" | "nosensor"]
          android:stateNotNeeded=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
</activity>

屬性:android

1. android:allowTaskReparenting瀏覽器

是否容許activity更換從屬的任務,好比從短信息任務 切換到瀏覽器任務。佈局

二、android:alwaysRetainTaskState性能

 是否保留狀態不變, 好比切換回home, 再重新打開,activity處於最後的狀態。好比一個瀏覽器擁有不少狀態(當打開了多個TAB的時候),用戶並不但願丟失這些狀態時,此時可將此屬性設置爲trueui

三、android:clearTaskOnLaunch spa

好比 P 是 activity, Q 是被P 觸發的 activity, 而後返回Home, 從新啓動 P,是否顯示 Q.net

四、android:configChangescode

當配置list發生修改時, 是否調用 onConfigurationChanged() 方法  好比 "locale|navigation|orientation". blog

這個我用過,主要用來看手機方向改變的. android手機在旋轉後,layout會從新佈局, 如何作到呢?

正常狀況下. 若是手機旋轉了.當前Activity後殺掉,而後根據方向從新加載這個Activity. 就會從onCreate開始從新加載.

若是你設置了 這個選項, 當手機旋轉後,當前Activity以後調用onConfigurationChanged() 方法. 而不跑onCreate方法等.

5.android:enabled

activity 是否能夠被實例化

六、android:excludeFromRecents

是否可被顯示在最近打開的activity列表裏,默認是false

7.android:exported

是否容許activity被其它程序調用

八、android:finishOnTaskLaunch

當用戶從新啓動這個任務的時候,是否關閉已打開的activity,默認是false

若是這個屬性和allowTaskReparenting都是true,這個屬性就是王牌。Activity的親和力將被忽略。該Activity已經被摧毀並不是re-parented

九、android:launchMode(Activity加載模式)

在多Activity開發中,有多是本身應用之間的Activity跳轉,或者夾帶其餘應用的可複用Activity。可能會但願跳轉到原來某個Activity實例,而不是產生大量重複的Activity。這須要爲Activity配置特定的加載模式,而不是使用默認的加載模式

Activity有四種加載模式:

standard、singleTop、singleTask、singleInstance(其中前兩個是一組、後兩個是一組),默認爲standard 

standard:就是intent將發送給新的實例,因此每次跳轉都會生成新的activity。

singleTop:也是發送新的實例,但不一樣standard的一點是,在請求的Activity正好位於棧頂時(配置成singleTop的Activity),不會構造新的實例

singleTask:和後面的singleInstance都只建立一個實例,當intent到來,須要建立設置爲singleTask的Activity的時候,系統會檢查棧裏面是否已經有該Activity的實例。若是有直接將intent發送給它。

singleInstance:首先說明一下task這個概念,Task能夠認爲是一個棧,可放入多個Activity。好比啓動一個應用,那麼Android就建立了一個Task,而後啓動這個應用的入口Activity,那在它的界面上調用其餘的Activity也只是在這個task裏面。那若是在多個task中共享一個Activity的話怎麼辦呢。舉個例來講,若是開啓一個導遊服務類的應用程序,裏面有個Activity是開啓GOOGLE地圖的,當按下home鍵退回到主菜單又啓動GOOGLE地圖的應用時,顯示的就是剛纔的地圖,其實是同一個Activity,實際上這就引入了singleInstance。singleInstance模式就是將該Activity單獨放入一個棧中,這樣這個棧中只有這一個Activity,不一樣應用的intent都由這個Activity接收和展現,這樣就作到了共享。固然前提是這些應用都沒有被銷燬,因此剛纔是按下的HOME鍵,若是按下了返回鍵,則無效。具體可看這篇文章 Android Activity中的四種啓動模式 

十、android:multiprocess

是否容許多進程,默認是false

十一、android:noHistory

當用戶從Activity上離開而且它在屏幕上再也不可見時,Activity是否從Activity stack中清除並結束。默認是false。Activity不會留下歷史痕跡

十二、android:process

一個activity運行時所在的進程名,全部程序組件運行在應用程序默認的進程中,這個進程名跟應用程序的包名一致。   

中的元素process屬性可以爲全部組件設定一個新的默認值。可是任何組件均可以覆蓋這個默認值,容許你   

將你的程序放在多進程中運行。 若是這個屬性被分配的名字以:開頭,當這個activity運行時,一個新的專屬於這個程序的   

進程將會被建立。若是這個進程名以小寫字母開頭,這個activity將會運行在全局的進程中,被它的許可所提供。

1三、android:screenOrientation

activity顯示的模式

默認爲unspecified:由系統自動判斷顯示方向

landscape橫屏模式,寬度比高度大

portrait豎屏模式, 高度比寬度大

user模式,用戶當前首選的方向

behind模式:和該Activity下面的那個Activity的方向一致(在Activity堆棧中的)

sensor模式:有物理的感應器來決定。若是用戶旋轉設備這屏幕會橫豎屏切換

nosensor模式:忽略物理感應器,這樣就不會隨着用戶旋轉設備而更改了

1四、android:stateNotNeeded

activity被銷燬或者成功重啓時是否保存狀態

1五、android:taskAffinity

activity的親屬關係, 默認狀況同一個應用程序下的activity有相同的關係 

1六、android:theme

activity的樣式主題, 若是沒有設置,則activity的主題樣式從屬於應用程序, 參見元素的theme屬性

1七、android:windowSoftInputMode

activity主窗口與軟鍵盤的交互模式,能夠用來避免輸入法面板遮擋問題,Android1.5後的一個新特性。

這個屬性能影響兩件事情:

【A】當有焦點產生時,軟鍵盤是隱藏仍是顯示

【B】是否減小活動主窗口大小以便騰出空間放軟鍵盤

各值的含義:

【A】stateUnspecified:軟鍵盤的狀態並無指定,系統將選擇一個合適的狀態或依賴於主題的設置

【B】stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity裏的狀態,不管是隱藏仍是顯示

【C】stateHidden:用戶選擇activity時,軟鍵盤老是被隱藏

【D】stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也老是被隱藏的

【E】stateVisible:軟鍵盤一般是可見的

【F】stateAlwaysVisible:用戶選擇activity時,軟鍵盤老是顯示的狀態

【G】adjustUnspecified:默認設置,一般由系統自行決定是隱藏仍是顯示

【H】adjustResize:該Activity老是調整屏幕的大小以便留出軟鍵盤的空間

【I】adjustPan:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能老是看到輸入內容的部分

相關文章
相關標籤/搜索