前段時間給員工作培訓,作了很多OpenGL下面的Demo,不過onSurfaceChanged 獲取的width 和height和屏幕尺寸適中不符合html
終於找到了 <supports-screens android:anyDensity="true"/> 設置,獲取的尺寸和屏幕相符了android
可是,貼圖卻不能顯示了,所有變白windows
實機截圖ide
模擬器運行效果ui
調查思考了一下緣由,我以爲應該是樣:spa
Android平臺中,當程序在manifest中設置android:anyDensity="true"後,系統會對建立的bitmap進行縮放,縮放的根據就是Density。調試
而在設備上,opengl的貼圖大小必須是2的N次方,模擬器由於是軟件模擬,對貼圖尺寸沒有嚴格要求。個人圖片原本是512*512的,可是被自動縮放後,尺寸就不標準了,因此形成貼圖沒有成功code
經過調試確認了這一想法htm
bitmap = BitmapFactory.decodeResource(mContext.getResources(), id + i);
int w = bitmap.getWidth();
int h = bitmap.getHeight();
圖片不設置 android:anyDensity="true", w h 爲512, 設置後 變爲了768
而後,我將全部的圖片資源,都放到了drawable-hdpi目錄下,再運行程序,此次尺寸沒有改變,貼圖正常了。
基於這個問題,這裏深刻探討一下android的多分辨率支持機制。
android SDK文檔中 android-sdk-windows/docs/guide/practices/screens_support.html,說的其實比較清楚,不過因爲是英文的,你們估計通讀理解的人並很少,網上說到多分辨率支持,也就是