Нажатие на растровое изображение в Android Canvas - PullRequest
0 голосов
/ 07 мая 2011

У меня есть небольшие трудности с установкой границ координат (x, y), чтобы определить, когда щелкают по конкретному растровому изображению или нет.

Например, если позиция растрового изображения (100,300), скажем.т. е. верхний левый угол находится в этой точке, тогда, если пользователь касается экрана в точке (X, Y), то простое условие:

if((Math.abs(X-midX)<bitmap.getWidth()/2)&&
           Math.abs(Y-midY)<bitmap.getHeight()<bitmap.getHeight()/2){

                  //the bitmap has been clicked on
}

Где midX определяется как (100+ (100 + битовая карта.getWidth ())) / 2, т.е. точка середины x и аналогичное определение для midY.

Это правильный способ сделать это?Потому что некоторые из моих растровых изображений не ведут себя так, как я ожидаю, когда я пытаюсь прикоснуться к ним / щелкнуть по ним.

Ответы [ 3 ]

0 голосов
/ 07 мая 2011

Хотя мне нравится заниматься такими математическими упражнениями, на этот раз я бы порекомендовал идти «легким путем».Установите Rect / RectF с границами изображения и используйте взамен rectF.contains (float x, float y) или rect.contains (int x, int y) .То есть, если onClick здесь не вариант, конечно.

0 голосов
/ 11 мая 2011

Другой подход - поместить растровое изображение в Drawable и использовать его для проверки границ:

public boolean onSingleTap(MotionEvent event)
{
   int x = (int) event.getX();
   int y = (int) event.getY();

   if (drawable.getBounds().contains(x, y))
   {
      // You’ve tapped the Bitmap...
   }
}
0 голосов
/ 07 мая 2011

Если ваше растровое изображение находится в ImageView, вы должны иметь возможность обработать OnClickListener, чтобы представление узнало, когда выбрано растровое изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...