如何使Android视图的形状不是矩形

时间:2016-02-11 21:07:27

标签: java android collision-detection

我正在处理一些动画视图的碰撞检测,我正在设置一些alpha图像视图。发生的事情是碰撞检测被触发,即使第二个物体在ImageView的透明部分上时,它显然没有触及它,但ImageView容器是超出图像边界的矩形框。

如何检测它何时接触到图像的绘制部分或使容器成三角形?

以下是我如何检测两个视图之间的冲突:

public boolean checkCollision(View v1, View v2) {
    if (v1 == null || v2 == null) {
        log.e("Views must not be null");
        throw new IllegalArgumentException("Views mut be not null");
    }
    Rect R1 = new Rect();
    v1.getHitRect(R1);
    Rect R2 = new Rect();
    v2.getHitRect(R2);
    return Rect.intersects(R1, R2);
}

1 个答案:

答案 0 :(得分:0)

我建议做的是初步检查边界框,看看是否需要执行更准确的检查。如果您只有少量对象发生碰撞,则此步骤是可选的,但如果您有很多对象,则会节省大量性能。 如果您确实需要进一步检查,请在图像周围创建一个您知道有坚实纹理的点,然后检查与这些点的碰撞。如果您愿意,我可以尝试为您提供一些代码,但请在此处查看此问题,以深入解释问题。 https://gamedev.stackexchange.com/questions/30866/collision-detection-with-non-rectangular-images