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