Я бы начал это с чистой математики!
Предполагая, что и ImageView1, и ImageView2 не имеют обрезки (например, линии на изображениях являются диагональю ImageView), вы можете использовать ширину ивысота обеих картинок для выражения обеих строк в формулах.Вот пример.ПРИМЕЧАНИЕ: я использую систему координат Android -> точка (0,0) - это верхний левый угол с y, увеличивающимся до нижнего значения !!!
Нажмите здесь для графического представления
Line1
y = h1/w1(x - a1) + b1
Line2
y = -h2/w2(x - a2) + b1 + h2
Теперь нам нужна точка, где line1 = line2, поэтому мы получаем
h1/w1(x - a1) + b1 = -h2/w2(x - a2) + b1 + h2
Если вы переписываетеуравнение, которое вы получите:
x = (w1*w2*(b2 + h2 - b1) + h1*w2*a1 + h2*w1*a2) / (h1*w2 + h2*w1);
Как только вы узнаете координату x, вы можете использовать ее для определения координаты y ... Ниже приведен код:
private void check()
{
// Setup variables for shorter notation
int w1 = mImg1.getWidth();
int h1 = mImg1.getHeight();
int a1 = mImg1.getLeft();
int b1 = mImg1.getTop();
int w2 = mImg2.getWidth();
int h2 = mImg2.getHeight();
int a2 = mImg2.getLeft();
int b2 = mImg2.getTop();
int x = 0;
if(h1*w2 + h2*w1 == 0)
{ // Return to avoid division by zero
return;
}
else
{ // Calculate the x-value using the re-written formula
x = (w1*w2*(b2 + h2 - b1) + h1*w2*a1 + h2*w1*a2) / (h1*w2 + h2*w1);
}
// Now use the x-value to calculate the y-value
int y = h1 / w1 * (x - a1) + b1;
Log.d("Output", "x: " + x + " y:" + y);
}
ПРИМЕЧАНИЕ. Возможно, вы захотите установить для своих ImageViews значения android: width = "wrap_content" и android: height = "wrap_content".В противном случае изображения будут зафиксированы по размеру, который вы вводите!Я проверил это с помощью ImageView с круговым фоном.Если вы используете рассчитанные координаты XY, он рисует мяч прямо на пересечении!Удачи