1 .是否包含点,矩形
判断是否包含某一点
booleancontains(intx,int y )函数确定一个点是否位于当前矩形中,如果有,则返回true;如果没有,则返回false
2 .判断是否包含某个矩形
publicbooleancontains (浮动左、浮动顶、浮动右、浮动底) )判断是否包括矩形
公共蓝牙连续性(rect fr )确定是否包括某个矩形
3 .判断是否相交
确定publicbooleanintersect (浮动左、浮动顶、浮动右、浮动底)成员方法是否相交
公共布尔型anintersect (rect fr )成员方法确定是否相交
staticbooleanintersects(rectfa,RectF b )确定是否以静态方式交叉
公共音量单元(浮动左、浮动顶、浮动右、浮动底)是指将两个矩形合并为一个矩形,将两个矩形的最小脚点转换为矩形,而不管矩形是否相交
4 .矩形与点组合
公共语音单元(rect fr )连接两个矩形
公共音量单元(浮动,浮动y )连接两个矩形点,如果不相交,则根据目标点的位置将目标点设置为当前矩形左上角的点或右下角的点。 如果当前矩形为空矩形,则最后一个矩形为([ 0,0 ],[x,y] )。
示例代码:
publicclassbasisviewextendsview { privatefloatmx; 私密浮动我y; publicbasisview (上下文上下文) (super )上下文;
} publicbasisview (上下文上下文,@Nullable AttributeSet attrs ) super (上下文,attrs );
} publicbasisview (上下文上下文,@Nullable AttributeSet attrs,intdefStyleAttr ) super ) context,attrs,defStyleAttr
}
@ overrideprotectedvoidondraw (canvas canvas ) ) super.Ondraw ) canvas;
绘制点=new paint (; //刷子
paint.setantialias(true;
paint.set style (paint.style.stroke ); //填充样式//Paint.Style.FILL不带线的填充圆Paint.Style.FILL_AND_STROKE带线的填充圆Paint.Style.STROKE空心圆环
paint.setstrokewidth(5; //线宽值
rectfrectf=newrectf (100、10、300、100 ); if(rectf.contains(MX,mY ) ) }
paint.setcolor(color.red;
}else{
paint.setcolor(color.blue;
}
canvas.Drawrect(rectf,paint );
}
@ overridepublicbooleanontouchevent (运动事件) )
mX=event.getX (;
mY=event.getY (; if (event.get action (==motion event.action _ down ) {
invalidate (; //重新绘制控件
返回真;
} else if (event.get action (==motion event.action _ up ) )
mX=-1;
mY=-1;
}
开机自检invalidate (; //更新控制画面,使控件重新描绘
returnsuper.ontouchevent(event;
}
}
在手指下方经过一段时间后,效果显示在矩形内时显示为红色矩形,离开时显示为蓝色