A006-AndroidManifest.xml解析2

<manifest>

首先,我們的根標簽就是 manifest,有開始標簽就有結束標簽,所以每個標簽都是成對出現的。
在我們的根標簽中,需要指定package,應用的包名,具有唯一性。還需要指定應用當前的版本號versionCode和版本名稱versionName;我們可以看到關于Android的屬性都會有android:這樣的前綴,這個是標準寫法,我們每次敲完前綴之后可以通過代碼提示功能來查看可以添加的屬性,如下圖:

標簽屬性
標簽屬性

<uses-sdk>

uses-sdk是為了程序兼容而存在的,它是如何做兼容的呢?也許從三個子項的名字上就可以猜測出來。

minSdkVersion:若手機或平板的API level低于apk的minSdkVersion,系統不能安裝這個應用。

targetSdkVersion:API level在minSdkVersion和targetSdkVersion之間的版本可以直接執行程序(不需要打開任何兼容項)。若手機或平板的API level大于程序的targetSdkVersion,Android運行環境就需要模擬之前版本API的行為,這個稱之為兼容。程序開發者如何確定這個值呢?自然是在對應平臺上測試,具體的過程是:遞增targetSdkVersion,每遞增一次測試一次。

maxSdkVersion:若手機或平板的API level 大于maxSdkVersion,程序不能安裝或使用。google文檔說不推薦這個子項,因為Android 2.0.1后不檢查這一項了,只有google play還會check這一項。

<uses-permission>

摘自:http://blog.csdn.net/dp1234/article/details/6239933

這個配置是標識該應用申請系統授權具體的權限。

|值 | 說明 |
|:: | :: |
|android.permission.ACCESS_CHECKIN_PROPERTIES |允許讀寫訪問”properties”表在checkin數據庫中,改值可以修改上傳|
|android.permission.ACCESS_COARSE_LOCATION|允許一個程序訪問CellID或WiFi來獲取粗略的位置|
| android.permission.ACCESS_FINE_LOCATION |允許一個程序訪問精良位置(如GPS)|
|android.permission.ACCESS_LOCATION_EXTRA_COMMANDS | 允許應用程序訪問額外的位置提供命令|
| android.permission.ACCESS_MOCK_LOCATION|允許程序創建模擬位置用于測試|
|android.permission.ACCESS_NETWORK_STATE|允許程序訪問有關的網絡信息|
|android.permission.ACCESS_SURFACE_FLINGER|允許程序使用SurfaceFlinger底層特性|
|android.permission.ACCESS_WIFI_STATE|允許程序訪問Wi-Fi網絡狀態信息|
|android.permission.ACCOUNT_MANAGER|允許一個應用程序啟動賬戶認證,該權限只能系統去設置|
|android.permission.AUTHENTICATE_ACCOUNTS|允許應用程序的驗證賬戶扮演一個賬戶管理者|
|android.permission.BATTERY_STATS|允許程序更新手機電池統計信息|
|android.permission.BIND_APPWIDGET|允許應用告訴AppWidget哪個應用能夠訪問該AppWidget的數據|
|android.permission.BIND_DEVICE_ADMIN|必須通過關機接收者的請求,來確保只有系統能夠與之交互|
|android.permission.BIND_INPUT_METHOD|必須通過InputMethodService的請求,來確保只有系統能夠與之綁定|
|android.permission.BIND_WALLPAPER|必須通過WallpaperService的請求,來確保只有系統能夠與之綁定|
|android.permission.BLUETOOTH|允許程序連接到已配對的藍牙設備|
|android.permission.BLUETOOTH_ADMIN|允許程序發現和配對藍牙設備|
|android.permission.BRICK|請求能夠禁用設備(非常危險)|
|android.permission.BROADCAST_PACKAGE_REMOVED|允許應用發出一個程序包被移除的廣播消息|
|android.permission.BROADCAST_SMS|允許應用發出一個收到短信的消息|
|android.permission.BROADCAST_STICKY|允許應用發出一個與intent相連的消息|
|android.permission.BROADCAST_WAP_PUSH|允許應用發出一個收到WAP PUSH的廣播消息|
|android.permission.CALL_PHONE|允許一個程序初始化一個電話撥號,不需通過撥號用戶界面需要用戶確認|
|android.permission.CALL_PRIVILEGED|允許一個程序撥打任何號碼,包含緊急號碼無需通過撥號用戶界面需要用戶確認|
|android.permission.CAMERA|請求訪問使用照相設備|
|android.permission.CHANGE_COMPONENT_ENABLED_STATE|允許一個程序是否改變一個組件或其他的啟用或禁用|
|android.permission.CHANGE_CONFIGURATION|允許一個程序修改當前設置,如本地化|
|android.permission.CHANGE_NETWORK_STATE|允許程序改變網絡連接狀態|
|android.permission.CHANGE_WIFI_STATE|允許程序改變Wi-Fi連接狀態|
|android.permission.CLEAR_APP_CACHE|允許一個程序在設備中清除所有安裝的程序的緩存|
|android.permission.CLEAR_APP_USER_DATA|允許一個程序清除用戶數據|
|android.permission.CONTROL_LOCATION_UPDATES|允許啟用禁止位置更新提示從無線模塊|
|android.permission.DELETE_CACHE_FILES|允許程序刪除緩存文件|
|android.permission.DELETE_PACKAGES|允許一個程序刪除包|
|android.permission.DEVICE_POWER|允許訪問底層電源管理|
|android.permission.DIAGNOSTIC|允許程序RW診斷資源|
|android.permission.DISABLE_KEYGUARD|允許程序禁用鍵盤鎖|
|android.permission.DUMP|允許程序返回狀態抓取信息從系統服務
|android.permission.EXPAND_STATUS_BAR|允許一個程序擴展收縮在狀態欄,android開發網提示應該是一個類似Windows Mobile中的托盤程序|
|android.permission.FACTORY_TEST|作為一個工廠測試程序,運行在root用戶|
|android.permission.FLASHLIGHT|允許訪問閃光燈,其中HTC Dream不包含閃光燈|
|android.permission.FORCE_BACK|允許應用強制執行返回操作而不論是不是最終的activity|
|android.permission.GET_ACCOUNTS|允許訪問在Accounts Service中的一個帳戶列表|
|android.permission.GET_PACKAGE_SIZE|允許一個程序獲取任何package占用空間容量|
|android.permission.GET_TASKS|允許一個程序獲取信息有關當前或最近運行的任務,一個縮略的任務狀態,是否活動等等|
|android.permission.GLOBAL_SEARCH|可以被內容提供者用來允許使用全程搜索他們的數據|
|android.permission.HARDWARE_TEST|允許訪問硬件|
|android.permission.INJECT_EVENTS|允許一個程序截獲用戶事件如按鍵、觸摸、軌跡球等等到一個時間流|
|android.permission.INSTALL_PACKAGES|允許一個程序安裝packages|
|android.permission.INTERNAL_SYSTEM_WINDOW|允許打開窗口使用系統用戶界面|
|android.permission.INTERNET|允許程序打開網絡sockets|
|android.permission.KILL_BACKGROUND_PROCESSES|允許應用去呼叫killBackgroundProcesses方法|
|android.permission.MANAGE_ACCOUNTS|允許程序去管理賬戶列表(在賬戶管理者中)|
|android.permission.MANAGE_APP_TOKENS|允許程序管理(創建、催后、 z- order默認向z軸推移)程序引用在窗口管理器中|
|android.permission.MASTER_CLEAR|目前還沒有明確的解釋|
|android.permission.MODIFY_AUDIO_SETTINGS|允許程序修改全局音頻設置|
|android.permission.MODIFY_PHONE_STATE|允許修改話機狀態,如電源,人機接口等|
|android.permission.MODIFY_FORMAT_FILESYSTEMS|允許格式化可移除的存儲倉庫的文件系統|
|android.permission.MOUNT_UNMOUNT_FILESYSTEMS|允許掛載和反掛載文件系統可移動存儲|
|android.permission.PERSISTENT_ACTIVITY|允許一個程序設置他的activities顯示|
|android.permission.PROCESS_OUTGOING_CALLS|允許程序監視、修改有關播出電話|
|android.permission.READ_CALENDAR|允許程序讀取用戶日歷數據|
|android.permission.READ_CONTACTS|允許程序讀取用戶聯系人數據|
|android.permission.READ_FRAME_BUFFER|允許程序屏幕波或和更多常規的訪問幀緩沖數據|
|android.permission.READ_HISTORY_BOOKMARKS|允許應用去讀取(非寫)用戶瀏覽歷史和書簽|
|android.permission.READ_INPUT_STATE|允許程序返回當前按鍵狀態|
|android.permission.READ_LOGS|允許程序讀取底層系統日志文件|
|android.permission.READ_OWNER_DATA|允許程序讀取所有者數據|
|android.permission.READ_PHONE_STATE|允許讀取電話的狀態|
|android.permission.READ_SMS|允許程序讀取短信息(Allows an application to read SMS messages.)|
|android.permission.READ_SYNC_SETTINGS|允許程序讀取同步設置|
|android.permission.READ_SYNC_STATS|允許程序讀取同步狀態|
|android.permission.REBOOT|請求能夠重新啟動設備|
|android.permission.RECEIVE_BOOT_COMPLETED|允許一個程序接收到 ACTION_BOOT_COMPLETED廣播在系統完成啟動|
|android.permission.RECEIVE_MMS|允許一個程序監控將收到MMS彩信,記錄或處理|
|android.permission.RECEIVE_SMS|允許程序監控一個將收到短信息,記錄或處理|
|android.permission.RECEIVE_WAP_PUSH|允許程序監控將收到WAP PUSH信息|
|android.permission.RECORD_AUDIO|允許程序錄制音頻|
|android.permission.REORDER_TASKS|允許程序改變Z軸排列任務|
|android.permission.RESTART_PACKAGES|允許程序重新啟動其他程序(此值已廢棄使用)
|android.permission.SEND_SMS|允許程序發送SMS短信|
|android.permission.SET_ACTIVITY_WATCHER|允許程序監控或控制activities已經啟動全局系統中|
|android.permission.SET_ALWAYS_FINISH|允許程序控制是否活動間接完成在處于后臺時|
|android.permission.SET_ANIMATION_SCALE|修改全局信息比例|
|android.permission.SET_DEBUG_APP|配置一個程序用于調試|
|android.permission.SET_ORIENTATION|允許底層訪問設置屏幕方向和實際旋轉|
|android.permission.SET_PREFERRED_APPLICATIONS|允許一個程序修改列表參數PackageManager.addPackageToPreferred()和PackageManager.removePackageFromPreferred()方法|
|android.permission.SET_PROCESS_LIMIT|允許設置最大的運行進程數量|
|android.permission.SET_TIME|允許應用設置系統時間|
|android.permission.SET_TIME_ZONE|允許程序設置系統時區時間|
|android.permission.SET_WALLPAPER|允許程序設置壁紙|
|android.permission.SET_WALLPAPER_HINTS|允許程序設置壁紙hits|
|android.permission.SIGNAL_PERSISTENT_PROCESSES|允許程序請求發送信號到所有顯示的進程中|
|android.permission.STATUS_BAR|允許程序打開、關閉或禁用狀態欄及圖標|
|android.permission.SUBSCRIBED_FEEDS_READ|允許一個程序訪問訂閱RSS Feed內容提供|
|android.permission.SUBSCRIBED_FEEDS_WRITE|系統暫時保留改設置,|
|android.permission.SYSTEM_ALERT_WINDOW|允許一個程序打開窗口使用 TYPE_SYSTEM_ALERT,顯示在其他所有程序的頂層|
|android.permission.UPDATE_DEVICE_STATS|允許應用更新設備資料信息|
|android.permission.USE_CREDENTIALS|允許應用從管理器得到授權請求|
|android.permission.VIBRATE|允許訪問振動設備|
|android.permission.WAKE_LOCK|允許使用PowerManager的 WakeLocks保持進程在休眠時從屏幕消失|
|android.permission.WRITE_APN_SETTINGS|允許程序寫入API設置|
|android.permission.WRITE_CALENDAR|允許一個程序寫入但不讀取用戶日歷數據|
|android.permission.WRITE_CONTACTS|允許程序寫入但不讀取用戶聯系人數據|
|android.permission.WRITE_EXTERNAL_STORAGE|允許應用寫(非讀)用戶的外部存儲器|
|android.permission.WRITE_GSERVICES|允許程序修改Google服務地圖|
|android.permission.WRITE_HISTORY_BOOKMARKS|允許應用寫(非讀)用戶的瀏覽器歷史和書簽|
|android.permission.WRITE_OWNER_DATA|允許一個程序寫入但不讀取所有者數據|
|android.permission.WRITE_SECURE_SETTINGS|允許應用寫或讀當前系統設置|
|android.permission.WRITE_SETTINGS|允許程序讀取或寫入系統設置|
|android.permission.WRITE_SMS|允許程序寫短信|
|android.permission.WRITE_SYNC_SETTINGS|允許程序寫入同步設置|

application

摘自:http://blog.csdn.net/small_love/article/details/6534956

包含在:<manifest>元素下
可以包含:

  • <activity>
  • <activity-alias>
  • <service>
  • <receiver>
  • <provider>
  • <uses-library>

1、android:allowClearUserData
是否給以用戶刪除用戶數據的權限,如果為true應用管理者就擁有清除數據的權限;false沒有。默認為true。
2、android:allowTaskReparenting
應用定義的activities是否可以被從啟動的任務轉移到和他有相同并且將被帶到前臺的任務。true他們可以被轉移,如果為false,
他們必須和啟動他們的任務保持在一起。默認為false。
3、android:backupAgent
實現應用的備份代理的類名,BackupAgent的子類。這個屬性的名稱因該是全限定類名(如,"com.example.project.MyBackupAgent")。
但是,如果名稱的首字母被設置為點號,也可以為類名(如,".MyBackupAgent"),他將被追加到在<manifest>元素中定義的包名后。
沒有默認值。
4、android:debuggable
應用是否可以使用debug,甚至運行在用戶模式下。true可以,false不能。默認為false。
5、android:description
用戶可讀的,比應用標簽更長、更多的應用描述。此值必須是一個引用字符串。不像標簽,他不能被設置為硬編碼字符串。沒有默認值。
6、android:enabled
Android系統是否可以實例化應用的組件。如果為true可以,如果為false不可以。如果為true時,每個組件的enabled屬性決定了此組件
是否可用。如果為false,他重寫了組件指定值,所有的組件將不還用。默認為true。
7、android:hasCode
應用是否包含代碼。true表示包含,false表示不包含。當值為false時,在啟動組件是系統不會試著加載應用的任何代碼。默認為true。
8、android:icon
整個應用的圖標,還是每個組件的默認圖標。這個屬性值必須被設置為drawable資源的引用。沒有默認值。
9、android:killAfterRestore
在整型系統重置操作中,當他的設置被重置后,應用是否應該被終止。單個包的重置操作不會引起應用被關閉。整個系統的恢復操作僅代表
性的發生一次,當電話第一次被設置時。第三方應用將不會經常使用此屬性。
默認值為true,意思是,當整個系統被恢復時,應用運行玩他的數據后,將會終止。
10、android:label
一個易讀的應用標簽,并且還是應用的每個組件的默認標簽。這個標簽應該被設置為引用字符串資源,當然他也可以像其他字符串一樣在用戶
接口中指定。但是為了方便,在應用開發時,可以被設置未定義字符串。
11、android:manageSpaceActivity
一個Activity子類的全限定名稱,這個Activity可以被系統啟動讓用戶管理此應用占有的存儲空間。這個Activity也應該用<activity>元素聲明。
12、android:name
為這個應用實現的Application子類的全限定名稱。當應用啟動時,這個類將在應用的其他組件之前被實例化。
這個子類是可選的;大多數應用不需要。在缺省時,Android使用基本Application類的實例。
13、android:permission
客戶為了和應用交互必須設置的許可的名稱。這個屬性是一個便利的途徑為應用的組件設置許可。他可以被組件的permission屬性重寫。
14、android:persistent
應用是否在所有時間下都保持運行。true是,false不是。默認為false。通常情況下應用不應該設置此標識。持久模式僅僅被幾個系統應用指定。
15、android:process
為應用下的組件定一個運行進程名稱。每個組件可以定義自己的進程名稱通過設置自己的process屬性。
在默認情況下,Android為應用創建一個進程,當應用的第一個組件需要運行時。所有的組件在同一個進程下運行。這個進程的名稱和在<manifest>
元素設置的backage屬性名相同。
通過設置這個屬性在可以在其他應用中共享,你可以協調應用的組件在同一個進程中運行,但是只有兩應用也共享用戶ID和簽訂相同的證書。
如果這個屬性的名稱一個冒號(":")開始,一個新的私有的進程將被創建。如果一個進程的名稱以小寫字母開頭,一個公共的進程將被創建。
一個公共的進程可以被其他應用共享,來減少資源的使用。
16、android:restoreAnyVersion
表明這個應用準備嘗試恢復所有的備份數據集合,甚至如果備份數據是比當前安裝的應用高的編號存儲的。設置為true將允許備份管理者去嘗試
恢復當版本不匹配,意思是數據沖突。要小心使用。默認為false。
17、android:taskAffinity
提供給應用下所有組件的類同名稱,除了設置了自己的taskAffinity屬性的組件。默認情況下所有的組件使用相同的affinity。Affinity的名稱
和在<manifest>元素中設置的包名相同。
18、android:theme
為應用下的組件定義一個引用自樣式資源的主題。個別的activities可以設置自己的主題,通過設置自己的theme屬性。

<activity>

activity是Android四大組件之一,它的屬性非常多,語法如下:
摘自:http://blog.sina.com.cn/s/blog_48d491300100zmg0.html

< activity android:allowTaskReparenting=["true" | "false"]
    android:alwaysRetainTaskState=["true" | "false"]
    android:clearTaskOnLaunch=["true" | "false"]
    android:configChanges=["mcc", "mnc", "locale",
        "touchscreen", "keyboard", "keyboardHidden",
        "navigation", "screenLayout", "fontScale", "uiMode",
        "orientation", "screenSize", "smallestScreenSize"]
    android:enabled=["true" | "false"]
    android:excludeFromRecents=["true" | "false"]
    android:exported=["true" | "false"]
    android:finishOnTaskLaunch=["true" | "false"]
    android:hardwareAccelerated=["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:parentActivityName="string" 
    android:permission="string"
    android:process="string"
    android:screenOrientation=["unspecified" | "behind" |
        "landscape" | "portrait" |
        "reverseLandscape" | "reversePortrait" |
        "sensorLandscape" | "sensorPortrait" |
        "userLandscape" | "userPortrait" |
        "sensor" | "fullSensor" | "nosensor" |
        "user" | "fullUser" | "locked"]
    android:stateNotNeeded=["true" | "false"]
    android:taskAffinity="string"
    android:theme="resource or theme"
    android:uiOptions=["none" | "splitActionBarWhenNarrow"]
    android:windowSoftInputMode=["stateUnspecified",
        "stateUnchanged", "stateHidden",
        "stateAlwaysHidden", "stateVisible",
        "stateAlwaysVisible", "adjustUnspecified",
        "adjustResize", "adjustPan"] > 
    . . .
< /activity >

包含于:
< application>
可包含:
< intent-filter >
< meta-data>

說明:
聲明一個 Activity( Activity 子類),實現應用程序的可視化用戶界面。 所有 Activity 都必須在manifest文件中用 < activity > 聲明。 任何未經聲明的 Activity 系統都會視而不見,且不會運行。
屬性:
android:allowTaskReparenting
當某個擁有相同 affinity 的任務即將返回前臺時,Activity 是否能從啟動時的任務轉移至此任務中去 —“true”表示可以移動,“false”表示它必須留在啟動時的任務中。
如果未設置本屬性,則 < application > 元素中對應的 allowTaskReparenting 屬性值將會應用于 Activity 。 默認值是“false”。
通常在啟動時,Activity 與啟動時的任務相關聯,并在整個生命周期都位于此任務中。 利用本屬性可以強行讓 Activity 在當前任務不再顯示時歸屬于另一個與其 affinity 相同的任務。 典型應用是讓一個應用程序的 Activity 轉移到另一個應用程序關聯的主任務中去。
例如,如果某條 e-mail 信息包含了一個 Web 頁的鏈接,點擊此鏈接將啟動一個 Activity 顯示此 Web 頁。 這個 Activity 是由瀏覽器程序定義的,但卻作為 e-mail 任務的一部分被啟動。 如果它重新歸屬于瀏覽器的任務,那么在下次瀏覽器進入前臺時就會顯示出來,并且會在 e-mail 任務再次回到前臺時消失。
Activity 的 affinity 由 taskAffinity 屬性定義。 任務的 affinity 由根 Activity 的 affinity 確定。 然而,根據規定,根 Activity 總是位于 affinity 同名的任務中。 因為以“singleTask”和“singleInstance" 模式啟動的 Activity 只能位于任務的根部, 所以 Activity 的重新歸屬僅限于“standard”和“singleTop”啟動模式。 (請參閱 launchMode 屬性。)
android:alwaysRetainTaskState
系統是否一直維持 Activity 所屬任務的狀態 —“true”表示是,“false”表示允許系統在特定情況下重啟任務。 默認值是“false”。 本屬性只對任務的根 Activity 有效,其他 Activity 都忽略本屬性。
通常,在用戶從主屏幕(Home Screen)重新運行應用程序時,系統有時會清理任務(清除任務棧中根 Activity 以上的所有 Activity)。 執行此操作的典型情況是:用戶有段時間(比如30分鐘)沒有訪問該任務了。
然而,一旦本屬性設為“true”,則不論用戶位于何處,將總是返回任務的最后狀態。 舉例來說,這對瀏覽器就很有用,Web 瀏覽器這類應用需要保持很多狀態(諸如多個已打開的頁面),用戶不期望這些狀態馬上消失。
android:clearTaskOnLaunch
每次從主屏幕重新執行程序時,是否將任務中除根 Activity 以外的所有 Activity 都清除 — “true”表示總是清除至根 Activity,“false”則不清除。 默認值是“false”。 本屬性只對啟動新任務的 Activity(根 Activity)有效,其他 Activity 都忽略本屬性。
如果此值為“true”,則每當用戶再次啟動任務時都會進入根 Activity, 無論之前在此任務中做過什么操作,也無論上次是用 Back 還是 Home 鍵離開任務的。 如果此值為“false”,那么在某些情況下也許還會清理任務(請參閱 alwaysRetainTaskState屬性),但并不是每次都會執行。
例如,假設用戶從主屏幕啟動了 Activity P,又從 P 轉到 Activity Q。 接下來用戶按下了 Home 鍵,然后再回到 Activity P 。 通常,用戶將會看到 Activity Q,因為在 P 的任務里最后操作的就是 Q。 然而,如果 P 把本屬性設為“true”,則用戶按下 HOME 鍵時所有在它之上的 Activity(本例中是Q)都會被清除,任務將進入后臺。 因此用戶在下次返回該任務時就只會看到 P 了。
如果本屬性和 allowTaskReparenting 都設為“true”,那么所有可改變任務歸屬的 Activity 都會轉移到具有相同 affinity 的任務中去,其余的 Activity 都將如上所述被清除。
android:configChanges
列出 Activity 在變化時將會自行處理的配置參數。 默認情況下,如果運行時配置發生了變化, Activity 會被關閉并重啟。 但在本屬性中聲明配置參數將會阻止 Activity 的重啟,Activity 將會保持運行,且會調用其 onConfigurationChanged()方法。
注意: 請盡量避免使用本屬性,這只能用作最后的手段。 關于如何正確處理配置變化引起的重啟,詳情請參閱 處理運行時配置的變化。

下面列出本屬性可填入的值,多個值之間用“|”分隔 — 例如“locale|navigation|orientation”。
|"mcc"| IMSI 移動國家代碼(MCC)發生改變 — 檢測到 SIM 卡并更新了 MCC。|
|"mnc"| IMSI移動網絡代碼(MNC)發生改變——檢測到 SIM 卡并更新了 MNC。|
|"locale"| 地區發生改變——用戶選擇了新的語言(用于文本顯示)。|
|"touchscreen" |觸摸屏發生改變(通常不可能發生)。|
|"keyboard"| 鍵盤發生改變 — 比如用戶插入了外接鍵盤。|
|"keyboardHidden" |鍵盤功能發生改變 — 比如用戶讓硬鍵盤顯示出來。|
|"navigation"| 導航手段(軌跡球/D-Pad)發生了改變(通常不可能發生)。|
|"screenLayout"| 屏幕布局發生了改變 — 可能是由于激活了其他顯示屏。|
|"fontScale" |字體縮放倍數發生了改變 — 用戶選擇了新的全局字體大小。|
|"uiMode" |用戶界面模式發生了改變 — 可能是由于用戶把設備放進桌面/車用底座里,或者是變成了夜間模式。 請參閱 UiModeManager 。自API 級別 8 開始加入。|
|"orientation" |屏幕方向發生了改變 — 用戶旋轉了設備。 注意: 如果應用程序的目標版本是 API 級別 13 以上的話(由 minSdkVersion 和 targetSdkVersion 屬性定義),且須同時聲明“screenSize" 參數,因為設備在橫向/豎向切換時 screenSize 參數也會發生改變。
|
|"screenSize" |當前可用的屏幕尺寸發生改變。 這表示當前可用的屏幕大小發生了改變,與當前屏幕長寬比例有關,因此這會在用戶改變了縱橫方向時發生。 不過,如果用戶程序的目標版本是 API 級別 12 以下時, Activity 將總是自行處理本參數的變化 (即使在 Android 3.2 以上版本中運行,本參數的變化也不會導致 Activity 的重啟)。自 API 級別 13 開始加入。|
|"smallestScreenSize" |屏幕的物理尺寸發生了改變。 這種變化與屏幕的方向無關,因此只會在屏幕真實的物理大小發生變化時才會發生,比如切換到外接顯示器。 本參數的變化和 smallestWidth 參數 的變化相呼應。 不過,如果應用程序的目標版本是 API 級別 12 以下, 則 Activity 將總是自行處理本參數的變化 (即使在 Android 3.2 以上版本中運行,本參數的變化也不會導致 Activity 的重啟)。自 API 級別 13 開始加入。|
|"layoutDirection" |Layout 的方向放生了改變。 例如,從左到右(LTR)變成了從右到左(RTL)。 自 API 級別 17 開始加入。|
所有以上參數的改變都會影響到應用程序引用的資源值。 因此在調用 onConfigurationChanged() 時,通常需要重新讀取一下所有的資源(包括 View Layout、drawable 等等),以便正確應對參數的變化。
android:enabled
Activity 能否被系統實例化 — “true”表示可以,“false”表示不允許。 默認值是“true”。
<application> 元素擁有自己的 enabled 屬性,它適用于應用程序中所有的組件,包括 Activity。 系統要能夠實例化 Activity , < application > 和< activity >的 enabled 屬性都必須設為“true”(這也都是默認值)。 只要其中有一個是“false”, Activity 就不能被實例化。
android:excludeFromRecents
Activity 是否排除在用戶最近訪問應用程序的列表(“recent apps”)之外 。 也就是說,如果本 Activity 是新任務中的根 Activity,則本屬性確定了該任務是否不出現在最近應用程序列表中。 如果要排除在列表外,就設為“true”。 如果要包含在列表中,則設為“false”。 默認值是“false”。
android:exported
Activity 是否能被其他應用程序的組件啟動 —“true”表示可以,“false”表示不能。 如果設為“false”,那么 Activity 僅能被本應用程序或用戶ID相同的應用程序的組件啟動。
默認值取決于 Activity 是否包含 Intent 過濾器。 如果不存在過濾器,則意味著 Activity 只能通過指定準確的類名來啟動。 這表示 Activity 僅限于應用程序內部使用(因為其他應用程序無法知道它的類名)。 在這種情況下,默認值是“false”。 另一方面,只要存在一個以上的過濾器,就意味著 Activity 愿意被外部啟動,這時默認值就是“true”。
本屬性并不是限制 Activity 向其他應用程序開放的唯一手段。 你還可以用權限來限制外部對象對 Activity 的啟動(請參閱 permission 屬性)。
android:finishOnTaskLaunch
每當用戶再次啟動任務時(在主屏幕上選擇該任務),已存在的 Activity 實例是否應該關閉 — “true”表示需要關閉,“false”表示不要關閉。 默認值是“false”。
如果本屬性和 allowTaskReparenting 都設為“true”,則本屬性優先。 Activity 的 affinity 將被忽略。 Activity 將不會改變歸屬的任務,而是被銷毀。
android:hardwareAccelerated
是否為本 Activity 開啟硬件加速渲染功能 —“true”表示開啟,“false”表示關閉。 默認值是“false”。
自 Android 3.0 開始,應用程序可以使用硬件加速的 OpenGL 渲染器來改善很多常用 2D 圖形操作的性能。 當硬件加速渲染開啟時,大部分 Canvas、Paint、Xfermode、ColorFilter、Shader 和 Camera 內的操作都會被加速。 即使應用程序沒有顯式調用系統 OpenGL 庫,這仍能使動畫更加平滑、屏幕滾動也更加平順、整體響應性能獲得改善。 因為啟用硬件加速功能需要更多的資源,應用程序將消耗更多的 RAM 。
請注意,并非所有的 OpenGL 2D 操作都會被加速。 如果開啟了硬件加速渲染功能,請對應用程序進行測試,以確保渲染的正常使用。
android:icon
代表 Activity 的圖標。 當需要在屏幕上用圖標來表示 Activity 時,將會顯示本圖標。 例如,在桌面(launcher)窗口中顯示用于啟動任務的 Activity 圖標。 圖標常常伴隨著一個文本標簽(請參閱android:label屬性)。
本屬性必須設為對 drawable 資源的引用,資源內包含了圖片的定義。 如果未設置本屬性,則用作為全局設置的應用程序圖標代替(請參閱 < application > 元素的 icon 屬性)。
Activity 的圖標 — 無論是用本屬性還是用 < application > 元素的屬性設置的 — 都將同時作為 Activity 所有 Intent 過濾器的缺省圖標(請參閱 < intent-filter > 元素的 icon 屬性。
android:label
供用戶閱讀的 Activity 的 Label。 當必須向用戶標識 Activity 時,本 Label 將顯示在屏幕上。 Label 常常是跟在 Activity 圖標后面顯示的。
如果未設置本屬性,則用作為全局設置的應用程序 Label 代替(請參閱 <application> 元素的 label 屬性)。
Activity 的 Label — 無論是用本屬性還是用<application> 元素的屬性設置的 — 都將作為 Activity 所有 Intent 過濾器的缺省 Label(請參閱 <intent-filter>元素的 label 屬性)。
Label 應設為一個對字符串資源的引用,這樣就能像其他用戶界面內的字符串一樣對其進行本地化。 不過,考慮到開發時的便利性,也可以直接將其設為字符串。
android:launchMode
指明 Activity 的啟動模式。 當調用 Activity 來處理 Intent 時, Activity 的工作模式與四種標志(FLAG_ACTIVITY_*常量有關,這些常量在 Intent 中定義。它們是:
“standard”
“singleTop”
“singleTask”
“singleInstance”
缺省模式是“standard”。
如下表所述,這些模式歸為兩組: “standard”和“singleTop”模式的 Activity 為一組, “singleTask”和“singleInstance”模式的 Activity 為另一組。 用“standard”或“singleTop”模式啟動的 Activity 可以被實例化多次。 這些實例可以屬于任何一個任務,并且可以處于 Activity 棧的任何位置。 典型情況下,它們被任務通過調用 startActivity() 啟動并置入其中(除非 Intent 對象包含 FLAG_ACTIVITY_NEW_TASK 標志,這種情況下會選取其他任務 — 請參閱 taskAffinity 屬性)。
相反,“singleTask”和“singleInstance”模式的 Activity 只能啟動一個任務。 它們總是位于 Activity 棧的根部。 不僅如此,設備同時只保留一個 Activity 實例 — 只啟動一個任務。
“standard”和“singleTop”模式之間只有一點不同: 每次有“standard”模式 Activity 的 Intent 發生時, 都會新建一個 Activity 類的實例來響應該 Intent。 每個實例只負責處理一個 Intent 。 同理,singleTop 模式 Activity 的新實例也可以用于處理新發生的 Intent 。 不過,如果目標任務的棧頂已經存在該 Activity 的實例了,則此實例將收到這個新 Intent(在 onNewIntent() 里);而不會再創建新的實例了。 在其他情況下 — 比如目標任務中已存在“singleTop”模式的 Activity 但卻不是在棧頂,或者在棧頂但卻不是位于目標任務中 — 還是會創建新的實例并壓入棧頂。
“singleTask”和“singleInstance”模式之間也只有一點差別: “singleTask”模式的 Activity 允許其他 Activity 加入它的任務。 它總是處于任務的根部,而其他 Activity (必須是“standard”和“singleTop”模式的 Activity )可以在它的任務中啟動。 相反,“singleInstance”模式的 Activity 就不允許其他 Activity 加入它的任務,它是任務里唯一的 Activity 。 如果它啟動了其他 Activity,也會被放入另一個任務中 — 類似 Intent 中設置了 FLAG_ACTIVITY_NEW_TASK 標志的情況。

使用場合 啟動模式 多個實例? 注釋
正常啟動大多數 Activity "standard" 是 默認值。 系統總是在目標任務中創建 Activity 的新實例并把 Intent 傳入。
"singleTop" 有條件的 如果目標任務的棧頂已經存在本 Activity 的實例,則系統通過調用 onNewIntent() 方法傳入 Intent,而不再創建 Activity 的新實例。
特殊啟動模式(不建議在正常情況下使用) "singleTask" 系統在一個新任務的根部創建 Activity 并傳入 Intent 。 不過,如果本 Activity 的實例已經存在,系統將通過調用它的 onNewIntent() 方法來傳入 Intent,而不再創建新的實例。
"singleInstance" 除了系統不在實例所屬任務中啟動其他 Activity 以外,與“singleTask"”相同。 本 Activity 總是其任務中的唯一成員。

如上表所述,standard是默認模式,適用于大多數類型的 Activity 。 SingleTop 也是常用的啟動模式,適用于多種 Activity 。 其他模式 — singleTask 和 singleInstance — 對于大多數應用程序而言并不適用, 因為它們的用戶交互模式與其他多數應用大不相同,很可能會讓用戶感到陌生。
無論選擇了哪種啟動模式,都要確保對 Activity 的可用性進行測試,包括 Activity 啟動過程、從其他 Activity 和任務中用 Back 鍵返回的過程。
關于啟動模式及其與 Intent 標志位的關系,詳情請參閱文檔 任務和 Back 棧。
android:multiprocess
是否可以把 Activity 的實例放入啟動它的組件所在的進程中。 — “true”表示可以,“false” 表示不可以。 默認值是“false”。
通常情況下, Activity 的新實例會放入應用程序指定的進程中,所以 Activity 的所有實例都運行在同一個進程中。 然而,如果本屬性設為“true”, Activity 的進程就可以在多個進程中運行, 這就允許系統在任何需要用到該 Activity 的進程中(權限允許時)創建實例,盡管這也許永遠都用不到。
android:name
實現 Activity 的類名, 也即 Activity 的子類。 本屬性值應該是一個完全限定的類名(比如“com.example.project.ExtracurricularActivity”)。 不過作為簡稱,如果名稱的首字符是句點(比如“.ExtracurricularActivity”),那么 < manifest > 元素中設置的包名會自動加到前面。
應用程序一經發布,就 不應該修改本名稱 (除非設置了android:exported="false")。
沒有默認值,必須指定本屬性。
android:noHistory
當用戶離開且屏幕上已看不到 Activity 時,是否要從棧中清除并結束(調用其 finish() 方法)它 — “true”表示需要結束,“false”表示不要結束。 默認值是“false”。
此值為“true”意味著 Activity 不會留下歷史記錄。 任務不會在棧中保留此 Activity ,因此用戶也將無法返回它。
本屬性自 API 級別 3 開始加入。
android:parentActivityName
定義本 Activity 的父 Activity。 本屬性值必須與父 Activity 的類名一致,由 <activity> 元素的 android:name 屬性對應。
當用戶點擊 ActionBar 的 Up 按鈕時,系統將讀取本屬性以確定應該打開的 Activity 。 利用本屬性,系統還可以通過 TaskStackBuilder 生成 Activity 的 back 棧。
為了支持 API 4~16 版本的系統,你也可以通過 定義了 "android.support.PARENT_ACTIVITY" 的 <meta-data> 元素來聲明父 Activity:

  android:name="com.example.app.ChildActivity"
  android:label="@string/title_child_activity"
 android:parentActivityName="com.example.myfirstapp.MainActivity" >
    < !-- Parent activity meta-data to support API level 4+ -- >
          android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" / >```
 
關于聲明父 Activity 以支持 Up 導航的更多信息,請閱讀 提供 Up 導航。
本屬性自 API 級別 16 開始加入。
**android:permission**
要啟動本 Activity 或者要用本 Activity 響應 Intent ,客戶端必須擁有的權限名稱。 如果 startActivity() 或 startActivityForResult() 的調用者沒有被授權,那么它的 Intent 將不會傳遞給 Activity。
如果未設置本屬性,則會把 < application > 元素的 permission 屬性應用到本 Activity 上。 如果這兩個屬性都沒有設置,那么 Activity 將不受權限保護。
關于權限的詳細信息,請參閱介紹一文中的 權限 章節和另一篇文檔 安全和權限。
**android:process**
將要運行 Activity 的進程名稱。 通常,同一個應用程序的所有組件都會運行在應用啟動時的默認進程中,你不需要用到本屬性。 不過必要的時候,可以用本屬性覆蓋缺省的進程名稱,你就可以讓應用程序的多個組件分開運行于多個進程中。
如果賦予本屬性的名稱是以冒號(':')開頭的,那么在必要的時候會新建一個屬于應用程序的私有進程, Activity 將運行于該進程中。 如果進程名稱以小寫字母開頭,則 Activity 將運行于一個以該名稱命名的全局進程中,并賦予應有的權限。 這就允許不同應用程序的組件共享同一個進程,以|減少資源的占用。
< application > 元素的 process 屬性可以為全體組件設置默認的進程名稱。
**android:screenOrientation**
Activity 在設備上的顯示方向。
屬性值可以設為以下字符串之一:

|值|說明|
|  --------  |  -------  |
| "unspecified" |    默認值。由系統選擇方向。選擇的策略、進而根據特定的內容做出的選擇,可能因不同的設備而各不相同。|
|"behind"   |與 Activity 棧中下方相鄰的 Activity 方向相同。|
|"landscape"    | 橫向(寬度大于高度)。|
|"portrait" |   縱向(高度大于寬度)。|
|"reverseLandscape"  | 與正常方向相反的橫向。自 API 級別 9 開始加入。|
|"reversePortrait"  | 與正常方向相反的縱向。自 API 級別 9 開始加入。|
|"sensorLandscape"  | 橫向,但基于設備傳感器,既可能是正常橫向也可能是反向橫向。自 API 級別 9 開始加入。|
|"sensorPortrait" |     縱向,但基于設備傳感器,既可能是正常縱向也可能是反向縱向。自 API 級別 9 開始加入。|
|"userLandscape"     | 橫向,但基于設備傳感器和用戶的傳感器設置,既可能是正常橫向也可能是反向橫向。 如果用戶鎖定了基于傳感器的旋轉,則本屬性與landscape作用一樣,否則就與sensorLandscape一樣。 自 API 級別 18 開始加入。|
|"userPortrait"  | 縱向,但基于設備傳感器和用戶的傳感器設置,既可能是正常縱向也可能是反向縱向。 如果用戶鎖定了基于傳感器的旋轉,則本屬性與portrait作用一樣,否則就與sensorPortrait一樣。 自 API 級別 18 開始加入。|
|"sensor"    | 由設備的方向傳感器來確定方向。 顯示的方向取決于用戶如何放置設備,當用戶旋轉設備時就會發生改變。 不過,有些設備默認情況下無法旋轉至全部四個方向。 要允許使用全部4個方向,請用“ "fullSensor"”屬性。|
|"fullSensor"    | 由設備的方向傳感器確定為四個方向中的一個。 這類似于“sensor”,只是可以是四個方向中的任意一個,而不論設備正常情況如何 (比如,有些設備通常不會使用橫向反向和縱向反向,但這個屬性可以啟用)。 自 API 級別 9 開始加入。|
|"nosensor"  | 不根據物理上的方向傳感器來確定方向。 傳感器將會被忽略,因此用戶移動設備時顯示方式不會旋轉。 除此之外,系統使用與“unspecified”屬性相同的原則來選擇方向。|
|"user" | 用戶當前所用的方向。|
|"fullUser"  |  如果用戶鎖定了基于傳感器的旋轉,本屬性與user的作用相同。 否則,與fullSensor的作用相同,允許使用四個方向。 自 API 級別 18 開始加入。|
|"locked"    | 鎖定為當前方向,無論當前是什么方向。自 API 級別 18 開始加入。|
>注意: 一旦聲明了橫向或縱向值,則視為對 Activity 運行的方向有強制要求。 這時,此聲明值將啟用 Google Play 之類服務的過濾功能,于是應用程序就只能在支持所需方向的設備上使用。 比如,如果聲明了“landscape”、“reverseLandscape”或者“sensorLandscape”, 則應用程序將只能在支持橫向顯示的設備上使用。 不過,你還可以用 < uses-feature > 元素來顯式聲明應用程序同時需要橫向和縱向模式。 這樣就會取消 Google Play(以及其他提供過濾的服務)的過濾行為, 即使設備僅支持特定的方向,系統也不會對是否安裝應用程序進行控制了。


**android:stateNotNeeded**
未經保存狀態, Activity 是否可被殺死并能夠成功重啟 —“true”表示可以不管之前的狀態而被重啟, “false” 表示需要保存之前的狀態。 默認值是“false”。
通常,在為了騰出資源而臨時關閉 Activity 之前,將會調用 onSaveInstanceState() 方法。該方法把當前 Activity 的狀態存儲到一個 Bundle 對象中,重新啟動 Activity 時該 Bundle 對象將會被傳給 onCreate() 。如果本屬性設為“true”,則onSaveInstanceState() 可能就不會被調用,傳入onCreate() 的將為 null 而非 Bundle — 就像第一次啟動 Activity 一樣。
本屬性設為“true”將確保 Activity 能未經保存狀態而被重啟。 比如,顯示主屏幕的 Activity 就利用本屬性來保證由于某種原因崩潰時不會被清除。
**android:taskAffinity**
帶有 affinity 的 Activity 所處的任務。 擁有相同 affinity 的 Activity 在概念上屬于同一個任務(從用戶的角度來看被視為同一個應用程序)。 任務的 affinity 取決于其根 Activity 的 affinity。
affinity 決定兩件事情 — Activity 要重新歸屬于的任務(參閱 allowTaskReparenting 屬性)和通過 FLAG_ACTIVITY_NEW_TASK 標志啟動的 Activity 所處的任務。
默認情況下,同一個應用程序中的所有 Activity 都擁有相同的 affinity。 通過設置本屬性,可以把 Activity 分為不同的組,甚至可以把不同應用程序的 Activity 放入同一個任務里。 要把 Activity 設置為不帶 affinity ,也即不屬于任何任務,只要將本屬性設為空字符串即可。
如果未設置本屬性,那么 Activity 將會繼承應用程序的 affinity 設置(請參閱 < application > 元素的 taskAffinity 屬性)。應用程序默認的 affinity 名稱是由 < manifest > 元素設置的包名稱。
**android:theme**
這是一個對樣式資源的引用,該資源定義了 Activity 的整體主題(theme)。 Activity 將自動適用本屬性設置的主題。(請參閱 setTheme() ),并可能會觸發 Activity 的“啟動”動畫效果(為了讓 Activity 看上去更美觀協調)。
如果未設置本屬性,Activity 將會繼承作為全局設置的應用程序的主題 — 參見 元素的 theme 屬性。如果應用程序也未設置該屬性,則使用默認的系統主題。 詳情請參閱樣式和主題開發指南。
**android:uiOptions**
用于 Activity 用戶界面的附加選項。
只能是以下值之一。

|  值  |  說明  |
| ----- | --------  |
|"none"|沒有附加選項。這是默認值。|
|"splitActionBarWhenNarrow" |當橫向空間不足時(比如手機處于縱向模式時),在屏幕底部增加一個導航條,顯示 ActionBar 中的 Action 項。Action Bar 將拆分為頂部和底部導航條,而不是只在屏幕頂部顯示少量 Action 項。 這樣就保證了合理的可用空間,不僅可容納 Action Bar,還可以在頂部顯示導航條和標題。 菜單項不會拆開在兩個導航條顯示,而一定是放在一起顯示的。|
關于 Action Bar 的更多信息,請參閱 Action Bar 開發指南。
本屬性自 API 級別 14 開始引入。
**android:windowSoftInputMode**
Activity 主窗口如何與顯示軟鍵盤的窗口進行交互。 本屬性影響兩件事情:
軟鍵盤的狀態 — 當 Activity 獲得用戶焦點時,是隱藏還是顯示。
Activity 主窗口的調整 — 是否縮小窗口以便為軟鍵盤騰出空間,或者在軟鍵盤覆蓋部分窗口時移動顯示內容,以便顯示當前的輸入焦點。
本設置只能是下表所列值之一,或者是一個“state...”值與一個“adjust...”值的組合。 如果在每個組中設置多于一個的值 — 比如多個“state...”值 — 則會導致不可預知的結果。 每個值之間用豎線(|)分隔。 例如:
```< activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >```
以下值將覆蓋主題中的相關設置
(“stateUnspecified”和“adjustUnspecified”除外)

|  值  |  說明  |
| ----- | --------  |
|"stateUnspecified"|軟鍵盤的狀態(隱藏或顯示)未指定。由系統選擇合適的狀態,或由主題中的設置來決定。這是軟鍵盤的默認設置。|
|"stateUnchanged"|當 Activity 進入前臺時,軟鍵盤保持之前的狀態不變,無論隱藏還是顯示。|
|"stateHidden"| 當用戶選中本 Activity 時隱藏軟鍵盤 — 也即用戶確實是前進到本 Activity 時,而不是離開其他 Activity 回退過來時。|
|"stateAlwaysHidden"    |當 Activity 的主窗口獲得輸入焦點時,總是隱藏軟鍵盤。|
|"stateVisible" |一般情況下顯示軟鍵盤(當用戶進入 Activity 主窗口時)。|
|"stateAlwaysVisible"|  當用戶選中本 Activity 時顯示軟鍵盤 — 也即用戶確實是前進到本 Activity 時,而不是離開其他 Activity 回退過來時。|
|"adjustUnspecified"|   未指定是否調整:Activity 主窗口是否要為軟鍵盤留出空間而改變大小、還是在軟鍵盤覆蓋部分窗口時或移動顯示內容以便顯示當前輸入焦點。 根據窗口中顯示的內容是否具有可滾動布局的 View,系統將自動選擇其中一種模式來處理。 如果是這類 View 則窗口將會縮小,因為滾動布局可以在較小的區域內顯示完整的內容。這是主窗口的默認設置。|
|"adjustResize" |Activity 的主窗口總是會改變大小,以便為軟鍵盤騰出屏幕空間。|
|"adjustPan"|   Activity 的主窗口不會為軟鍵盤留出空間而改變大小,而是自動移動窗口里的顯示內容,使得當前輸入焦點不會被鍵盤擋住,用戶也一直能夠看見輸入的內容。 一般情況下更推薦使用 adjustResize 模式,因為用戶可能需要與被遮擋內容交互,進而關閉軟鍵盤。
本屬性自 API 級別 3 開始引入
引入自:
noHistory 和 windowSoftInputMode 自 API 級別 3 開始引入,其余自 API 級別 1 開始引入。
參閱:
``` < application >```
```<activity-alias>```



###<intent-filter>
我們可以看到在activity、receiver、service都包含了```<intent-filter>```標簽,它有什么作用呢?
Intent Filter其實就是 用來注冊 Activity 、 Service 和 Broadcast Receiver 具有能在某種數據上執行一個動作的能力。
使用 Intent Filter ,應用程序組件告訴 Android ,它們能為其它程序的組件的動作請求提供服務,包括同一個程序的組
件、本地的或第三方的應用程序。

它至少要包含一個```<action>```,代表了一個動作
(1) 如果```<intent-filter>```中沒有包含任何Action類型,那么無論什么Intent請求都無法和這條```<intent-filter>```匹配;
(2) 反之,如果Intent請求中沒有設定Action類型,那么只要```<intent-filter>```中包含有Action類型,這個Intent請求就將順利地通過```<intent-filter>```的行為測試。

可以包含    ```<category>```、```<data>```標簽,分別代表類別匹配和數據匹配。

詳情參考:[http://blog.csdn.net/wuwenxiang91322/article/details/7671593](http://blog.csdn.net/wuwenxiang91322/article/details/7671593)


##更多
activity里面標簽屬性是最多的,其他標簽大家可以自行查詢SDK文檔
[http://www.android-doc.com/guide/topics/manifest/manifest-intro.html](http://www.android-doc.com/guide/topics/manifest/manifest-intro.html)


光是一個AndroidManifest.xml文件涉及到內容就如此之多,初學者想要一下吃個胖子是不可能的事情,最好的辦法是從最簡單的學起,遇到不熟悉的標簽屬性的時候才去查詢文檔,筆者對里面的一些東西也不太熟悉,或者根本就沒有使用過,只有當遇到一些問題的時候才會去查詢,建議最好不要死記硬背,學到的時候才去查詢,并且要結合具體場景,這樣才能更好的掌握知識。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,353評論 25 708
  • Application 標簽 android:allowTaskReparenting android:allow...
    Shawn_Dut閱讀 7,918評論 2 61
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • 現在的小孩真的太聰明了,他們想像空間,發揮空間,我們是無法預測的。追新,有好,有壞,比如手機,小孩子畢竟不是成年...
    十分愛閱讀 283評論 1 0
  • 文/玥禾 當葉子都開成一片金黃或一串火紅的時候,總有一個熟悉的身影出現在我的夢中,和一個背簍相約,拾遺我一夢的...
    玥禾閱讀 2,254評論 2 51