android手动绘制矩形框

发布于:2024-08-11 ⋅ 阅读:(132) ⋅ 点赞:(0)

public boolean onTouchEvent(MotionEvent event) {

float x = event.getX();

float y = event.getY();

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

if(is_select_area){

downX = x;

downY = y;

downRectF.set(downX, downY, downX, downY);

//表示可以改变矩形形状 得是矩形确认形状后

if (sideBoxRectF.contains(downRectF) && !dragRectF.contains(downRectF) && boxRectConfirm) {

changeBoxSide = true;

}

if (dragRectF.contains(downRectF) && boxRectConfirm) {

dragBox = true;

}

lastX = x;

lastY = y;

}

if(is_selected){

downX = x;

downY = y;

dragRectF.set(rect);

// downRectF.set(downX, downY, downX, downY);

// //表示可以改变矩形形状 得是矩形确认形状后

if (sideBoxRectF.contains(downRectF) && !dragRectF.contains(downRectF) && boxRectConfirm) {

changeBoxSide = true;

}

if (dragRectF.contains(downRectF) && boxRectConfirm) {

dragBox = true;

}

lastX = x;

lastY = y;

}

break;

case MotionEvent.ACTION_MOVE:

float offsetX = x - lastX;

float offsetY = y - lastY;

if(is_selected){

if (dragBox) {//手指按下点,在上一个lastBoxRectF矩形内,才考虑执行下面的代码 因为boxRectF会变的,有可能导致变着变着boxRectF包含了downRectF

rect.offset( offsetX, offsetY);

}

//拖动边缘改变View大小和形状

//当左边框小到一定程度就不响应了

//感觉需要对 矩形上下左右区域做下区分

if (leftRectF.contains(downRectF)) {//左区域

rect.left += offsetX;

} else if (leftTopRectF.contains(downRectF) && !dragRectF.contains(downRectF)) {//左上区域 特殊在,点击位置不位于上一次的标注框内

rect.left += offsetX;

rect.top += offsetY;

} else if (topRectF.contains(downRectF)) {//上区域

rect.top += offsetY;

} else if (rightTopRectF.contains(downRectF) && !dragRectF.contains(downRectF)) {

rect.top += offsetY;

rect.right += offsetX;

} else if (rightRectF.contains(downRectF)) {//右区域

rect.right += offsetX;

} else if (rightBottomRectF.contains(downRectF) &&a


网站公告

今日签到

点亮在社区的每一天
去签到