傲渊山岳 发表于 2024-8-16 20:17:07

android手动绘制矩形框

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: android手动绘制矩形框