Показать сообщение отдельно
Старый 17.10.2012, 06:49   #31
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Помогите новичку!

Вручную вот так мне видится решение:
Тебе нужно расширить метод onTouchEvent, на событие ACTION_DOWN запоминать координаты нажатия, как ты и делаешь, и затем на событие ACTION_MOVE вычислять разность координат, далее вручную всё сдвигать на полученные dx, dy.
case MotionEvent.ACTION_DOWN:
  prevX = (int)event.getX();
  prevY = (int)event.getY();
  break;

case MotionEvent.ACTION_MOVE:
  int x = (int)event.getX();
  int y = (int)event.getY();
  int dx = x-prevX;
  int dy = y-prevY;
  prevX = x;
  prevY = y;
  if(dx != 0 || dy) { //надо бы сдвинуть
    scroll(dx, dy);
  }
  break;
Тут же можно настроить чувствительность скролла, например чтобы он срабатывал при прокрутке на не менее какого-то расстояния.
int min = 5;
int dx = x-prevX;
if(Math.abs(dx) < min)
  dx = 0; //считаем что вообще не сдвинулись по Х
else
  prevX = x; //обновляем только если прокрутили нужное расстояние
int dy = y-prevY;
if(Math.abs(dy) < min)
  dy = 0;
else
  prevY = y;
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ratum (17.10.2012)