Определите вид, который вызвал событие касания - PullRequest
0 голосов
/ 07 сентября 2010

Я пытаюсь перетащить вид на экран

FrameLayout main = (FrameLayout) findViewById(R.id.main_view);
final Ball bigball;
bigball = new Ball(this,50,50,25, 0xFFFF0000);
main.addView(bigball);

Это рисует красный круг на моем экране.Как и где мне нужно реализовать обработку сенсорного экрана, если я хочу, чтобы only срабатывал, если кто-то касается красного круга, а не остальной части экрана?

Ball.Java isотдельный класс:

public class Ball extends View 

Я знаю, что могу проверить координаты, где пользователь коснулся экрана, и затем сравнить это с тем, где находится круг, но должен быть способ просто проверить идентификатор или какой-то другойссылка на кружок, верно?

Все, что я посмотрел и попробовал до сих пор, запускало бы мой код независимо от того, где касание началось или остановилось на экране.(Так что я могу двигать мяч, я могу рисовать линии на экране пальцем и всем остальным. Но я не могу сказать, коснулся ли я красного круга.)

Может кто-нибудь объяснить это мне простыми словами, пожалуйста?(И прости меня за использование одинаково простых слов в моем вопросе. Я больше не чувствую, что у меня есть подсказка, что я здесь делаю, и теперь я просто больше не буду правильно использовать такие громкие слова, как «Слушатель» или «Событие».

Спасибо.

1 Ответ

0 голосов
/ 07 сентября 2010

вы можете переопределить / реализовать onTouchEvent в классе Ball, который расширен от View.

public class Ball extends View {
  public boolean onTouchEvent(MotionEvent ev) {
    if(ev.getAction == /*check against all the desired action*/ {
      //handle touch and return true
    return super.onTouchEvent(ev);
}
...