我知道還有很多關於此的其他線程。過去兩天我一直無法檢查他們,而現在這讓我感到瘋狂。 所以基本上我有一個spritesheet,我加載到一個位圖中,將這些幀分開,對它們執行縮放並將它們加載到列表中以供稍後的動畫使用。縮放看起來很好,從ldpi到xhdpi,動畫也是如此。在不同屏幕上定位位圖
但還有一件事讓我感到困惑,那就是在不同設備上的定位。我用canvas.drawBitmap(位圖,srcRect,destRect,paint)繪製它們。那麼,我猜代碼告訴了超過千字。
//converting dps to pixels
int xCoord = convertToPixels(100);
int yCoord = convertToPixels(150);
//defining destination rectangle; sprite is a Bitmap object
Rect destRect = new Rect(xCoord, yCoord, xCoord+sprite.getWidth(), yCoord+sprite.getHeight());
//drawing
canvas.drawBitmap(sprite, null, destRect, null);
convertToPixels(浮動DP)只是返回一個數與式Math.round(DP *密度)像素。
我相信如果我指定了dps,所有設備上的寬高比應該是相同的,例如,如果我在某個設備的屏幕尺寸的10%上放置了某些東西,則應該在另一個較小/較大/較不密集/較密集的屏幕上保留這10%。但我想我的邏輯是有缺陷的,因爲它不起作用。它在不同地方的不同設備上繪製精靈。總結:使用帶有x和y座標的destRect繪製一個Bitmap對象100 dps應該保持所有設備與畫布大小的比例,否則我應該這樣思考。
我會請你幫助我解決這個問題,因爲我現在迷失了,比字面上更像字面意思。 請不要只給我一個在開發人員網站或類似網站上的「支持多屏幕」主題的鏈接,因爲我已經閱讀過很多次,但似乎我不明白它們。謝謝!
我使用了在SO上找到的公式。此外,我嘗試了其他公式:添加0.5f(官方主題)的公式,從xdip和ydip計算密度以及上面提供的公式。他們都沒有改變結果。我仔細檢查確定。不過謝謝。 – x123y234z345 2012-07-10 05:40:44