有一篇文章較好地說明了該問題:
如果您還不熟悉相容模式,我首先介紹一下相關背景。相容模式的出現是為了擴充套件支援api級別4的多種螢幕密度。最初的android裝置設計成支援hvga(480x320)模式下的中等解析度(160dpi)。為這些裝置設計的大多數應用都是在api級別3下編譯。當顯示屏擴充套件到包括低解析度(120dpi)和高分辨率(240dpi)時,android架構設計需要確保這些程式還能相容160dpi解析度的裝置。當時的方案是定義一種相容模式,使得那些程式能按比例放大或縮小,以此來**hvga的160dpi解析度。android1.6開始,android平台把160dpi作為正常的螢幕密度,並把執行在160dpi分辨率的裝置分配了邏輯密度係數1.0. 120dpi解析度的裝置的邏輯密度係數為0.75,240dpi解析度的裝置的邏輯密度係數為1.5. 執行在相容模式下的程式根據相應裝置的係數來縮放。通過縮放比例來模擬正常的螢幕密度,這樣應用在各種裝置上都顯示一致的效果,這就是所謂的在相容模式下執行應用。下面是一篇介紹這一原理的motodev 英文部落格。
通過下面兩種方式之一可以設定相容模式:
相容模式在顯示屏為vga及其vga衍生模式的裝置上能按設計的方式工作,但當顯示屏不屬於這個範圍時,它會使應用產生不完美的顯示效果,如陰影方框效果。
按我的理解,當初設計相容模式是為了可以使應用程式可以自動適應螢幕解析度的變化,系統會自動縮放你的介面。但到後來,裝置的解析度越來越高,該方法雖然可以「相容」,但效果並不好,畢竟系統的縮放只能在一定程度上解決該問題。如果程式設計師可以根據裝置解析度的大小,採用不同顯示質量的資源,如分辨大的裝置採用hd資源,分辨小的裝置採用低分辨的,可以在不同的裝置上獲得顯示最佳效果。
另外,轉一下各android sdk版本號的含義:
ndk也有多個版本:
真的很容易混淆啊,不同版本sdk和ndk搭配的應用,mini sdk和target ndk應該怎麼設定呢?
Android 系統與SDK和JDK版本對照表
提示 傳說中的相容問題是指在高版本 sdk 平台開發的軟體,可能在低版本 android 系統中執行時出現各種問題。而低版本 sdk 開發的軟體在高版本 android 系統中執行時基本沒有相容問題的。平台版本 sdk版本 版本名稱 android 8.0 26oreo android 7.1 25...
android 編譯自己的sdk
所以有了想嘗試自己從頭生成sdk的想法。具體步驟這裡不再贅述,參考 cd mydroid repo init ugit reposync bin sh count 0 ret 1 while ret ne 0 dorepo sync ret count count 1 echo try count,...
Android老版本專案匯入到新版SDK提示錯誤
使用過去android 1.1或1.5版sdk開發的專案匯入到使用新版adt外掛程式的1.6或2.0.1專案中可能會發現報錯,其實谷歌給我們提供了乙個工具可以解決這個問題,在package explorer中選擇專案,單擊滑鼠右鍵在彈出的下拉列表中選擇 android tools fix proje...