我正在嘗試製作一個具有大約20-30幅資源圖像的Android應用程序。這些圖像用於在畫布上顯示連續的動畫,所以我想知道我應該使用什麼容器來存儲這些圖像以獲得最佳性能?什麼容器應該用於位圖?
回答
這聽起來像你已經明白,這些照片應該進入RES /繪製目錄(如果沒有,那就是他們去)。
假設你命名你的圖像類似「image0」,「圖像1」,「圖像2」等你其實可以通過這些字符串循環,並加載它們像這樣:
int myImgLen = 10;//or however many images you have, you can also do this dynamically looking for when getIdentifier returns 0, which means it didn't find anything at that name
ArrayList<Bitmap> myList = new ArrayList<Bitmap>;
for(int i = 0; i < myImgLen; i++)
myList.add(BitmapFactory.decodeResource(this.getResources(),
this.getResources().getIdentifier("image" + i, "drawable", getPackageName()))
);
這將您的圖像加載到數組列表。
然後您可以簡單地myCanvas.drawBitmap(myList.get(i));
將它們繪製到您的畫布上。
但是請記住(這是非常重要的),這在內存消耗方面極其昂貴。這不要緊,如果你的圖像是真的很好壓縮JPG文件,當您將裝入位圖,它們爆炸的每個像素佔據儘可能多的空間需要按什麼配置你使用加載圖像。所以,如果你用一些小圖像做這個動畫來運行它們,那就可以,但是如果你希望有一些與設備尺寸相同的東西(比如牆紙),你肯定會得到一個OutOfMemory異常,除非您隨時加載和釋放位圖(在其上調用recycle()
)。
但是,如果你這樣做對他們調用循環()作爲你的動畫,然後你會看到很多動畫的圖像加載暫停的。
感謝您的回答,它有很大的幫助。 – sth4 2012-04-15 16:41:09
不客氣! :) – 2012-04-15 19:54:30
- 1. 對於什麼控制我應該使用MD-輸入容器
- 2. 什麼VisualStateManager應該用於?
- 3. 什麼測量單位應該用於響應式設計?
- 4. 視圖控制器應該在視圖中應該是什麼?
- 5. 什麼「繪圖」方法應該用於秒錶應用程序?
- 6. 什麼Web應用程序框架應該用於Web圖庫?
- 7. 什麼內容類型應該用於XML + XSL表示?
- 8. 什麼是應該用於javax.inject.Named註釋?
- 9. 什麼DocType應該用於我的webapp?
- 10. APEX。什麼項目應該用於HTML?
- 11. 什麼應該用於SQLite數據庫
- 12. 使用FragmentPagerAdapter時容器應該是什麼
- 13. 爲什麼我應該保持流打開,而使用位圖
- 14. 位圖碰撞vs SVG vs Box2D?我應該使用什麼?
- 15. 什麼時候應該在位圖上調用DeleteObject()
- 16. 什麼時候應該使用嵌入式Geode/Gemfire定位器?
- 17. 應該使用什麼html解析器?
- 18. 我應該使用什麼控制器?
- 19. 工具欄應該位於視圖
- 20. 什麼java庫應該用於圖像裁剪/信箱?
- 21. 我應該在「關於」框中顯示什麼內容?
- 22. 什麼富文本編輯器應該用於自定義CMS
- 23. 關於開發64位應用程序,我應該知道些什麼?
- 24. 什麼應該用於iOS應用開發或迅速反應?
- 25. 爲什麼圖像垂直居中,'line-height`位於它們應該位於的下方2個像素處?
- 26. Android:我應該使用什麼類型的意圖過濾器
- 27. 爲什麼不應該引導容器嵌套?
- 28. 編寫SQL生成器,我應該閱讀什麼內容?
- 29. 密鑰容器究竟是什麼,它位於何處?
- 30. 應該將`text-align:center;`應用於元素還是其父容器?
你試圖做一個實際的動畫(看起來像它的移動),或者是你談論某種動畫的幻燈片放映? – 2012-04-15 16:06:20