我知道还有很多关于此的其他线程。过去两天我一直无法检查他们,而现在这让我感到疯狂。 所以基本上我有一个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