Intereting Posts

Android: не может корректно использовать MotionEvent.ACTION_MOVE

Я совершенно новичок в программировании на Android и Java (хотя у меня есть некоторый опыт работы с C #, так что это помогает).

В этот момент я общаюсь с несколькими вещами, чтобы узнать, как все работает. Я сделал активность, которая реализует onTouchListener. Я переопределил onTouch и включил event.getAction ():

public boolean onTouch(View v, MotionEvent event) { float x; float y; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // gets called { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } case MotionEvent.ACTION_MOVE: // doesnt seem to do anything { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } } return false; } 

Где «круг» – это класс, который рисует круг.

То, что я ожидал увидеть, было кругом кругов, когда я провел пальцем по экрану. Вместо этого круг только рисуется, когда я начинаю прикасаться.

Я сравнил свой код с примерами (например: этот блог-постер от Google: http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html ), и я не могу найти свою ошибку ,

EDIT: Ссылка на полный класс: http://pastebin.com/tVDQjQhu

EDIT: Исправлено. Нужно вернуть true в функции onTouch (). d'ах!

Solutions Collecting From Web of "Android: не может корректно использовать MotionEvent.ACTION_MOVE"

У меня была такая же проблема при использовании MotionEvent.ACTION_MOVE . Для работы MotionEvent.ACTION_MOVE верните true вместо false.

Для меня решение было

 return true 

В функции onTouch, поскольку вы должны использовать это

 public boolean onTouch(View v, MotionEvent event){ float x; float y; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // gets called { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } case MotionEvent.ACTION_MOVE: // doesnt seem to do anything { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } } return true; //the problem was here 

}

Когда вы возвращаете false из onTouch (View v, MotionEvent event), тогда вызывается только MotionEvent.ACTION_DOWN. Поэтому вы должны вернуть true из этой функции

Надеюсь, это поможет

Были и те же проблемы, я не знаю, является ли это ошибкой или нет, но мне удалось заставить ее работать, добавив OnClickListener в реализацию и внедряя public void onClick(View v) затем добавив setOnClickListener(this) на конструктор.