View 碰撞检测

来源:互联网 发布:网络兼职在校学生 编辑:程序博客网 时间:2024/04/30 15:22
/** * 计算重叠面积。如果返回大于0,表示view1与view2有碰撞。 * @param view1 * @param view2 * @return 重叠面积 */    public float overlayArea(View view1,View view2){    float area=0;    if(view1!=null && view2!=null){        //view2-左上a,右上b,左下c,右下d    //view1-左上e,右上f,左下g,右下h    //重叠部分-左上w,右上x,左下y,右下z        //view2    float width2=view2.getWidth();    float height2=view2.getHeight();    float ax=view2.getX();    float ay=view2.getY();    float bx=ax+width2;//    float by=ay;//    float cx=ax;    float cy=ay+height2;//    float dx=ax+width2;//    float dy=ay+height2;        //view1    float width1=view1.getWidth();    float height1=view1.getHeight();    float ex=view1.getX();    float ey=view1.getY();    float fx=ex+width1;//    float fy=ey;//    float gx=ex;    float gy=ey+height1;//    float hx=ex+width1;//    float hy=ey+height1;        if(bx<ex || fx<ax || cy<ey || gy<ay){    //没有重叠部分        }else{        //重叠部分        float wx=ax>ex?ax:ex;        float wy=ay>ey?ay:ey;        float xx=bx<fx?bx:fx;//        float xy=by>fy?by:fy;//        float yx=cx>gx?cx:gx;        float yy=cy<gy?cy:gy;//        float zx=dx<hx?dx:hx;//        float zy=dy<hy?dy:hy;                //计算重叠面积        float width=xx-wx;        float height=yy-wy;        area=width*height;    }        }    return area;    }

0 0
原创粉丝点击