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

Java 如何使Android视图的形状不是矩形,java,android,collision-detection,Java,Android,Collision Detection,我正在处理一些动画视图的碰撞检测和一些alpha图像视图的动画。发生的情况是,即使第二个对象位于ImageView的透明部分,当它显然没有接触到它,但ImageView容器是超出图像边界的矩形框时,也会触发碰撞检测 如何检测它何时接触图像的绘制部分或使容器成为三角形 下面是Im如何检测两个视图之间的冲突: public boolean checkCollision(View v1, View v2) { if (v1 == null || v2 == null) { lo

我正在处理一些动画视图的碰撞检测和一些alpha图像视图的动画。发生的情况是,即使第二个对象位于ImageView的透明部分,当它显然没有接触到它,但ImageView容器是超出图像边界的矩形框时,也会触发碰撞检测

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

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

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);
}

我建议您首先检查边界框,看看是否需要执行更精确的检查。如果只有几个对象发生碰撞,则此步骤是可选的,但如果有很多对象发生碰撞,则可以节省大量性能。 如果确实需要进行进一步检查,请在图像周围确定存在实体纹理的点,然后检查是否与这些点发生碰撞。如果你愿意的话,我可以试着给你一些代码,但是看看这个问题,它可以深入地解释事情。

我建议您首先检查边界框,看看是否需要执行更精确的检查。如果只有几个对象发生碰撞,则此步骤是可选的,但如果有很多对象发生碰撞,则可以节省大量性能。 如果确实需要进行进一步检查,请在图像周围确定存在实体纹理的点,然后检查是否与这些点发生碰撞。如果你愿意的话,我可以试着给你一些代码,但是看看这个问题,它可以深入地解释事情。

为什么需要这种碰撞检测?如果这是关于游戏逻辑或类似的,还有其他更合适的方法,例如OpenGL或游戏框架。@mcwise Yes是关于一个基本的游戏,但唯一的限制是没有任何框架使它尽可能轻量级。你知道任何第三方库可以帮助我实现这一点吗?你为什么需要这种碰撞检测?如果这是关于游戏逻辑或类似的,还有其他更合适的方法,例如OpenGL或游戏框架。@mcwise Yes是关于一个基本的游戏,但唯一的限制是没有任何框架使它尽可能轻量级。你知道有任何第三方图书馆可以帮助我实现这一点吗?