我有需要縮放到屏幕大小的圖像。圖像中也會有文字,需要翻譯成第二種語言。因此,每個圖像都會有兩個版本開始,每種語言都有一個版本。減少Android可選擇的可繪製資源
Google建議每個密度都有一個圖像資源。所以我會把我的兩個圖像乘以4:xhdpi,hdpi,mdpi和ldpi。但隨後谷歌說不同的屏幕尺寸有不同的圖像資源。這使我的圖像再乘以4:xlarge,large,normal和small。我不想創建每個圖像的32份副本!
我想知道是否有任何錯誤,使xlarge屏幕和xhdpi密度的圖像只。 IE - 最好的質量。讓Android按照dp單位的標準縮小圖像的密度以降低密度。當我在較小的屏幕上畫畫時,我可以使用Canvas類進一步縮小比例。每次需要重繪位圖時,我都可以緩存生成的縮放比特圖對象,以避免昂貴的縮放計算一遍又一遍地運行。
這樣做有什麼缺點嗎?還是有更好的方法來避免製作同樣圖像的這麼多副本?
謝謝,很好的反饋。澄清一點:我希望通過緩存縮小的位圖,然後它應該垃圾收集原始較大的圖像。我不認爲這個一次性GC事件會影響到這個特定應用程序的差異。但是,你知道縮減後的緩存位圖實例是否會具有相同的內存佔用量,還是會比使用Google的備用資源方法實例化時大? (假設兩種方法都會產生相同物理尺寸的位圖。)如果尺寸較大,那麼對我來說這可能是個問題。謝謝! – 2012-04-04 14:47:21
好問題。我不確定你打算如何縮減比例,所以很難給出最終答案(只要我知道:-))。你可以做以下(間接)測試:從資源加載一個位圖後,我假設isMutable()將返回false。我想在縮放之後,得到的位圖將具有isMutable()= true,間接表明它是一個副本,因此可能擁有自己的內存。 – 2012-04-04 14:56:21