SDK#屏幕兼容性模式

        若是你在Android3.0版本或低於Android3.0版本下開發了一款應用,並且它可以在大屏幕上(如平板電腦)合理的調整尺寸,爲了保持更好的用戶體驗,你應該禁掉屏幕兼容性模式。android

        從Android1.6開始,安卓已支持各類屏幕尺寸,而且爲了適配每種屏幕作了不少工做去改變應用佈局的大小。可是,若是你的應用沒有按照Supporting Multiple Screens指南行事,就可能在大屏幕上遇到麻煩,對於這種問題的應用程序,屏幕兼容性模式可讓應用程序在大屏幕上表現的更好用一些。佈局

        有兩個版本的屏幕兼容性模式,它們略有不一樣:spa

         Version 1 (Android 1.6 - 3.1)設計

        系統在一個「郵票「窗口上繪製應用的UI,也就是說,系統繪製應用的佈局與在正常大小的手機相同(模擬一個320dp*480dp的屏幕),屏幕剩餘的空間由佈局周圍的黑色邊框填充。code

        這介紹了 Android 1.6 處理僅爲 320dp x 480dp 的原始屏幕大小而設計的應用程序。由於只有不多的活躍的android設備仍然在運行 Android 1.5,大部分的應用在 Android 1.6 或更高版本上被開發,不該該在大屏幕上開啓這個版本的兼容性模式,這個版本被認爲是過期的。xml

        要禁掉這個版本的屏幕兼容模式,只須要簡單地設置android:minSdkVersion或者android:targetSdkVersion爲4(Android1.6),或者設置android:resizeable爲true。ip

        Version 2 (Android 3.2 and greater)開發

        系統繪製應用佈局同在正常尺寸的手機(大約模擬320dp*480dp的屏幕),而後放大來填充屏幕,這最終會讓你的佈局變得更大,這會致使UI的失真.get

        這個版本是在Android 3.2引入的,進一步協助大屏幕設備上的應用(沒有遵守Supporting Multiple Screens指南的應用)。it

        一般,運行Android3.2或者更高Android版本的大屏幕設備,當應用沒有在manifest文件中顯示的聲明它支持大屏幕設備時,容許用戶開啓屏幕兼容性模式。在這種狀況下,一個向外箭頭樣子的圖標會出如今系統bar的時鐘的旁邊,(據自測,4.4.4版本的平板沒有這個icon,4.1.1版本的有),容許用戶切換屏幕兼容性模式,如圖,一個應用能夠顯式地聲明它不支持大屏幕,這樣,屏幕兼容性模式老是開啓的,用戶不能禁掉他。做爲開發者,你能夠控制應用什麼時候開啓屏幕兼容性模式。

Disabling Screen Compatibility Mode

        若是你主要在Android3.0(SDK Level 11)以前開發應用,可是你的應用能夠恰當地爲大屏幕調整佈局大小,爲了維護最佳的用戶體驗,你應該禁止掉屏幕兼容性模式。不然,用戶可能開啓屏幕兼容性模式,以一個不太理想的方式來體驗你的應用。

        默認地,當如下條件知足時,運行Android 3.2及以上版本的設備的屏幕兼容性模式,對用戶是一個可選擇的特性:

  • 你的應用已經設置android:minSdkVersion和android:targetSdkVersion爲「10」或者更低的版本,而且沒有使用<supports-screens>元素顯式地聲明支持大屏幕。
  • 你的應用已經設置android:minSdkVersion或者android:targetSdkVersion爲「11」或者更高版本,而且使用<supports-screens>元素顯式地聲明不支持大屏幕

        要徹底地禁掉屏幕兼容性模式用戶選項,移除系統bar上的圖標,你能夠按照下面的方式作:

  • 最簡單的方式

        在你的manifest文件中,增長<supports-screens>元素,而且指定android:xlargeScreens屬性爲「true」<supports-screens android:xlargeScreens="true" />
        這聲明瞭你的應用支持所有的大屏幕尺寸,因此,系統總會調整你的佈局尺寸來適應屏幕,這與你在<uses-sdk>元素中設置的值無關。

  • 簡單,可是會有其餘的影響:

        在你的manifest的<uses-sdk>元素中,設置android:targetSdkVersion爲「11」或者更高<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11" />
        這聲明瞭你的應用支持Android3.0,而Android3.0是爲大屏幕設備如tablets設計的。

        注意:當運行在Android3.0或者更高的版本時,系統會爲你的UI開啓Holographic主題,爲Activity增長Action Bar,在系統bar上移除Options Menu 按鈕。

        若是屏幕兼容性模式仍然開啓,檢查你的manifest的<supports-screens>元素,確保沒有屬性設置爲「false」。最佳實踐是老是使用<supports-screens>元素顯式地聲明對不一樣尺寸屏幕的支持。

Enabling Screen Compatibility Mode

        當你的應用針對Android3.2(API level 13)或者更高Android版本,能夠經過<supports-screens>元素的屬性設置,來影響某些屏幕是否開啓屏幕兼容性模式。

        注意:屏幕兼容性模式並非一個應用想運行的模式—由於佈局放大會致使UI的模糊。要讓你的應用在大屏幕上表現良好,最恰當的方式是遵照Supporting Multiple Screens指導,而且爲不用的屏幕尺寸提供可替換的佈局。

        默認地,當你設置了android:minSdkVersion或者android:targetSdkVersion爲「11」(或者更高)屬性時,屏幕兼容性模式對於用戶是不可用的。若是你的應用沒有爲大屏幕適當的調整大小,你能夠選擇開啓屏幕兼容性模式,採用如下方式:

  • 在manifest文件中,增長<supports-screens>元素而且指定android:compatibleWidthLimitDp屬性的值爲"320"
<supports-screens android:compatibleWidthLimitDp="320" />

        這表示你的應用設計的目標最大的"最小屏幕寬度」爲320dp。這種方式,任何設備最小的寬度大於這個值會提供屏幕兼容性模式做爲用戶可選特性。

        注意:目前,屏幕兼容性模式只能模擬320dp寬的手機,因此屏幕兼容性模式不能應用於android:compatibleWidthLimitDp的值大於320dp的設備。

  • 若是爲大屏幕調整佈局尺寸時,你的應用出現問題,而且,你想強制用戶處於屏幕兼容性模式(而不是簡單的提供一個選項),你可使用android:largestWidthLimitDp 屬性。
<supports-screens android:largestWidthLimitDp="320" />

        這個設置與android:compatibleWidthLimitDp同樣,這個設置還會強制開啓屏幕兼容性模式,不容許用戶禁掉它。

相關文章
相關標籤/搜索