android的多解析度支援機制 由anyDensity設定導致OpenGL貼圖不能顯示的問題談開

來源:互聯網
上載者:User

前段時間給員工做培訓,做了不少OpenGL下面的Demo,不過onSurfaceChanged 擷取的width 和height和螢幕尺寸適中不符合

終於找到了 <supports-screens android:anyDensity="true"/>  設定,擷取的尺寸和螢幕相符了

但是,貼圖卻不能顯示了,全部變白

實機

模擬器運行效果

調查思考了一下原因,我覺得應該是樣:

Android平台中,當程式在manifest中設定android:anyDensity="true"後,系統會對建立的bitmap進行縮放,縮放的根據就是Density。

而在裝置上,opengl的貼圖大小必須是2的N次方,模擬器因為是軟體類比,對貼圖尺寸沒有嚴格要求。我的圖片本來是512*512的,但是被自動縮放後,尺寸就不標準了,所以造成貼圖沒有成功

通過調試確認了這一想法

   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,說的其實比較清楚,不過由於是英文的,大家估計通讀理解的人並不多,網上說到多解析度支援,也就是

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.