трудности листания экранов
Добавлено: 03 ноя 2015, 14:57
Уважаемые!
я программист-любитель )) Вот уже пару месяцев не могу качественно решить задачу оптимизации своего приложения. Может кто сталкивался? Подскажите что нибудь...
Приложение имеет несколько активити. Процесс перехода между активити реализован при помощи слайдинга (смахиванием вобщем), а именно благодаря flipper и onTouch. В то же время каждое активити имеет ряд пользовательских кнопок, занимающих порой треть экрана. Как меню любого смартфона, только иконки(они же кнопки) большие.
Так в чем, собственно, у меня трудность? Во время попытки смахнуть текущее активити в зоне действия кнопки, происходит распознавание нажатия кнопки - неудобный момент. Пытался реализовать задержки - кнопка не срабатывает, но листание не всегда работает.
Выяснилось что onTouch не реагирует в зоне действия кнопки, только вне кнопки.
Вот реализация onTouch:
Как же тогда реализован слайдинг меню любого смартфона, когда при листании между экранами, приложения не запускаются в зоне листания?
Подскажите направление.
я программист-любитель )) Вот уже пару месяцев не могу качественно решить задачу оптимизации своего приложения. Может кто сталкивался? Подскажите что нибудь...
Приложение имеет несколько активити. Процесс перехода между активити реализован при помощи слайдинга (смахиванием вобщем), а именно благодаря flipper и onTouch. В то же время каждое активити имеет ряд пользовательских кнопок, занимающих порой треть экрана. Как меню любого смартфона, только иконки(они же кнопки) большие.
Так в чем, собственно, у меня трудность? Во время попытки смахнуть текущее активити в зоне действия кнопки, происходит распознавание нажатия кнопки - неудобный момент. Пытался реализовать задержки - кнопка не срабатывает, но листание не всегда работает.
Выяснилось что onTouch не реагирует в зоне действия кнопки, только вне кнопки.
Вот реализация onTouch:
Код: Выделить всё
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
fromPosition = event.getX();
break;
case MotionEvent.ACTION_UP:
float toPosition = event.getX();
if (fromPosition > toPosition)
{
flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.go_next_in));
flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.go_next_out));
flipper.showNext();
// Log.d(LOG_TAG, "OKNO = "+ flipper.getDisplayedChild()); // esli otobrazheno okno 2
// if (flipper.getDisplayedChild() == 2) { some actions }
}
else if (fromPosition < toPosition)
{
flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.go_prev_in));
flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.go_prev_out));
flipper.showPrevious();
}
default:
break;
}
return true;
}
Подскажите направление.