View 碰撞检测

	/**
	 * 计算重叠面积。如果返回大于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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值