我有一些我正在开发的游戏的 1 行精灵表。我只在文件夹中提供它们drawable-xhdpi
,我让操作系统在其他密度上为我调整大小。
这种方法会出现以下问题:
我有一个1750
宽度精灵表(xhdpi
宽度),包含5
状态。所以每个单独的精灵都有宽度1750 / 5 = 350
。开启hdpi
时,它会调整大小1313
,因此每个单独的精灵都有宽度1313 / 5 = 262.6
。但是,这实际上是262
,因为 android 不允许您在其中使用浮点数,所以Rect
您必须source
将drawBitmap
.
这样做的问题是我无法正确提取单个精灵:绘制它们时,每个连续的精灵都会向右移动一点,这是我不想要的。有没有办法解决这个问题?我试过了,如果我手动调整它们的大小并在1315
中提供这个调整大小的版本,它会起作用drawable-hdpi
,但这会大大增加 APK 的大小,我不想这样做。
注意 1:每个单独的精灵在每一侧都被很多透明度包围(两边的数量相同)。我可以承受失去这种透明度的一两个像素,我只是不能让中间的不透明部分移位。
注 2:这不仅发生在xhdpi -> hdpi
. 调整到其他密度等级时,同样的问题仍然存在。解决方案必须是通用的:对于任何调整大小系数(或至少6/8
,4/8
和3/8
),对于任何宽度和任何数量的单个精灵。
为了更好地了解问题,假设这是需要绘制(自动调整大小的精灵)的空间:
| _ _ _ _ _ _ _ _ _ _ |
这是第一帧的绘制方式(取自0 * 262 to 0 + 262
精灵表,*
代表我关心的非透明部分):
| _ _ _ _ * * _ _ _ _ |
这是第二帧的绘制方式(取自1 * 262 to 262 + 262
精灵表):
| _ _ _ _ _ & & _ _ _ |
什么时候应该:
| _ _ _ _ & & _ _ _ _ |
对于每个连续的帧,依此类推(至少我认为每个连续的帧。效果在实际设备上不太明显,但它就在那里)。