本站文章均為 李華明Himi 原創,轉載務必在明顯處註明:
轉載自【黑米GameDev街區】 原文連結: http://www.himigame.com/android-game/389.html
今天一個開發者問到我為什麼遊戲開發要刪除專案下的hdpi、mdpi和ldpi資料夾;下面詳細給大家解答一下:
首先童鞋們如果看過我寫的《【Android遊戲開發二十一】Android os裝置謊言解析度的解決方案!》這一節的話都應該知道Android從1.6和更高,Google為了方便開發者對於各種解析度機型的移植而增加了自動適配的功能;
自動適配的原理很簡單,只要你建立的專案是1.6或者更高都會看到專案下有drawable-hdpi、drawable-mdpi、drawable-ldpi 三個資料夾,這三個資料夾分別放置高清解析度、中解析度、低解析度的資原始檔;那麼如果你的專案在高清解析度上執行的話,系統會預設索引drawable-hdpi資料夾下的資源,其他雷同;
那麼既然系統會自動找匹配的資料夾,那麼肯定會出現找不到的情況,比如當前你的應用在高清解析度執行,假設程式碼中載入一張“himi.png”的圖,那麼系統首先會去drawable-hdpi資料夾下去找這張圖,一旦找不到,系統會再到其他drawable下尋找,再假設你其實把這張“himi.png”放在了drawable-mdpi中,那麼系統會預設把這張圖片放大;反之一樣,如果你在低解析度中執行載入一張圖片的話,一旦你將圖片放入高清的drawable-dpi中,那麼系統預設縮小這張圖;
總結來說:如果你的應用想適配高、中、低解析度,那麼你需要有3套圖放入對應的資料夾中,這樣系統會智慧載入;如果你就想保留一個資料夾,不想讓系統智慧尋找縮放的話,有兩種方式可以解決:
1.刪除drawable-hdpi、drawable-mdpi、drawable-ldpi三個資料夾,建立一個drawable資料夾即可;
2.將資原始檔放入assets中,因為assets中的資源系統永遠不會為其生成id,所以不會智慧縮放;
——————-下面介紹第二點,如何讓你的遊戲應用高清
其實還是在《【Android遊戲開發二十一】Android os裝置謊言解析度的解決方案!》中介紹過,1.6後android有了智慧判斷的緣故,你獲取的螢幕寬高其實是不準確的,詳情可以參考【Android遊戲開發二十一】Android os裝置謊言解析度的解決方案!》;那麼這裡要補充一點就是:
如果你在AndroidMainFest 中,定義 <uses-sdk android:minSdkVersion=”4″ /> 就OK了!你會發現你的圖片很清楚,其實也是因為android自動縮放造成的,上面說了,一般獲取的解析度會不正常(比正確的偏小)那麼一旦你加上這一句之後,你的解析度就正常了,所以就明顯遊戲質量高了一個檔次。
這裡再補充一下: 一旦你定義了<uses-sdk android:minSdkVersion=”4″ />,就是限制1.5SDK的手機無法安裝你的程式;
OK,繼續忙了,大家嘗試下吧~