在AndroidManifest.xml文件中的android:windowSoftInputMode


       
 <activity
            android:name="ouc.sei.wuzi.DiaoBoChuKu"
            android:launchMode="singleInstance"
            android:screenOrientation="landscape"
            android:windowSoftInputMode="stateHidden|adjustPan" >
        </activity>

android:windowSoftInputMode
activity主窗口與軟鍵盤的交互模式,可以用來避免輸入法面板遮擋問題,Android1.5後的一個新特性。
這個屬性能影響兩件事情:
【一】當有焦點產生時,軟鍵盤是隱藏還是顯示
【二】是否減少活動主窗口大小以便騰出空間放軟鍵盤
 
它的設置必須是下面列表中的一個值,或一個”state…”值加一個”adjust…”值的組合。在任一組設置多個值——多個”state…”values,例如&mdash有未定義的結果。各個值之間用|分開。例如:<activity android:windowSoftInputMode="stateVisible|adjustResize". . . >
在這設置的值(除"stateUnspecified"和"adjustUnspecified"以外)將覆蓋在主題中設置的值
 
各值的含義:
【A】stateUnspecified:軟鍵盤的狀態並沒有指定,系統將選擇一個合適的狀態或依賴於主題的設置
【B】stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity裏的狀態,無論是隱藏還是顯示
【C】stateHidden:用戶選擇activity時,軟鍵盤總是被隱藏,(直到當該Activity主窗口獲取焦點時)
【D】stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的
【E】stateVisible:軟鍵盤通常是可見的
【F】stateAlwaysVisible:用戶選擇activity時,軟鍵盤總是顯示的狀態
【G】adjustUnspecified:默認設置,通常由系統自行決定是隱藏還是顯示
【H】adjustResize:該Activity總是調整屏幕的大小以便留出軟鍵盤的空間
【I】adjustPan:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分
android:screenOrientation
 
有時候需要限制橫豎屏切換。只需要在AndroidManifest.xml文件中加入android:screenOrientation屬性限制。
 
android:screenOrientation設定該活動的方向,該值可以是任何一個下面的字符串:
"unspecified"
- 默認值. 由系統選擇顯示方向. 在不同的設備可能會有所不同.


"landscape"
- 橫向
就表示當我們切換橫豎屏的時候,屏幕的內容始終以橫屏顯示,而不會根據屏幕的方向來顯示內容 
"portrait"
- 縱向


"user"
- 用戶當前的首選方向


"behind"
- 與在活動堆棧下的活動相同方向


"sensor"
- 根據物理方向傳感器確定方向. 取決於用戶手持的方向, 當用戶轉動設備,他跟隨改變


"nosensor"
- 不經物理方向傳感器確定方向. 該傳感器被忽略, 所以當用戶轉動設備, 顯示不會跟隨改變. 除了這個區別,系統選擇使用相同的政策取向對於“未指定”設置. 系統根據“未指定”("unspecified")設定選擇相同顯示方向.
android:launchMode
 
在多Activity開發中,有可能是自己應用之間的Activity跳轉,或者夾帶其他應用的可複用Activity。可能會希望跳轉到原來某個Activity實例,而不是產生大量重複的Activity。
這需要爲Activity配置特定的加載模式,而不是使用默認的加載模式。
加載模式分類及在哪裏配置
Activity有四種加載模式:
      1,standard:
如果從A跳到A,intent5次,task裏5個activity;
     2,single Top:
如果從A 跳B,再從B跳A,如果此時棧頂爲A,則不創建新實例,直接把Intent給A,但如果棧頂不是A,則還要創建A的實例
     3,singleTask
如果從A跳B,再從B跳A,無論是否棧頂棧底,只要A在,則將Intent給A,不會創建A的新實例;
     4,singleInstance
不同於前3種模式,前3種只是在同一個task的,而實例化的策略不同。這種模式下的activity會單獨存在一個task下。
現成的例子是google地圖。比如我有一個應用是導遊方面的,其中調用的google地圖Activity。那麼現在我比如按home(後臺 activity onstop,back是finish)鍵,然後到應用列表中打開google地圖,你會發現顯示的就是剛纔的地圖,實際上是同一個Activity。
如果使用上面三種模式,是無法實現這個需求的。google地圖應用中有多個上下文Activity,比如路線查詢等的,導遊應用也有一些上下文Activity。在各自應用中回退要回退到各自的上下文Activity中。
總結:
1 2:會創建新實例
3 4:不會創建新實例
123:activity的taskid相同
4:activity的taskid不同。被分到單獨一個task中
 
(1)standard  
http://www.android100.org/uploadfile/2013/0713/20130713040207581.gif

 
(2)singleTask
http://www.android100.org/uploadfile/2013/0713/20130713040207446.gif

可以將TaskA TaskB理解爲兩個應用,比如TaskA是你當前的應用,TaskB是默認瀏覽器。
 
 
設置的位置在AndroidManifest.xml文件中activity元素的android:launchMode屬性:
<activity android:name="ActB" android:launchMode ="singleTask"></activity>

也可以在Eclipse ADT中圖形界面中編輯:

http://www.android100.org/uploadfile/2013/0713/20130713040210644.png


本文出自 “清源教育” 博客,轉載請註明此處,謝謝!安卓技術問題歡迎加羣探討:314230976,驗證碼:csl,不寫驗證不予通過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章