• 0
nassl

Координата в процессе свайпа

Вопросы

Нужна помощь!
Все перепробовал, не выходит каменный цветок...

На форме лежит скрытый компонент THUETrackBar.
Хочется реализовать следующий функционал на с++ (fmx): свайп вверх по любому месту экрана - делает компонент THUETrackBar видимым, и двигает его ползунок вверх, свайп  вниз - соответственно вниз.

этот код не фурычит в процессе свайпа, только по завершении :(

 

void __fastcall TForm1::windGesture(TObject *Sender, const TGestureEventInfo &EventInfo,
		  bool &Handled)
{
		switch (EventInfo.GestureID) {
		case sgiUp:  TmpBar->Visible=true; TmpBar->Value++; break;
		case sgiDown: TmpBar->Visible=true; TmpBar->Value--; break;
		case igiLongTap: TmpBar->Visible=true;Location_x=EventInfo.Location.x; break;
	}
}

Хотел использовать свойство EventInfo.Location.x, но значение меняется только по окончании свайпа. 

 

 

Изменено пользователем nassl

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 ответ на этот вопрос

  • 0

Отвечу сам себе, чтобы не потерять .

Итак, хочется ловить жесты влево, вправо и после лонгтап считывать координаты точки касания. В частности изменяется размер TImage, который скрывается по окончании свайпа запуском анимации в которой Opacity меняется от 1 до 0}.

TPointF P, OldP;

void __fastcall TForm1::FormGesture(TObject *Sender, const TGestureEventInfo &EventInfo,
          bool &Handled)
{
 if (EventInfo.Flags.Contains(TInteractiveGestureFlag::gfBegin))
 {  switch (EventInfo.GestureID)  { case igiLongTap: OldP.y=EventInfo.Location.y;   OldP.x=EventInfo.Location.x; }
 }
 else if(EventInfo.Flags.Contains(TInteractiveGestureFlag::gfEnd))
       {//Жест закончен - не убирать, иначе не сработает TTouchAction::Up   }
 else
  {switch (EventInfo.GestureID)
   {case sgiRight:  DosomethingRight(); break;
    case sgiLeft:     DosomethingLeft();   break;
    case igiPan:      P.y=EventInfo.Location.y;   P.x=EventInfo.Location.x;  break;
   }
 }
}
 //---------------------------------------------------------------------------
void __fastcall TForm1::FormTouch(TObject *Sender, const TTouches Touches, const TTouchAction Action)
{if (Action==TTouchAction::Up)  //Палец убран
  {// Обработка концовки свайпа, например
   FloatAnimation1->Start(); 
  }
}

void __fastcall TForm1::FloatAnimation1Finish(TObject *Sender)
{ Image->Visible=false;Image->Opacity=1;}

...........................................................

PS советы по улучшению кода приветствуются, но у меня получилось так.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Farhodjon
      Привет всем, я здес новинки. Нужна ваша помош как подклучит служба на delphi xe8 исзодник или видеоурок на delphi xe8 есть? Помагите пожвлуста очен надв мне это подклучени
    • От Евгений Гайдук
      Помогите решить проблему. Есть андроид-планшет, есть серверный ПК. Нужно данные, вводимые на планшете сохранить в сетевую папку на сервере. Может есть возможность подключить сетевой ресурс на андроид планшете, либо напрямую сохранять в сетевую папку.
    • От Alex Bakulin
      Создаю стандартное мобильное приложение, которое предлагает Delphi Berlin. Там есть обработчик кнопки Назад. Собственно у меня задача, после того, как человек перешел в какой-то из режимов приложения, на эту кнопку реагировать, а именно присваивать Key := 0 и делать Application.Terminate. Но это не срабатывает, пролистываются все экраны приложения до первого и только после этого идет выход...
      Возможно я что-то не так для Андроид использую. Как мне закрыть приложение по этой кнопке? 
    • От Anasazi
      Доброго времени суток! Есть приложение в котором используется TWebbrowser, хотел сделать чтобы при свайпе справа-налево выполнялся WebBrowser.GoBack, но обнаружил что жесты работают везде кроме TWebbrowser. Подскажите пожалуйста есть ли какое-либо решение этой проблемы? RAD Studio Berlin Update 1.
    • От Crusader99
      Я туплю.
      В рантайме создается панель (Ну пусть Panel1). Есть GestureManager1.  Связать их - не проблема :
      Panel1.Touch.GestureManager:=GestureManager1;
      Я не понимаю, как указать, какие жесты на Panel1 должны обрабатываться . Как/куда вписать, что надо реагировать например только на sgUp, sgLeft  и sgDoubleTap ?
      Если это существенно, то у меня Delphi  XE 5 Update 2 под Win 7.
    • От Alesk
      Как подключить gesturemanager1 к кнопке созданной в runtime?
      Когда пишу эту строчку
      izm[ii].Touch.GestureManager:=GestureManager1; ругается на Gesturemanager1
      izm[ii] - массив из tbutton
    • От Равиль Зарипов (ZuBy)
      Давно не хватало TListView в горизонтальной ориентации, например чтобы сделать вот такую картинку

       
      zairkz сделал стиль с применением 9-patch png "технологии"
       
      С помощью жестов показано как сделать "сквозной скрол"
      как писал dreamix
       
       
      P.S. по компоненту TListViewHorz, не успел все протестить как следует со всеми параметрами
      не правильно будет отображаться Header'ы и Поиск, основной функционал сохранен
      UPDATE:  LVStyledhorz.7z
    • От Алекс
      Добрый день!
      Однажды на форуме обсуждалась тема как сделать переключение вкладок TabControl  с анимацией через TActionList.
      Сейчас возникла необходимость переключать вкладки через жест pan? т.е. чтобы вкладка двигалась за пальцем пользователя (как это сделано практически во всех мобильных приложениях, например в фейсбуке. Ниже скрин, на котором показаны по половине обе вкладки, они в этот момент перетаскиваются пальцем).
      Это реально сделать? Если да, то как? Я уже подозреваю, что табом такого не сделаешь, а только широкой панелью, разделенное на сектора.

    • От RobinStone
      Собственно, в теме и весь вопрос. Занялся emarcadero xe7/, до этого усиленно кодил-шаманил в делфийских ждунглях 7- ой версии Борланда...
      Вот жизнь заставила взяться за андройд, что с переменным успехом и проделываю. Нужна помощь профессионального сообщества, коим Вы по сути и являетесь. Если есть ссылки на изучение материала - не скупитесь. Буду ждать.
      Заранее - спасибо.
    • От serg557
      День добрый!
      Ситуация такова:
      1. Загружаю вебстраничку в AnsiString - тут все отлично работает как на винде так и под андроид;
      2. Пытаюсь ее отпарсить с использованием стандартных методов AnsiString- .Pos(), .SubString(), .Delete(), - на винде все работает - на андроиде -нет.
       Вопрос в следующем - чем работать на с текстом - чтобы одинаково работало под андроидом?
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу