我正在编写一个游戏,我需要检查两个视图之间的碰撞。当我因某种原因使用view.getHitRect(outputRect)
方法时,视图的底部填充(所有其他填充都设置为0)被添加到视图的命中矩形的顶部属性中。我试图通过覆盖getHitRect方法来解决这个问题:
public abstract class GameView extends ImageView {
@Override
public void getHitRect(Rect outRect) {
super.getHitRect(outRect);
outRect.top+=getPaddingBottom();
}
这让我得到了更好的结果,但它仍然不准确,填充越大,矩形变得越不准确,并且碰撞总是发生得太低。在使用填充之前,我试图在没有它的情况下进行,这给了我准确的hitRect,但我得到了different bug。
提前致谢
答案 0 :(得分:2)
经过一些试验和错误解决了这个问题。显然填充是添加到矩形,但它在rect.top和rect.bottom之间平均分配,所以解决方案是:
@Override
public void getHitRect(Rect outRect) {
super.getHitRect(outRect);
outRect.top+=getPaddingBottom()/2;
outRect.bottom-=getPaddingBottom()/2;
}
如果你们中的一位Android专家想解释为什么我会感激,因为我不明白它是如何工作的,我只是看不到其中的逻辑。