簡體   English   中英

Android ICS Launcher 4.0.x無法保持屏幕方向

[英]Android ICS Launcher 4.0.x cannot keep screen orientation

我有一個Android ICS Launcher 4.0.x的奇怪案例。

前提:

  • 具有root權限的ICS設備

  • 下載Android ICS Launcher 4.0.3 / 4源代碼(修改並運行)

程序:

  1. 進入市場(Play商店),下載“Go Task Manager”

  2. 在Launcher上打開Widgets選項卡,找到“Mem Optimize”,拖到主屏幕(工作區)

  3. 下載並安裝“Fruit Ninja”

  4. 在主屏幕上的“Mem Optimize”小部件旁邊創建“Fruit Ninja”快捷方式。

  5. 執行“Fruit Ninja”並將手機放在LANDSCAPE中(手持它在這個位置,不要更改)

  6. 在“水果忍者”的菜單屏幕上,切片“退出”,選擇“是”

  7. 現在回到Launcher主屏幕,點擊“Mem Optimize”小部件

目前的結果:

  • 在步驟7之后,屏幕旋轉到LANDSCAPE一段時間並返回PORTRAIT。

期望:

  • 在步驟7之后,屏幕應保持在PORTRAIT中。

我的嘗試(修改Launcher ICS源代碼):

  • 添加到“Manifest.xml”: android:screenOrientation="portrait" =>仍然無法解決問題。

  • 處理配置更改, android:configChanges="orientation|screenSize" =>仍然無法解決問題。

  • 使用: setRequestedScreenOrientation(PORTRAIT) =>仍然無法解決問題。

我試過在Android 2.x上工作過的; 然而,從4.0.3+開始,它不能按預期工作。 有沒有人對此有任何想法?

問題不在啟動器中。 問題是單個配置(包括方向)在手機上的所有活動之間共享。

因此,如果您有一個活動將方向設置為Landspace,例如Camera(這是我工作的經典示例),這將“使”所有其他活動也在景觀中,因為正如我所說,信息在系統中是唯一的並在所有人之間分享。

這種情況發生在Android開始之后,雖然有時你不會注意到這一點,因為變化非常快。

要檢查我在說什么,請按照以下步驟操作。 使用對話框主題編寫活動,例如@android:style/Theme.Holo.Dialog ,因此它不會覆蓋整個屏幕,您仍然可以看到下面的活動。 該活動必須有固定的方向。 假設您將其設置為橫向。 然后在Android shell上使用am start以便能夠在任何其他活動之上啟動您剛剛創建的活動。 您將看到,無論先前活動的方向如何,只要您啟動測試活動,之前的活動將采用與您的測試活動相同的方向。 當您回擊時,之前的活動將恢復方向。 但有時可能需要一段時間,所以你會看到像你當前的結果。

庫存ICS啟動器有一些地方可以將方向設置為未指定。 只需在Launcher.java中搜索setRequestedOrientation ,但特別是在“eng”版本或平板電腦上。 它在onCreate中執行,但也在appscustomize拖放后執行。

來自Launcher.java的onCreate:

// On large interfaces, we want the screen to auto-rotate based on the current orientation
if (LauncherApplication.isScreenLarge() || Build.TYPE.contentEquals("eng")) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM