В настоящее время я возлюсь с программированием на Android, но у меня возникла небольшая проблема с обнаружением различных событий касания, а именно обычного касания (нажатие на экран и немедленное нажатие), длительного нажатия (касание экрана и удерживание кнопкипальцем на него) и движения (перетаскивание на экране).
Я хотел бы иметь изображение (в виде круга) на моем экране, которое я могу перетаскивать.Затем, когда я нажимаю его один раз (короткое / обычное нажатие), появляется тост с некоторой базовой информацией об этом.Когда я долго нажимаю на него, появляется AlertDialog со списком, чтобы выбрать другое изображение (круг, прямоугольник или треугольник).
Я создал собственный View с моим OnTouchListener, чтобы обнаруживать события и рисовать изображение вOnDraw.OnTouchListener.onTouch работает примерно так:
// has a touch press started?
private boolean touchStarted = false;
// co-ordinates of image
private int x, y;
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
touchStarted = true;
}
else if (action == MotionEvent.ACTION_MOVE) {
// movement: cancel the touch press
touchStarted = false;
x = event.getX();
y = event.getY();
invalidate(); // request draw
}
else if (action == MotionEvent.ACTION_UP) {
if (touchStarted) {
// touch press complete, show toast
Toast.makeText(v.getContext(), "Coords: " + x + ", " + y, 1000).show();
}
}
return true;
}
Проблема в том, что печать работает не совсем так, как ожидалось, потому что, когда я случайно касаюсь экрана, она также обнаруживает небольшое движение и отменяеткоснитесь нажмите и перемещайтесь по изображению вместо этого.
Я немного "взломал" это, введя новую переменную "mTouchDelay", для которой я установил 0 в ACTION_DOWN, увеличил MOVE и, если это> = 3 в MOVEЯ выполняю свой код "переместить".Но у меня такое ощущение, что на самом деле это не тот путь.
Я так и не узнал, как обнаружить долгое нажатие.Виновником действительно является MOVE, который, кажется, всегда срабатывает.
Пример того, чего я грубо хочу, см. В приложении Android «DailyStrip»: оно показывает изображение комикса.Вы можете перетащить его, если он слишком большой для экрана.Вы можете нажать его один раз, чтобы открыть некоторые элементы управления, и долго нажимать его для выбора меню параметров.
PS.Я пытаюсь заставить его работать на Android 1.5, так как мой телефон работает только на 1.5.