Android使用drawBitmap绘制Bitmap时如何调整Sprite精灵的y轴坐标位置
问题原因
- 目标绘制矩形
dst的参数逻辑冲突:你将top参数硬编码为固定值10,但bottom参数使用了成员变量y + height,二者逻辑不统一,同时你定义的y变量没有被用到位置计算里,修改自然不会生效。 - 源矩形
src计算错误:你裁剪单帧的宽度计算和你定义的单帧宽度width不匹配,可能导致精灵帧显示异常、出现透明偏移,让你误以为位置调整没有生效。
修复步骤
- 修正源矩形
src的计算逻辑,保证单帧裁剪正确,避免拉伸或内容偏移:
// draw方法内src相关代码修改为 int srcX = currentFrame * width; int srcY = 0; // 你只有1行动画帧,固定为0即可 Rect src = new Rect(srcX, srcY, srcX + width, srcY + height);
- 修正目标矩形
dst的逻辑,统一使用成员变量控制位置,去掉硬编码的固定值:
// dst修改为 Rect dst = new Rect(x, y, x + width, y + height);
- 调整初始位置直接修改成员变量的初始值即可,比如需要向下移动150像素,就把成员变量声明改为:
private int y = 150; // 数值按需调整,越大精灵位置越靠下
如果后续需要做Y轴方向的移动逻辑,在update方法里补充y的数值更新代码即可。
内容的提问来源于stack exchange,提问作者Dimitri Williams
相关产品推荐
相关产品推荐

