Исходя из моего понимания вашего вопроса, вы хотите проверить, щелкает ли пользователь по первому тексту и перемещается (перетаскивается) ко второму тексту или наоборот, вы должны проверить, нажимается ли весь текст, а не только верхний левый угол нарисованного текста.Итак, у меня есть для вас ответ, который должен отличаться для двух текстов, чтобы они знали размер в пикселях, а затем проверяли касание внутри этого прямоугольника текста, а не только верхней левой точки, как я описал, поэтому давайте начнем: Сначала вы должны изменить свой текст.isCorrectConnection
работает вместо этого: -
private boolean isCorrectConnection(float startX, float startY, float endX, float endY,
float x1, float y1, float x2, float y2
String text1, String text2) {
//Measuring text1's size
Rect textBounds = new Rect();
mPaint.getTextBounds(text1, 0, text1.length(), textBounds);
int w1 = textBounds.width();
int h1 = textBounds.height();
//Measuring text2's size
Rect textBounds2 = new Rect();
mPaint.getTextBounds(text2, 0, text2.length(), textBounds2);
int w2 = textBounds2.width();
int h2 = textBounds2.height();
//Checking for touched and moved from text1 to text2
if(startX >= x1 && startX <= (x1 + w1) && startY >= y1 && startY <= (y1 + h1) &&
endX >= x2 && endX <= (x2 + w2) && endY >= y2 && endY <= (y2 + h2))
return true;
//Checking for touched and moved from text2 to text1
if(startX >= x2 && startX <= (x2 + w2) && startY >= y2 && startY <= (y2 + h2) &&
endX >= x1 && endX <= (x1 + w1) && endY >= y1 && endY <= (y1 + h1))
return true;
return false;
}
И если вы уверены, что тексты одинаковы, сделайте следующее: -
private boolean isCorrectConnection(float startX, float startY, float endX, float endY,
float x1, float y1, float x2, float y2
String text) {
//Measuring text's size
Rect textBounds = new Rect();
mPaint.getTextBounds(text, 0, text.length(), textBounds);
int w1 = textBounds.width(), w2 = w1;
int h1 = textBounds.height(), h2 = h1;
//Checking for touched and moved from text1 to text2
if(startX >= x1 && startX <= (x1 + w1) && startY >= y1 && startY <= (y1 + h1) &&
endX >= x2 && endX <= (x2 + w2) && endY >= y2 && endY <= (y2 + h2))
return true;
//Checking for touched and moved from text2 to text1
if(startX >= x2 && startX <= (x2 + w2) && startY >= y2 && startY <= (y2 + h2) &&
endX >= x1 && endX <= (x1 + w1) && endY >= y1 && endY <= (y1 + h1))
return true;
return false;
}