1.是否包含点,矩形

判断是否包含某个点

boolean contains(int x,int y)  函数用于判断某个点是否在当前矩形中,如果在,则返回true ,不在则false

2.判断是否包含某个矩形

public boolean contains(float left, float top, float right, float bottom) 判断是否包含某个矩形

public boolean contains(RectF r)判断是否包含某个矩形

3.判断是否相交

public boolean intersect(float left, float top, float right, float bottom) 成员方法判断是否相交

public boolean intersect(RectF r)成员方法判断是否相交

static boolean intersects(RectF a, RectF b)静态方法判断是否相交

public void union(float left, float top, float right, float bottom)合并二个矩形,指两个矩形合并成一个矩形,无论矩形是否相交,取两个矩形的最小脚点作为结果矩形的左上角点,取二个矩形最大在右下角点作为结果矩形的右小角点,如果一方为空,则将有值得一方为最终结果

4.合并矩形和点

public void union(RectF r) 合并两个矩形

public void union(float x, float y)合并两个矩形的点,如果不相交,根据目标点的位置,将目标点设置为当前的矩形的左上角点或者右下角点,如果当前矩形是一个空矩形,则最后的矩形为([0,0],[x,y])

示例代码:

public class BasisView extends View {

    private float mX;
private float mY; public BasisView(Context context) {
super(context);
} public BasisView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
} public BasisView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();//画笔
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE); // 填充样式//Paint.Style.FILL没有描边的实心圆 Paint.Style.FILL_AND_STROKE 有描边的实心圆 Paint.Style.STROKE 空心圆环
paint.setStrokeWidth(5);//描边宽度值
RectF rectF = new RectF(100, 10, 300, 100); if (rectF.contains(mX,mY)){
paint.setColor(Color.RED);
}else {
paint.setColor(Color.BLUE);
}
canvas.drawRect(rectF, paint); } @Override
public boolean onTouchEvent(MotionEvent event) {
mX = event.getX();
mY = event.getY();
if (event.getAction() == MotionEvent.ACTION_DOWN) {
invalidate();//重绘控件
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
mX = -1;
mY = -1;
}
postInvalidate();//刷新控件屏幕 ,.让控件重绘
return super.onTouchEvent(event); }
}

效果显示当手指下按时,如果在矩形内则显示红色矩形,离开则为蓝色

最新文章

  1. css004 用样式继承节省时间
  2. weblogic监控
  3. 如何在mac os中安装gdb及为gdb进行代码签名
  4. 一、HTML和CSS基础--HTML+CSS基础课程--第3部分
  5. shape into blocks--source code in python based on pySpark
  6. (转)IIS设置优化(需根据服务器性能,调整具体参数值)
  7. CAGradientLayer的一些属性解析-b
  8. css控制文字长度,超出长度显示...
  9. JavaScript中依赖注入详细解析
  10. 14、Cocos2dx 3.0三,找一个小游戏开发Scene and Layer:游戏梦想
  11. 经典Loading 动漫赏析
  12. sql数据库链接
  13. 个人作业3--------个人总结(Alpha版本)
  14. .30-浅析webpack源码之doResolve事件流(1)
  15. 排序算法java实现
  16. WordPress评论时一键填入昵称、邮箱和网址
  17. Treap与fhq_Treap学习笔记
  18. java基础中this,super
  19. Java工程师学习指南 入门篇
  20. Managers经理/代理形式的数据共享

热门文章

  1. python点击短信验证码
  2. 通用分页model封装pageList
  3. C++语法备忘
  4. 编码、加密、Hash
  5. ubuntu下后台服务的管理
  6. 大数据之路week04--day05(java XML解析)
  7. vue-cli webpack打包后index.html引入文件没有引号
  8. Charles----伪造手机端的request和reponse参数
  9. JAVA开发WEBSERVICE方式
  10. 再论i++ ++i