2010-09-07 2 views
0

Я пытаюсь перетащить вид на экранеОпределить вид, который вызвал сенсорное событие

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

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

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

public class Ball extends View 

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

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

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

Спасибо.

ответ

0

вы можете переопределить/реализации onTouchEvent в классе Болл, который простирается от просмотра.

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); 
}

+0

Да, я tohght это должно работать, тоже. – Alex

+0

Но функция вызывается независимо от того, где я нажимаю Возможно ли, что мой мяч просто занимает весь экран, и я гонялся за неправильным типом ошибки? Это изображение, сделанное на холсте: – Alex

+0

открытый класс Ball extends Посмотреть { частный поплавок x; private float y; закрытый финал int r; private final Paint mPaint = new Paint (Paint.ANTI_ALIAS_FLAG); public Ball (контекстный контекст, float x, float y, int r, int bcolor) { супер (контекст); mPaint.setColor (bcolor); this.x = x; this.y = y; this.r = r; } @Override защищенная пустота onDraw (холст холста) { super.onDraw (холст); canvas.drawCircle (x, y, r, mPaint); – Alex

Смежные вопросы